問題タブ [nios]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - シリアル通信が機能しないのはなぜですか?
DE2 のマニュアル(177 ページ)を調べたところ、たとえばパテと USB-to-シリアル ケーブルを介してボードにシリアル通信を行うことができるはずなので、マニュアルからプログラムを取得しました。 :
Nios2 ハードウェアとして実行しようとしましたが、uart を使用するように std i/o を構成すると、このメッセージが表示されます。
nios2-terminal: can't open uart: No such file or directory
そして、端末プログラム(パテシリアル接続)に接続すると、接続しません。私は何を間違っていますか?プロジェクトのプロパティで std i/o を uart に変更しようとしましたが、それは役に立ちませんでした。手伝って頂けますか?
c - scanf が Nios 2 IDE で入力を出力するのはなぜですか?
非常に単純なプログラムは機能していません。
上記は入力への読み取りのみを期待しますが、入力も出力します。
while ループにこの行もある場合、上記の動作が予想されますが、そうではありません。
printf("%d\n", n);
説明できますか?
アップデート
なぜこれが起こっているのかを説明する答えは何もありません。また、Nios 2 IDE には、ローカル エコーをオンまたはオフにするための設定はありません。そして、もしあったとしても、おそらく予期しない出力を引き起こす可能性はありません。また、このプログラムはその入力も出力します。
したがって、Eclipse に基づくこの Nios 2 IDE は、誰の選択でもありません。
c - 非常に単純なプログラムを両方の方法で失敗させる
Eclipse が最も単純なプログラムを 1 つの方法だけでなく、同時に複数の方法で実行できないことに驚いています。プログラムは
失敗 1: シミュレーターで実行すると、理由もなく出力が 2 回表示されます。出力は 1 回表示されます。
失敗 2: DE2 ボードで実行すると、出力がまったく表示されません。
自分の環境が期待どおりに機能しないのはなぜですか?
c - ループの実行時間
私は分析と測定を行っており、分析と測定から異なる結果を得ています。このコードは、サイズが 512 バイト、ブロック サイズが 32 バイトのデータ キャッシュを使用する 2 つのループです。
Cは行列を行ごとに格納するため、内側のループで行を切り替えない方が速いと思います。そのため、SumByRowColは高速になるはずですが、測定では逆です。値が連続した要素からのものであるため、空間的局所性の原則によるキャッシュが内部ループを高速化できると、高速になると思いましたか? 実際にSumByColRowの方が速いと計測した時の実行時間を計測した理由は何ですか?
アップデート
プログラムを再度実行して、実際にデータ キャッシュを使用していることを確認しました。今度は期待どおりの結果が得られたので、上記の結果は偶然の一致である可能性があり、次のようになります。
c - C のコンパイルに時間がかかるのはなぜですか?
C プロジェクトをコンパイルすると、高速な Intel I7 CPU を使用しているにもかかわらず、約 90 秒かかることがあります。コンパイルが低レベルのタスクであるためですか、それともビルド時間が非常に長いのはなぜですか? 私の環境は、Altera DE2 FPGA 用の Nios 2 IDE です。
c - 16 進値をシフトしようとしています。助けてください
7 セグメント LCD で 9 より上の数字を表示できるように、16 進出力を 1 つ左にシフトしようとしています。
C でプログラミングしています。私が使用しているソフトウェアは NIOS II であるため、DE0 ボードに直接再プログラミングできます。
このプロジェクトの目的は、'button1' が押されるたびに LCD の値を 1 ずつインクリメントすることです。私はこれを成功させましたが、もちろん9の後、左にシフトして1から再起動し、元の位置を0に置き換える必要があります。かなりの調査を行いましたが、運がなかったのでどんな助けでも大歓迎です。ありがとう。
コードは以下のとおりです。