(57)【特許請求の範囲】
【請求項１】
イグニッションスイッチがＯＦＦになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、消去された状態であれば書き込みが可能になる不揮発性メモリと、を有し、前記イグニッションスイッチがＯＦＦになってから内部電源が遮断されるまでに、前記不揮発性メモリに確保された２つの記憶領域を交互に消去してから情報を書き込む一方、前記イグニッションスイッチがＯＮになったときに、前記不揮発性メモリの２つの記憶領域から交互に情報を読み込む自動車用電子制御装置において、
前記不揮発性メモリに対する情報の読み込み時に、前記不揮発性メモリの記憶領域の電気的故障を検知する手段と、
前記電気的故障が検知されたときに、前記電気的故障が検知された記憶領域とは異なる記憶領域に対して、前記電気的故障に係る記憶領域を特定可能な故障情報を順次記憶して蓄積する手段と、
前記２つの記憶領域の故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する手段と、
を有する、自動車用電子制御装置。
【請求項２】
前記不揮発性メモリの記憶領域の電気的故障を検知する手段は、前記記憶領域に対する情報の読み込みに際して、所定回数連続して異常が発生したときに、前記記憶領域に電気的故障が発生したと検知する、請求項１に記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置に関する。
【背景技術】
【０００２】
自動車に搭載される電子制御装置には、動作中に発生した故障の情報（故障情報）を不揮発性のフラッシュメモリに記録するＯＢＤ（On-Board Diagnostics）機能が備え付けられている。ＯＢＤ機能においては、特開２００１−８４００２号公報（特許文献１）に記載されるように、ドライビングサイクルごとに異なる記憶領域に故障情報を記録することで、故障情報の記録が失敗しても、それまで蓄積した故障情報がすべて失われることを防止している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−８４００２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ある記憶領域に素子固着などの故障が発生すると、その記憶領域に故障情報を正常に記録することができなくなってしまう。故障が発生した記憶領域から故障情報を読み込むときに、チェックサムなどで故障発生が検知されると、故障が発生していない他の記憶領域、例えば、故障が発生した記憶領域の直前に故障情報を書き込んだ記憶領域から故障情報が読み込まれる。
【０００５】
しかし、従来技術においては、記憶領域への故障情報の書き込みに先立って、その記憶領域が正常であるか否かを診断していなかったため、故障情報の記録に際して、故障情報を読み込んだ記憶領域とは異なる記憶領域、即ち、故障が発生した記憶領域に故障情報を書き込んでしまう場合がある。この場合、故障が発生した記憶領域に故障情報が繰り返し記録されることから、記録可能な記憶領域が１つになると、故障情報のさらなる蓄積ができなくなってしまう。
【０００６】
そこで、本発明は従来技術の問題点に鑑み、不揮発性メモリの記憶領域に故障が発生しても、故障情報などの蓄積への影響を抑制した、自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
自動車用電子制御装置は、イグニッションスイッチがＯＦＦになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、消去された状態であれば書き込みが可能になる不揮発性メモリと、を有する。そして、自動車用電子制御装置は、イグニッションスイッチがＯＦＦになってから内部電源が遮断するまでに、不揮発性メモリに確保された２つの記憶領域を交互に消去してから情報を書き込む一方、イグニッションスイッチがＯＮになったときに、不揮発性メモリの２つの記憶領域から交互に情報を読み込む。また、自動車用電子制御装置は、不揮発性メモリに対する情報の読み込み時に、不揮発性メモリの記憶領域の電気的な故障が検知されると、電気的故障が検知された記憶領域とは異なる記憶領域に対して、電気的故障に係る記憶領域を特定可能な故障情報を順次記憶して蓄積する。自動車用電子制御装置は、２つの記憶領域の故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する。
【発明の効果】
【０００８】
不揮発性メモリの記憶領域に故障が発生しても、情報の蓄積への影響を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】自動車用電子制御装置の一例を示す構成図である。
【図２】故障情報を格納する記憶領域のデータ構造図である。
【図３】故障情報書込処理の一例を示すフローチャートである。
【図４】故障情報書込処理の一例を示すフローチャートである。
【図５】記憶領域を選定するサブルーチンのフローチャートである。
【図６】故障情報読込処理の一例を示すフローチャートである。
【図７】故障報知処理の一例を示すフローチャートである。
【図８】実施例における故障情報書込処理の一連の手順を示す説明図である。
【図９】実施例における故障情報読込処理の一連の手順を示す説明図である。
【図１０】実施例において故障情報の書き込みが未完了であった場合の説明図である。
【図１１】実施例の動作イメージの説明図である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車用電子制御装置（以下「電子制御装置」という）の一例を示す。
電子制御装置１００は、例えば、エンジン、自動変速機、燃料ポンプなどを電子制御するデバイスであって、ＣＰＵ（Central Processing Unit）などのプロセッサ１１０と、一時的な作業領域となるＲＡＭ（Random Access Memory）１２０と、フラッシュメモリ１３０と、を有する。フラッシュメモリ１３０は、フラッシュＲＯＭ（Read Only Memory）など、電源供給を遮断してもデータが消えない不揮発性の半導体メモリであって、ＯＢＤ機能による故障情報などを保持記憶する。プロセッサ１１０、ＲＡＭ１２０及びフラッシュメモリ１３０は、バス１４０を介して相互に接続されている。
【００１１】
フラッシュメモリ１３０には、図２に示すように、故障情報を記憶する複数の記憶領域として、例えば、記憶領域１及び記憶領域２が確保されている。記憶領域１及び記憶領域２は、同図に示すように、バックアップ領域１３０Ａ、開始印１３０Ｂ、カウンタ１３０Ｃ、ＳＵＭ１３０Ｄ、終了印１３０Ｅ及び空き領域１３０Ｆを含む。バックアップ領域１３０Ａには、電子制御装置１００の作動中に収集された故障情報が格納される。開始印１３０Ｂには、バックアップ領域１３０Ａに故障情報を書き込み始めたことを表す開始コードが格納される。カウンタ１３０Ｃには、バックアップ領域１３０Ａに故障情報を書き込んだ累積回数が格納される。ＳＵＭ１３０Ｄには、バックアップ領域１３０Ａに格納された故障情報のチェックサムが格納される。終了印１３０Ｅには、バックアップ領域１３０Ａへの故障情報の書き込みが終了したことを表す終了コードが格納される。空き領域１３０Ｆには、他の記憶領域について、そのバックアップ領域１３０Ａに異常が発生したことを表す素子異常情報が逐次格納される。
【００１２】
そして、電子制御装置１００は、ＲＯＭなどに格納された制御プログラムに従って、故障情報書込処理、故障情報読込処理及び故障報知処理を夫々実行する。
【００１３】
図３及び図４は、イグニッションスイッチがＯＦＦになったことを契機として、電子制御装置１００が所定時間後にセルフシャットダウンするまでに、電子制御装置１００のプロセッサ１１０が実行する故障情報書込処理の一例を示す。ここで、セルフシャットダウンとは、イグニッションスイッチがＯＦＦになった後、所定時間経過したときに内部電源を遮断する機能である。
【００１４】
なお、故障情報書込処理の前提として、電子制御装置１００の作動中に、ＲＡＭ１２０に各種デバイスの故障情報が蓄積されていると共に、ＲＡＭ１２０にカウンタ１３０Ｃ及び素子異常情報が退避されているものとする。また、前回のドライビングサイクルの故障情報がフラッシュメモリ１３０から読み出されてＲＡＭ１２０に書き込まれ、その後の処理において、この故障情報に対して今回のドライビングサイクルにおける故障診断結果が追記されるものとする。そして、イグニッションスイッチがＯＦＦになると、ＲＡＭ１２０の故障情報が故障情報書込処理における書き込み対象となる。
【００１５】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、プロセッサ１１０が、ＲＡＭ１２０に蓄積されている各種デバイスの故障情報を書き込む記憶領域を選定するサーブルーチン（図５参照）を実行する。
【００１６】
ステップ２では、プロセッサ１１０が、ステップ１で選定した記憶領域について、その先頭アドレスから所定の消去データ（例えば、０ｘＦＦ）を書き込み始めることで、記憶領域の消去を開始する。
【００１７】
ステップ３では、プロセッサ１１０が、例えば、記憶領域の最終アドレスまで消去データを書き込んだか否かを介して、記憶領域の消去が完了したか否かを判定する。そして、プロセッサ１１０は、記憶領域の消去が完了したと判定すれば処理をステップ４へと進める一方（Ｙｅｓ）、記憶領域の消去が完了していないと判定すれば判定処理を繰り返す（Ｎｏ）。
【００１８】
ステップ４では、プロセッサ１１０が、記憶領域に書き込まれた消去データを順次確認することで、記憶領域が正常に消去されたか否かを判定する消去チェックを行なう。
【００１９】
ステップ５では、プロセッサ１１０が、ステップ４における消去チェックの結果に基づいて、記憶領域の全領域が消去されたか否かを判定する。そして、プロセッサ１１０は、記憶領域の全領域が消去されたと判定すれば処理をステップ６へと進める（Ｙｅｓ）。一方、プロセッサ１１０は、記憶領域の全領域が消去されていない、即ち、ある素子（セル）に異常があるため消去データの書き込みが正常に行われなかったと判定すれば処理をステップ１６へと進める（Ｎｏ）。
【００２０】
ステップ６では、プロセッサ１１０が、バックアップ領域１３０Ａのチェックサムを計算するための変数ＳＵＭを０にリセットする。
【００２１】
ステップ７では、プロセッサ１１０が、開始印１３０Ｂに所定の開始コードを格納する。
【００２２】
ステップ８では、プロセッサ１１０が、書き込みアドレスとして、バックアップ領域１３０Ａの先頭アドレスを設定する。
【００２３】
ステップ９では、プロセッサ１１０が、例えば、書き込みアドレスがバックアップ領域１３０Ａの最終アドレスを指しているか否かに基づいて、ＲＡＭ１２０からフラッシュメモリ１３０への故障情報の書き込みが完了したか否かを判定する。そして、プロセッサ１１０は、故障情報の書き込みが完了していないと判定すれば処理をステップ１０へと進める一方（Ｙｅｓ）、故障情報の書き込みが完了したと判定すれば処理をステップ１３へと進める（Ｎｏ）。
【００２４】
ステップ１０では、プロセッサ１１０が、ＲＡＭ１２０から故障情報を１バイト読み込み、書き込みアドレスが指定するアドレスに書き込む。
【００２５】
ステップ１１では、プロセッサ１１０が、例えば、変数ＳＵＭに対して、故障情報の１バイトのデータ値を加算することで、変数ＳＵＭを更新する。
【００２６】
ステップ１２では、プロセッサ１１０が、例えば、書き込みアドレスに１を加算することで、書き込みアドレスを更新した後、処理をステップ９へと戻す。
【００２７】
ステップ１３では、プロセッサ１１０が、変数ＳＵＭをＳＵＭ１３０Ｄに書き込む。
【００２８】
ステップ１４では、プロセッサ１１０が、ＲＡＭ１２０からカウンタ及び素子異常情報を読み込み、記憶領域のカウンタ１３０Ｃ及び空き領域１３０Ｆに夫々書き込む。なお、素子異常情報が存在しない場合には、これを空き領域１３０Ｆに書き込む必要はない。
【００２９】
ステップ１５では、プロセッサ１１０が、終了印１３０Ｅに所定の終了コードを格納する。
【００３０】
ステップ１６では、プロセッサ１１０が、ステップ１で選定された記憶領域とは異なる記憶領域の空き領域１３０Ｆに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。ここで、記憶領域の空き領域１３０Ｆに素子異常情報が既に書き込まれている場合には、これとは異なるアドレスに書き込む（以下同様）。
【００３１】
図５は、記憶領域を選定するサブルーチンの一例を示す。
ステップ２１では、プロセッサ１１０が、フラッシュメモリ１３０の各記憶領域の空き領域１３０Ｆを夫々参照し、素子異常情報の個数を計数した計数値が所定の閾値未満である記憶領域、要するに、素子に固着などの故障が発生していない正常な記憶領域を抽出する。ここで、素子異常情報が存在しない記憶領域は、無条件に抽出される。また、電子制御装置１００の製造直後には、各記憶領域は未使用であるので、例えば、未使用の記憶領域を優先的に抽出したり、未使用領域が複数あればアドレス順に抽出する。なお、正常な記憶領域であるか否かは、素子異常情報の個数を計数せずに、素子異常情報の有無のみで判定してもよい。
【００３２】
ステップ２２では、プロセッサ１１０が、ステップ２１で抽出した各記憶領域について、開始印１３０Ｂ、ＳＵＭ１３０Ｄ及び終了印１３０Ｅの少なくとも１つを参照し、記憶領域が正常であるにもかかわらず、電子制御装置１００がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。具体的には、プロセッサ１１０は、開始印１３０Ｂに所定の開始コードが格納されているか、ＳＵＭ１３０Ｄにチェックサムが格納されているか、終了印１３０Ｅに所定の終了コードが格納されているかの少なくとも１つの条件が成立しているか否かを介して、故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。そして、プロセッサ１１０は、故障情報の書き込みが正常に終了しなかった記憶領域があると判定すれば処理をステップ２３へと進める一方（Ｙｅｓ）、故障情報の書き込みが正常に終了しなかった記憶領域がないと判定すれば処理をステップ２４へと進める（Ｎｏ）。
【００３３】
ステップ２３では、プロセッサ１１０が、電子制御装置１００がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域（故障しているとは断言できない記憶領域）を選定する。ここで、故障情報の書き込みが正常に終了しなかった記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。
【００３４】
ステップ２４では、プロセッサ１１０が、正常な記憶領域の中から、ドライビングサイクルごとに故障情報を記録する記憶領域として、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる他の記憶領域を選定する。この処理は、前回及び今回の少なくとも２つのドライビングサイクルにおける故障情報を保存するためのものである。ここで、使用できる正常な記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。また、故障情報を書き込む他の記憶領域がない場合には、今回のドライビングサイクルで故障情報の書き込みが失敗すると正常な故障情報が失われるため、前回のドライビングサイクルにおける故障情報を保持して書き込みを行わない、又は、最新の故障情報に更新すべく、今回のドライビングサイクルで故障情報を読み込んだ記憶領域を選定する。
【００３５】
なお、終了印１３０Ｅに書き込み順序を表す情報を付したり、書き込み順序を表すカウンタを用いることで、故障情報の書き込みが正常に終了しなかった記憶領域のうち、バックアップ領域１３０Ａへの故障情報の書き込みが一番古い記憶領域を選定してもよい。このようにすれば、直近に故障情報が書き込まれた記憶領域が選定されることがなく、より新しいデータを確実に保存しつつ、新たなデータを書き込む領域を選択することができる。
【００３６】
かかる故障情報書込処理によれば、ＲＡＭ１２０に保持されている故障情報は、素子に故障が発生していない記憶領域のバックアップ領域１３０Ａに書き込まれる。このとき、バックアップ領域１３０Ａに所定の消去データが書き込めるかを否かを介して、故障情報の書き込み対象である記憶領域に異常が発生しているか否かが判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域１３０Ｆに素子異常情報が書き込まれる。
【００３７】
また、ＲＡＭ１２０に保持されている故障情報を記憶領域に書き込むとき、開始印１３０Ｂに開始コードが書き込まれ、バックアップ領域１３０Ａに故障情報が書き込まれ、ＳＵＭ１３０Ｄにチェックサムが書き込まれ、終了印１３０Ｅに終了コードが書き込まれる、という手順が実行される。このため、開始印１３０Ｂ、ＳＵＭ１３０Ｄ及び終了印１３０Ｅの少なくとも１つを参照することで、例えば、バッテリ電圧の低下、故障情報の書き込みに時間がかかったなど、電子制御装置１００がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかったことを把握することができる。さらに、バックアップ領域１３０Ａに故障情報を書き込むときに、故障情報のチェックサムが演算され、これがＳＵＭ１３０Ｄに書き込まれる。このため、後述する故障情報読込処理において、バックアップ領域１３０ＡのチェックサムとＳＵＭ１３０Ｄに格納されたチェックサムとを比較することで、記憶領域の素子に異常が発生しているか否かを判定することができる。
【００３８】
なお、消去チェックにより記憶領域の全領域が消去されたと判定された場合、それまでに発生した素子異常は、例えば、ノイズ重畳により発生した一時的な異常であると考えられるため、記憶領域の空き領域１３０Ｆに格納された素子異常情報をクリア（削除）してもよい。
【００３９】
図６は、イグニッションスイッチがＯＮになったことを契機として、電子制御装置１００のプロセッサ１１０が実行する故障情報読込処理の一例を示す。
【００４０】
ステップ３１では、プロセッサ１１０が、故障情報を読み込む対象となる記憶領域を選定する。即ち、プロセッサ１１０は、フラッシュメモリ１３０の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印１３０Ｂ及び終了印１３０Ｅが正常である記憶領域のうち、バックアップ領域１３０Ａに故障情報が書き込まれた時期が一番新しいものを選定する。
【００４１】
ステップ３２では、プロセッサ１１０が、変数ＳＵＭを０にリセットする。
【００４２】
ステップ３３では、プロセッサ１１０が、ステップ１で選定した記憶領域から、ＳＵＭ１３０Ｄを読み込む。なお、記憶領域から読み込んだＳＵＭ１３０Ｄは、例えば、ＲＡＭ１２０に一時的に記憶しておく。
【００４３】
ステップ３４では、プロセッサ１１０が、例えば、記憶領域のバックアップ領域１３０Ａの最後までデータを読み出したか否かを介して、バックアップ領域１３０Ａから故障情報の読み込みが完了したか否かを判定する。そして、プロセッサ１１０は、故障情報の読み込みが完了していないと判定すれば処理をステップ３５へと進める一方（Ｙｅｓ）、故障情報の読み込みが完了したと判定すれば処理をステップ３７へと進める（Ｎｏ）。
【００４４】
ステップ３５では、プロセッサ１１０が、記憶領域のバックアップ領域１３０Ａから異常情報を１バイト読み込む。
【００４５】
ステップ３６では、プロセッサ１１０が、例えば、変数ＳＵＭに対して、異常情報の１バイトのデータ値を加算することで、変数ＳＵＭを更新した後、処理をステップ３４へと戻す。
【００４６】
ステップ３７では、プロセッサ１１０が、ステップ３３で読み込んだＳＵＭ１３０Ｄと変数ＳＵＭとを比較することで、バックアップ領域１３０Ａから読み込んだ故障情報のチェックサムが正しいか否かを判定する。そして、プロセッサ１１０は、故障情報のチェックサムが正しいと判定すれば処理をステップ３８へと進める一方（Ｙｅｓ）、故障情報のチェックサムが正しくないと判定すれば処理をステップ３９へと進める（Ｎｏ）。
【００４７】
ステップ３８では、プロセッサ１１０が、記憶領域からカウンタ１３０Ｃ及び素子異常情報を読み込み、ＲＡＭ１２０に退避させる。
【００４８】
ステップ３９では、プロセッサ１１０が、ステップ３１で選定された記憶領域とは異なる記憶領域の空き領域１３０Ｆに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。
【００４９】
ステップ４０では、プロセッサ１１０が、フラッシュメモリ１３０の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印１３０Ｂ及び終了印１３０Ｅが正常である記憶領域のうち、バックアップ領域１３０Ａに故障情報が書き込まれた時期が次に新しいものを選定した後、処理をステップ３２へと戻す。
【００５０】
かかる故障情報読込処理によれば、故障情報書込処理において故障情報が正常に書き込まれた記憶領域（素子に故障が発生していない記憶領域）のうち、故障情報の書き込みが一番新しい記憶領域から、故障情報が読み込まれる。ここで、記憶領域から故障情報を読み込むとき、読み込みデータのチェックサムが演算され、これと保持されているチェックサムとを比較することで、記憶領域に異常が発生しているか否かが再度判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域１３０Ｆに素子異常情報が書き込まれる。また、記憶領域に異常が発生していると判定された場合には、記憶領域に記憶されている故障情報の確度が低いため、その前に書き込まれた記憶領域から故障情報を読み込むべく、故障情報の書き込みが次に新しい記憶領域から故障情報が読み込まれる。
【００５１】
従って、かかる電子制御装置１００によれば、故障が発生している記憶領域に対する故障情報の書き込み及び読み込みがなされることがなく、その記憶領域の使用が禁止され、故障情報などの蓄積への影響を抑制することができる。
【００５２】
図７は、イグニッションスイッチがＯＮになったことを契機として、電子制御装置１００のプロセッサ１１０が所定時間ごとに繰り返し実行する故障報知処理の一例を示す。
【００５３】
ステップ４１では、プロセッサ１１０が、フラッシュメモリ１３０の各記憶領域の空き領域１３０Ｆを順次参照し、そこに格納されている素子異常情報を計数した素子異常回数が所定の閾値未満となっている、正常な記憶領域を抽出する。ここで、所定の閾値は、フラッシュメモリ１３０の記憶領域に固着などの故障が発生したことを確定するための閾値であって、例えば、フラッシュメモリ１３０の所定領域に予め記憶されている。なお、所定の閾値は、例えば、電子制御装置１００に接続されたコンソールによって、任意の値に書き換えられるようにしてもよい。
【００５４】
ステップ４２では、プロセッサ１１０が、正常な記憶領域が１つであるか否かを判定する。そして、プロセッサ１１０は、正常な記憶領域が１つであると判定すれば処理をステップ４３へと進める一方（Ｙｅｓ）、正常な記憶領域が２つ以上であると判定すれば処理を終了させる（Ｎｏ）。
【００５５】
ステップ４３では、プロセッサ１１０が、例えば、警告灯、ブザーなどの報知手段を作動させることで、運転者などに電子制御装置１００のフラッシュメモリ１３０に故障が発生したことを報知する。
【００５６】
かかる故障報知処理によれば、故障が発生していないフラッシュメモリ１３０の記憶領域の空き領域１３０Ｆを参照することで、他の記憶領域に関する素子異常回数が把握できる。また、この素子異常回数が所定の閾値未満の記憶領域、要するに、フラッシュメモリ１３０の素子に恒久的な故障が発生していない記憶領域が１つのみになると、２つのドライビングサイクルにおける故障情報が保持できなくなった旨が報知される。このため、運転者などは、フラッシュメモリ１３０に故障が発生したことを認識することができる。なお、３つ以上のドライビングサイクルにおける故障情報を保持する場合には、必要な記憶領域の数を確保できなくなったとき、又は、いずれかの記憶領域に故障が発生したと判定されたときに、故障情報が保持できなくなった旨を報知してもよい。
【００５７】
次に、かかる電子制御装置１００の作用及び効果について理解を容易ならしめることを目的とし、具体的な事例を想定した実施例について説明する。
実施例の前提条件として、フラッシュメモリ１３０には２つの記憶領域として、ブロック１（ＢＬ１）及びブロック２（ＢＬ２）が確保されているものとする。また、イグニッションスイッチがＯＦＦになったときに、ＲＡＭ１２０からブロック１に故障情報が書き込まれるものとする。
【００５８】
イグニッションスイッチがＯＦＦになると、図８に示すように、ブロック１に故障情報を書き込む準備として、ブロック１の全領域に所定の消去データを書き込むことで、ブロック１に書き込まれていた古い故障情報が消去される。ブロック１の消去に続いて消去チェックが行なわれ、同図に示すように、ある素子に固着が発生したことが検知されると、素子に故障が発生していないブロック２の空き領域１３０Ｆに、ブロック１の素子に異常が発生したことを表す素子異常情報が書き込まれる。そして、イグニッションスイッチがＯＦＦになるたびに、このような処理が逐次実行され、ブロック２の空き領域１３０Ｆには、ブロック１の素子に異常が発生したことを表す素子異常情報が蓄積される。なお、ブロック１の素子に異常が検知された後、イグニッションスイッチがＯＦＦになったときの処理でその異常が再度検知されない場合には、例えば、ノイズ重畳などによる一時的な異常であると考えられるため、ブロック２に蓄積された素子異常情報を消去してもよい。
【００５９】
ブロック１の素子に固着が発生しても、故障情報の書き込みが最後まで行われたことから、図９に示すように、ブロック１の終了印１３０Ｅが書き込まれている。この場合、イグニッションスイッチがＯＮになったときに実行される故障情報読込処理において、ブロック１から読み込んだ故障情報のチェックサムとＳＵＭ１３０Ｄに格納されていたチェックサムとが一致しないため、ブロック１に異常が発生していることが検知される。そして、故障が発生していないブロック２の空き領域１３０Ｆに、ブロック１に異常が発生していることを表す素子異常情報が書き込まれる。
【００６０】
その後、ブロック２の空き領域１３０Ｆに書き込まれた素子異常情報を計数した計数値が所定の閾値以上であれば、その素子異常情報に係るブロック１が故障していると判定し、運転者などにその旨を通知すると共に、ブロック１の使用が禁止される。
【００６１】
セルフシャットダウン中に故障情報の書き込みが正常に終了しなかった場合には、図１０に示すように、開始印１３０Ｂが書き込まれているが、終了印１３０Ｅが書き込まれていない状態となるので、素子固着による異常と区別することができる。
【００６２】
従って、図１１に示すように、ブロック１に故障情報を書き込むときに、所定回数連続して異常が検知されると、その後の故障情報書込処理及び故障情報読込処理においてブロック１の使用が禁止される。なお、３つ以上のブロックについても、前述した処理で同様な作用及び効果が奏される。
【００６３】
使用禁止となったブロック１については、所定のタイミングで故障情報の書き込みを再度実行し、その結果が問題なければ、素子異常情報を消去することで、その使用禁止を解除するようにしてもよい。ここで、所定のタイミングとしては、例えば、駐車中、渋滞などの低速走行中など、電子制御装置１００の処理負荷が低い状態が適用できる。また、故障情報の書き込み回数は、１回に限らず、素子異常情報の計数値に応じた回数や２回以上の所定回数であってもよい。
【００６４】
フラッシュメモリ１３０に２つの記憶領域のみが確保され、かつ、１回の異常発生により記憶領域の選定処理が行われる場合には、次のようにしてもよい。
イグニッションスイッチがＯＦＦになったことを契機として、電子制御装置１００のプロセッサ１００が実行する故障情報書込処理において、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる記憶領域を選定する。そして、消去チェックの結果、記憶領域が正常に消去されていれば、そのバックアップ領域１３０Ａに故障情報を書き込む（このとき異常が発生してもそのままとする）。一方、消去チェックの結果、記憶領域が正常に消去されていなければ、今回のドライビングサイクルで更新された故障情報を破棄し、今回のドライビングサイクルで故障情報を読み込んだ記憶領域に素子故障情報を書き込む。
【００６５】
イグニッションスイッチがＯＮになったことを契機として、電子制御装置１００のプロセッサ１００が実行する故障情報読込処理において、２つの記憶領域を比較し、前回のドライビングサイクルで故障情報を書き込んだ記憶領域（第１の記憶領域）を特定する。また、第１の記憶領域とは異なる記憶領域（第２の記憶領域）の空き領域１３０Ｆを参照し、第１の記憶領域に消去異常が発生しているか否かを判定する。第１の記憶領域に消去異常が発生していれば、第２の記憶領域から故障情報を読み込む。一方、第１の記憶領域に消去異常が発生していなければ、第１の記憶領域から故障情報を読み込むと共に、チェックサムを利用して読込異常が発生しているか否かを判定する。第１の記憶領域に読込異常が発生していれば、今回のドライビングサイクルで更新された故障情報の書き込み先として、第１の記憶領域を内部的に予約しておく。
【００６６】
そして、今回のドライビングサイクルで更新された故障情報を書き込む故障情報書込処理において、現在故障情報が正常に書き込まれている記憶領域を優先して選定すると共に、消去異常が発生した記憶領域に対して再度消去チェックを実行し、消去異常が再度発生しなければ選定対象とする一方、消去異常が再度発生すれば故障情報書込処理を中断する。また、故障情報書込処理において、内部的に予約しておいた記憶領域を選定し、この記憶領域に対して消去チェック及び書き込みを行なう。このように、記憶領域に読込異常が発生している間は、ドライビングサイクルごとに、古い故障情報を読み込み、読込異常が発生した記憶領域に対して故障情報の書き込みが繰り返し行なわれる。
【００６７】
前回のドライビングサイクルで消去異常が発生した記憶領域が、今回のドライビングサイクルで故障情報の書き込み先として選定され、今回のドライビングサイクルで消去異常が発生せず、故障情報が正常に書き込めた場合、次回のドライビングサイクルでこの記憶領域から故障情報を正常に読み込むことができるので、これが最新の故障情報となる。他方の記憶領域、即ち、前回のドライビングサイクルの素子異常情報を記録した記憶領域は、次回の記憶領域として選定されて消去チェックが行なわれるので、自動的に素子異常情報が消去される。前回のドライビングサイクルで読込異常が発生した場合にも、今回のドライビングサイクルで読込異常が発生しなければ、その素子異常情報も自動的に消去される。
【００６８】
ここで、前記実施形態及び前記実施例から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
【００６９】
（イ）前記不揮発性メモリの記憶領域に電気的故障が検知された後、所定のタイミングで前記記憶領域に情報を再度書き込んだ結果、前記電気的故障が検知されなかった場合に、前記記憶領域の使用禁止を解除する、請求項１又は請求項２に記載の自動車用電子制御装置。
【００７０】
この発明によれば、記憶領域の電気的故障が誤って検知されても、その後記憶領域の使用禁止が解除される可能性があるため、記憶領域の数を確保することができる。
【００７１】
（ロ）前記不揮発性メモリの記憶領域に、前記情報のチェックサム、及び、前記情報の書き込みが終了したことを表す終了コードを更に書き込み、前記不揮発性メモリから情報を読み込むときに、前記終了コードが書き込まれていない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していないと判定する一方、前記終了コードが書き込まれかつ前記チェックサムが正しくない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していると判定する、請求項１、請求項２又は（イ）に記載の自動車用電子制御装置。
【００７２】
この発明によれば、イグニッションスイッチがＯＦＦになってから内部電源が遮断されるまでに、記憶領域に情報が書き込まれなかった場合を、記憶領域の電気的故障と判定することを回避できる。
【００７３】
（ハ）前記不揮発性メモリに情報を書き込むときに、前記不揮発性メモリの記憶領域に所定の消去データを書き込んで消去した後、前記記憶領域の消去データを確認する、請求項１、請求項２、（イ）又は（ロ）に記載の自動車用電子制御装置。
【００７４】
この発明によれば、消去データの書き込み及び確認を通して、不揮発性メモリの記憶領域に電気的故障が発生したか否かを判定することができる。
【符号の説明】
【００７５】
１００  電子制御装置
１１０  プロセッサ
１２０  ＲＡＭ
１３０  フラッシュメモリ
１３０Ａ  バックアップ領域
１３０Ｂ  開始印
１３０Ｃ  カウンタ
１３０Ｄ  ＳＵＭ
１３０Ｅ  終了印
１３０Ｆ  空き領域
【図１】
0005635941.tif 000002
【図２】
0005635941.tif 000003
【図３】
0005635941.tif 000004
【図４】
0005635941.tif 000005
【図５】
0005635941.tif 000006
【図６】
0005635941.tif 000007
【図７】
0005635941.tif 000008
【図８】
0005635941.tif 000009
【図９】
0005635941.tif 000010
【図１０】
0005635941.tif 000011
【図１１】
0005635941.tif 000012