3

こんにちは私は現在、「ベアメタル」で実行されているAT91SAM7X256を使用しています。私はデータシートとアーキテクチャマニュアルをよく読みました。そのことを念頭に置いて、FIQはIRQよりも優先度が高いため、FIQはIRQに取って代わられるべきではないという結論に達しました。

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

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

ありがとうございます

4

1 に答える 1

3

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

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

于 2012-02-18T18:48:40.863 に答える