NMI
NMI(割り込み禁止できない割り込み)って、結構難しいよ....
なんでかって言うと....
普通の割り込みって、割り込んだ時に
自動的に割り込み禁止になる。
多重割り込みできる環境でも、大概は自分自身の
割り込みは禁止された状態で実行される。
そうでないと、割り込みリクエストが出っぱなしになると
ずっと呼び出しが繰り返されて、あっという間に
スタック食いつぶしたりするし、
そもそも処理プログラムに入れない。
普段はこういうメカニズム気にしないから
気づきにくいけど。
OS環境ではそもそもハードウエア割り込みなんて
起こりえないし、組み込みマイコンだって
ベクタ割り込みコントローラーとかで
うまく処理されていて、なかなか気づかない。
------
ところがNMIはその名の通り、マスク不能な割り込みなので
割り込み要求が出て続ける限り、NMIルーチンの実行も
出来なくなっちゃう。
(永遠に処理ハンドラにジャンプし続ける)
ハードウエアとかで、一回だけNMIリクエストが出るように
なってる必要があるし、かつNMI処理が終わるまでは
次のNMIを無視するハード機構が必要だ。
これって、現実的にNone Maskedじゃないよね....
------
というのが、今どきの組み込みマイコンでも
NMIがあまり出てこないわけだと思うんだけど。
そういや、こういう解説も(webでは)見ない気がするよな....
知ってる人は知ってるけど、実は世間では
知られてない系の話なのか
| 固定リンク | 0
« 労働時間 | トップページ | やり尽くしました »
コメント