1.3.4. プロセッサ例外の処理

ARM プロセッサでは、以下の例外タイプを認識します。

リセット

プロセッサリセットピンがアサートされると発生します。この例外は、起動が通知された場合またはプロセッサを起動された状態にするためにリセットが行われた場合だけに発生します。ソフトリセットは、リセットベクタ 0x0000 に分岐させることによって実行できます。

未定義命令

実行中の命令が、プロセッサや接続されているどのコプロセッサにも認識されない場合に発生します。

スーパーバイザコール(SVC、以前は SWI)

ユーザ定義の割り込み命令です。スーパーバイザコールにより、例えば、ユーザモードで実行中のプログラムが、スーパーバイザモードで実行される RTOS 関数などの特権操作を要求できます。

プリフェッチアボート

プロセッサが、不正なアドレスからプリフェッチされた命令を実行しようとしたときに発生します。不正なアドレスとは、メモリが存在しないアドレスか、または現在のモードでプロセッサからアクセスできないとメモリ管理サブシステムが判断したアドレスを指します。

データアボート

データ転送命令によって不正なアドレスでのロードまたはストアが試行された場合に発生します。

割り込み(IRQ)

プロセッサ外部割り込み要求ピンが LOW でアサートされ、IRQ 割り込みがイネーブルされているとき(CPSR 内の I ビットがクリアされているとき)に発生します。

高速割り込み(FIQ)

プロセッサ外部高速割り込み要求ピンが LOW でアサートされ、FIQ 割り込みがイネーブルされているとき(CPSR 内の F ビットがクリアされているとき)に発生します。通常、この例外は、割り込みレイテンシを最小限に保つ必要がある場合に使用されます。

通常、例外処理をオペレーティングシステムに頼らない組み込みアプリケーションなどのアプリケーションを記述する場合には、例外タイプごとのハンドラを記述する必要があります。

SVC や IRQ 割り込みなど、1 つの例外の種類に複数の発生源があるような場合には、各発生源の例外ハンドラをチェインすることができます。詳細については、例外ハンドラのチェインを参照して下さい。

Thumb 命令をサポートするプロセッサは、例外を受け取ると ARM 状態に切り替わります。ARM コードで例外ハンドラを記述するか、またはベニアを使用して Thumb 状態に切り替えることができます。詳細については、復帰アドレスと復帰命令を参照して下さい。

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential