5

ARM FIQを有効にする方法を知っている人はいますか?

4

2 に答える 2

8

スーパーバイザーモードでIRQ/FIQを有効または無効にする以外に、システム(ARMチップが実行されている)がハードウェアでIRQ / FIQを無効にしない限り、ARMでIRQ/FIQを使用するために特別な設定を行う必要はありません。 (あなたのコメントに基づくと、FIQ入力ピンが正しく駆動されているのを見ているので、これは当てはまりません)。

頭字語を知らない人にとって、FIQは単にリストの最後の割り込みベクトルであり、他の割り込みのように分岐命令に限定されないことを意味します。つまり、他のIRQハンドラーよりも高速に実行できます。

通常のIRQは、コードが1つのワードに収まるようにする必要があるため、分岐命令に制限されます。FIQは、他のIRQベクトルを上書きしないため、分岐命令なしでコードを直接実行できます(したがって「高速」)。

FIQ入力ラインは、外部要素がARMチップをFIQモードにキックし、正しい例外の実行を開始するための単なる方法です。ARM自体には、CPSR以外にそれが発生するのを妨げるものは何もありません。

スーパーバイザモードでFIQを有効にするには:

MRS r1, cpsr         ; get the cpsr.
BIC r1, r1, #0x40    ; enable FIQ (ORR to disable).
MSR cpsr_c, r1       ; copy it back, control field bit update.

通常のIRQでも同様のことができますが、#0x40の代わりに#0x80を使用します。

于 2009-07-13T13:56:52.407 に答える
1

FIQ は、トラストゾーン拡張機能を使用して、チップ メーカーによって閉鎖される可能性があります。

Trustzone は、セキュアな世界と通常の世界を作成します。安全な世界には、独自のスーパーバイザー、ユーザー、およびメモリ空間があります。安全な操作をルーティングして、バス上のピンをスキャンしてもチップから離れず、追跡できないようにするという考え方です。OMAP では、一部の暗号化操作に使用されていると思います。

リセット時、コアはセキュア モードで起動します。セキュアなモニター (セキュアな世界と非セキュアな世界の間のゲートウェイ) をセットアップし、この時点で FIQ をモニターにルーティングするようにセットアップできます。設定できるのは SCR.FIQ ビットだと思います。その後、すべての FIQ が CPSR.F の値を無視し、監視モードに移行します。ARM ARM を調べてください。しかし、私の記憶が正しければ、これが起こっているかどうかを非セキュア OS コードから知る方法はありません。次に、モニターはノーマル ワールド レジスタをリセットし、リセット例外ベクトルに設定された PC で例外リターンを実行します。

コアは監視モードへの割り込みを受け取り、その処理を実行して戻ります。

申し訳ありませんが、コメントでお答えできません。十分な評判がありません。いつでも修正できます ;)、しかし、これを見ていただければ幸いです。

于 2013-04-14T00:17:04.397 に答える