日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

<< 過去

未来 >>

リセットって割り込み?

マイコンの重要な機能が割り込みである。

割り込みというのは、条件を満たしたとき、実行中のプログラムを中断して、指定したプログラムを実行させるもので、

マイコンではタイマや通信などをきっかけにして、割り込みを発生させることが多い。

PCも裏ではいろんな割り込みが動いてるんだけどね。それを意識するかはともかく。


割り込みの種類を書き上げたリストの筆頭に「パワーオンリセット」と書いていたら、

それは割り込みではないのでは? と指摘された。

僕の認識ではリセットは優先度最高の割り込みという認識だったのだが、

確かにリセットって一般的な割り込みとは全く違う概念のものだよね。


マイコンのマニュアルにはどう書かれているのか。

ARM Cortex-Mシリーズ と ルネサスRXシリーズ のマニュアルを見てみたのだが、どちらも書き方はほぼ同じだった。

僕が割り込みと思っていたものは「例外」という言葉で書かれていた。

Cortex-Mでは例外は リセット、ノンマスカブル割り込み(NMI)、各種フォルト、スーパーバイザコール、システムタイマ、外部割り込み から構成されているとある。

RXでは例外は リセット、NMI、割り込み、未定義命令例外、特権命令例外、無条件トラップ から構成されるとあった。

すなわち、例外の中に「割り込み」という概念があるということらしい。


一般的に割り込みというのは、ユーザーが有効・無効や優先度を決めることが出来る。

ARMだと数字が小さいほど優先度が高く、RXだと数字が大きいほど優先度が高い。

もっとも同じルネサスでも旧NECから継承したRL78(旧78K0)は数字が小さい方が優先度が高いようだが。

それはさておき、Cortex-M ではリセットの優先度は -3、NMIは優先度-2、ハードフォルトは優先度-1に固定されている。

ユーザーが設定できる優先度は0~255なので、リセットは最優先、それに次いでNMI、ハードフォルトというのは不変ということである。

リセットとNMIが最優先かつ無効化できないというのは、どんなマイコンも共通なんじゃないか。


Cortex-MにしてもRXにしても、例外の中に狭義の「割り込み」があって、

狭義の割り込み以外の例外として、少なくともリセットとNMIがあるということである。

リセットは明らかに特殊だけど、NMIもリセットを除いて最優先で無効化できないという点では特殊である。

NMIはその性質からエラー処理に使われることが普通である。

とあるシステムでは、外部のロジックICの異常信号をNMI入力に接続してあった。

ロジックICが異常を検出したら、マイコンにNMIを発生させて処理を停止させるようになっていたはず。

RXマイコンではNMI発生後は元のプログラムに復帰出来ないと書かれていたぐらいなので、そういう用途でしか使っちゃダメだよということだね。


リセットは割り込みなのか? と問われると、ちょっと困ってしまうところはあるのだが、

特定の条件によって、プログラムカウンタを指定した値にセットするという点では割り込みなんじゃないか。

ただし、リセットというのはその性質上、内部状態をご破算にするので、元のプログラムに戻ることは当然出来ない。

その点では、一般的な割り込みの特徴に合わない気がするんだけど、元のプログラムに戻らない用途で使う割り込みというのはけっこうあるんだよね。

例えば、ウォッチドックタイマー割り込みとか。死に際でログを取ったりするための割り込みだから、通常は元のプログラムに戻らない。

元のプログラムに戻らないのと、戻れないのは違うと言われればそうかもしれないが。


もっとも、リセットは割り込みではないのでは? という指摘はマイコン内部の機能ブロックを意識しての話だったようだけど。

そのマイコンでは、リセット以外の例外をコントロールする機能ブロックがあるらしい。

NMIも、各種フォルトも、狭義の「割り込み」も同じ枠組みでコントロールされているようだが、

唯一、リセットだけは別のブロックによりコントロールされているようである。

リセットは他の割り込みとは実現方法が違うだろうなぁ、というのはだいたい想像できることだけど、実際そうだよというだけの話。


Author : Hidemaro
Date : 2019/08/09(Fri) 23:50
コンピュータ・インターネット | Comment | trackback (0)
blog comments powered by Disqus

トラックバック

トラックバックURL取得

Tools