(58)【調査した分野】(Int.Cl.,DB名)
前記異常検出部が異常を検出した場合、当該マイクロコンピュータは、前記異常検出部での異常検出前に対応する第1動作モードから、前記異常検出部での異常検出前後に対応する第2動作モードに遷移し、
前記前記不揮発性記憶装置のデータを復旧が完了した後に、前記第2動作モードから前記第1動作モードに遷移する、
請求項3に記載のマイクロコンピュータ。
【背景技術】
【0002】
一般に、シングルチップマイクロコンピュータは、中央処理装置(CPU:Central Processing Unit)を中心にして、プログラム保持用のROM(Read Only Memory:リードオンリメモリ)、データ保持用のRAM(Random Access Memory:ランダムアクセスメモリ)、及びデータ又は信号の入出力を行うための入出力回路などの機能ブロックが、一つの半導体基板上に形成されている。
【0003】
シングルチップマイクロコンピュータは、各種機器の制御に用いられる。シングルチップマイクロコンピュータは、入出力回路を介して、例えば、エンジンなどを制御する。この制御の際に、入出力回路が不所望の状態に陥った場合でも、エンジンのような制御対象で誤動作や故障などが発生することを防止する必要が有る。例えば、入出力回路の1つであるタイマの出力を遮断して制御対象を停止することが提案されている(特許文献1)。
【0004】
また、シングルチップマイクロコンピュータでは、ROM上のプログラムを実行することで高速かつ低消費電力のシステムを構築することができる。この場合、外部のメモリを使用する方式と比較して、プログラムの内容を秘匿したり、改竄を抑止したりすることが容易にできる。しかし、ROMを含む複数の機能ブロックを1つの半導体基板に形成しなければならないため、搭載可能なROM容量には限りがある。例えば、パーソナルコンピュータのハードディスクの記憶容量に比べて、シングルチップマイクロコンピュータのROM容量は小さい。そのため、シングルチップマイクロコンピュータでは、ROM容量を考慮しつつ、ROMに記憶させるプログラムやデータを取捨する必要が有る。シングルチップマイクロコンピュータのROMとして、フラッシュメモリを内蔵する場合が増えている。フラッシュメモリは内容を随時書き換えられるので、デバッグ、チューニング、バージョンアップなどが可能であり、使い勝手を向上させることができる。例えば、記憶させるプログラムやデータも、実際の使用状況を評価して取捨することができる。
【0005】
近年、ランダムアクセスが可能で情報の不揮発保持が可能なメモリ(NVRAM:Non-Volatile Random Access Memory)として、磁気抵抗メモリ(MRAM:Magnetoresistive Random Access Memory)が提案されている(特許文献2及び3)。MRAMは、通常のRAMと同様に、リード/ライトを行う(ランダムアクセス)ことができる。また、書き込みにあたって、事前に消去を行う必要がない。シングルチップマイクロコンピュータのプログラム保持用及び要保存のデータ格納用のROM、作業時の一時的な記憶用のRAMの代替として、プログラム用、要保存のデータ格納用、作業時の一時的な記憶領域用として兼用できるMRAMを内蔵することが考えられる。
【0006】
マイクロコンピュータでは、書き換えが可能で不揮発保持が可能なメモリ(フラッシュメモリ、NVRAM)に、プログラムや、固定的なデータを書き込むためのプログラム(ブートプログラム)を格納し、かつ、通常動作時にブートプログラム領域をリード/ライト禁止にする場合がある。これにより、ブートプログラム領域は保護される。マイクロコンピュータを所定の動作モード(ブートモード)に設定すると、マイクロコンピュータはブートプログラムを実行して、プログラムや固定的なデータの書き込み動作を実行する(特許文献4)。
【0007】
また、ブートプログラムの実行中などに、書き換えが可能で不揮発保持が可能なメモリやマイクロコンピュータに不所望の電源異常などが発生し、メモリへの書き込みが正常に実行できなかった場合の再書き込みを行う手法が提案されている(特許文献5)。また、フラッシュメモリの書き込みの制御方法も提案されている(特許文献6)。
【0008】
さらに、マイクロコンピュータでノイズなどの影響で不当な命令コードが実行された場合に対処するため、不当命令例外処理が行われ、例えば初期化の後に再度所定のプログラム実行を行うことが提案されている(特許文献7)また、マイクロコンピュータのハードウェアの故障を検出するために、自己診断を行う手法も提案されている。
【0009】
フラッシュメモリなどの記憶装置では、一部の記憶素子の故障や劣化による不良が生じ得る。これに対しては、ECC(Error Check and Correction)を付加して冗長性を持たせた構成とすることで、一部の記憶素子に不良があっても正常な動作を行うことができる記憶装置が提案されている(特許文献8)。
【発明を実施するための形態】
【0019】
以下、図面を参照して実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【0020】
実施の形態1
実施の形態1にかかるマイクロコンピュータ100について説明する。マイクロコンピュータ100は、シングルチップマイクロコンピュータとして構成することが可能である。
図1は、実施の形態1にかかるマイクロコンピュータ100の構成を模式的に示すブロック図である。
図2は、実施の形態1にかかるマイクロコンピュータ100の基本構成を模式的に示すブロック図である。以下、
図1を参照して、マイクロコンピュータ100の構成を説明する。なお、マイクロコンピュータは、以下ではMCU(Micro Controller Unit)と略記する。
【0021】
MCU100は、中央処理装置(CPU)1、割り込みコントローラ(Interrupt Controller:以下、INTと称する)2、モードコントローラ(MDC)3、不揮発性記憶装置(NVM)4、ランダムアクセスメモリ(RAM)5、バスコントローラ(Bus Controller:以下、BSCと称する)6、タイマ(WDT)7、通信モジュール8、異常検出部9、入出力ポート(I/O)10、内部バス11を有する。通信モジュール8として、例えばシリアルコミュニケーションインタフェースなどが設けられる。また、図示しないが、MCU100は、アナログモジュール、クロック発振器(CPG)などの、他の機能ブロックやモジュールを有していてもよい。また、モード入力信号MD、図示しないが、MCU100は、リセット入力RESや割込入力NMIの入力端子を有する。アナログモジュールとして、例えばアナログ/デジタル(A/D)変換器およびデジタル/アナログ(D/A)変換器などが設けられる。
【0022】
MCU100では、動作の主体となるのはCPU1である。CPU1は、主にNVM4から命令を読み込んで動作し、作業用のデータ領域としてRAM5やI/O10などをリード/ライトする。CPU1でのプログラム実行によって、MCU100は所要の処理を実現する。
【0023】
CPU1は、不当命令例外処理及び割込み例外処理を行うことによって、実行中の処理を中断し、所定ベクタで示されるアドレスから例外処理ルーチンへジャンプして実行を開始する。ジャンプ先は、MDC3からの動作モード信号MDSによって選択される。
【0024】
図3は、CPU1のアドレス空間を示す図である。CPU1のアドレス空間は、一端から他端に向けてリニアにアドレスが割り当てられる。アドレス空間には、MCU100の内部の資源に対応して、NVMアドレス領域20、空領域31、RAM領域32及び内部I/Oレジスタ領域33が配置されている。内部I/Oレジスタ領域33は、BSC6、MDC3、INT2、WDT7、通信モジュール8が有するレジスタに対応する領域である。それぞれのアドレス領域の容量の設定などは、MCU100が適用される応用分野などによって、適切に設定することができる。NVMアドレス領域20には、後述する確認用データDAT1が割り当てられる。
【0025】
図1に戻り、MCU100の構成について引き続き説明する。INT2は、エラー信号やその他の信号が入力されると、入力された信号に応じて、CPU1に割込み要求を与える。CPU1は、割込み要求が与えられると、命令の切れ目で割込み例外処理を行う。
【0026】
MDC3は、例えば外部からのモード入力信号MDを受けて、MCU100の動作モードを指定する。MDC3は、MCU内の各機能ブロック、例えばCPU1、NVM4及びBSC3に動作モード信号MDSを出力して、CPU1、NVM4及びBSC6などの動作を制御する。
【0027】
NVM4は、NVM4自体の制御機能を司るNVM検査部4Aを含んでいる。CPU1からのコマンドなどによって、NVM4は消去や書き込みの動作を開始する。NVM検査部4Aは、書き込み動作時に、書き込み内容に応じて、チェックサムや巡回符号などの確認用データDAT1を生成し、生成した確認用データDAT1をNVM4の所定の領域に書き込むことが可能である。NVM4は、消去や書き込みの動作中以外の状態では、リードオンリメモリ(ROM)として動作する。
【0028】
RAM5は、CPU1の作業用に使用される。また、RAM5は、NVM4の書き換え時に書き込み内容を一時記憶するために使用される。
【0029】
BSC6は、CPU1のアクセス内容と、MDC3からの動作モード信号MDSに従って、内部バス11の動作を制御する。
【0030】
WDT7は、図示しないものの、カウンタやその他の制御レジスタを有する。
【0031】
通信モジュール8は、所要のシステムに対応した機能を有し、外部との通信を行う。なお、通信モジュール8は、複数の種類の通信手段(通信方式)を有してもよい。
【0032】
I/O10は、種々の入出力機能を有し、CPU1のプログラム実行に従って動作する。I/O10は、制御対象の状態がアナログ信号やエンコード信号として入力され、パルス信号やアナログ信号を出力して制御対象の制御を行う。I/Oは出力制御ブロックを含み、この出力制御ブロックは、エラー信号を入力し、このエラー信号が活性化されたときに、出力状態を、制御対象に応じた非活性状態などの所定の状態に切り替える。かかる所定の状態は、固定的なものであってもよく、あるいは、予め、CPUのプログラム実行によって、設定するようにしてもよい。
【0033】
異常検出部9は、所定の対象機能ブロックのテストや期待値確認などを行って、MCU100内の各機能ブロック間のデータのやり取りに生じる異常を検出する。異常な検査結果が得られた場合には、異常検出部9はエラー信号を出力する。エラー信号は、異常検出を行う箇所の数は検査方法の数に応じて、複数の信号を含んでいてもよい。異常検出部9は、内部バス11を介して、エラー信号をMCU10内部の各機能ブロックに送出できる。また、異常検出部9は、通信モジュール8を介して、MCU100の外部にエラー信号を送出してもよい。さらに、異常検出部9は、異常を検出した際に、MCU100の外部にアラームを送出することもできる。
【0034】
ここで、異常検出部9が検出する各機能ブロック間のデータのやり取りに生じる異常とは、例えば、各機能ブロックでのデータに生じる異常や、内部バス11を介してデータの送受の異常を意味する。以下では、異常検出部9が検出する各機能ブロック間のデータのやり取りに生じる異常を、データ異常と称する。
【0035】
なお、
図1では、異常検出部9を、内部バス11を介して他の機能ブロックと接続される独立した機能ブロックとして説明したが、これは例示に過ぎない。すなわち異常検出部9は、他の機能ブロック(CPU1、INT2、MDC3、NVM4、RAM5、BSC6、WDT7、通信モジュール8、I/O10)の内部に設けられていてもよい。また、異常検出部9は、1つに限られるものではなく、他の機能ブロックの一部又は全部の内部に設けられていてもよい。また、複数の異常検出部が設けられる場合には、それぞれの異常検出部は、異なる検査方法、検査対象に対応させることも可能である。
【0036】
ここで、異常検出部9での異常検出動作の例について説明する。
図4は、実施の形態1にかかるMCUでの信号のやりとりを示す図である。
異常検出部9の第1の例:不当命令検出
異常検出部9は、例えば、CPU1の不当命令検出を行うことが可能である。この場合、異常検出部9は、CPU1に内蔵されていてもよい。異常検出部9は、実行すべき命令を検査して、当該命令が定義されていないものである場合、検査対象となった命令を不当命令として検出する。異常検出部9は、不当命令を検出したならば、エラー信号の1つである命令エラー信号OPERRを活性化するとともに、所定の例外処理(不当命令例外処理)を発生させる。不当命令例外処理と後述するエラー検出に対応する例外処理では、NVM4上の所定のプログラムが実行することもできる。
【0037】
異常検出部9の第2の例:アドレスエラー検出
異常検出部9は、例えば、BSC6でのバス動作の際のアドレスエラーを検出することができる。この場合、異常検出部9は、BSC6に内蔵されていてもよい。異常検出部9は、CPU1のアクセス内容を検査し、検査対象となったアクセスが不当なアクセスの場合、アドレスエラーを検出する。異常検出部9は、アドレスエラーを検出したならば、エラー信号の1つであるアドレスエラー信号ADERRを活性化し、INT2に伝達する。なお、不当なアクセスとは、例えば、アクセスが禁止される内部の資源が配置されていないアドレス(空領域)に対するリード/ライトや、内部I/Oレジスタ領域からのプログラムのリードをいう。
【0038】
異常検出部9の第3の例:カウンタエラー検出
異常検出部9は、例えば、WDT7でのカウンタエラーを検出することができる。この場合、異常検出部9は、WDT7に内蔵されていてもよい。CPU1は、正常に動作している限り、カウンタがオーバフローする前にカウンタに0などをライトし、オーバフローを抑止するように動作する。しかし、ノイズなどによる一時的な誤動作や回路の故障などの不所望の要因により、CPU1が正常な動作を行えなくなると、カウンタがオーバフローしてしまう。異常検出部9は、カウンタのオーバフローを検出し、エラー信号の1つであるオーバフロー信号WDTOVFを活性化することができる。
【0039】
上記のように、異常検出部9が異常を検出すると、異常検出部9は、命令エラー信号OPERR、アドレスエラー信号ADERR、オーバフロー信号WDTOVFなどを活性化できる。INT2は、命令エラー信号OPERR、アドレスエラー信号ADERR、オーバフロー信号WDTOVFに応じて、CPU1に割込み要求を与える。また、INT2は、エラー信号のみならず、外部から入力されるマスク不可能な割込みNMIやその他の信号が入力されたときにも、CPU1に割込み要求を与えることができる。なお、アドレスエラー信号ADERRは、マスク不可能な割込みとして扱われる。CPU1は、割込み要求が与えられると、命令の切れ目で割込み例外処理を行うことができる。
【0040】
また、エラー信号に応じて割込み例外処理を行うにあたり、エラーが生じた機能ブロックに対応するI/O10の出力状態を、非活性状態などの所定の状態にすることもできる。これは、エラー信号に呼応して、ハードウェア的に実施(例えば、I/O10)してもよいし、CPU1がプログラム実行することで実施してもよい。エラー信号が複数活性化されている場合には、活性化されたエラー信号に対応した複数の出力状態を、非活性状態などの所定の状態にするようにしてもよい。I/O10の出力状態を非活性化することで、I/O10の外部への誤った信号の送出、及び、I/O10を介して入力された信号に応じて誤ったデータに基づく誤動作を防止することができる。
【0041】
図5は、実施の形態1にかかるMCU100に含まれるI/O10の構成例を示すブロック図である。I/O10は、I/O制御部10A、非活性データレジスタ10B及びセレクタ10Cを有する。I/O制御部10Aは、エラー信号に応じてセレクタ10Cに制御信号CONを出力し、セレクタ10Cの動作を制御する。I/O制御部10Aは、エラー信号が非活性である場合には、セレクタ10Cに通常動作出力を外部へ出力させる。I/O制御部10Aは、エラー信号が活性化された場合には、セレクタ10Cに非活性データレジスタ10Bの出力を外部へ出力させる。これにより、エラー信号が活性化された場合には、セレクタ10Cは、通常動作出力と切り離され、固定された非活性データレジスタ10Bの出力と接続される。これにより、MCU100でエラーが生じても、I/O10が停止(非活性化)される。
【0042】
MCU100でエラーが検出された場合、MCU100は所望の動作を行っておらず、I/O10から誤った信号が外部に出力され、また、I/O10を介して外部から入力された信号に誤った反応をする事態が生じ得る。この場合、I/O10を介してMCU100に制御される制御対象の制御状態も不所望の状態に陥るおそれがある。しかし、上述のように、エラー発生時にI/O10を停止することで、MCU100と制御対象とのデータのやり取りを遮断し、例えば制御対象を停止し、制御対象が不所望の状態に陥ることを防止できる。
【0043】
続いて、MCU100の動作について説明する。
図6は、実施の形態1にかかるMCU100の動作を示すフローチャートである。
図7は、実施の形態1にかかるMCU100の状態遷移図である。
【0044】
ステップS11
MCU100では、異常検出部9が内部バス11を介した機能ブロック間のデータのやり取りにエラーが生じていないかを、常時監視している(
図7の第1動作モードMODE1)。
【0045】
ステップS12
内部バスを介した機能ブロック間のデータのやり取りにエラーが生じた場合、異常検出部9は異常を検出する。異常検出部9は、異常を検出したことを外部に通知することができる。異常検知により、MCU100は、第1動作モードMODE1から第2動作モードMODE2へ遷移する。
【0046】
ステップS13
機能ブロック間のデータのやり取りにエラーが生じた場合、NVM検査部4Aは、NVM4のデータの確認動作を実行する。NVM検査部4Aは、NVM4のアドレス領域に含まれる確認用データアドレスから、NVM4に予め確認されている確認用データDAT1を読み出す。そして、NVM検査部4Aは、予め保有している基準データDAT2と、読み出した確認用データDAT1とが一致するかを判定する。なお、基準データDAT2は、NVM4に書き込んだ確認用データDAT1の元々の内容を示すデータであり、換言すれば、確認用データDAT1の期待値を示すデータである。
【0047】
ステップS14
基準データDAT2と確認用データDAT1とが一致しない場合、異常を検出する前に行われたNVM4へのデータの書き込みに問題が有るので、NVM検査部4Aは、NVMエラーを検出し、例えばアラームを送出する。その後、ステップS14に進む。
【0048】
ステップS15
基準データDAT2と確認用データDAT1とが一致する場合、またはステップS14の後、I/O10を停止(非活性化)し、MCU100の外部への誤ったデータ送出が防止される。本動作の終了後は、適宜リセット処理などから動作を再開する。
【0049】
以上、本構成によれば、MCU内部でデータ異常が生じた場合に、異常発生前にNVMに書き込まれたデータに異常が発生しているか否かを検出することができる。その結果、NVMへ正しいデータを再ライトし、又は、外部からNVMのリカバリを指示するなど、NVMエラーに応じた適切な対応を行うことが可能となる。
【0050】
特に、単一のMCU、単一のNVMを利用するのみでNVMエラーを検出できるので、チップサイズの増加などのコストの増加を招くことなく、NVMエラーの見逃しを抑制することができる。
【0051】
実施の形態2
実施の形態2にかかるMCU200について説明する。MCU200は、MCU100と同様の構成を有するが、CPU1のアドレス空間及び動作が異なる。MCU200は、NVMエラーを検出した場合、NVMのリカバリ動作をおこなうものである。
【0052】
図8は、実施の形態2にかかるMCU200のCPU1のアドレス空間を示す図である。本実施の形態では、CPU1のアドレス空間の内、NVMアドレス領域20が、第1アドレス領域21及び第2アドレス領域22に区分けされている。第1アドレス領域21は、MCU100が所要の処理を行うためのプログラム(ユーザプログラム)を格納する。また、第1アドレス領域21には、NVM4のデータ確認動作で用いられるチェックサムデータなどの確認用データDAT1が保持されるアドレスが含まれる。第2アドレス領域22は、ブートモードやリカバリモードで実行するプログラムPRG(ブートプログラム、リカバリプログラム)を格納する。
【0053】
続いて、MCU200の動作について説明する。
図9は、実施の形態2にかかるMCU200の動作を示すフローチャートである。
図10は、実施の形態2にかかるMCU200の状態遷移図である。MCU200の動作は、
図6に示すステップS11〜S15に、ステップS21〜S24を追加した構成を有する。以下、追加したステップS21〜S24に焦点を当てて説明する。
【0054】
MCU200では、異常検出部9が内部バス11を介した機能ブロック間のデータのやり取りにエラーが生じていないかを、常時監視している(
図10の第1動作モードMODE1)。なお、BSC6は、第1動作モードMODE1のとき、CPU1のプログラム実行に従って第1アドレス領域21のリード/ライトを行うことができる。また、第1動作モードMODE1においては、NVMアドレス領域20の第2のアドレス領域22のライトが禁止される。よって、第2アドレス領域22へのライトが発生した場合には、BSC6はアドレスエラーを検出する。すなわち、第1動作モードMODE1のとき、第2アドレス領域22の内容は保護される。例えば、NVM4がフラッシュメモリなど、所定のコマンドなどによって消去や書き込みが可能である場合、ライトが禁止されることで消去及び書き込みが禁止される。BSC6ではなく、NVM4自体が動作モード信号を受け取って、ライトを禁止してもよい。
【0055】
ステップS11
ステップS11については、
図6と同様であるので、説明を省略する。
【0056】
ステップS12
ステップS12については、
図6と同様である。但し、本実施の形態では、第2動作モードMODE2に遷移することで、第1アドレス領域21及び第2アドレス領域22のリード/ライトが可能となる。これにより、CPU1は、第2アドレス領域22からリカバリプログラムPRGを読み出して実行し、第1アドレス領域21の書き込みとデータ確認を行うことができる。
【0057】
ステップS13〜S15
ステップS13〜S15については、
図6と同様であるので、説明を省略する。
【0058】
ステップS21
CPU1がリカバリプログラムを実行することで、ステップS21以降の動作が行われる。
ステップS14においてNVMエラーが通知されたならば、ステップS15と同様にI/O10を停止する。
【0059】
ステップS22
CPU1は、外部から通信モジュール8を介して、外部からNVM4に書き込むべきデータを受信する。
【0060】
ステップS23
CPU1は、外部から受信したデータをNVM4に書き込む。
【0061】
ステップS24
その後、第1動作モードMODE1に遷移し、通常動作に復帰する。適宜、リセット処理を実行してもよい。この際、I/O10は、活性化される。
【0062】
以上、本構成によれば、NVMエラーを検出した場合に、外部からNVM4に本来書き込まれるべきデータを取得してNVM4に書き込みなおすことで、NVM4のデータを復旧することができる。これにより、NVM復旧後に、MCU100を速やかに通常動作状態に移行させることが可能となる。
【0063】
なお 第2動作モードMODE2でのリカバリプログラムPRGの実行に先立って、リカバリプログラムPRG自体の内容を確認するようにしてもよい。これは、NVM4に格納されたデータが消失する可能性もあるためである。
【0064】
INT2によって、プログラムの実行開始アドレスが個別に指定される場合などは、この指定に従って第2動作モードMODE2でのリカバリプログラムを複数の割込み処理ルーチンに分割して実装することができる。
【0065】
さらにリカバリプログラムを第2動作モードMODE2で実行することにより、第2アドレス領域22に格納されるプログラムの内容を秘匿し、不所望の改竄を防ぐことができる。これにより、MCUの使用者がプログラムの内容を考慮することなく、NVM復旧の利便性のみを享受することができる。
【0066】
実施の形態3
実施の形態3にかかるMCU300について説明する。
図11は、実施の形態3にかかるMCU300の構成を模式的に示すブロック図である。MCU300は、MCU100に自己診断部12を追加した構成を有する。MCU300のその他の構成は、MCU100と同様であるので、説明を省略する。
【0067】
自己診断部12は、異常検出部9がデータ異常を検出した場合に、各機能ブロックの機能に異常がないかを診断するものである。自己診断部12は、いずれかの機能ブロックの機能に異常が有る場合、自己診断エラーを検出する。自己診断部12は、自己診断エラーを他の機能ブロックやMCU300の外部にアラームなどで通知することが可能である。
【0068】
自己診断は、例えば、機能ブロックから出力される値と期待値とを比較し、一致するか否かを判定することで、判定対象となった機能ブロックの故障を検出することができる。また、自己診断は、例えば、機能ブロック等に実装される機能を二重化し、二重化した機能の出力結果が一致するかを判定して、判定対象となった機能ブロック等の故障を検出することができる。さらに、自己診断は、例えば、所定のデータ経路にECCを付加し、当該データ経路でデータをリード/ライトするときのECCエラーを検出することで、当該データ経路にかかる故障を検出することができる。
【0069】
続いて、MCU300の動作について説明する。
図12は、実施の形態3にかかるMCU300の動作を示すフローチャートである。MCU300の動作は、
図6に示すステップS11〜S15に、ステップS31及びS32を追加した構成を有する。
【0070】
ステップS11
ステップS11については、
図6と同様であるので、説明を省略する。
【0071】
ステップS31
データエラーが検出されたならば、自己診断部12は、各機能ブロックの機能に異常がないかを診断する。
【0072】
ステップS32
自己診断部12は、機能ブロックのいずれかの機能に異常が有る場合には、自己診断エラーを検出する。自己診断部12は、他の機能ブロックやMCU300の外部に自己診断エラーを通知することができる。その後、ステップS14へ進む。
【0073】
ステップS12〜S15
自己診断エラーが検出されない場合、ステップS12に進み、以降は
図6と同様の動作を行う。
【0074】
以上、本構成によれば、データエラーの原因が、機能ブロックの機能異常によるものか、NVMエラーによるものかを切り分けて検出することができる。その結果、MCUで異常が生じた際に、異常復旧の対策を容易に策定することができる。回路の故障が生じた場合、例えば、配線の断線、トランジスタの破壊などであって、この状態は継続する。そのため、所望の所期のプログラムの実行が行えない場合が生じる。この場合には、上記の通り自己診断でNVMエラーと切り分けて故障を検出できるので、回路の故障に応じた復旧を行うこととができる。
【0075】
自己診断は、通常動作状態では行えない場合が考え得る。つまり、自己診断で回路の故障を検出した場合でも、それ以前に故障した回路が命令コードの実行に関与したおそれがある。この場合には、自己診断エラーが検出された場合でも、NVMエラーが生じているか否かの検出を行うことで、故障回路が命令コード実行に関与したことで生じるNVMエラーを検出することができる。
【0076】
実施の形態4
実施の形態4にかかるMCU400について説明する。MCU400は、MCU200の変形例である。なお、MCU400の構成は、MCU200と同様であるので、説明を省略する。本実施の形態では、MCU400への電源投入時や故障復帰時などにリセットされる場合に、リセットが解除された際の動作について説明する。なお、リセットは、例えばMCU400の外部から行うことが可能であり、電源投入時にはパワーオンリセットとして実行してもよい。
【0077】
図13は、実施の形態4にかかるMCU400の状態遷移を示す図である。MDC3が第1動作モードMODE1での動作を指定している場合、リセット解除後にMCU400は第1動作モードMODE1での動作を開始する。その後、
図9に示す動作を適宜実行する。
【0078】
MDC3が第2動作モードMODE2での動作を指定している場合、リセット解除後にMCU400は第2動作モードMODE2での動作、すなわち、
図9に示すステップS13から動作を開始する。
【0079】
以上、本構成によれば、リセット解除後に第2動作モードMODE2が指定された場合、でリセット解除前の他の動作などによりNVMエラーが生じていたとしても、NVMを自動的に復旧することができる。これにより、リセット後のMCUの動作を正常化できる可能性をより高めることが可能となる。
【0080】
実施の形態5
実施の形態5にかかる制御システム500について説明する。制御システム500は、上述のMCUが組み込まれたシステムとして構成される。
図14は、実施の形態5にかかる制御システム500の構成を模式的に示すブロック図である。
【0081】
制御システム500は、MCU200、制御対象501、ネットワーク(CAN)502、通信部503及び表示装置504を有する。制御システム500が自動車制御システムである場合、例えば制御対象501はエンジンであり、エンジンの点火制御などを行う。
【0082】
MCU200と制御対象(エンジン)501とは、I/O10を介してデータのやりとりを行う。つまり、MCU200にデータ異常が生じた場合、I/O10を非活性化することで、例えばエンジンを停止し、自動車の運行が危険な状態にならないようにすることができる。
【0083】
NVM4に書き込むべき内容は、MCU自体の通信手段(例えば、通信モジュール8)を利用して、外部から直接入力することもできる。また、CANなどのネットワーク502を介して接続された他のデバイスの通信手段(通信部503)を利用して、入力することもできる。他のデバイスが外部との通信手段として無線通信機能、例えば、WAVE(Wireless Access in Vehicle Environment)などを有する場合、無線通信機能を利用することで、リカバリ専用入力機能を削減でき、システムのハードウェア機能の追加を回避することができる。
【0084】
なお、上述の他のデバイスに、上述のMCUにおけるNVMエラー検出機能を実装し、NVMに書き込むべき内容の入力手段を共通にすることができる。
【0085】
また、制御システムにおいてMCU300を用いる場合には、自己診断エラーの内容を、通信手段を介して外部に出力した後、その内容に応じて、外部から受信した内容をNVM4に書き込むこと以外の処理を行うようにする指示入力を行うこともできる。
【0086】
さらに、他のデバイスが、所要のビデオインタフェースなどを介して、表示装置504を制御するようにできる。この場合、自己診断エラーの内容に基づく情報を表示装置504に表示させることができる。また、自己診断エラーの内容に応答して、外部から入力した指示入力情報を表示装置に表示するようにしてもよい。例えば、運転者に必要な動作を教示して安全な運転状態を促すことで、運転者を安全な状態に導くことができる。なお、表示装置504は、ネットワーク502に接続された別のデバイスによって制御するようにしてもよい。
【0087】
上述のようにシステム内にシステム外との通信を行う他のデバイスが存在する場合、自己診断エラーや故障検出の内容の外部への通知や、NVMに書き込むプログラムの入力のための通信を、システム外との通信およびマイクロコンピュータと他のデバイスとの通信を経由して行うことができる。これにより、システム上のハードウェアの機能の追加を抑止し、システムの複雑化を抑止することができる。
【0088】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態3にかかるMCU300についても、実施の形態2にかかるMCU200と同様に、ステップS21〜S24でのNVM復旧動作を併せて行うことができる。
【0089】
実施の形態4にかかるMCU400についても、実施の形態3にかかるMCU300と同様にステップS31及びS32での自己診断を併せて行うことができる。
【0090】
実施の形態5に係る制御システムではあ、MCU200及びMCU300を用いる例について説明したが、MCU100、MCU400及びその他上述の説明にかかるMCUを適用できることは言うまでもない。
【0091】
NVMは、ランダムアクセス可能なメモリ(NVRAM)として構成することができる。この場合、NVMとRAMとを共通化し、RAMを除去することができる。また、NVMにキャッシュメモリなどを加えることもできる。
【0092】
I/O10の出力状態を非活性化する場合、その手段は適宜選択し得る。例えば、I/O10をハイインピーダンス状態とすることで、非活性させることができる。非活性化にあたって、所定の状態遷移を形成するようにしてもよい。I/O10の非活性化は、ハードウェアで実装してもよいし、CPU1のプログラム実行と組み合わせて実現するようにしてもよい。
【0093】
NVM検査部4Aは、専用のCPUとすれば種々の変更に対応しやすい。また、NVM検査部4Aの必要な機能を、専用のハードウェアで実装することもできる。
【0094】
NVMアドレス領域20の第2アドレス領域22に対するライトの禁止の実現については、種々の手段を用いることができる。
【0095】
データエラーの検出内容や検出手段は、適宜変更することができる。エラー検出の伝達経路も、適宜変更することができる。自己診断部12は、自己診断を行う対象に応じて、適切に実装すればよい。
【0096】
MCUの構成やアドレス空間は例示であり、上述の例に限定されない。通信手段やそのほかの機能ブロックなども、適宜削除、追加、変更できる。
【0097】
制御システム500の構成や用途は例示であり、適宜変更できる。
【0098】
以上の説明では、シングルチップマイクロコンピュータの例を説明したが、これに限定されるものではなく、マイクロコンピュータの外部にフラッシュメモリなどの電気的に書き換え可能なプログラム格納用のメモリを設ける構成にすることもできる。また、その他の半導体集積回路装置、例えば、デジタルシグナルプロセッサ(DSP)を中心にした半導体集積回路装置にも適用可能である。換言すれば、上述のNVMエラー検出とこれに付随する機能、動作は、データ処理装置のプログラムを書き換え可能なメモリに格納した半導体集積回路装置に適用することができる。
【0099】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。