(57)【要約】【課題】フラッシュＥＥＰＲＯＭなどの書き換え可能な不揮発性メモリに対する書き込み・消去実行中にＣＰＵ、システムの動作異常を示すノンマスカブル割り込み（ＮＭＩ）が発生した場合に、不定状態の不揮発性メモリにアクセスすることなくノンマスカブル割り込みを実行できるマイクロコントローラを提供する。【解決手段】割り込み要求信号を入力したときに割り込み信号ＩＮＴを発生しＣＰＵ１に送出する割り込み制御部５の前段に、割り込み要求制御部７を設ける。この割り込み要求制御部７は、書き換え可能な不揮発性メモリ３に対する書き込み・消去フラグＦが有効である期間中に発生したＣＰＵ１または周辺機能部（ウォッチドッグタイマ６）からのノンマスカブルな割り込み要求信号ＥＩＲ，ＷＩＲをマスクし、不揮発性メモリ３に対する書き込みまたは消去の完了後に、延期された割り込み要求信号ＥＩＲ′，ＷＩＲ′を割り込み制御部５に送出する。【選択図】図１
2008047025.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵによってアクセスされる書き換え可能な不揮発性メモリと、
割り込み要求信号を入力したときに割り込み信号を発生し前記ＣＰＵに送出する割り込み制御部と、
前記不揮発性メモリに対する書き込みまたは消去中であることを示す書き込み・消去フラグが有効である期間中に発生した前記ＣＰＵまたは周辺機能部からの割り込み要求信号をマスクし、前記不揮発性メモリに対する書き込みまたは消去の完了後に前記割り込み要求信号を前記割り込み制御部に送出する割り込み要求制御部とを備えたマイクロコントローラ。
【請求項２】
前記周辺機能部として、所定の周期でウォッチドッグ割り込み要求を発生し、その割り込み要求に対応する割り込みのクリアが行われずに再度のウォッチドッグ割り込み要求が発生したときに強制リセット要求信号を発生するウォッチドッグタイマを備えるとともに、
前記ウォッチドッグタイマによる前記強制リセット要求信号を受けたときに前記ＣＰＵに対してハードリセットをかけるリセット制御部と、
前記不揮発性メモリに対する書き込みまたは消去中であることを示す書き込み・消去フラグが有効である期間中に前記リセット制御部からの前記ハードリセットがあったときに書き込みまたは消去の異常終了を示す異常終了フラグを立てる異常終了フラグ発生部とを備えた請求項１に記載のマイクロコントローラ。
【請求項３】
前記ウォッチドッグタイマは、前記書き込み・消去フラグが有効である期間中は、前記ウォッチドッグ割り込み要求を発生したときから次のウォッチドッグ割り込み要求を発生するまでの周期を前記所定の周期よりも長く設定する請求項２に記載のマイクロコントローラ。
【請求項４】
前記ウォッチドッグタイマにおける前記次のウォッチドッグ割り込み要求を発生するまでの周期は、前記不揮発性メモリに対するアクセスが書き込みのときと消去のときとで別個の周期に設定される請求項３に記載のマイクロコントローラ。
【請求項５】
前記ＣＰＵは、前記ハードリセットに伴うリセットスタート時に、前記不揮発性メモリを最初に参照するリセットベクタテーブル領域と、前記ＣＰＵの起動用のプログラムを格納し前記リセットベクタテーブル領域に記録されているアドレスで指定されるリセット分岐先領域とに対する書き換えプロテクトを行う請求項１から請求項４までのいずれかに記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（中央演算処理装置）と、ＣＰＵによってアクセスされる書き換え可能なフラッシュＥＥＰＲＯＭなどの不揮発性メモリと、ウォッチドッグタイマのような周辺機能部と、割り込み要求信号を入力したときに割り込み信号を発生しＣＰＵに送出する割り込み制御部とを備えたマイクロコントローラに関する。
【背景技術】
【０００２】
フラッシュＥＥＰＲＯＭ（flash electrically erasable ＰＲＯＭ）のような書き換え可能な不揮発性メモリを内蔵したマイクロコントローラは、その制御プログラムを不揮発性メモリに格納しており、マイクロコントローラ内蔵のＣＰＵからのアクセス制御により適宜不揮発性メモリからプログラムコードを読み出し、実行している。
【０００３】
通常、不揮発性メモリの中の一部の固定領域は割り込みベクタテーブル領域としてＣＰＵより予約されており、この割り込みベクタテーブル領域にはプログラムコードは配置されていない。割り込みベクタテーブル領域の特定のアドレスは特定の割り込み要求と一対一に対応しており、その特定の割り込みに対する割り込み処理プログラムの先頭アドレスが格納されている。
【０００４】
マイクロコントローラに内蔵された周辺機能部などからＣＰＵに対して割り込み要求が発生した場合、ＣＰＵは現在の処理を中断し、割り込み要因を解析して不揮発性メモリ上の割り込みベクタテーブル領域の中から、その割り込み要因に対応するアドレスに格納された割り込み処理プログラムのアドレスを読み出す。引き続きＣＰＵは読み出した割り込み処理プログラムアドレスに分岐した上で、割り込み処理プログラムを実行し、割り込み処理プログラム末尾のリターン命令の実行により中断していた元の制御プログラムへ復帰する。
【０００５】
一般的に、ＣＰＵや周辺機能部からのデータをメモリに保存したい場合は、マイクロコントローラに内蔵した揮発性メモリに書き込みを行い、不揮発性メモリは読み出し専用メモリとして使用される。
【０００６】
しかし、近年、不揮発性メモリの書き換え回数の向上とともに、電源遮断後も一部のデータを保持するために、制御プログラム実行中においても不揮発性メモリを消去、書き込みするケースが増えてきている。
【０００７】
一般的に不揮発性メモリは、読み出し・書き込み・消去用の制御回路と、メモリセル領域から構成される。１個の不揮発性メモリの中では、メモリセル個別に読み出し、書き込み・消去モードを設定することはできず、全メモリセル領域に対し読み出し、書き込み・消去モードのいずれかのみの設定に制約される。また、書き込み・消去モード時に不揮発性メモリを読み出す場合には、読み出したデータは不定であり、保証されない。
【０００８】
したがって、ＣＰＵが制御プログラムの読み出し動作を行っている不揮発性メモリにおいて、その一部のメモリ領域に対して書き込み・消去を行うには、次のように処理する。すなわち、書き込み・消去中に実行するプログラムコード（書き換え制御プログラム）を別の揮発性メモリにダウンロードし、その揮発性メモリ上のプログラムを実行することによって不揮発性メモリに対する書き込み・消去を行う。
【０００９】
しかし、制御プログラム本体により、マイクロコントローラに内蔵の周辺機能部からの割り込み要求を受け付ける設定にしている場合には、次のような問題がある。すなわち、割り込みベクタテーブル領域を含む不揮発性メモリに対する書き込み・消去を実行している状態で、割り込み要求が発生した場合には、不揮発性メモリにおける書き込み・消去に起因する不定データを読み出して実行することになるため、ＣＰＵが暴走する事態となる。
【００１０】
以上の問題を回避するために、割り込みベクタテーブル領域を含む不揮発性メモリへの書き込み・消去を実行する際には、ソフトウェアにより無効化可能な割り込み（マスカブル割り込み）のすべてを一時的に禁止するなどの対応がとられてきた。
【００１１】
一般に不揮発性メモリに対する書き込み・消去に必要とされる時間は、制御プログラムの実行サイクルの数倍〜数１００倍になる。そのため、書き込み・消去プログラムは、システム制御プログラムとは独立した別の動作モードとしてプログラムされることが多く、マスカブル割り込みを禁止することが問題とはならないように全体の制御が工夫されている。
【００１２】
しかし、不正命令のフェッチ時などに発生するシステムエラー割り込み、暴走検出用のウォッチドッグ割り込みなどの場合は別である。これらの割り込みは一般にソフトウェアによりマスクすることのできないノンマスカブル割り込み（ＮＭＩ）であるが、ノンマスカブル割り込みの場合には、書き込み・消去中の不揮発性メモリに対して読み出し動作が生じてしまう可能性があった。
【００１３】
図５は、上記の課題に配慮した従来技術の一例である。
【００１４】
１はＣＰＵ、３は不揮発性メモリ、４はＳＲＡＭ（Static Random Access Memory）などの揮発性メモリである。２は不揮発性メモリ３、揮発性メモリ４のアクセスを制御するメモリＩ／Ｆ（インターフェース）である。Ｄ１，Ｄ２，Ｄ３はデータバス、Ａ１，Ａ２，Ａ３はアドレスバスである。６は周辺機能部の一例のウォッチドッグタイマ（ＷＤＴ）であり、プログラムにより設定された所定の周期でウォッチドッグ割り込み要求信号ＷＩＲを発生する。ＥＩＲはＣＵＰ１が何らかの理由で不正な命令を実行した際に発生するシステムエラー割り込み要求である。ウォッチドッグ割り込み要求信号ＷＩＲ、システムエラー割り込み要求信号ＥＩＲはともに、ノンマスカブル割り込みである。５はウォッチドッグタイマ６などからの割り込み要求の受け付けを行う割り込み制御部であり、ウォッチドッグ割り込み要求信号ＷＩＲ、システムエラー割り込み要求信号ＥＩＲなどの割り込み要求を受け付けると、割り込み信号ＩＮＴをＣＰＵ１に発行する。
【００１５】
不揮発性メモリ３には、ＣＰＵ１により実行可能な制御プログラムが格納されている。制御プログラム中には、不揮発性メモリ３に対する書き込み・消去を行う書き換え制御プログラム、ウォッチドッグタイマ６からの割り込み発生時に実行する割り込み制御プログラムが含まれる。３ａは割り込みベクタテーブル領域で、ウォッチドッグタイマ６の割り込み制御プログラムの先頭アドレスが格納されており、ウォッチドッグタイマ６からの割り込み発生時にＣＰＵ１により参照される。
【００１６】
１０は割り込みベクタテーブル領域３ａのアドレスを変換するアドレス変換器である。このアドレス変換器１０は、内部に割り込みベクタテーブル領域３ａのアドレスそれぞれに対応するアドレス変換テーブルレジスタを備えており、ＣＰＵ１からのアドレスＡ１のうち割り込みベクタテーブル領域３ａに対応するアドレスをアドレス変換テーブルレジスタに設定されたアドレスに変換する。このアドレス変換テーブルレジスタはＣＰＵ１からの操作で任意のアドレスに設定可能である。
【００１７】
Ｆは不揮発性メモリ３が書き込み・消去実行中であることを示す書き込み・消去フラグである。アドレス変換器１０による割り込みベクタテーブル領域３ａのアドレスの変換は、書き込み・消去フラグＦのアサート（有効化）状態において有効になる。
【００１８】
以上のシステムにおいて、不揮発性メモリ３の一部領域に対して書き込み・消去を行う場合は、以下のような手順で行う。
【００１９】
（１）ウォッチドッグタイマ６の割り込み制御プログラムを揮発性メモリ４の任意領域４ａにダウンロードする。
【００２０】
（２）割り込みベクタテーブル領域３ａのデータを揮発性メモリ４の任意領域４ａにコピーする（以下、この領域をＲＡＭベクタテーブル領域と呼ぶ）。
【００２１】
（３）ＲＡＭベクタテーブル領域４ａのうち、ウォッチドッグタイマ６の割り込み処理プログラムの先頭アドレスを保持している領域のデータを、（１）のプログラムの先頭アドレスを示すように書き換える。
【００２２】
（４）アドレス変換器１０内のアドレス変換テーブルレジスタを操作して、ウォッチドッグタイマ６の割り込みベクタテーブル領域３ａのアドレスを（２）でコピーしたＲＡＭベクタテーブル領域４ａ上のアドレスに変更する。
【００２３】
（５）書き換え制御プログラムを揮発性メモリ４へダウンロードする。
【００２４】
（６）ＣＰＵ１の制御を揮発性メモリ４上の書き換え制御プログラムへ移し、書き込み・消去を実行する。これにより、書き込み・消去フラグＦがアサートされ、アドレス変換器１０による割り込みベクタテーブル領域３ａのアドレスの変換が有効になる。
【００２５】
ここで、不揮発性メモリ３に対する書き込み・消去実行中に、ウォッチドッグタイマ６からウォッチドッグ割り込み要求信号ＷＩＲが発生したとする。
【００２６】
（７）ＣＰＵ１が割り込み処理プログラムの先頭アドレスを参照するために発行したウォッチドッグ割り込み要求信号ＷＩＲの割り込みベクタテーブル領域のアドレスを、アドレス変換器１０により、（２）でコピーしたＲＡＭベクタテーブル領域４ａ上のアドレスに変換する。
【００２７】
（８）ＣＰＵ１は、ＲＡＭベクタテーブル領域４ａ上からウォッチドッグタイマの割り込み処理プログラムの先頭アドレスを取得し、揮発性メモリ４上の割り込み処理プログラムへ分岐、実行する。
【００２８】
この結果、不揮発性メモリ３に対する書き込み・消去中においては、割り込みアクセスによる不揮発性メモリ３への読み出しは行われず、不定命令実行に起因するＣＰＵ１の暴走は回避することができる。
【００２９】
図６もまた、上記の課題に配慮した従来技術の一例である。１１は割り込み制御部５とＣＰＵ１との間に介在された割り込みマスク部である。この割り込みマスク部１１は、不揮発性メモリ３からの書き込み・消去フラグＦがアサートされている期間においては、マスカブル割り込み、ノンマスカブル割り込みにかかわらず、割り込み制御部５からＣＰＵ１へのすべての割り込みをマスク・無効化する。
【００３０】
このように構成することで、不揮発性メモリ３に対する書き込み・消去中に割り込みアクセスは発生せず、ＣＰＵ１は不定命令実行に起因する暴走を回避することができる。
【００３１】
なお、不揮発性メモリに対する書き込み・消去時の割り込み処理方法に関する文献例として、特許文献１および特許文献２がある。
【特許文献１】特許第３４８０９５７号公報（第３−４頁、第１−５図）
【特許文献２】特開２００５−２０２９８４号公報（第９−１７頁、第１−６図）
【発明の開示】
【発明が解決しようとする課題】
【００３２】
上記の特許文献１に代表される従来技術には次のような課題がある。
【００３３】
（１）割り込み処理プログラムのダウンロードのために十分な容量の揮発性メモリの実装が必要である。
【００３４】
（２）ダウンロード時間の分だけ、書き込み・消去のトータル時間が増大する。
【００３５】
（３）前述したように書き込み・消去時間は制御プログラムの実行サイクルの数倍〜数１００倍を要するもので、この間のシステム制御を行うためには、揮発性メモリにダウンロードした一部の割り込み処理プログラムだけで対応するのは困難である。
【００３６】
同様に、特許文献２に代表される従来技術の課題としては、
（４）不揮発性メモリに対する書き込み・消去中にすべての割り込みをマスクすることからノンマスカブル割り込みに応答することができない。その結果、システムエラーや暴走検出などシステムの致命的な異常状態からの復旧に対するレスポンスやシステムの信頼性が低下する。
【００３７】
前述したように、現在の不揮発性メモリに対する書き込み・消去時間の能力では、制御プログラムと書き込みプログラムの実行サイクルの時間差は数倍以上、消去プログラムとでは数１００倍程度になる。したがって、特許文献１に代表される技術では、割り込み処理プログラムなど制御プログラムの一部を実行することは可能であるが、制御プログラム本体は不揮発性メモリ上にあるため、割り込み処理プログラムの動作を完了しても不揮発性メモリの消去動作は継続しており、制御プログラムの本体の動作は待機せざるを得ない。結果として、書き込み・消去動作中において周辺機能部からのリアルタイムな割り込み処理を実行することには限界がある。つまり、書き込み・消去動作中の割り込み要求は実質的に禁止されていることと変わりない。
【００３８】
一方、一般的にノンマスカブル割り込みはソフトウェアによる禁止の制御ができない。これは、ソフトウェアの誤動作により誤って禁止設定されないようにするためである。システムエラーやウォッチドッグタイマによる暴走検出などシステム動作監視のための割り込み要求がノンマスカブル割り込み要求に割り当てられる。
【００３９】
特許文献２に代表される技術では、ノンマスカブル割り込みを含むすべての割り込みをハードウェア的にマスクするため、ノンマスカブル割り込みは本来の目的を失ってしまうことになる。
【００４０】
本発明は、このような事情に鑑みて創作したものであり、不定命令実行に起因するＣＰＵの暴走を防止するために、不揮発性メモリに対する書き込み・消去中における不揮発性メモリに対する割り込みアクセスを効果的に回避することができるマイクロコントローラを提供することを目的としている。
【課題を解決するための手段】
【００４１】
本発明によるマイクロコントローラは、
ＣＰＵと、
前記ＣＰＵによってアクセスされる書き換え可能な不揮発性メモリと、
割り込み要求信号を入力したときに割り込み信号を発生し前記ＣＰＵに送出する割り込み制御部と、
前記不揮発性メモリに対する書き込みまたは消去中であることを示す書き込み・消去フラグが有効である期間中に発生した前記ＣＰＵまたは周辺機能部からの割り込み要求信号をマスクし、前記不揮発性メモリに対する書き込みまたは消去の完了後に前記割り込み要求信号を前記割り込み制御部に送出する割り込み要求制御部とを備えたものである。割り込み要求制御部は、不揮発性メモリに対する書き込みまたは消去中における割り込み要求を一時的な無効化（マスク）により延期し、書き込みまたは消去が完了すれば、その割り込み要求を許可するものである。
【００４２】
書き換え可能な不揮発性メモリに対して書き込みまたは消去を行っているときは、不揮発性メモリから割り込み要求制御部に対して書き込みまたは消去中であることを示す書き込み・消去フラグが与えられている。書き込みまたは消去中にＣＰＵまたは周辺機能部から割り込み要求があったときは、割り込み要求制御部はその割り込み要求信号をマスクして保持し、割り込み制御部には伝えない。したがって、ＣＰＵには割り込みはかからない。このときの割り込み要求信号は、ノンマスカブル割り込み要求（ＣＰＵからのシステムエラー割り込み要求や周辺機能部からのウォッチドッグ割り込み要求など）、マスカブル割り込み要求を問わない。不揮発性メモリに対する書き込みまたは消去が完了すると、書き込み・消去フラグが無効となり、割り込み要求制御部はそれまで保持していた割り込み要求信号を活性化して割り込み制御部に伝え、割り込み制御部は割り込み信号を生成してＣＰＵに伝える。結果として、ＣＰＵには遅れて割り込みがかかる。
【００４３】
一方、書き換え可能な不揮発性メモリに対して書き込みまたは消去を行っていないときは、書き込み・消去フラグが無効である。したがって、ＣＰＵまたは周辺機能部から割り込み要求があったときには、割り込み要求制御部はその割り込み要求信号をそのままスルーさせて割り込み制御部に伝える。割り込み制御部は割り込み信号を生成してＣＰＵに伝え、ＣＰＵに直ちに割り込みがかかる。
【００４４】
以上のように、本発明によれば、書き換え可能な不揮発性メモリに対する書き込み・消去中に発生した割り込み要求を、割り込み要求制御部により書き込み・消去の完了まで延期させることが可能であり、不揮発性メモリに対する書き込み・消去中における不揮発性メモリに対する割り込みアクセスを回避する。このため、不定命令実行に起因するＣＰＵの暴走が防止される。
【００４５】
上記の構成のマイクロコントローラにおいて、
前記周辺機能部として、所定の周期でウォッチドッグ割り込み要求を発生し、その割り込み要求に対応する割り込みのクリアが行われずに再度のウォッチドッグ割り込み要求が発生したときに強制リセット要求信号を発生するウォッチドッグタイマを備えるとともに、
前記ウォッチドッグタイマによる前記強制リセット要求信号を受けたときに前記ＣＰＵに対してハードリセットをかけるリセット制御部と、
前記不揮発性メモリに対する書き込みまたは消去中であることを示す書き込み・消去フラグが有効である期間中に前記リセット制御部からの前記ハードリセットがあったときに書き込みまたは消去の異常終了を示す異常終了フラグを立てる異常終了フラグ発生部とを備えるという態様がある。
【００４６】
ウォッチドッグタイマは所定の周期でウォッチドッグ割り込み要求を発生し、これを割り込み要求制御部および割り込み制御部を介してＣＰＵに与える。ウォッチドッグ割り込み要求に対応する割り込みのクリアが行われないまま、再度のウォッチドッグ割り込み要求が発生した場合、これは、異常事態が解消されずＣＰＵが暴走する可能性が高いので、ウォッチドッグタイマは強制リセット要求信号を発生し、リセット制御部に与える。強制リセット要求信号を受けたリセット制御部はＣＰＵに対してハードリセットをかける。このとき、書き込み・消去フラグが有効であれば、異常終了フラグ発生部はリセット制御部からのハードリセットを受けて、書き込みまたは消去の異常終了を示す異常終了フラグを立てる。すなわち、不揮発性メモリに対する書き込みまたは消去中にハードリセットがかかって、その書き込みまたは消去が異常終了されたことになるので、この異常終了を示す異常終了フラグを立てる。結果として、ＣＰＵの再起動後、異常終了フラグの判定で書き込み・消去異常の判定が簡便に行える。
【００４７】
また、上記の構成のマイクロコントローラにおいて、前記ウォッチドッグタイマは、前記書き込み・消去フラグが有効である期間中は、前記ウォッチドッグ割り込み要求を発生したときから次のウォッチドッグ割り込み要求を発生するまでの周期を前記所定の周期よりも長く設定するという態様がある。
【００４８】
ウォッチドッグ割り込み要求の発生周期は、実行する制御プログラムの処理時間、応答性を考慮して決定されるが、前述したように不揮発性メモリの書き込み・消去動作は制御プログラムの実行サイクルの数倍〜数１００倍になる。不揮発性メモリの書き込み・消去動作中の割り込み処理により、不揮発性メモリの書き込み・消去処理が中断されると、書き込み・消去動作の安定性や品質に悪影響を及ぼす可能性があり、書き込み・消去動作中の割り込みは好ましくない。
【００４９】
このため、不揮発性メモリに対する書き込み・消去を行っていないときは、ウォッチドッグ割り込み要求を発生する周期としてシステム要件を満足する所定の周期に設定する。一方、書き込み・消去の実行中は、所定の周期よりも長い周期に変更する。この周期延長により、システム制御動作と不揮発性メモリ書き換え動作の、ウォッチドッグ割り込み応答が最適化され、さらに安定性や品質の高い書き込み・消去動作を行える。
【００５０】
さらに、上記の構成のマイクロコントローラにおいて、前記ウォッチドッグタイマにおける前記次のウォッチドッグ割り込み要求を発生するまでの周期は、前記不揮発性メモリに対するアクセスが書き込みのときと消去のときとで別個の周期に設定されるという態様がある。
【００５１】
その結果として、不揮発性メモリに対して書き込み動作を行っているときと消去動作を行っているときで別個のウォッチドッグ割り込み要求周期に設定でき、ウォッチドッグタイマの割り込み応答がシステム動作全体を通じて最適化される。
【００５２】
また、上記の構成のマイクロコントローラにおいて、前記ＣＰＵは、前記ハードリセットに伴うリセットスタート時に、前記不揮発性メモリを最初に参照するリセットベクタテーブル領域と、前記ＣＰＵの起動用のプログラムを格納し前記リセットベクタテーブル領域に記録されているアドレスで指定されるリセット分岐先領域とに対する書き換えプロテクトを行うという態様がある。
【００５３】
ＣＰＵが動作開始時の最初に参照する不揮発性メモリ上のリセットベクタテーブル領域と、そのリセットベクタテーブル領域に書き込まれている分岐先アドレス領域について、ＣＰＵ実行による書き込み・消去をプロテクトする。これにより、不揮発性メモリに対する書き込み・消去中にハードリセットがかかっても、リセットベクタテーブル領域とその分岐先アドレス領域のデータが保護されているため、ＣＰＵは暴走することなく再起動する。
【発明の効果】
【００５４】
本発明によれば、書き換え可能な不揮発性メモリに対する書き込み・消去中に発生した割り込み要求（マスカブル割り込み、ノンマスカブル割り込み）を、割り込み要求制御部により不揮発性メモリへの書き込み・消去の完了まで延期させるので、不揮発性メモリに対する書き込み・消去中における不揮発性メモリに対する割り込みアクセスを回避することができ、不定命令実行に起因するＣＰＵの暴走を防止できる。
【００５５】
また、書き込み・消去動作中に強制リセットがかかった場合に異常終了フラグをセットするように構成すれば、ＣＰＵの再起動後に異常終了フラグの判定で書き込み・消去異常の判定を簡便に行える。
【発明を実施するための最良の形態】
【００５６】
以下、本発明にかかわるマイクロコントローラの実施の形態について図面に基づいて詳細に説明する。
【００５７】
（実施の形態１）
図１は本発明の実施の形態１におけるマイクロコントローラの構成を示すブロック図である。
【００５８】
図１において、１はＣＰＵ、２はメモリＩ／Ｆ、３は書き換え可能な不揮発性メモリ（フラッシュＥＥＰＲＯＭ）、４はＳＲＡＭなどの揮発性メモリ、５は割り込み制御部、６はウォッチドッグタイマ（ＷＤＴ）、７は割り込み要求制御部である。マイクロコントローラは、１チップ構成である。
【００５９】
ＣＰＵ１は、アドレスバスＡ１、データバスＤ１によりメモリＩ／Ｆ２と接続されている。メモリＩ／Ｆ２は、アドレスバスＡ２、データバスＤ２により不揮発性メモリ３と接続され、またアドレスバスＡ３、データバスＤ３により揮発性メモリ４と接続されている。メモリＩ／Ｆ２は、ＣＰＵ１からのアドレス信号によりアクセス先の判定を行い、アドレスバスＡ２、データバスＤ２を介して不揮発性メモリ３にアクセスし、またアドレスバスＡ３、データバスＤ３を介して揮発性メモリ４にアクセスする。
【００６０】
不揮発性メモリ３は、書き込み・消去動作の実行中を示す書き込み・消去フラグＦを備えている。また、マイクロコントローラの外部からの制御により書き込み・消去を行う汎用不揮発性メモリモードを備えているものとする。なお、不揮発性メモリ３は、ＣＰＵ１からの自動制御コマンドまたはＣＰＵ１から操作可能な書き換え制御レジスタにより書き込み・消去動作を行う方式が一般的であるが、ここではその方式は問わない。
【００６１】
ＣＰＵ１は、実行中に何らかの原因で不適当な命令を実行したとき、システムエラー割り込み要求信号ＥＩＲを発生する。システムエラー割り込み要求信号ＥＩＲはノンマスカブル割り込みである。
【００６２】
ウォッチドッグタイマ６は、システムクロックをカウントし、プログラムにより設定された所定の周期でウォッチドッグ割り込み要求信号ＷＩＲを発生する。
【００６３】
割り込み要求制御部７は、ＣＰＵ１からのシステムエラー割り込み要求信号ＥＩＲやウォッチドッグタイマ６からのウォッチドッグ割り込み要求信号ＷＩＲ、その他マスカブル割り込みなどの割り込み要求信号を受け付け、書き込み・消去フラグＦの状態に応じてそのままスルー出力するか、出力延期させるかを制御する。割り込み要求制御部７は、内部に割り込み要求ホールドレジスタを備えており、割り込み要求信号を出力延期させる場合は、割り込み要求信号を割り込み要求ホールドレジスタでホールドするように構成している。
【００６４】
不揮発性メモリ３が書き込み・消去の状態になると、書き込み・消去フラグＦがアサートされ、割り込み要求制御部７による割り込み要求信号の出力延期動作が有効になる。すなわち、書き込み・消去フラグＦがアサートされているときに、割り込み要求制御部７にＣＰＵ１からのシステムエラー割り込み要求信号ＥＩＲが入力されると、そのシステムエラー割り込み要求信号ＥＩＲは割り込み要求ホールドレジスタにセットされるとともに、割り込み制御部５に対する出力はアサート状態の書き込み・消去フラグＦによってマスクされる。また、書き込み・消去フラグＦがアサートされているときに、割り込み要求制御部７にウォッチドッグタイマ６からのウォッチドッグ割り込み要求信号ＷＩＲが入力されると、そのウォッチドッグ割り込み要求信号ＷＩＲは割り込み要求ホールドレジスタにセットされるとともに、割り込み制御部５に対する出力はアサート状態の書き込み・消去フラグＦによってマスクされる。このように書き込み・消去フラグＦがアサートされている期間では、割り込み制御部５が割り込み要求を受け付けることはなく、割り込み信号ＩＮＴも発生しない。
【００６５】
不揮発性メモリ３に対する書き込み・消去が完了し、書き込み・消去フラグＦがネゲートされると、割り込み要求ホールドレジスタにセットされている割り込み要求信号が活性化され、出力延期の割り込み要求信号が発生する。すなわち、割り込み要求ホールドレジスタにシステムエラー割り込み要求信号ＥＩＲがセットされている状態で書き込み・消去フラグＦがネゲートされると、割り込み要求制御部７は出力延期のシステムエラー割り込み要求信号ＥＩＲ′を割り込み制御部５に出力する。また、割り込み要求ホールドレジスタにウォッチドッグ割り込み要求信号ＷＩＲがセットされている状態で書き込み・消去フラグＦがネゲートされると、割り込み要求制御部７は出力延期のウォッチドッグ割り込み要求信号ＷＩＲ′を割り込み制御部５に出力する。このように、不揮発性メモリ３に対する書き込み・消去中に受け付けた割り込み要求信号は、書き込み・消去が完了するまで出力延期されることとなる。
【００６６】
一方、書き込み・消去フラグＦがネゲート（無効化）されているときに割り込み要求制御部７に割り込み要求信号が入力された場合、その割り込み要求信号はそのままスルー出力される。したがってこのとき、出力延期のシステムエラー割り込み要求信号ＥＩＲ′、出力延期のウォッチドッグ割り込み要求信号ＷＩＲ′は、それぞれシステムエラー割り込み要求信号ＥＩＲ、ウォッチドッグ割り込み要求信号ＷＩＲと等価である。
【００６７】
割り込み制御部５は、割り込み要求制御部７からのスルーまたは出力延期のシステムエラー割り込み要求信号ＥＩＲ′、ウォッチドッグ割り込み要求信号ＷＩＲ′を受け付け、内部の割り込み要求受付フラグをセットするとともに、ＣＰＵ１に対し割り込み信号ＩＮＴを発生する。ＣＰＵ１は割り込み信号ＩＮＴにより、割り込み制御部５の内部状態を解析し、割り込み要因を特定し、対応する割り込みベクタテーブル領域３ａのアドレスを読み出し、割り込み処理プログラムへ制御を移す。なお、割り込み要求受付フラグは、プログラムによりセット／リセットできるように構成されるのが一般的である。
【００６８】
なお、割り込み要求制御部７による割り込み要求信号の出力延期が有効な期間においても、ウォッチドッグタイマ６はカウント動作を実行しており、定期的にウォッチドッグ割り込み要求信号ＷＩＲを発生している。
【００６９】
このように構成することで、不揮発性メモリ３に対する書き込み・消去中における不揮発性メモリ３への読み出しアクセスを回避でき、不定命令実行に起因するＣＰＵ１の暴走を防止できる。
【００７０】
（実施の形態２）
図２は本発明の実施の形態２におけるマイクロコントローラの構成を示すブロック図である。図２において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指している。本実施の形態に特有の構成は、次のとおりである。ウォッチドッグタイマ６は、ウォッチドッグ割り込み要求信号ＷＩＲを出力した後に、割り込み処理プログラムによるウォッチドッグ割り込みのクリアが行われず、所定の周期が経過して２度目のウォッチドッグ割り込み要求信号ＷＩＲを発生したときには、強制リセット要求信号ＲＲを発生するように構成されている。一般に、ウォッチドッグタイマは停止させることができないように構成される。図２において、８は外部リセット信号やウォッチドッグタイマ６からの強制リセット要求信号ＲＲを入力とし、これらの信号がアサートされると直ちにハードリセット信号ＲＳＴを発生するリセット制御部、９はリセット制御部８からのハードリセット信号ＲＳＴの入力があったときに不揮発性メモリ３からの書き込み・消去フラグＦがアサート状態であれば、書き込みまたは消去の異常終了を示す異常終了フラグＦｅを立てる異常終了フラグ発生部である。異常終了フラグ発生部９はＣＰＵ１によりリードおよびクリア可能なように構成されている。その他の構成については、実施の形態１と同様であるので、説明を省略する。
【００７１】
次に、上記のように構成された本実施の形態のマイクロコントローラの動作を説明する。
【００７２】
ウォッチドッグタイマ６は所定の周期でウォッチドッグ割り込み要求信号ＷＩＲを発生し、これを割り込み要求制御部７および割り込み制御部５を介してＣＰＵ１に与える。ウォッチドッグ割り込み要求信号ＷＩＲに対応する割り込みのクリアが行われないまま、所定の周期が経過して再度のウォッチドッグ割り込み要求信号ＷＩＲが発生した場合、これは、異常事態が解消されずＣＰＵ１が暴走している可能性が高い。そこで、ウォッチドッグタイマ６は強制リセット要求信号ＲＲを発生し、リセット制御部８に与える。強制リセット要求信号ＲＲを受けたリセット制御部８は、直ちにＣＰＵ１に対してハードリセット信号ＲＳＴを出力し、ＣＰＵ１を含む１チップマイクロコントローラの各部をハードリセットする（システムリセット）。このとき、不揮発性メモリ３からの書き込み・消去フラグＦがアサート状態であれば、異常終了フラグ発生部９はリセット制御部８からのハードリセット信号ＲＳＴを受けて、書き込みまたは消去の異常終了を示す異常終了フラグＦｅを立てる。すなわち、これは、不揮発性メモリ３に対する書き込みまたは消去中にハードリセットがかかって、その書き込みまたは消去が異常終了されたことになるが、この異常終了を示す異常終了フラグＦｅを立てる。結果として、ＣＰＵ１の再起動後に、異常終了フラグＦｅを参照することで、不揮発性メモリ３の書き込み・消去動作に問題がなかったかを簡便に確認することが可能となる。
【００７３】
（実施の形態３）
図３は本発明の実施の形態３におけるマイクロコントローラの構成を示すブロック図である。図３において、実施の形態２の図２におけるのと同じ符号は同一構成要素を指している。本実施の形態に特有の構成は、ウォッチドッグ割り込み要求信号ＷＩＲは割込み要求制御部７を通さずに直接、割込み制御部５に入力されるように構成される。また、不揮発性メモリ３による書き込み・消去フラグＦがウォッチドッグタイマ６にも入力されていて、ウォッチドッグタイマ６は、書き込み・消去フラグＦがアサートされている期間中は、ウォッチドッグ割り込み要求信号ＷＩＲを発生したときから次のウォッチドッグ割り込み要求信号ＷＩＲを発生するまでの周期を前記所定の周期よりも長く設定するようになっている。すなわち、ウォッチドッグ割り込み要求周期は、不揮発性メモリ３に対する通常の読み出しモード時には短く、書き込みまたは消去モード時には長く設定されるようになっている。これは、直接には、ウォッチドッグタイマ６においてシステムクロックのカウント周期を変更できるように構成する。その他の構成については、実施の形態２と同様であるので、説明を省略する。
【００７４】
次に、上記のように構成された本実施の形態のマイクロコントローラの動作を説明する。
【００７５】
不揮発性メモリ３に対する書き込み・消去を行っていないときは、ウォッチドッグ割り込み要求を発生する周期としてシステム要件を満足する所定の周期に設定される。
【００７６】
不揮発性メモリ３に対する書き込み・消去の実行中は、所定の周期よりも長い周期に変更される。書き込み・消去にかかる時間以上のウォッチドッグ割り込み周期に設定されていれば、書き込み・消去の処理は所定の時間内で完了する。このためウォッチドッグ割り込みが発生することはなく、不定状態の不揮発性メモリ３のデータに対して命令フェッチすることによるＣＰＵ１の誤動作は起こらない。しかし、不揮発性メモリ３に対する書き込み・消去動作中にＣＰＵ１の動作に何らかの問題が生じ、ウォッチドッグ割り込み要求信号ＷＩＲをクリアできずに２度目のウォッチドッグ割り込み要求を受けると、強制リセット要求信号ＲＲが発生し、システムリセットがかかり、システムを復旧することができる。
【００７７】
ウォッチドッグ割り込み要求信号ＷＩＲの周期が一定で短いと、不揮発性メモリ３に対する書き込み・消去の実行中のウォッチドッグ割り込み要求発生頻度が高くなる。ソフトウェアで書き込み・消去を制御するプログラムの場合、書き込み・消去動作の安定性や品質に悪影響を及ぼす可能性があり、書き込み・消去動作中に、割り込みなどの他の処理を行うことは好ましくない。
【００７８】
本実施の形態によれば、不揮発性メモリ３に対し通常の読み出し動作を行っているときと書き込み・消去を行っているときで別個のウォッチドッグ割り込み要求周期を設定することでシステムの割り込み応答周期を最適化するとともに、安定性や品質の高い書き込み・消去動作を実行することができる。
【００７９】
（実施の形態４）
本発明の実施の形態４のマイクロコントローラの構成は図３と同様である。不揮発性メモリ３に対する消去に要する時間は、一般に書き込み時間の数十倍以上になる。そこで、書き込み・消去フラグＦについて、書き込み状態を示すＰｒｏｇｒａｍフラグとＥｒａｓｅフラグとに分ける。ウォッチドッグタイマ６は、不揮発性メモリ３に対する読み出し動作時、書き込み動作時、消去動作時それぞれのフラグに応じてタイマカウント周期を設定するものとする。このような構成により、システムの割り込み応答周期をさらに最適化できる。
【００８０】
（実施の形態５）
図４は本発明の実施の形態５におけるマイクロコントローラの構成を示すブロック図である。図４において、実施の形態３の図３におけるのと同じ符号は同一構成要素を指している。本実施の形態に特有の構成は、次のとおりである。図４において、３ｂは書き換え可能な不揮発性メモリ（フラッシュＥＥＰＲＯＭ）３に確保されたリセットベクタテーブル領域、３ｃは不揮発性メモリ３に確保されたリセット分岐先領域、ＰＴは書き換えプロテクト信号である。リセットベクタテーブル領域３ｂは、ＣＰＵ１にハードリセットがかかった場合に、ＣＰＵ１が不揮発性メモリ３を最初に参照する領域である。リセット分岐先領域３ｃはリセットベクタテーブル領域３ｂのアドレスによって指定される分岐先であり、その先頭アドレスがリセットベクタテーブル領域３ｂに格納されている。リセット分岐先領域３ｃにはＣＰＵ１が実行可能なプログラムが格納されている。書き換えプロテクト信号ＰＴは、ＣＰＵ１による不揮発性メモリ３に対する書き込み・消去動作中にアサートされ、リセットベクタテーブル領域３ｂとリセット分岐先領域３ｃに対する書き込み・消去ができないようにプロテクトするものである。その他の構成については、実施の形態３と同様であるので、説明を省略する。
【００８１】
次に、上記のように構成された本実施の形態のマイクロコントローラの動作を説明する。
【００８２】
ＣＰＵ１は、リセット制御部８からのハードリセット信号ＲＳＴによるハードリセットがかかった場合、最初の動作として不揮発性メモリ３におけるリセットベクタテーブル領域３ｂを参照し、そのアドレスが指定するリセット分岐先領域３ｃに分岐し、リセット分岐先領域３ｃに格納されているプログラムの実行を開始する。
【００８３】
ここで次のことを想定する。不揮発性メモリ３に対する書き込み・消去動作中にＣＰＵ１にハードリセットがかかると、書き込み・消去動作は強制的に中断される。したがって、不揮発性メモリ３内のデータは保証できず、不定になる。もし、リセットベクタテーブル領域３ｂまたはリセット分岐先領域３ｃに対する書き込みまたは消去を行っているときに何らかの異常でハードリセットがかかった場合、ＣＰＵ１は不定データを読み出し、暴走してしまう。
【００８４】
これに対して、本実施の形態では、ＣＰＵ１からの命令実行による不揮発性メモリ３に対する書き込み・消去動作において、書き換えプロテクト信号ＰＴによりリセットベクタテーブル領域３ｂとリセット分岐先領域３ｃに対する書き込み・消去ができないようにプロテクトを行う。その結果、不揮発性メモリ３の書き込み・消去動作中のハードリセットによっても、リセットベクタテーブル領域３ｂおよびリセット分岐先領域３ｃのデータは保証されるため、不定命令実行に起因するＣＰＵ１の暴走を防止できる。
【００８５】
なお、実施の形態１にあるように、マイクロコントローラ外から書き込み・消去を行う汎用不揮発性メモリモード時には書き換えプロテクト信号ＰＴをネゲート状態にしておく。これにより、リセットベクタテーブル領域３ｂとリセット分岐先領域３ｃに対する書き込み・消去を実行できる。
【産業上の利用可能性】
【００８６】
本発明は、ＣＰＵとフラッシュＥＥＰＲＯＭなどの書き換え可能な不揮発性メモリと割り込み制御部などを備えたマイクロコントローラにおいて、不揮発性メモリに対する書き込みまたは消去中における割り込み要求でのＣＰＵの暴走を回避する技術等として有用である。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態１におけるマイクロコントローラの構成を示すブロック図
【図２】本発明の実施の形態２におけるマイクロコントローラの構成を示すブロック図
【図３】本発明の実施の形態３，４におけるマイクロコントローラの構成を示すブロック図
【図４】本発明の実施の形態５におけるマイクロコントローラの構成を示すブロック図
【図５】従来技術における割り込みベクタアドレス変更方式のマイクロコントローラの構成を示すブロック図
【図６】従来技術における割り込み要求マスク方式のマイクロコントローラの構成を示すブロック図
【符号の説明】
【００８８】
１  ＣＰＵ
２  メモリＩ／Ｆ
３  不揮発性メモリ（フラッシュＥＥＰＲＯＭ）
３ａ  割り込みベクタテーブル領域
３ｂ  リセットベクタテーブル領域
３ｃ  リセット分岐先領域
４  揮発性メモリ
５  割り込み制御部
６  ウォッチドッグタイマ（ＷＤＴ）
７  割り込み要求制御部
８  リセット制御部
９  異常終了フラグ発生部
Ａ１〜Ａ３  アドレスバス
Ｄ１〜Ｄ３  データバス
ＥＩＲ  システムエラー割り込み要求信号
ＥＩＲ′  出力延期またはスルーのシステムエラー割り込み要求信号
Ｆ  書き込み・消去フラグ
Ｆｅ  異常終了フラグ
ＩＮＴ  割り込み
ＰＴ  書き換えプロテクト信号
ＲＲ  強制リセット要求信号
ＲＳＴ  ハードリセット信号
ＷＩＲ  ウォッチドッグ割り込み要求信号
ＷＩＲ′  出力延期またはスルーのウォッチドッグ割り込み要求信号
【図１】
2008047025.tif 000003
【図２】
2008047025.tif 000004
【図３】
2008047025.tif 000005
【図４】
2008047025.tif 000006
【図５】
2008047025.tif 000007
【図６】
2008047025.tif 000008