私は武装するのが初めてで、IRQ と FIQ に関連する疑問があります。これらを明確にしてください。
FIQ & IRQ チャネル アームはいくつありますか?
また、チャネルごとに何個のハンドラを記述できるでしょうか?
また、単一の割り込みチャネルに複数のハンドラーを登録できる場合、アームはどのハンドラーを実行するかをどのように知るようになりますか。
4 に答える
との違いはIRQ
、FIQ
Acorn によって設計された初期の ARM にまでさかのぼります。IRQ
多数の割り込みソースを一緒に多重化する割り込みコントローラーに回線が接続されている場合は常にそうでした。これはまさに、最新のすべての ARM で起こっていることです。
IRQ
FIQ の背後にある理論的根拠は、最大の優先度で非常に低いレイテンシーの応答を提供することでした (ハンドラーを安全にプリエンプトできます)。シャドウ レジスタの数が比較的多いため、ハンドラーの状態を CPU レジスターに格納し、スタックにアクセスしないハンドラーの記述が容易になります。
シャドー レジスタは、APCS で関数呼び出しに一般的に使用されるものとはほぼ逆の設定であるため、C でハンドラを記述すると、最大 8 つの非シャドー レジスタのプッシュと最終的なポップが発生します。何らかの種類の割り込みデマルチプレックスを使用すると、提供された可能性のあるパフォーマンス上の利点がすべて失われますFIQ
。
FIQ
これはすべて、1 つの割り込みデバイスに対して非常にハード リアルタイムの割り込み応答が必要な、非常に特殊なアプリケーションに使用するメリットしかないことを意味し、ハンドラーをアセンブラーで作成する意思があることを意味します。IRQ
また、システムの残りの部分と同期する方法を検討する必要があります。その一部は、データの同期を維持するために無効にする必要があります。
従来、アームには FIQ または IRQ の 2 つのハンドラのいずれかに送信できる 1 つの割り込みラインがあります。FIQ には FIQ モード専用レジスタのより大きなバンクがあるため、スタックに格納する必要があるレジスタは少なくなります。そこから、ベンダー固有のレジスタがあればそれを読み取って割り込みのソースを特定し、別のハンドラに分岐します。
最近では、多くの割り込み 128、256 とそれぞれ別のハンドラを備えたベンド アーム アーキテクチャがあります。したがって、アームについて一般的に尋ねることは、それほど多様ではなく、x86 について一般的なことを尋ねるようなものです。
この情報はすべて、さまざまなアーキテクチャの ARM アーキテクチャ リファレンス マニュアルで簡単に入手できます。また、コアへのピン配置 (ベンダーがチップを構築する際に使用するもの) は、さまざまなコアのテクニカル リファレンス マニュアルに記載されています (入手も非常に簡単です)。 . infocenter.arm.com には、アーキテクチャとテクニカル リファレンス マニュアル、および amba/axi (ベンダーが接続するデータ バス) があります。あなたの質問は、それらのドキュメントで完全に回答されています。
ARM プロセッサは、1 つの IRQ と 1 つの FIQ のみを直接サポートします。ARM は、割り込みコントローラと呼ばれるペリフェラルを介して複数の割り込みをサポートしています。ARM 標準の割り込みコントローラは、GIC (Generic Interrupt Controller) と呼ばれます。
GIC には、周辺機器が割り込みラインを接続するための多数の入力と、IRQ および FIQ に接続する 2 つの出力ラインがあります。基本的に、MUX として機能します。GIC ドライバーは、割り込みの優先度、タイプ (IRQ/FIQ)、マスキングなどの構成をセットアップします。
従来の ARM システムでは、例外ベクトルに IRQ と FIQ のそれぞれに 1 つのエントリがあります。割り込みが発生した行に応じて、IRQ または FIQ ハンドラが呼び出されます。割り込みハンドラは、割り込み番号を取得するために、GIC (具体的には GIC CPU インターフェイス レジスタ) にクエリを実行します。この割り込み番号に基づいて、対応するデバイス ハンドラが呼び出されます。
割り込みの数は、特定の GIC の実装によって異なります。そのため、システムの割り込みコントローラーのマニュアルを確認して、それらの詳細を取得する必要があります。
注: 割り込み処理は、コーディングしている特定の ARM コアによって若干異なります。
実際、質問は少しトリッキーです。ARM のどのアーキテクチャに対応しているかを質問で指定する必要があります。ARM v7-A および ARM v7-R アーキテクチャ リファレンス マニュアル (ARM ARM) では、1 つの FIQ と 1 つの IRQ が指定されており、多くの人がすでに回答しています。しかし、ARMv7-M (Cortex-M プロセッサで使用) はプロセッサに割り込みコントローラを統合しているため、FIQ の代わりに 1 つの NMI と最大 240 の IRQ ラインを提供します。
詳細情報: ARMv7 A および ARMv7-R アーキテクチャ リファレンス マニュアル: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html
ARMv7-M アーキテクチャ リファレンス マニュアル: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403e.b/index.html
例として、Cortex M4 スペック シート: http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php