(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
車両に搭載される車載電子制御装置(以下「ECU」という)は、各種プログラムが記憶されたメモリやCPUなどからなるマイコンを備え、CPUが各種プログラムを実行することで車両の各部を制御する。メモリとしては、一般に、プログラムの書き換え(以下「リプログ」という)ができるよう、フラッシュメモリやEEPROMなどの不揮発性メモリが用いられる。メモリのリプログは、各種プログラムの1つとして記憶されているリプログ用のプログラム(以下「リプログソフト」という)をCPUが実行することにより行われることが一般的である(例えば、特許文献1参照。)。
【0003】
メモリのリプログが行われる際に、例えばECUの電源遮断やリプログ処理の異常などの様々な要因によって、そのリプログが失敗するおそれがある。そのようなリプログの失敗を想定して、特許文献1には、次のような技術が記載されている。即ち、リプログソフトを、リプログ中はリプログ中である旨の識別IDを設定し、リプログが正常に完了したらその旨の識別IDを設定するよう構成する。そして、CPUは、起動時にまず上記識別IDをみて、リプログが正常に完了した旨の識別IDが設定されていれば通常の制御用プログラム(以下「ECUソフト」という)の実行に移り、リプログ中である旨の識別IDが設定されたままならば再びリプログソフトを起動して再度のリプログ作業を待つ。
【0004】
上記技術は、より具体的には、次のような構成で実現できる。即ち、メモリ内に、リプログソフトの他に識別IDの記憶領域を設けると共に起動判定処理プログラムを格納し、リセットベクタにはその起動判定処理プログラムのアドレスを設定しておく。CPUは、リセット後まずリセットベクタに設定されているアドレスを取得してそのアドレスのプログラム(即ち起動判定処理プログラム)を実行する。起動判定処理は、識別IDがリプログ中を示すものであるかそれともリプログ完了を示すものであるかを判断して、リプログ完了を示すものならば通常のECUソフトを起動させるが、リプログ中を示すものならばリプログソフトを起動させるという処理である。
【0005】
このような技術により、仮にリプログに失敗してメモリのプログラムが異常な状態になったとしても、その後リセットされた際に起動判定処理によりリプログの成否が判定され、リプログが正常に完了していない場合は再びリプログ待ちに遷移させることができる。
【0006】
ところで、メモリのプログラム異常は、上述したリプログの失敗により発生するケース以外にも、例えばノイズによるデータ化けやハードウェア故障などの様々な要因で発生し得る。つまり、リプログは正常に完了したとしても、その後のECUの使用状態や環境(特に電磁環境)などによって、メモリ内のプログラムが異常状態になる可能性がある。
【0007】
そこで、一般的なECUのマイコンにおいては、起動直後(リプログの正常完了を確認後)、及びECUソフト実行中に定期的に、ソフトウェアによるメモリチェック(例えばROMサムチェック)を行い、異常と判断したら自身にリセットをかけるように構成されている。つまり、リプログの失敗への対応に加え、通常使用中に発生するプログラム異常にも適切に対応できるよう構成されている。
【発明を実施するための形態】
【0018】
以下に、本発明の好適な実施形態を図面に基づいて説明する。なお、本発明は、下記の実施形態によって何ら限定して解釈されない。下記の実施形態の構成の一部を、課題を解決できる限りにおいて省略した態様も本発明の実施形態であり、下記の複数の実施形態を適宜組み合わせて構成される態様も本発明の実施形態である。
【0019】
[第1実施形態]
(1)車両制御システム全体の概略構成
図1に示す本実施形態の車両制御システム10は、車両に搭載され、車両の各部を制御するためのシステムであり、複数のECU11,12,13・・・が車載ネットワーク(例えばCAN)20を介して相互にデータ通信できるよう構成されている。各ECU11,12,13としては、例えばエンジンECU、ボデーECU、ナビゲーションECUなどの各種のECUが挙げられる。
【0020】
車載ネットワーク20には、プログラム書換ツール15を接続するためのコネクタ14が接続されている。このコネクタ14にプログラム書換ツール15を接続することで、後述するようにプログラム書換ツール15によるリプログを行うことができる。
【0021】
各ECU11,12,13・・・はいずれも、マイコンを備え、マイコンが各種制御処理を実行することで車両の各部の制御が実現される。これらのうち特に、少なくとも1つのECU11は、エラー判定モジュール26(詳細は後述)を備えた特徴的構成となっている。そこで、以下の説明では、このECU11についてその構成や機能等を詳しく説明する。
【0022】
ECU11は、CPU21、RAM22、フラッシュメモリ23、通信インタフェース(通信I/F)24、タイマ25及びエラー判定モジュール26などを備えている。なお、これらCPU21、RAM22、フラッシュメモリ23、通信I/F24、タイマ25及びエラー判定モジュール26は、本実施形態では1チップマイコンとして1つの半導体集積回路内に集積された構成となっている。ただし、1チップマイコンとしての構成に限定されるものではない。
【0023】
CPU21は、フラッシュメモリ23に記憶されている各種プログラムを実行することにより車両の各部の制御を実現する。CPU21は、図示しない各種レジスタやプログラムカウンタなどを備えた一般的な構成である。ただし、本実施形態のCPU21は、リセット直後の起動開始時に、後述するようにエラー判定モジュール26にエラー判定処理を実行させる。そして、エラー判定モジュール26から指定されたフラッシュメモリ23のアドレスにジャンプすることで、フラッシュメモリ23の各種プログラムに基づく処理を開始する。
【0024】
フラッシュメモリ23は、記憶内容を電気的に書き換え可能な不揮発性のメモリである。フラッシュメモリ23には、
図2に示すように各種プログラム等が記憶されている。具体的には、フラッシュメモリ23には、リセットベクタ、起動判定処理プログラム、リプログソフト、ROMサムチェック値、書換ステータス、OS(スケジューラ)、プログラムA、プログラムB、・・・プログラムm(フェールセーフ用ソフト)などが記憶されている。
【0025】
リセットベクタは、一般的なマイコンにおいてメモリにセットされる、CPUが実行開始するプログラムの先頭アドレスである。なお、リセットベクタのメモリアドレスは0x0000である。
【0026】
起動判定処理プログラムは、前回実行されたリプログが正常に完了したか否かを書換ステータスに基づいて判定し、正常に完了している場合は通常ECUソフトを起動させ、正常に完了していない場合はリプログソフトを起動させるよう構成されたプログラムである。リセットベクタにはこの起動判定処理プログラムの先頭アドレスがセットされている。
【0027】
なお、通常ECUソフトとは、OSや各プログラムA、B・・・など、実質的に車両の制御を担う各プログラム等の総称である。通常ECUソフトの実行に移ると、まずOSが処理を開始し、初期化処理やROMサムチェックを経た上で、マイコンに入力される各種入力情報等を監視しながら、各プログラムA,B・・・のスケジューリングを行う。
【0028】
リプログソフトは、フラッシュメモリ23の各プログラム等をリプログするためのプログラムである。即ち、リプログソフトが実行されると、リプログ対象のプログラムの更新バージョンプログラムを車載ネットワーク20を介して取得し、フラッシュメモリ23に書き込むことで、リプログが行われる。更新バージョンプログラムは、例えば、コネクタ14にプログラム書換ツール15を接続してプログラム書換ツール15から送信することができる。リプログソフトのより具体的な機能等については、特許文献1に詳しく記載されている。なお、リプログは、フラッシュメモリ23全体を対象に一括して行うようにしてもよいし、プログラム単位或いはブロック単位で行うようにしてもよい。
【0029】
リプログソフトは、リプログを開始すると、書換ステータスを「書換中」にセット(実際には「書換中」を示す二値データをセット)する。そして、リプログが正常に完了したら、書換ステータスを「書換完」にセットする。リプログ開始後、リプログが正常に完了しない限り、書換ステータスは「書換中」のままとなる。
【0030】
ROMサムチェック値は、チェックサムによるメモリチェックを行う際のチェック用の符号(チェックコード)である。本実施形態のROMサムチェック値は、フラッシュメモリ23の記憶内容全体を対象として設定される値である。ROMサムチェック値は、リプログが行われる度に、リプログ後の記憶内容に対応した値に更新される。
【0031】
プログラムm(本発明のエラー対応処理プログラムの一例に相当)は、リセット直後のエラー判定モジュール26によるエラー判定処理によってエラーが判定された場合に実行されるフェールセーフ用ソフトである。エラー判定モジュール26によりエラーが判定されてフェールセーフ用ソフトが実行されると、通常ECUソフトは実行されず、フェールセーフ用ソフトに基づく各種のフェールセーフ処理が行われる。なお、フェールセーフ用ソフトのメモリアドレスは、0xYYYYである。
【0032】
(2)エラー判定モジュールの概略構成
次に、CPU21のリセット直後にエラー判定処理を行うエラー判定モジュール26の構成について、
図3を用いて説明する。エラー判定モジュール26は、CPU21やフラッシュメモリ23とは別に独立して設けられたハードウェアにより構成されている。
【0033】
CPU21がリセットすると、リセット直後にまずプログラムカウンタにエラー判定モジュール26のアドレス(0xXXXX)がセットされる。これに基づき、CPU21は、まずエラー判定モジュール26を動作させる。つまり、従来のCPUは、リセット後はまずプログラムカウンタにリセットベクタのメモリアドレスがセットされてリセットベクタにジャンプする構成が一般的であるが、本実施形態のCPU21は、リセット後にまずエラー判定モジュール26のアドレスがプログラムカウンタにセットされてエラー判定モジュール26に処理を移す。
【0034】
エラー判定モジュール26は、エラー判定起動レジスタ31と、エラー回数記憶レジスタ32と、エラー判定閾値レジスタ33と、比較器34と、エラー判定時起動先レジスタ35と、起動先判定器36とを備える。
【0035】
エラー判定起動レジスタ31は、CPU21のリセット直後にCPU21により所定のエラー判定起動フラグがセットされるレジスタである。エラー判定起動レジスタ31は、CPU21によりエラー判定起動フラグがセットされると、比較器34を起動させる。例えば、エラー判定起動フラグのクリア中は「0」を出力して比較器34を停止させておき、エラー判定起動フラグがセットされたら「1」を出力して比較器34を起動させる。
【0036】
エラー回数記憶レジスタ32は、CPU21が通常ECUソフトを起動した時に実行、及び通常ECUソフトの実行中に定期的に実行するROMサムチェックにおいて異常と判断される毎に、CPU21によりその異常と判断された回数であるエラー回数(本発明の異常回数の一例に相当)が累積記憶(更新)されるレジスタである。このエラー回数記憶レジスタ32のエラー回数の初期値は0であり、ROMサムチェックにより異常と判断される毎にCPU21によりエラー回数が1つずつインクリメントされていく。
【0037】
エラー判定閾値レジスタ33は、エラー判定閾値(本発明の異常判定閾値の一例に相当)が記憶されるレジスタである。エラー判定閾値は、フラッシュメモリ23にエラーが発生しているか否かをエラー回数記憶レジスタ32に記憶されているエラー回数に基づいて判定するための判定基準値である。エラー判定閾値は適宜決めることができるが、2以上の値とすることが望ましい。本実施形態では、エラー判定閾値は例えば10に設定されている。
【0038】
比較器34は、エラー回数記憶レジスタ32に記憶されているエラー回数とエラー判定閾値レジスタ33に記憶されているエラー判定閾値とを比較し、その比較結果を示すエラー判定データを起動先判定器36へ出力する。具体的には、エラー回数がエラー判定閾値未満の場合は、エラー判定データとしてエラー未発生を示す「0」を出力し、エラー回数がエラー判定閾値以上の場合は、エラー判定データとしてエラー発生を示す「1」を出力する。
【0039】
起動先判定器36は、比較器34からのエラー判定データに基づき、フラッシュメモリ23におけるCPU21の起動先アドレスを設定し、CPU21へ出力する。具体的には、エラー判定データが「0」(エラー未発生)の場合は、リセットベクタアドレス(0x0000)を起動先に設定してその起動先アドレスをCPU21へ出力する。詳しくは、CPU21内のプログラムカウンタにその起動先アドレス(0x0000)をセットする。エラー判定データが「1」(エラー発生)の場合は、エラー判定時起動先レジスタ35に予め記憶されているエラー判定時起動先アドレス(本例では、フェールセーフ用ソフトの先頭アドレスである0xYYYY)を起動先に設定してその起動先アドレスをCPU21へ出力する。詳しくは、CPU21内のプログラムカウンタにその起動先アドレス(0xYYYY)をセットする。
【0040】
このようにして起動先判定器36により起動先アドレスが出力され、CPU21のプログラムカウンタにセットされると、CPU21は、そのプログラムカウンタにセットされたアドレス(リセットベクタ又はフェールセーフ用ソフト)にジャンプして処理を開始することとなる。なお、エラー回数記憶レジスタ32、エラー判定閾値レジスタ33及びエラー判定時起動先レジスタ35は、CPU21内の図示しないレジスタと異なり、マイコンがリセットされても記憶内容は維持される。
【0041】
(3)CPUの動作
次に、CPU21の動作の基本的流れを
図4を用いて説明する。CPU21は、リセット後、既述のようにエラー判定モジュール26を動作させて、エラー判定結果を待つ。即ち、比較器34によりエラー回数記憶レジスタ32のエラー回数がエラー判定閾値レジスタ33のエラー判定閾値以上か否か判断する(S110)。
【0042】
エラー回数がエラー判定閾値未満の場合は、起動先判定器36が、リセットベクタのアドレス(0x0000)をCPU21のプログラムカウンタにセットする(S120)。エラー回数がエラー判定閾値以上の場合は、起動先判定器36が、エラー判定時起動先レジスタ35に記憶されているエラー判定時起動先アドレス(本例では0xYYYY)をCPU21のプログラムカウンタにセットする(S130)。
【0043】
S110〜S130は、CPU21が直接実行する処理ではなく、CPU21からの指令によって動作するエラー判定モジュール26の処理であり、広義には、CPU21が間接的に実行する処理であると捉えることもできる。そのため、
図4では、エラー判定モジュール26の処理もCPU21の処理に含めて図示している。
【0044】
S120でリセットベクタのアドレスがプログラムカウンタにセットされた場合は、CPU21は、S140でフラッシュメモリ23のリセットベクタにジャンプする。S130でエラー判定時起動先アドレスがプログラムカウンタにセットされた場合は、CPU21は、S150でエラー判定時起動先アドレス(即ちフラッシュメモリ23のアドレス0xYYYYのフェールセーフ用ソフト)にジャンプする。
【0045】
S110〜S150の処理は、CPU21がフラッシュメモリ23のプログラムに基づいて各種処理を行う前に、CPU21及びエラー判定モジュール26によるハードウェア処理として実現される処理である。つまり、CPU21は、プログラムに基づくソフトウェア処理を行うのに先立って、ハードウェア処理によりエラー判定やジャンプ先アドレスの設定等を行う。そして、そのハードウェア処理により設定されたジャンプ先アドレスにジャンプした後は、S160以降又はS280のソフトウェア処理に移行する。
【0046】
S160では、リセットベクタに設定されているアドレスのプログラム、即ち起動判定処理を実行する。S170では、起動判定処理において書換ステータスが「書換完」であると判定されたか否か判断し、「書換完」と判定されなかった場合(即ち「書換中」のままの場合)はS260に進む。S260では、リプログソフトを起動し、プログラム書換ツール15の接続を待ち、接続されたら更新バージョンプログラムによる既存プログラムの書き換えを行う。
【0047】
S170で書換ステータスが「書換完」と判定された場合は、S180でOSによる初期化処理を開始することにより通常ECUソフトを起動し、S190で、OSの機能としてのROMサムチェック(本発明のメモリチェックの一例に相当)を実行する。S200では、S190のROMサムチェックの結果がOK(正常)か否か判断し、OKならばS210で通常ECUソフトをそのまま実行する。
【0048】
通常ECUソフトの実行中も、S220〜S240に示すように定期的にROMサムチェックを行う。即ち、ROMサムチェックの実行タイミングが到来したら、S220でROMサムチェックを実行し、S230で、S220のROMサムチェックの結果がOKか否か判断する。S230でOKと判断した場合は、S240で引き続き通常ECUソフトを実行(継続)し、再びROMサムチェックの実行タイミングが到来したらS220に戻ってROMサムチェックを実行する。
【0049】
S200又はS230で、ROMサムチェックの結果が異常と判断した場合は、S250で、エラー判定モジュール26内のエラー回数記憶レジスタ32にエラー回数を書き込む。即ち、現在記憶されているエラー回数を更新(1つインクリメント)する。エラー回数の書き込み後は、CPU21自ら、CPU21をリセット(即ちマイコンをリセット)する。
【0050】
起動先としてエラー判定時起動先アドレスが設定された場合は(S150)、S280で、フェールセーフ処理を行う。即ち、エラー判定時起動先アドレスである0xYYYYに記憶されているフェールセーフ用ソフトを実行する。
【0051】
(4)第1実施形態の効果等
以上説明した本実施形態のECU11によれば、ROMサムチェックで異常と判断される毎に、CPU21のリセット前にエラー回数を更新し(S250)、リセット後にそのエラー回数がエラー判定閾値以上だった場合は、フェールセーフ処理ソフトが実行される(S280)。フェールセーフ処理ソフトは、リセットベクタへのジャンプに始まる通常の処理の流れとは独立して実行され、フェールセーフ処理ソフトの実行中はROMサムチェックは行われない。つまり、ROMサムチェックの異常によるマイコンリセットが繰り返し永続的に行われることはない。そのため、フラッシュメモリ23の記憶内容に異常が発生しても、電力の無駄な消費を抑えつつ適切な処理(本実施形態ではフェールセーフ処理)を行うことができる。
【0052】
なお、エラー判定時にフェールセーフ処理ソフトを実行するのはあくまでも一例であり、エラー判定時に具体的にどのような処理を実行するかについては適宜決めることができる。例えば、リプログソフトを起動してリプログ待ちに遷移してもよい。また例えば、所定のフェールセーフ処理の実行に加えてユーザ(車両の運転者等)に対して何らかの方法で故障発生を通知するようにしてもよい。
【0053】
また、本実施形態では、ROMサムチェックで異常と判断されても、1回の異常判断だけですぐにフェールセーフ処理に移行せず、異常と判断された回数(エラー回数)がエラー判定閾値以上となった場合にフェールセーフ処理に移行するようにしている。そのため、エラー判定の精度を高めることができる。しかも、エラー回数の記憶・更新は、RAM22でもフラッシュメモリ23でもなく、これらとは別に設けたエラー回数記憶レジスタ32を用いて行うようにしている。そのため、RAM22やフラッシュメモリ23の状態にかかわらずエラー回数を確実に記憶させておくことができ、これによりエラー判定の精度をより一層高めることができる。
【0054】
また、本実施形態では、CPU21のリセット直後のエラー判定を、ソフトウェア処理ではなく、エラー判定モジュール26によるハードウェア処理により実現している。そのため、エラー判定を迅速且つ高い信頼度で行うことができる。また、仮にエラー判定をソフトウェア処理で実現しようとすると、その分、フラッシュメモリ23の記憶領域が必要となってコスト高を招くおそれがあるが、本実施形態のようにハードウェア処理で実現することで、そういった課題を抑制することができる。
【0055】
[第2実施形態]
第2実施形態のECUについて、
図1に示した第1実施形態のECU11と異なる部分に絞って説明する。本実施形態のECU(図示略)が第1実施形態のECU11と異なる主な部分は、フラッシュメモリの記憶内容とエラー判定モジュールの構成である。
【0056】
本実施形態のフラッシュメモリにおいては、
図5に示すように、記憶領域が複数のブロックに分割され、ブロックごとにROMサムチェック用のチェックコード(即ちROMサムチェック値)が設定されている。なお、フラッシュメモリ23を具体的にどのようにブロック分けするかについては適宜決めることができる。
【0057】
本実施形態のエラー判定モジュール40は、
図6に示す通りであり、
図3に示した第1実施形態のエラー判定モジュール26と比較して明らかなように、エラー回数記憶レジスタ32とエラー判定閾値レジスタ33の構成が異なっている。また、本実施形態では比較器34と起動先判定器36との間に新たにエラー発生ブロックレジスタ41が設けられている 。
【0058】
本実施形態のエラー回数記憶レジスタ32は、フラッシュメモリのブロック毎に個別に設けられている。即ち、ブロック0対応のエラー回数記憶レジスタ32A、ブロック1対応のエラー回数記憶レジスタ32B、ブロック2対応のエラー回数記憶レジスタ32C、・・・というように、ブロック毎の複数のエラー回数記憶レジスタが設けられている。
【0059】
これと全く同じように、エラー判定閾値レジスタ33についても、フラッシュメモリのブロック毎に個別に設けられている。即ち、ブロック0対応のエラー判定閾値レジスタ33A、ブロック1対応のエラー判定閾値レジスタ33B、ブロック2対応のエラー判定閾値レジスタ33C、・・・というように、ブロック毎の複数のエラー判定閾値レジスタが設けられている。
【0060】
比較器34による、エラー回数とエラー判定閾値との比較も、ブロック毎に個別に行われる。例えば、ブロック0についてはブロック0対応のエラー回数記憶レジスタ32Aに記憶されているエラー回数とブロック0対応のエラー判定閾値レジスタ33Aに記憶されているエラー判定閾値とを比較する。
【0061】
比較器34は、各ブロック0〜nについてそれぞれ個別に上記比較を行い、エラーが発生しているブロック(即ちエラー回数がエラー判定閾値以上のブロック)があった場合は、エラー発生ブロックレジスタ41における当該エラー発生ブロックのフラグをセットする。
【0062】
エラー発生ブロックレジスタ41は、エラーが発生しているか否かを示すフラグがブロック毎に設定されるものである。あるブロックについて比較器34によりエラーが発生していると判断されると、エラー発生ブロックレジスタ41における該当ブロックのフラグが比較器34によりセットされる。つまり、エラー発生ブロックレジスタ41を参照すればどのブロックが正常でどのブロックがエラー発生しているかを知ることができる。
【0063】
エラー発生ブロックレジスタ41は、何れのブロックも正常である間は、エラー判定データとしてエラー未発生を示す「0」を起動先判定器36へ出力するが、何れか1つのブロックのフラグがセットされると(つまり各ブロックのうち何れか1つでもエラーと判定されると)、エラー判定データとしてエラー発生を示す「1」を起動先判定器36へ出力する。
【0064】
このように構成された本実施形態のECUにおけるCPUの動作について、
図7を用いて概略説明する。本実施形態のCPUは、リセット後、エラー判定モジュール40を動作させて、エラー判定結果を待つ。即ち、比較器34によりブロック毎にエラー回数とエラー判定閾値の比較が行われる(S310)。その比較の結果、エラー回数がエラー判定閾値以上のブロックがない場合はS320に進み、何れか1つでもエラー回数がエラー判定閾値以上のブロックがあれば、S325に進む。
【0065】
S325では、エラー発生ブロックレジスタ41に対してエラー発生ブロックを示すフラグをセットする。S330,S350の処理はそれぞれ
図4のS130,S150の処理と同じである。S480のフェールセーフ処理は、
図4のS280のフェールセーフ処理と若干異なる。即ち、本実施形態のフェールセーフ処理(S480)では、適宜、1又は複数の他のブロックのプログラムにアクセス(参照)して実行する。ただし、エラー発生ブロックレジスタ41の設定値を読み出して、エラー発生ブロックについてはそのブロック内のプログラムにはアクセスしない。
【0066】
S320〜S380,S400,S410,S430,S440,S460の各処理はそれぞれ
図4のS120〜S180,S200,S210,S230,S240,S260の各処理と同じである。
【0067】
S390及びS420のROMサムチェックは、ブロック毎に個別に実行する点で、第1実施形態と異なる。S450のエラー回数記憶レジスタ32へのエラー回数書き込み(インクリメント)についても、ブロック毎に、ROMサムチェックで異常と判断されたブロックに対応したエラー回数をインクリメントする点で、第1実施形態と異なる。
【0068】
上記のように構成された本実施形態のECUによれば、ブロック毎にエラー判定が行われ、何れか1つでもエラー判定されたブロックがあればフェールセーフ処理に移行するため、エラー判定の精度をより高めることができ、エラー発生に対して適切な対応(フェールセーフ処理)をより迅速にとることができる。また、エラーが発生しているブロックとエラーが発生していないブロックを区別することができるため、フェールセーフ処理においてアクセスできないブロックを必要最小限に抑えることができ、フェールセーフ処理の機能低下を抑えることができる。
【0069】
[変形例]
以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【0070】
例えば、上記実施形態では、リセット直後のエラー判定を、エラー判定モジュール(
図3,
図6参照)によるハードウェア処理で実現するようにしたが、エラー判定モジュールの機能をソフトウェア処理で実現するようにしてもよい。ただし、処理速度やコストを考慮すると、上記実施形態のようにハードウェア処理で実現する構成が好ましい。
【0071】
また、上記実施形態では、フラッシュメモリ23の記憶内容のチェック方法として、ROMサムチェックを用いたが、これはあくまでも一例であり、他の各種の方法(例えばCRC)を用いてメモリチェックを行うようにしてもよい。
【0072】
また、上記第2実施形態では、比較器34において、全てのブロックについてそれぞれエラー回数とエラー判定閾値との比較を行うようにしたが、何れか1つ又は所定数(複数)(本発明のエラー対応基準ブロック数の一例に相当)のブロックについてエラー判定(エラー回数≧エラー判定閾値)されたら、その時点で比較をやめて、それらエラー判定ブロックについてエラー発生ブロックレジスタ41のフラグをセットするようにしてもよい。
【0073】
S390やS420のROMサムチェックについても、全てのブロックについてROMサムチェックを行ってからS450に進むのではなく、ブロックごとに順次ROMサムチェックを行っていく過程の中で何れか1つ又は所定数(複数)(本発明のリセット基準ブロック数の一例に相当)のブロックについてROMサムチェックで異常が判断されたら、その時点でROMサムチェックをやめてS450に進むようにしてもよい。