2011-01-05 27 views
0

私は最初ベクトル割り込みコントローラ(VIC)を使用して外部割り込みを効率的に処理する方法は?

(あなたは「ARM7」をタグ付けされたので、おそらくこの質問はなど、皮質NVICについてではありません。)VICが外部割込みを扱うことができる方法を知りたい効率的に

+1

VICは誰ですか?割り込みコントローラはARM7コアでは定義されていません。ベンダー固有の外部周辺デバイスです。さらに、あなたの質問はどうですか?ハードウェアの仕組みやハードウェアの使い方は?いずれの場合も、回答はベンダのデータシート/リファレンスマニュアルに記載されています。 – Clifford

+1

@Clifford:VICは、ARM7デバイスで一般的です。このタグはライン外ではないと思います(VICを持たないARM7デバイスがありますか?)。そして、それ自体では、RTFMが質問に答えるという事実は、必ずしも問題がSOにとって適切でないことを意味するものではない。ここの質問の大部分は、ドキュメントを読むことで答えられると思います。 –

+0

@Micheal Burr:それは私が言っていることではありません。むしろ* Vectored Interrupt Controller *は一般的な用語であり、あるベンダーが実装するものは他のベンダーの実装と必ずしも同じではありません。他のものは、割り込みコントローラを実装し、別の用語を完全に使用することがあります。要点は、割り込みコントローラがARMによって定義されていないことです。 – Clifford

答えて

12

少し背景ARMプロセッサは、通常割り込み(IRQ)と高速割り込み(FIQ)の2種類の割り込みをサポートしています。 CPUを中断する可能性のある各周辺機器は、IRQまたはFIQをトリガします。 IRQには単一のベクトルがあり、FIQには単一のベクトルがあります。

周辺機器からIRQ/FIQへのマッピングは、ハードウェアで行われることもありますが、設定が必要な場合もあります。しかし、2つ以上の周辺割り込みが発生するとすぐに、割り込みベクタを共有する必要があります。言い換えれば、3つの割り込み要因がある場合、IRQまたはFIQの少なくとも1つが複数のデバイスで使用されることが保証されます。これは、割り込みを取るときに、「なぜここにいるのですか?誰が私を中断したのですか」を知るために、「ポーリング」(通常はハードウェアレジスタ)する必要があることを意味します。

各割り込みには独自のベクトルがあり、その割り込みスロットにベクトル化すると、誰があなたを妨害しているのかを正確に知ることができます。ポーリングなし "OK、誰が私を中断した?"

ARMのサイトには、コンフィギュレーション情報、レジスタ定義、ネスト/優先順位付け割り込みなど、ARM VIC(およびその多くのバリエーション)に関する詳細がたくさんありますが、VICが割り込みを効率的に処理する方法。その機能のすべての詳細を記述することは、この質問の範囲外です。

(私は「できるだけ少ないポーリング/質問する」と「効率的に」解釈しています)VICでサポートされている優先割り込みは、優先順位の高い割り込みのレイテンシを減らします。 「私を中断したのは誰ですか?」と投票しなくても同じカテゴリーに入れていますが、「効率的」ではありません)。は、Primecell VICの詳細情報です。

関連する問題