Unit)は、Cortex-M4です。Controller:統合ネスト型ベクター割り込みコントローラー)が全ての割り込みを制御していて、NMIの入力信号を受けると割り込みハンドラを起動します。マイコンメーカーは、このNMIの入力信号にどの割り込み要因を割り当てるかを検討し、マイコンの仕様を決めます。(クリックで拡大)CSSはマイコンのシステムクロックの障害を検知するシステムです。Signal)のクロックに切り替え、同時にNMIハンドラを起動する機能です。マイコンではシステムクロックの障害は致命的な障害なので、NMIを割り当てています。NVICのNMI入力信号はマイコンメーカーが自由に割り当てできるため、各マイコンで最も致命的な障害を何と考えるかで、割り当て項目が変わってきます。ウォッチドッグタイマー*3)のオーバーフローを割り当てているマイコンもあります。ウォッチドッグタイマーは、マイコンの暴走を監視するタイマーなので、これも致命的な要因と言えます。マイコンの暴走をウォッチドッグタイマーで検知して、NMIを起動し、データのバックアップとプログラムの初期化などを行います。(図3(b))ちなみに、STM32F4シリーズのウォッチドッグタイマーは、NMIよりも優先順位の高い例外処理のリセットに割り当てられています。マイコンによってはウォッチドッグタイマーのオーバーフローをNMIに割り当てるかリセットに割り当てるかを選択できるものもあります。*3)参考記事:Q&Aで学ぶマイコン講座(19):ウォッチドッグタイマーって何?【2】NMIが外部端子に割り当てられていて、ユーザーが割り込み要因をハードウェアで選択できる場合NMIを外部割り込みに割り当てて、端子から割り込み要因を入力するマイコンもあります。この場合、ユーザーがNMIの要因をハードウェアで決めることになります。一般的なマイコンもCortex-M4のNVICと同じような割り込みコントローラーを内蔵していて、端子からNMIの割り込み要因を入力する場合には、端子と割り込みコントローラーをつなげ、NMIの入力信号を割り込みコントローラーが処理する構成になります(図4)使用例として、「タンパ検知」が挙げられます。マイコンの機能に「タンパ検知」がない場合、NMIを使うことができます。「タンパ検知」もシステムにとって致命的な障害ですので、他のエラーや割り込みよりも優先して受け付けられなければなりません。ソフトの暴走によってマスクされてしまうことを防げるため、NMIは「タンパ検知」の割り込みに適しています。(クリックで拡大)(a)NMI端子が専用端子の場合NMIの性質上、一般的にNMI端子は専用端子に割り当てられており、他の機能と兼用されていません(図4(a))(b)NMI端子が汎用IOとの兼用端子の場合マイコンによっては端子の使用範囲を広くするために、NMI端子が汎用IOとの兼用端子になっている場合があり、ユーザーがNMI端子に設定しているつもりでも、何かの間違いで汎用IO端子になってしまうことがあります。この場合、NMIを受け付けない状態になり、致命的な障害を検知することができないため、必ず端子がNMIになっていることを確認してください。端子の初期値の機能もチェックする必要があります。初期値が汎用IOになっている場合は、ソフトウェアでNMIに切り替える必要があります。この場合、端子機能が切り替わるまではNMIは使えません。LLC.ITmediaはアイティメディア株式会社の登録商標です。