Arm Cortex-Mプロセッサには、ピンポイントで、割り込み順位を制御する機能があります。PRIMASKとFAULTMASKとBASEPRIです。これらのマスクレジスタはMRS命令とMSR命令でアクセスします。
PRIMASKを設定すると、実行優先権は0に上げられます。すなわち、NMIとハードフォールト以外の全ての割り込みが禁止されます。
FAULTMASKを設定すると、実行優先権は-1に上げられます。すなわち、NMI以外の全ての割り込みが禁止されます。
BASEPRIを設定すると、特定の優先度N(最も低い構成可能な優先度)またはN以下の優先度の低い割り込みが全て禁止されます。Nは各マイコン製品で実装されているビット数に依存します。最大で9ビットです。0でない値は優先度マスクとして動作します。これによって定義された優先度が同じであるか、または現在実行されている優先度よりも高いときに、実行優先度に影響します。
PRIMASKとBASEPRIは、一時的に割り込みを無効にする時に役立ちます。FAULTMASKは一時的にフォールト処理を無効にする時に役立ちます。
PRIMASKとFAULTMASKは、非特権アクセス(ユーザーアクセス)状態ではセットできません。
これらのメカニズムは横取り優先度にだけ影響し、サブ優先度には影響ありません。
今回は、Arm Cortex-Mプロセッサを搭載しているSTM32L4シリーズを題材にして解説しましたが、同じArm Cortex-Mプロセッサが搭載されているマイコンでも、割り込みの仕様はさまざまです。必ずマニュアルを確認して使用してください。
マイコンの外部クロックと内部クロックの違い 種類や役割を一気に解説
マイコンのクロックセキュリティシステムって何?
低速読み出しフラッシュメモリでも、CPUが高速動作できる工夫とは?
Arm Cortex-Mのメモリプロテクションユニット(MPU)って何?
A-Dコンバーターの4つのトラブル事例と対策
マイコンの低消費UART、普通のUARTと何が違う?Copyright © ITmedia, Inc. All Rights Reserved.