問題タブ [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.
exception - トラップ命令によるハードウェアまたはソフトウェアの割り込みまたは例外?
マニュアルによると
トラップ命令
プログラムがトラップ命令を発行すると、プロセッサはソフトウェア トラップ例外を生成します。通常、プログラムがオペレーティング システムによるサービスを必要とする場合、プログラムはソフトウェア トラップを発行します。オペレーティング システムの一般的な例外ハンドラは、トラップの理由を判断し、適切に応答します。
しかし、私が以前にそれについて尋ねたとき、答えはそれがソフトウェア割り込みであると言います:
また、例外と割り込みの違いは、アーキテクチャによってわずかに異なる可能性があるため、hw、sw、例外、割り込みの 4 つの組み合わせ (?) が存在する可能性があるようです。
現在、私は小さなシステム用にこのアセンブリを研究しており、個々の命令を自分で学ぶことができると思いますが、イベントがハードウェア例外ではなくソフトウェア例外である理由、ハードウェア例外である理由を全体像を理解するための助けを探しています。割り込み、ソフトウェア割り込み。
c - このコードは、中断されたスレッドについてどのような情報を保存しますか?
私の分析では、アセンブリは中断されたスレッドのスタックポインタを配列に保存します。あれは正しいですか?私がこれを見ていると思うコードは次のとおりです。
最初の命令ldw
(ロードワード)はスタックポインタをr4レジスタに保存し、次にr4がスレッドスイッチのパラメータになると思います。
私はこれを正しく理解したようですか?タイマーは、中断されたスレッドに関する情報を保存するスレッドを中断します。これは上記のコードが行うことであり、スレッドに関して保存される情報はそのスタックポインターですか?
完全なasm:
C
c - Nios II プロセッサーでのデータ キャッシュのバイパス
Nios_2_r2c プロセッサのデータ キャッシュをバイパスするために、いくつかのコードを削除し、いくつかのコードを追加する必要がある次の C ソース ファイルがあります。これを行う方法がわかりません。
ファイル: switch.c
ファイル: ledr.c
I / Oの読み取りと書き込みを使用してインラインアセンブリで取得しました:
ファイル: switch.c
ファイル: ledr.c
assembly - この nios2 コードを理解するのを手伝ってください
完全には理解できない nios2のアセンブリが提供されています。この指示から始めることができる場合、それが何のためにあるのか理解できません。
.set noat # required since we push r1
どういう意味ですか?説明書を見ましたが、これに該当するものはありませんでした。
上記の説明以外に、個々の説明は理解できると思いますが、プログラムが何のためにあるのか、まだよく理解できていません。これを C コードと一緒に使用して、コンピューター エンジニアリング コースの実験室での演習を行いましたが、コードが何をするのか忘れてしまいました。助けていただけないでしょうか。ありがとう
c - NIOS II でのメモリ書き込み - 値が間違ったアドレスに書き込まれる
まず、この質問をアルテラ フォーラム ( http://www.alteraforum.com/forum/showthread.php?t=40494 ) に提出したことを認めなければなりません。私はここでも質問しています。それは、まったく異なる聴衆である可能性が高いと思うからです。この重複した投稿がスタック オーバーフローのルールやエチケットに反する場合はお知らせください。削除します。そうでない場合は、ここで受け取った回答でフォーラムの投稿を更新し、その逆も行います。
I2C コアをオープンコアから Cyclone IV デバイスに統合しようとしています。どうやら私が使用しているバージョンは、SOPC にドロップして、いくつかの出力 ( alterawiki.com/wiki/I2C_(OpenCores) ) に接続した後に動作するはずです。コアは、エラーや警告なしでコンパイルされます。
コアの I2C ドキュメントには、6 つの関連レジスタが次々にアドレス指定されていることが示されています (PRERlo、PRERhi、CTR、TXR、RXR、CR、SR)。ただし、これらのレジスタに書き込もうとすると、コードから、またはデバッグ メモリ ウィンドウで手動で、間違ったアドレスに書き込みが行われます。
これを調査するために、VHDL でレジスタを初期値に設定し、デバッグ ウィンドウで結果を確認しました。これは、TXR と CR のレジスタ アドレスがドキュメントで提案されているものではないことを示しています。
これで問題ありませんが、アドレス 09866174 (TXR) に書き込もうとすると、値が 09866164 (PRERhi) に挿入されます。同様に、09866178 (CR) に書き込むと、値が 09866168(CTR) に挿入されます。これは、書き込みがコードから行われた場合でも、デバッグ ウィンドウから手動で行われた場合でも発生します。これらのレジスタへの書き込みは VHDL で正常に機能するため、これは特に混乱を招きます。
シグナルタップからもこれをデバッグしようとしました。ただし、いずれのレジスタのトリガーも実装されていません。
ここで誰かが私を正しい方向に向けることができれば、本当に感謝しています。
ありがとう!
- 更新: コアの VHDL バージョンを使用しています。しかし、私は今のところタオルを捨てて、配線するとすぐに動作する Verilog バージョンを使用することにしました。アプリケーションが完成したら VHDL コアに戻るつもりで、そのときにもう一度更新します。
fpga - uClinux は Altera DE2-115 で実行できますか?
FPGA (Altera DE2 および DE2-115) を使用する興味深い方法を探しています。uClinux のディストリビューションには DE2-115 用のファイルがいくつか含まれているようですが、使用方法に関するドキュメントはありません。DE2-115 上で Linux を実行する場合を除き、DE2-115 ディレクトリ内のファイルは何に使用されますか?
c - 'dev_addr' が宣言されていません (この関数で最初に使用)
私は NIOS II を使用しています - Eclipse ここに私のコードのサンプルがあります 私は基本的に関数を呼び出そうとしています
そして数行後、私はそれを呼び出そうとします
ビルドしようとすると、エラー 'dev_addr' undeclared (この関数で最初に使用) がスローされ、次の行を指します
必要だと思うものだけを入れて、コードを簡潔にしようとしました。詳細をご覧になりたい方がいらっしゃいましたら、喜んで提供させていただきます。
c - 電力モードをスリープ状態にするためにレジスタ hi の特定のビットを書き込もうとしています
私の問題は、ADI_DEV_CORE_STATUS の値を読み取っても、ビット 22 に 1 をアサートして電力モード要求を有効にした後でも 0x2A のままであり、値が変化しない直後に値を出力することです。
眠りモードに入るリクエストを送ろうとしているのですが、
ADI DEV CORE STATUS レジスタでは、
ビット 26 は、電力モード失敗 (読み取り専用) として定義されます。
ビット 25 はスリープ中のコアとして定義されます (読み取り専用)。
ビット 24 は、パーシャル スランバー (読み取り/書き込み) の電力モード要求として定義されます。
ビット 23 は、スランバー モード (読み取り/書き込み) の電力モード要求として定義されます。
ビット 22 は、ホストが開始する電源モード要求 (読み取り/書き込み) を有効にするように定義されています。
ビット 21 は、COMWAKE バースト パターンの送信を開始してスランバーからウェイクアップするように定義されています (読み取り/書き込み)。
ビット 5 は Phy-Ready (読み取り専用) として定義されています。
ビット 4 はリセット (読み取り/書き込み) として定義されます。
ビット 3 は、デバイス ステート マシンがアイドル状態 (読み取り専用) であることを示すように定義されています。
ビット [2:0] は、現在のインターフェイス速度として定義されます (0h: 接続なし)(1h: Gen1 レートが確立されます)(2:h: Gen 2 レートが確立されます)(3h: Gen3 レートが確立されます) (その他の値は将来の世代のために予約されています)
コードで定義されたその他の値
すべての alt_printf(The value is %x", read); 出力 0x2a、電源モードが有効な場合は 0x40002a、電源モードが有効な場合は 0xC0002a を読み取る必要があり、スランバー モードの電源要求と 0x2000000 を送信していますコアがスリープ状態のとき。