(57)【要約】【課題】不揮発性メモリに対するデータチェックの異常時にデータチェックの再試行に要する時間を極力短くする電子制御装置を提供する。【解決手段】ＲＯＭの記憶領域は複数の分割領域に分割されており、電子制御装置は、複数の分割領域のうち使用されている分割領域に対してデータチェックの加算が終了すると（Ｓ３２８：Ｙｅｓ）、この加算結果が、予め該当する分割領域に対して実施しておいた加算結果である所定値と一致するか否かを判定する（Ｓ３３２）。加算結果が所定値と一致せず（Ｓ３３２：Ｎｏ）、不一致が１回目の場合（Ｓ３３４：Ｎｏ）、電子制御装置は、加算結果が所定値と一致しない分割領域に対してだけデータチェックを再試行する（Ｓ３３８、Ｓ３２８、Ｓ３３０）。不一致が２回連続すると（Ｓ３３４：Ｙｅｓ）、電子制御装置は、データチェック中の分割領域のデータが異常であると判定する（Ｓ３３６）。【選択図】図５
2010160737.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを記憶しており、記憶領域が複数の分割領域に分割されている不揮発性メモリと、
前記不揮発性メモリに記憶されているデータが正常であるか異常であるかをチェックするためのチェック演算を前記分割領域毎に実施する演算手段と、
前記演算手段による前記チェック演算の結果が正常であるか異常であるかを判定する判定手段と、
前記判定手段による判定結果が異常である前記分割領域に対してだけ前記演算手段に前記チェック演算の再試行を所定回数実施させる再試行手段と、
を備えることを特徴とする電子制御装置。
【請求項２】
前記演算手段は、使用されるデータを記憶している前記分割領域だけに前記チェック演算を実施することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記演算手段は、データチェック終了後の次処理で使用されるデータを記憶している前記分割領域を選択して前記チェック演算を実施することを特徴とする請求項１または２に記載の電子制御装置。
【請求項４】
前記再試行手段は、前記演算手段が前記チェック演算として第１のチェック演算を実施した結果、前記判定手段による判定結果が異常である前記分割領域に対し、前記チェック演算として前記第１のチェック演算とは異なる第２のチェック演算を前記演算手段に再試行させることを特徴とする請求項１から３のいずれか一項に記載の電子制御装置。
【請求項５】
前記判定手段は、前記分割領域に対する前記演算手段による前記第２のチェック演算の結果が異常である場合、該当する前記分割領域のデータが異常であると判定し、
前記再試行手段は、前記演算手段による前記第２のチェック演算の結果が正常であると前記判定手段が判定すると、前記分割領域に対する前記第１のチェック演算を前記演算手段に再試行させる
ことを特徴とする請求項４に記載の電子制御装置。
【請求項６】
前記判定手段は、前記分割領域に対する前記演算手段による前記第２のチェック演算の結果が正常であり、前記演算手段により再試行された前記第１のチェック演算の結果が異常である場合、前記演算手段による前記第１のチェック演算が異常であると判定し、前記演算手段により再試行された前記第１のチェック演算の結果が正常である場合、該当する前記分割領域と前記演算手段による演算とは正常であると判定することを特徴とする請求項５に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに対してデータチェックを実施する電子制御装置に関する。
【背景技術】
【０００２】
従来、システムの立ち上げ時およびシステム稼働中の空き時間等において、ＲＯＭ(Read Only Memory)等の不揮発性メモリに記憶されているデータに対してサムチェック等のデータチェックを実施することにより、ＲＯＭに記憶されているデータが正常であるか異常であるかを判定することが知られている（例えば、特許文献１〜３参照。）。
【０００３】
特許文献１においては、ＲＯＭ領域を複数のセルに分割し、診断期間毎に一部のセルのデータを加算し、全てのセルのデータを加算すると、加算値の合計と規定値とを比較することによりデータチェックを実施している。
【０００４】
これに対し、特許文献２では、ＲＯＭ領域を複数のデータ群に分割し、データ群毎にデータチェックの結果が正常か異常かを判定している。
【０００５】
また、特許文献３では、電源電圧の値に応じて、ＲＯＭ領域の全領域に対してデータチェックを実施するか、ＲＯＭ領域を分割した分割領域毎にデータチェックを実施するかを決定している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１３３６３５号公報
【特許文献２】特開平１０−２９９５６５号公報
【特許文献３】特開平４−１４５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ＲＯＭに対するデータチェックの結果が異常の場合、チェック演算の信頼性を確保するために１回の異常ではＲＯＭのデータ異常と判定せず、データチェックを何度か再試行し、それでも異常となる場合にＲＯＭのデータ異常と判定することが考えられる。しかしながら、ＲＯＭの記憶領域の全領域のデータの加算値を求めてデータチェックを実施する場合、データチェック結果の異常時にＲＯＭの記憶領域の全領域に対してデータチェックを再試行するので、データチェック時間が長くなるという問題がある。
【０００８】
また、ＲＯＭの記憶領域を分割して分割領域毎にデータチェックを実施する場合も、ＲＯＭに対するデータチェックを再試行するときにデータチェックの再試行を最初からやり直すと、データチェック時間が長くなるという問題がある。
【０００９】
このように、データチェック結果の異常時に再試行によるデータチェック時間が長くなると、例えばシステム立ち上げ時にデータチェックの再試行が実施される場合に、システム立ち上げに要する時間が長くなるという問題がある。特に、制御システムが複雑になっている近年の車両においては、車両システムの立ち上げ時に実施する初期設定項目および初期チェック項目が多いので、ＲＯＭのデータチェックに要する時間が長くなると、車両システムの立ち上げ時間が長くなり、車両システムの稼働が遅れるという問題が生じる。
【００１０】
本発明は、上記問題を解決するためになされたものであり、不揮発性メモリに対するデータチェックの異常時にデータチェックの再試行に要する時間を極力短くする電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
請求項１から６に記載の発明によると、演算手段は、不揮発性メモリに記憶されているデータが正常であるか異常であるかをチェックするチェック演算を分割領域毎に実施する。そして、演算手段によるチェック演算の結果が異常である分割領域に対してだけ、再試行手段は演算手段にチェック演算の再試行を所定回数実施させる。
【００１２】
このように、複数の分割領域のうち、チェック演算の結果が異常である分割領域に対してだけチェック演算の再試行を実施するので、正常である分割領域に対してチェック演算を再試行する必要がない。これにより、不揮発性メモリに対するデータチェックで異常が発生しても、再試行によるデータチェック時間を極力短くすることができる。その結果、システムの立ち上げ時およびシステム稼働中に実施するデータチェックにおいて異常が発生しチェック演算を再試行しても、データチェックに与えられた時間内でデータチェックの再試行を極力終了することができる。したがって、特に時間制約が厳しいシステムにおいて、他の制御を遅らせることなく不揮発性メモリに対するデータチェックを実施できる。
【００１３】
請求項２に記載の発明によると、演算手段は使用されるデータを記憶している分割領域だけにチェック演算を実施する。
【００１４】
これにより、不揮発性メモリの未使用領域に対するデータチェックを省略してデータチェックを実施するので、データチェック時間を短縮できる。特に、未使用領域の比率が高い場合に効果的である。
【００１５】
請求項３に記載の発明によると、演算手段は、データチェック終了後の次処理で使用されるデータを記憶している分割領域を選択してチェック演算を実施する。
【００１６】
これにより、時間制約があるために全ての分割領域に対するデータチェックを一度に実施できない場合に、データチェック終了後の次処理で使用されるデータに対してデータチェックを実施できる。例えばシステム立ち上げ時に時間制約がある場合、システム立ち上げ処理で使用されるデータを記憶している分割領域に対してだけチェック演算を実施することにより、制約時間を守ってシステムを立ち上げることができる。
【００１７】
ところで、分割領域に対してチェック演算を所定回数再試行したデータチェック結果が異常の場合、異常原因としては、データチェックを実施される不揮発性メモリを有する電子制御装置のチェック演算自体の異常、該当する分割領域のデータ異常等が考えられる。すなわち、電子制御装置が異常であるとことは判定できるが、異常原因を特定することはできない。
【００１８】
そこで、請求項４に記載の発明によると、再試行手段は、チェック演算として演算手段が第１のチェック演算を実施した結果、判定手段による判定結果が異常である分割領域に対し、チェック演算として第１のチェック演算とは異なる第２のチェック演算を前記演算手段に再試行させる。
【００１９】
このように、第１のチェック演算の結果が異常の場合に第１のチェック演算とは演算種類の異なる第２のチェック演算によりチェック演算を再試行することにより、第１のチェック演算結果が異常であることと、第２のチェック演算の結果とに基づいて、第１のチェック演算の結果の異常原因を特定できる可能性がある。データチェック結果の異常原因が特定できると、異常原因を解析する効率が向上する。
【００２０】
請求項５に記載の発明によると、判定手段は、演算手段による第２のチェック演算の結果が異常である場合、該当する分割領域のデータが異常であると判定し、再試行手段は、演算手段による第２のチェック演算の結果が正常であると判定手段が判定すると、分割領域に対する第１のチェック演算を演算手段に再試行させる。
【００２１】
第１のチェック演算および第２のチェック演算の結果の両方が異常である場合、第１のチェック演算および第２のチェック演算の両方が異常である確率は低いと考えられる。したがって、第１のチェック演算および第２のチェック演算の結果の両方が異常である場合は、不揮発性メモリの該当する分割領域のデータが異常であると特定できる。
【００２２】
また、第２のチェック演算の結果が正常の場合には、該当する分割領域のデータは正常であると考えられる。この場合、１回目に実施した第１のチェック演算自体が異常である可能性が考えられる。そこで、第１のチェック演算によりチェック演算を再試行することにより、１回目の第１のチェック演算の結果の異常原因が、第１のチェック演算自体にあるか否かを判定できる。
【００２３】
請求項６に記載の発明によると、判定手段は、演算手段による第２のチェック演算の結果が正常であり、演算手段により再試行された第１のチェック演算の結果が異常である場合、演算手段による第１のチェック演算が異常であると判定し、演算手段により再試行された第１のチェック演算の結果が正常である場合、該当する分割領域と演算手段による演算とは正常であると判定する。
【００２４】
第２のチェック演算の結果が正常であり、再施行された第１のチェック演算の結果が異常である場合、該当する分割領域のデータは正常であり、第１のチェック演算自体が異常であると特定できる。
【００２５】
また、第２のチェック演算の結果が正常であり、再試行された第１のチェック演算の結果が正常である場合、１回目の第１のチェック演算の結果が異常になったのは、例えばノイズ等の外乱により一時的に異常になったのであり、該当する分割領域のデータと演算手段による演算とは正常であると考えられる。
【００２６】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組み合わせにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【図面の簡単な説明】
【００２７】
【図１】第１実施形態によるマイコンを示すブロック図。
【図２】ＲＯＭの記憶領域の分割状態を示す構成図。
【図３】マイコン監視のメインルーチンを示すフローチャート。
【図４】マイコン監視処理ルーチンを示すフローチャート。
【図５】ＲＯＭのデータチェックルーチン１を示すフローチャート。
【図６】第２実施形態によるＲＯＭのデータチェックルーチン２を示すフローチャート。
【図７】第２実施形態による異なるチェック演算の実施結果を示す組み合わせ図。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態を図に基づいて説明する。
【００２９】
［第１実施形態］
図１に、第１実施形態によるマイクロコンピュータ（以下、「マイコン」ともいう。）１０を示す。
【００３０】
（マイコン１０）
電子制御装置としてのマイコン１０は、ＣＰＵ２０、ＲＯＭ３０、ＲＡＭ４０、レジスタ５０、図示しないフラッシュメモリ等を中心として構成されている。マイコン１０は、例えば車両に搭載され、車両の燃料噴射弁、ブレーキ、ドア等の制御対象に対する制御を実施する。
【００３１】
ＣＰＵ２０は、ＲＯＭ３０に記憶されている制御プログラムを実行することにより、車両の制御対象に対する制御を実施する。ＣＰＵ２０は、ＣＰＵ２０内のＡＬＵ(Arithmetic Logic Unit)により加減乗除、論理演算等の各種演算を実施する。
【００３２】
ＲＯＭ３０の記憶領域は、制御プログラムおよび制御プログラムが参照する制御データを記憶している制御部３２と、ＲＯＭ３０およびＲＡＭ４０のデータチェックを実施する監視部３４と、未使用の予備３６とに大きく分類されている。
【００３３】
ＲＡＭ４０は、制御部３２の制御プログラムおよび監視部３４の監視プログラムが作業用として使用する記憶領域である。
【００３４】
レジスタ５０は、ＣＰＵ２０が特定の目的で使用するか、または演算の作業用に使用する記憶領域である。
【００３５】
（データチェック）
次に、ＲＯＭ３０に記憶されているデータが正常であるか異常であるかをチェックするデータチェックについて説明する。ＲＯＭ３０の記憶領域は、前述した制御部３２と監視部３４と予備３６とによる機能分割とは別に、図２に示すように複数の所定容量の分割領域に分割されている。図２では、ＲＯＭ３０の記憶領域は分割領域Ａ〜分割領域Ｚに分割されているが、分割数はこれに限るものではない。図２において、予備３６は省略されている。
【００３６】
各分割領域の最後に記憶されている調整ワードの値は、調整ワードを含む各分割領域のデータ（以下、「分割領域のデータ」を単に領域データとも言う。）にデータチェック用のチェック演算を実施した場合に予め設定した所定値となるように設定されている。
【００３７】
各領域データが正常であれば、調整ワードを含む領域データに対するチェック演算の演算結果は所定値になるはずである。チェック演算としては加算を使用してもよいし、加算以の減算、乗算、除算および論理演算のいずれを使用してもよい。
【００３８】
（マイコン監視ルーチン）
図３から図５にマイコン監視ルーチンを示す。マイコン１０は、ＲＯＭ３０の監視部３４に記憶されている監視プログラムをＣＰＵ２０が実行することにより、演算手段、判定手段、再試行手段として機能する。図３から図５において「Ｓ」はステップを表している。図３から図５に示すマイコン監視ルーチンは、システムの立ち上げ時、あるいは、通常制御実行中の所定タイミングで実行される。
【００３９】
（メインルーチン）
図３に示すマイコン監視のメインルーチンでは、Ｓ３００においてＣＰＵ２０は、マイコン監視処理を実施する。マイコン監視処理の詳細については図４および図５で説明する。マイコン監視処理の結果、マイコン１０が正常であれば（Ｓ３０２：Ｙｅｓ）、Ｓ３０４においてＣＰＵ２０は、制御部３２に記憶されている制御プログラムによる通常制御の実施を許可して本ルーチンを終了する。マイコン１０が異常であれば（Ｓ３０２：Ｎｏ）、Ｓ３０６においてＣＰＵ２０は、マイコン１０による車両制御を中止して本ルーチンを終了する。
【００４０】
（マイコン監視処理ルーチン）
図３に示すＳ３００のマイコン監視処理としてＣＰＵ２０は、図４のＳ３１０に示すＲＯＭ３０のデータチェック、Ｓ３１２に示すＲＡＭ４０のデータチェックを実施する。Ｓ３１０に示すＲＯＭ３０のデータチェックについては後述する。
【００４１】
Ｓ３１２においてＣＰＵ２０は、ＲＡＭ４０に対して１ワード毎に所定値のデータを書き込み、書き込んだ所定値が正しく読み出せるかを判定することによりＲＡＭ４０のデータチェックを実施する。
【００４２】
（ＲＯＭデータチェックルーチン１）
図４に示すＳ３１０で実施されるＲＯＭ３０のデータチェックルーチン１の詳細を図５に示す。図５のデータチェックにおいては、チェック演算として加算を実行する。
【００４３】
尚、本実施形態においては、使用されるデータを記憶しているＲＯＭ３０の分割領域に対してだけデータチェックを実施する。したがって、未使用領域であるＲＯＭ３０の予備３６、ならびに制御部３２および監視部３４においても未使用の分割領域があればデータチェックの対象から除外される。各分割領域の使用または未使用は、各分割領域に対応するフラグ等で示される。
【００４４】
また、ＲＯＭ３０のデータチェックは、設定された時間内で全ての使用分割領域に対して実施できるのであれば、図５に示すルーチンで一度に実施してもよいし、設定時間内で一部の使用分割領域だけしかデータチェックを実施できないのであれば、複数回に分けて実施すればよい。分割領域に対してデータチェックを実施済みか未実施であるかは、各分割領域に対応するフラグ等で示される。
【００４５】
ここで、時間制約があるために全ての分割領域のデータチェックを一度に実施できない場合には、データチェック終了後の次処理で使用されるデータを記憶している分割領域を選択してデータチェックを実施することが望ましい。例えばシステム立ち上げ時に時間制約がある場合、システム立ち上げ処理で使用されるデータを記憶している分割領域に対してだけチェック演算を実施することにより、制約時間を守ってシステムを立ち上げることができる。
【００４６】
システムが立ち上がると、立ち上げ時にデータチェックを実施しなかった分割領域に対して順次データチェックを実施すればよい。システム立ち上げ以降のデータチェックに対しても、時間制約がある場合には、データチェック終了後の次処理で使用されるデータを記憶している分割領域を選択してデータチェックを実施することが望ましい。
【００４７】
まず、図５のＳ３２０においてＣＰＵ２０は、ＲＯＭ３０の全領域に対するデータチェックが完了したかを判定する。この場合、ＲＯＭ３０の予備３６に対しては、予めデータチェックの対象から除外するように設定されていてもよい。
【００４８】
データチェックにより異常が発生せず、全領域に対するチェックが完了すると（Ｓ３２０：Ｙｅｓ）、今回のＲＯＭ３０に対するデータチェックは正常に終了したと判断し（Ｓ３２２）、ＣＰＵ２０は本ルーチンを終了する。Ｓ３２０で判定対象とする全領域は、今回のデータチェック時間内で実施する分割領域を対象とする。したがって、ＲＯＭ３０の全ての使用分割領域がチェック対象になる場合もあるし、設定時間内でデータチェックを実施できる一部の使用分割領域がチェック対象になる場合もある。
【００４９】
全領域に対するチェックが完了していない場合（Ｓ３２０：Ｎｏ）、Ｓ３２４においてＣＰＵ２０は、次の分割領域が今回のデータチェックの対象領域であるかをフラグ等に基づいて判定する。次の分割領域が今回のデータチェックの対象領域でなければ（Ｓ３２４：Ｎｏ）、ＣＰＵ２０は、次の分割領域に進み（Ｓ３２６）、Ｓ３２０の判定を実施する。
【００５０】
次の分割領域が今回のデータチェックの対象領域であれば（Ｓ３２４：Ｙｅｓ）、Ｓ３２８においてＣＰＵ２０は、データチェック中の分割領域の調整ワードを含む加算が全て終了したかを判定する。分割領域の加算がまだ終了していない場合（Ｓ３２８：Ｎｏ）、ＣＰＵ２０は分割領域内の次のＲＯＭデータを加算し（Ｓ３３０）、Ｓ３２８の判定を実施する。
【００５１】
分割領域内の加算が全て終了した場合（Ｓ３２８：Ｙｅｓ）、Ｓ３３２においてＣＰＵ２０は、分割領域の調整ワードを含む加算値が予め設定しておいた所定値に一致するかを判定する。加算値が所定値に一致する場合（Ｓ３３２：Ｙｅｓ）、ＣＰＵ２０はＳ３２６に処理を移行し、次の分割領域に対してデータチェックを実施する。加算値が所定値に一致しない場合（Ｓ３３２：Ｎｏ）、Ｓ３３４においてＣＰＵ２０は、２回連続して不一致であるかを判定する。不一致が１回目の場合（Ｓ３３４：Ｎｏ）、ＣＰＵ２０は加算結果をクリアし（Ｓ３３８）、同じ分割領域に対してデータチェックを再試行するためにＳ３２８に処理を移行する。この場合、加算値が所定値に一致しない分割領域に対してだけデータチェックを再試行する。
【００５２】
２回連続して不一致の場合（Ｓ３３４：Ｙｅｓ）、ＣＰＵ２０は、ＲＯＭ３０のデータが異常であると判断し（Ｓ３３６）、本ルーチンを終了する。尚、データチェックを再試行した結果、ＲＯＭ３０のデータが異常であると判断するときの連続した不一致回数は、２回に限らず３回以上でもよい。
【００５３】
図５のフローチャートにおいて、Ｓ３２０〜Ｓ３３０は演算手段としてのマイコン１０の機能に相当し、Ｓ３３２〜Ｓ３３６は判定手段としてのマイコン１０の機能に相当し、Ｓ３３４およびＳ３３８は再試行手段としてのマイコン１０の機能に相当する。
【００５４】
第１実施形態では、各分割領域の加算結果が所定値になるように値を設定した調整ワードを分割領域毎に設けた。これに対し、調整ワードを分割領域に設けず、分割領域毎にデータを加算した結果が、予め分割領域毎に加算しておいた値と一致するか否かを判定してもよい。
【００５５】
［第２実施形態］
図４に示すＳ３１０で実施される第２実施形態によるＲＯＭ３０のデータチェックルーチン２の詳細を図６に示す。第１実施形態では、分割領域に対し、チェック演算として１種類の加算を実施した。これに対し、第２実施形態では、分割領域に対する１回目のチェック演算の結果が異常である場合、該当する分割領域に対して第１のチェック演算とは異なる第２のチェック演算によりチェック演算を再試行する。第２実施形態では、第１のチェック演算として加算を実施し、第２のチェック演算として減算を実施する。また、第２実施形態では、調整ワードを分割領域に設けず、分割領域毎にチェック演算を実施した結果が、予め分割領域毎にチェック演算を実施しておいた値と一致するか否かを判定する。
【００５６】
（ＲＯＭデータチェックルーチン２）
図６のＳ３４０〜ＳＳ３５０は、図５のＳ３２０〜ＳＳ３３０と実質的に同一処理であるから説明を省略する。
【００５７】
Ｓ３５２においてＣＰＵ２０は、分割領域の加算値が予め設定しておいた所定値に一致するかを判定する。加算値が所定値に一致する場合（Ｓ３５２：Ｙｅｓ）、ＣＰＵ２０はＳ３４６に処理を移行し、次の分割領域に対してデータチェックを実施する。加算値が所定値に一致しない場合（Ｓ３５２：Ｎｏ）、Ｓ３５４においてＣＰＵ２０は、加算結果をクリアする。
【００５８】
Ｓ３５６においてＣＰＵ２０は、第１のチェック演算として１回目の加算の結果が異常である分割領域に対して、第２のチェック演算である減算が全て終了したかを判定する。分割領域の減算がまだ終了していない場合（Ｓ３５６：Ｎｏ）、ＣＰＵ２０は分割領域内の次のＲＯＭデータを減算し（Ｓ３５８）、Ｓ３５６の判定を実施する。
【００５９】
分割領域内の減算が全て終了した場合（Ｓ３５６：Ｙｅｓ）、Ｓ３６０においてＣＰＵ２０は、分割領域の減算値が予め設定しておいた所定値に一致するかを判定する。
【００６０】
減算値が所定値に一致しない場合（Ｓ３６０：Ｎｏ）、つまり分割領域に対して実施した加算および減算の結果がともに異常である場合、Ｓ３６２においてＣＰＵ２０は、図７に示すように、ＲＯＭ３０の該当する分割領域のデータが異常であると判定する。
【００６１】
減算値が所定値に一致する場合（Ｓ３６０：Ｙｅｓ）、ＣＰＵ２０は、Ｓ３６４において減算結果をクリアし、Ｓ３６６において、減算結果が異常であった分割領域に対して、２回目の加算が全て終了したかを判定する。分割領域に対して２回目の加算がまだ終了していない場合（Ｓ３６６：Ｎｏ）、ＣＰＵ２０は分割領域内の次のＲＯＭデータを加算し（Ｓ３６８）、Ｓ３６６の判定を実施する。
【００６２】
分割領域に対して２回目の加算が全て終了した場合（Ｓ３６６：Ｙｅｓ）、Ｓ３７０においてＣＰＵ２０は、分割領域の加算値が予め設定しておいた所定値に一致するかを判定する。
【００６３】
２回目の加算値が所定値に一致しない場合（Ｓ３７０：Ｎｏ）、つまり、１回目の加算結果が異常であり、次に実施した減算結果が正常であり、２回目の加算結果が異常の場合、Ｓ３７２においてＣＰＵ２０は、図７に示すように第１のチェック演算である加算が異常であると判定する。この場合、ＣＰＵ２０内のＡＬＵの加算機能が異常であると考えられる。
【００６４】
２回目の加算値が所定値に一致する場合（Ｓ３７０：Ｙｅｓ）、つまり、１回目の加算結果が異常であり、次に実施した減算結果が正常であり、２回目の加算結果が正常の場合、ＣＰＵ２０は、図７に示すように、１回目の加算結果が異常であったのはノイズ等の一時的な外乱が原因であると判断し、該当する分割領域に対するデータチェックは正常であると判定する。すなわち、ＣＰＵ２０は、該当する分割領域のデータ、ならびにＣＰＵ２０によるチェック演算である加算および減算は正常であると判定する。すなわち、そして、ＣＰＵ２０は、Ｓ３４０に処理を移行する。
【００６５】
第２実施形態では、第１のチェック演算として１回目の加算による結果が異常の場合、同じ加算によりチェック演算を再試行するのではなく、加算と異なる減算を第２のチェック演算としてチェック演算の再試行を実施する。さらに、減算結果が正常の場合には、さらに２回目の加算をチェック演算として再試行する。
【００６６】
このように第２実施形態では、演算種類の異なる第１のチェック演算と第２のチェック演算とを組み合わせて実施することにより、該当する分割領域に対して実施したデータチェックの最終結果が異常の場合、第１のチェック演算の結果と第２のチェック演算の結果とに基づいて、データチェックの異常原因を特定できる。これにより、データチェックの異常原因を解析する効率が向上する。
【００６７】
図６のフローチャートにおいて、Ｓ３４０〜Ｓ３５０、Ｓ３５６、Ｓ３５８、Ｓ３６６、Ｓ３６８は演算手段としてのマイコン１０の機能に相当し、Ｓ３５２、ＳＳ３６０、Ｓ３６２、Ｓ３７０、Ｓ３７２は判定手段としてのマイコン１０の機能に相当し、Ｓ３５２〜Ｓ３５８、Ｓ３６０、Ｓ３６４〜Ｓ３６８は再試行手段としてのマイコン１０の機能に相当する。
【００６８】
以上説明した上記実施形態では、分割領域に対するデータチェック結果が異常の場合には、異常であった分割領域に対してだけデータチェックを再試行する。これにより、時間制約が厳しいシステムにおいて、再試行によるデータチェック時間を極力短くすることができる。その結果、システムの立ち上げ時およびシステム稼働中に実施するデータチェックにおいて異常が発生しデータチェックを再試行しても、データチェックに与えられた時間内でデータチェックの再試行を極力終了することができる。したがって、特に時間制約が厳しいシステムにおいて、他の制御を遅らせることなく不揮発性メモリに対するデータチェックを実施できる。
【００６９】
また、１回のチェック演算の結果が異常であってもＲＯＭデータの異常であると判定せずチェック演算を何回か再試行するので、データチェックの異常判定の精度が向上する。
【００７０】
［他の実施形態］
上記実施形態では、不揮発性メモリとしてＲＯＭに対するデータチェックを実施した。これに対し、フラッシュメモリ等の書換え可能な不揮発性メモリに対してデータチェックを実施してもよい。書換え可能な不揮発性メモリに対してデータチェックを実施する場合、プログラムの更新等、書換えの頻度が低い書換え可能な不揮発性メモリに対してデータチェックを実施することが望ましい。
【００７１】
また、上記実施形態では、使用されるデータが記憶されているＲＯＭ３０の分割領域だけをデータチェックの対象とした。これに対し、未使用の分割領域を含め、ＲＯＭ３０の全ての記憶領域に対してデータチェックを実施してもよい。この場合、未使用の分割領域には所定値のデータが記憶されている。
【００７２】
第２実施形態では、１回目の加算結果が異常であり、次に実施する減算結果が正常の場合、２回目の加算を実施した。これに対し、１回目の加算結果が異常であり、次に実施する減算結果が正常の場合、２回目の加算を実施せず、加算が異常であると判定してもよい。
【００７３】
上記実施形態では、演算手段、判定手段、再試行手段の機能を、監視プログラムにより機能が特定されるマイコン１０により実現している。これに対し、上記複数の手段の機能の少なくとも一部を、回路構成自体で機能が特定されるハードウェアで実現してもよい。
【００７４】
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００７５】
１０：マイクロコンピュータ（電子制御装置、演算手段、判定手段、再試行手段）、２０：ＣＰＵ、３０：ＲＯＭ（不揮発性メモリ）
【図１】
2010160737.tif 000003
【図２】
2010160737.tif 000004
【図３】
2010160737.tif 000005
【図４】
2010160737.tif 000006
【図５】
2010160737.tif 000007
【図６】
2010160737.tif 000008
【図７】
2010160737.tif 000009