質問

こんにちは私は現在、「ベアメタル」で実行されているAT91SAM7X256で作業しています。データシートとアーキテクチャマニュアルを徹底的に読んでいます。それを念頭に置いて、FIQはIRQよりも優先度が高いという結論を避けました。

ただし、実際には、CPSRのFビットに触れていない場合でも、FIQハンドラーの実行を停止しているIRQに気付いています。 FIQがIRQにサービスを提供するために停止すべきではないと仮定するのは間違っていますか?

FIQサービスルーチンが中断されないようにするには、何をする必要がありますか?

ありがとうございます

役に立ちましたか?

解決

FIQハンドラーを入力すると、ARM Coreは、CPSRに「I」と「F」ビットを設定することにより、FIQとIRQの両方のさらなる割り込みを自動的に無効にします。これにより、FIQを先取りすることはできないと感じます。しかし、SWはこの動作をオーバーライドできます!だから、あなたのコードの一部がCPSRに触れ、「i」ビットをリセットすることだと思います。したがって、FIQが実行されている場合でも、IRQ割り込みはトリガーされている可能性があります。

上記の説明に追加するために、FIQが特別に見える理由は、IRQハンドラーが入力されると、さらにIRQのみを無効にすることで「I」ビットが設定されるためです。 「F」ビットは設定されていないため、FIQはSW介入を必要とせずに実行中のIRQハンドラーを中断する可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top