(57)【要約】【課題】不揮発性メモリに対する更新データの書き込みが中断した場合に、動作不良となることを抑制できる、車両用制御装置を提供する。【解決手段】不揮発性メモリに更新データを書き込む過程の最初と最後で、全体サム値を書き込ませるようにする。そして、起動時の更新データの読み出しにおける誤り検出訂正に先立って、前記全体サム値の整合判断を行うことで、更新データの書き込み途中での電源遮断などによる中断が発生したか否かを判断する。ここで、書き込みが中断したと判断すると、更新データを固定値に書き換え、その後、更新データの誤り検出訂正を行わせる。これにより、書き込みの中断によって異常が生じている更新データが存在する状態で誤り検出訂正が実施され、誤り訂正不能なデータの異常によって、リセットと誤り検出とが繰り返されるようになることを抑制できる。【選択図】図４
2014035729.tif 000002
【特許請求の範囲】
【請求項１】
電気的に消去及び書き込みが可能な不揮発性メモリを備え、起動時に、前記不揮発性メモリの更新データの誤り検出を行い、誤りを検出した場合にリセットを実施する車両用制御装置において、
前記不揮発性メモリに対する更新データの書き込みにおいて中断があった場合に、起動時の前記誤り検出に先立って前記更新データを所定値に書き換え、その後に前記誤り検出を行う、車両用制御装置。
【請求項２】
前記不揮発性メモリに対して更新データを書き込む過程において、複数の中断判別値を書き込み、
前記複数の中断判別値が整合しない場合に、起動時の前記誤り検出に先立って前記更新データを所定値に書き換える、請求項１記載の車両用制御装置。
【請求項３】
前記不揮発性メモリにおける更新データの格納エリアが複数のブロックに分割され、更新データを書き込む過程において前記複数のブロック毎に複数の中断判別値を書き込み、前記複数のブロック毎に前記更新データの前記所定値への書き換えを行う、請求項２記載の車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に消去及び書き込みが可能な不揮発性メモリを備えた車両用制御装置に関する。
【背景技術】
【０００２】
特許文献１には、複数の物理ブロックで構成される不揮発性メモリにデータを書き込むときに、物理ブロックの先頭ページの冗長領域にあり、その先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、を有する、不揮発性記憶装置の制御方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２００４／０３１９６６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、不揮発性メモリに書き込まれた更新データの誤り検出を、起動時に行うよう構成された車両用制御装置では、不揮発性メモリへの更新データの書き込み途中で電源が遮断するなどして書き込みが中断し、更新データに異常が生じると、再起動時に誤りデータの強制的な書き換えなどの機会がないままリセットされることで、誤り検出、リセットが繰り返され、システムを動かすことができなくなる可能性があった。
【０００５】
本発明は上記問題点に鑑みなされたものであり、不揮発性メモリに対する更新データの書き込みが中断した場合に、動作不良となることを抑制できる、車両用制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
そのため、本願発明では、電気的に消去及び書き込みが可能な不揮発性メモリを備え、起動時に、前記不揮発性メモリの更新データの誤り検出を行い、誤りを検出した場合にリセットを実施する車両用制御装置において、前記不揮発性メモリに対する更新データの書き込みにおいて中断があった場合に、起動時の前記誤り検出に先立って前記更新データを所定値に書き換え、その後に前記誤り検出を行うようにした。
【発明の効果】
【０００７】
上記発明によると、更新データの書き込みにおいて中断があった場合でも、起動時の誤り検出に先立って更新データを所定値に書き換えることで、誤り検出、リセットが繰り返されることを抑制でき、以って、動作不良となることを抑制できる。
【図面の簡単な説明】
【０００８】
【図１】本願発明の実施形態における車両用制御装置のブロック図である。
【図２】本願発明の実施形態における不揮発性メモリのアドレス空間を示す図である。
【図３】本願発明の実施形態における車両用制御装置の起動時の状態変化及び不揮発性メモリのアクセスを示すタイムチャートである。
【図４】本願発明の実施形態における車両用制御装置の起動時処理の一例を示すフローチャートである。
【図５】本願発明の実施形態における全体サム値（中断判別値）の書き込みの様子及び固定値による書き換えの様子を説明するための図である。
【図６】本願発明の実施形態における車両用制御装置の起動時処理の一例を示すフローチャートである。
【図７】本願発明の実施形態における車両用制御装置の起動時処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に本発明の実施の形態を説明する。
図１は、車両用制御装置の一例を示すブロック図である。
図１に示す車両用制御装置１は、各種の車両搭載機器（エンジン、自動変速機、エアコンなど）を制御する装置であり、マイクロコンピュータ（演算器）２、電源回路３、Ｉ／Ｆ回路４などを備える。
【００１０】
マイクロコンピュータ（以下、「マイコン」という）２は、ＣＰＵ（演算処理装置）２１、フラッシュＲＯＭやＥＥＰＲＯＭなどの電気的に消去及び書き込みが可能な不揮発性メモリ２２、ＲＡＭなどの揮発性メモリ２３を含んでいる。
不揮発性メモリ２２は、ビット誤り検出機能付のメモリモジュール（ＥＣＣメモリ）とすることができる。ビット誤り検出機能付のメモリモジュールは、例えば、エラー訂正コードＥＣＣ（冗長化データ）を持ち、１bitのエラーに対しては誤り検出と訂正とが可能である一方、２bitのエラーに対しては、エラー検出は可能であるものの訂正を行えないモジュールである。
そして、マイコン２は、Ｉ／Ｆ回路４を介して外部からセンサ信号などを入力し、また、Ｉ／Ｆ回路４を介して外部に向けて操作信号などを出力する。
【００１１】
マイコン２及び電源回路３には、運転者によってオン／オフされる電源スイッチ５を介して、車両電源（バッテリ）６の電力が供給される。
また、電源回路３によってオン／オフが制御されるセルフシャットオフリレー７を介する経路によっても、車両電源６の電力がマイコン２及び電源回路３に供給されるようになっていて、セルフシャットオフリレー７をオンに保持することで、電源スイッチ５がオフされた後も、マイコン２に対する電力供給を継続させることが可能である。
また、電源回路３は、マイコン２からプログラムラン信号Ｐ−ＲＵＮを入力し、マイコン２に対してリセット信号を出力する外部監視回路としての機能を備えている。
【００１２】
不揮発性メモリ２２には、例えば、図２に示すように、格納データの１つ或いは複数毎にビット誤り検出やビット誤り訂正を行うためのコード（エラー訂正コードＥＣＣ）が格納されるようになっている。
図２において、更新データは、マイコン２への電源投入期間中に、順次更新して書き込まれる学習データや故障診断データ（故障履歴データ）などであり、固定データは、初期状態において書き込まれる制御定数などの更新されないデータである。
【００１３】
マイコン２は、図３に示すように、電源投入によって起動すると、まず、初期化処理を実施した後、誤り検出訂正を行わせつつ不揮発性メモリ２２から更新データを読み出し、全更新データの読み出しを完了すると、その他の処理（更新データの書き込みを含む）を実施する。
更新データの不揮発性メモリ２２への書き込みは、全更新データの読み出しを完了した後の電源投入期間中に、必要に応じて実施され、更新データの書き込みタイミングはランダムである。
【００１４】
以下では、マイコン２における起動時における更新データの処理の一例を、図４のフローチャートに従って詳細に説明する。
マイコン２に電源投入されると（電源投入されかつリセットが解除されると）、まず、ステップＳ１０１で初期化処理を実施する。
【００１５】
初期化処理が終了すると、ステップＳ１０２へ進み、不揮発性メモリ２２における更新データ、又は、更新データを含む格納データエリア全てに対する誤り検出訂正を禁止し（換言すれば、誤り検出訂正の開始を遅延し）、誤り検出訂正に先立って、ステップＳ１０３〜ステップＳ１０５の更新データの書き換え処理に進む。
このステップＳ１０３〜ステップＳ１０５における更新データの書き換え処理は、更新データの書き込み途中で、電源が遮断されるなどして書き込みが中断し、更新データに異常が生じた場合に、更新データを所定値に書き換え、書き込み処理において算出される更新したエラー訂正コードＥＣＣに書き換える処理である。
そして、係る更新データの書き換え処理が終わってから、ステップＳ１０６で、不揮発性メモリ２２における更新データ、又は、更新データを含む格納データエリア全てに対する誤り検出訂正を起動させるようになっている。
【００１６】
ステップＳ１０３では、更新データの書き込みが中断したか否かを判別するための中断判別値である第１サム値及び第２サム値を、不揮発性メモリ２２の更新データを格納するエリア（以下、「更新データエリア」という）から読み出す。
更新データの更新データエリアに対する書き込みにおいては、書き込みを開始する前に、書き込みが決定した複数の更新データの全体サム値を演算し、当該全体サム値を、書き込みの中断の有無を判断するための値として、更新データの書き込み過程において不揮発性メモリ２２に複数書き込むようにしてある。
【００１７】
より具体的には、図５（Ａ）に示すように、最初に書き込みを行う更新データと共に全体サム値を書き込み、最後に書き込みを行う更新データと共に最初と同じ全体サム値を書き込むようになっている。即ち、更新データの書き込み過程の最初及び最後で、同じ全体サム値（中断判別値）を、更新データエリアに書き込むようにしてある。
そして、ステップＳ１０３では、書き込み過程の最初に書き込まれる更新データと共に格納されている全体サム値を第１サム値として読み出し、更に、書き込み過程の最後に書き込まれる更新データと共に格納されている全体サム値を第２サム値として読み出す。
尚、中断判別値としての全体サム値を、最初の更新データの書き込みの直前に書き込み、また、最後の更新データの書き込みの直後に書き込むようにすることができる。
【００１８】
ここで、更新データの書き込み途中で、電源遮断などによって書き込みが中断すると、図５（Ａ）に示すように、書き込み過程の最初側の全体サム値（第１サム値）が、そのときの書き込み予定の更新データの全体サム値に更新されるのに対し、最後の更新データの書き込み処理まで進まないことで、書き込み過程の最後側の全体サム値（第２サム値）が前回値のまま上書きされることなく保存されるため、第１サム値と第２サム値とが不一致（不整合）の状態になる。
尚、マイコン２における電源遮断は、電源（バッテリ）の取り外しや電力供給ハーネスの断線や中間コネクタの抜けなどによって生じる。また、マイコン２に対する電力供給が瞬間的に途絶える場合は、マイコン２が出力するプログラムラン信号Ｐ−ＲＵＮが途絶え、電源回路３はマイコン２にリセット信号を出力し、マイコン２を再起動させる。
【００１９】
一方、一連の更新データの書き込み処理が中断なく進行すれば、書き込み過程の最初側での全体サム値の書き込みと、書き込み過程の最後での全体サム値の書き込みとが行われることで、最初側と最後側との全体サム値（中断判別値）が一致（整合）することになる。
従って、書き込み過程における最初側で全体サム値（中断判別値）を書き込むアドレスに格納されている第１サム値と、書き込み過程における最後側で全体サム値（中断判別値）を書き込むアドレスに格納されている第２サム値とが、一致（整合）するか否かによって、前回の更新データの書き込み処理が中断したか否かを判別することができる。
【００２０】
そこで、ステップＳ１０４では、ステップＳ１０３で読み出した第１サム値と第２サム値とを比較（照合）し、第１サム値と第２サム値とが不一致（不整合）である場合には、前回の更新データの書き込み処理において、書き込みの中断が発生したものと判断し、中断による更新データの異常（破損）に対処するためのステップＳ１０５に進む。
一方、第１サム値と第２サム値とが一致（整合）している場合には、前回の更新データの書き込み処理において、最後の更新データの書き込みまで中断することなく、一連の更新データの書き込みが最初から最後まで正常に行われたものと判断する。この場合、書き込みの中断による更新データの破損（訂正不能な異常）はなく、ステップＳ１０５の処理は不要であるので、ステップＳ１０５を迂回してステップＳ１０６へ進む。
【００２１】
更新データに異常（破損）がある状態で、誤り検出訂正を伴う更新データの読み出しを行うと、更新データの誤り（訂正不能な誤りである２ビットエラー）が検出されることで、後述するようにマイコン２のリセットが実施される。ここで、ステップＳ１０２〜ステップＳ１０６の各ステップの処理を行わない場合、リセット解除後に更新データの異常が解消されないまま、再度誤り検出訂正が行われることで、リセット、誤り検出を繰り返し、マイコン２による制御動作が開始されないことになってしまう。
そこで、誤り検出に基づくリセットが行われないように、ステップＳ１０５では、全更新データエリアに対して、固定値である更新データ、及び、書き込み処理において算出されるエラー訂正コードＥＣＣを上書きし、異常となっている更新データを含む全更新データを予め決められている固定値に書き換え、書き込み処理において算出される更新された全エラー訂正コードＥＣＣに書き換えると共に、固定値である書き換え後の更新データに見合う全体サム値を、書き込みの最初と最後で更新データエリアに書き込むようにする。
【００２２】
図５（Ｂ）は、更新データエリアの更新データ及びエラー訂正コードＥＣＣを固定値で上書きした後の状態を示し、最初の更新データから書き込みが中断した時点での更新データまで、更に、中断した以降の新たな書き込み（上書き）が行われなかった更新データの全てが、固定値に書き換えられており、更に、全エラー訂正コードＥＣＣが、更新データに見合う書き込み処理において算出されたエラー訂正コードＥＣＣに書き換えられている。
更新データの固定値は、予め不揮発性メモリ２２に保存されている。
尚、誤り検出において誤りが検出されることがない更新データとエラー訂正コードＥＣＣとの組み合わせとして、更新データ及びエラー訂正コードＥＣＣの固定値を予め不揮発性メモリ２２に保存させておくこともできる。
【００２３】
ここで、更新データが学習値である場合には、前記固定値を、学習値の初期値（デフォルト値）とすることができる。また、固定値を、更新データのアドレス毎に持っていて、各アドレスに対応する固定値に上書きすることができる。
また、中断判別値として、全体サム値を用いることができる他、例えば、ランダムな値や書き込み処理毎に順繰りに更新される値を中断判別値として設定し、これを、更新データの書き込み過程における最初と最後で書き込むことができる。
【００２４】
また、書き込み過程において時系列的に書き込む複数の中断判別値を、既定の相関を満たす相互に異なる値とすることができ、この場合、複数の中断判別値が規定の相関を満たしていれば、中断判別値が整合し、中断がなかったことを示すことになる。ここで、規定の相関を満たす状態とは、例えば、比や偏差が既定値である場合などである。
更に、例えば、更新データの書き込みを行う際に、書き込む予定の更新データの全体サム値を演算して、不揮発性メモリ２２に書き込む一方、起動時に更新データエリアの全更新データを読み出して全体サム値を演算し、不揮発性メモリ２２に書き込まれていた全体サム値と、読み出した更新データに基づき演算した全体サム値との整合性（一致、不一致）を判断することで、書き込みの中断があったか否かを判断させることができる。
【００２５】
上記のようにして、誤りが発生している更新データを含めて、全ての更新データ及びエラー訂正コードＥＣＣを予め定めた固定値に書き換えれば、ステップＳ１０７以降に進んで誤り検出が実施されるときに、更新データの異常発生（訂正不能な誤り）が検出され、リセットされることが避けられ、最終的にステップＳ１１２に進んで、車両用制御装置１による制御を開始させることができる。
【００２６】
ステップＳ１０６では、不揮発性メモリ２２における誤り検出訂正の中止を解除し、ステップＳ１０７以降の更新データの読み出しを開始させる。
ステップＳ１０７では、更新データ及びそのエラー訂正コードＥＣＣを、不揮発性メモリ２２の更新データエリアから読み出す。ここで、ステップＳ１０５で全更新データを固定値に書き換え、更新された全エラー訂正コードＥＣＣに書き換えた後、ステップＳ１０７に進んだ場合には、固定値としての更新データ及びエラー訂正コードＥＣＣを読み出すことになる。
【００２７】
ステップＳ１０８では、更新データとそのエラー訂正コードＥＣＣとの照合を行う。
そして、照合結果に異常がなければ、ステップＳ１１１へ進んで、全更新データの読み出しが完了したか否かを判定し、全更新データの読み出しが完了していない場合には、ステップＳ１０７に戻って、次の更新データ及びそのエラー訂正コードＥＣＣの読み出しを行い、全更新データの読み出しが完了すると、ステップＳ１１２に進んでその他の処理に移行する。
【００２８】
一方、ステップＳ１０８での照合結果に異常があれば（読み出した更新データに誤りがあれば）、ステップＳ１０９へ進む。
ステップＳ１０９では、更新データの誤りが訂正可能なビット誤りであるか否か、一例として更新データの異常が１ビット誤りであるか否かを判断する。
【００２９】
ここで、更新データの異常が１ビット誤りであれば、訂正可能であるので、ステップＳ１１０へ進んで更新データの訂正を実施し、ステップＳ１１１へ進む。
また、２ビット以上の誤りが発生している場合は訂正不能と判断し、ステップＳ１１３へ進み、エラー情報として、例えば誤りが生じている更新データのアドレスなどを、不揮発性メモリ２２に保存する。
【００３０】
次いで、ステップＳ１１４では、マイコン２のシャットダウン処理（シャットダウンするための命令実施など）を行い、更に、ステップＳ１１５では、プログラムラン信号Ｐ−ＲＵＮの出力を停止する。
外部監視回路として機能する電源回路３は、マイコン２から出力されるプログラムラン信号Ｐ−ＲＵＮを監視しており、プログラムラン信号Ｐ−ＲＵＮが途絶えると、マイコン２をリセットさせるリセット信号を出力する。
【００３１】
リセット信号を入力したマイコン２は、ステップＳ１１６でリセット処理を実行して再起動することで、再度ステップＳ１０１の初期化処理を実施した後、ステップＳ１０２に進む。
前述のように、更新データの書き込み途中での電源遮断などによって更新データの書き込みが中断した場合には、再起動時に、誤り検出に先立ち、第１サム値及び第２サム値に基づき中断の有無が判断され、中断が発生したと判断されると、更新データエリアの更新データが固定値に書き換えられ、更新されたエラー訂正コードＥＣＣに書き換えられる。
【００３２】
これにより、書き込みの中断によって更新データに異常が生じていても、そのまま誤り検出が行われることがなく、誤りが検出されない状態に更新データを書き換えてから、誤り検出に進むことになるから、更新データの書き込み途中での電源遮断によって、誤り検出とリセットとが繰り返されるようになることを未然に抑制できる。
尚、ステップＳ１０５で更新データを固定値に書き換えている途中で、電源遮断が発生した場合にも、最初に書き込む全体サム値（中断判別値）と、最後に書き込む全体サム値（中断判別値）とが異なるようになることで、起動時に書き込みの中断が発生したことが判断され、再度、更新データエリアの更新データを固定値に書き換え、更新されたエラー訂正コードＥＣＣに書き換える処理が実施されることになる。従って、ステップＳ１０５での書き込み処理の中断に対しても、誤り検出とリセットとが繰り返されるようになることを抑制できる。
【００３３】
ところで、図４のフローチャートに示す処理では、更新データエリア全体について、書き込みの中断があったか否かを判断し、中断があった場合には、更新データエリア全体を固定値で書き換えるようにしたが、更新データエリアを複数ブロックに分割し、ブロック毎に書き込みが中断したか否かを判断し、書き込み中断が発生したブロックのみを固定値で書き換えることができる。
上記のように、更新データエリアを分割したブロック単位で、中断の有無及び固定値による書き換えを行えば、誤りが検出されることがない正常な値が固定値に書き換えられてしまうことを抑制でき、更新データが例えば学習値であれば、学習の進行が損なわれることを抑制できる。
また、図４のフローチャートに示す処理では、ステップＳ１１４にてシャットダウン処理を実施した後に、プログラムラン信号Ｐ−ＲＵＮの停止により外部監視回路がリセット信号を出力するか、又は、マイコン２自身がリセット信号を出力することができる。
【００３４】
図６のフローチャートは、更新データエリアを複数に分割したブロック単位で、書き込みの中断の有無及び固定値による書き換えを行うようにした、マイコン２の処理の流れを示す。
図６のフローチャートにおいて、図４のフローチャートと同じ処理を行うステップについては、同じステップ番号を付してあり、図４のフローチャートに対して処理内容が異なるステップである、ステップＳ１０３Ａ，１０４Ａ，１０５Ａ，１０５Ｂについて詳細に説明し、他のステップについての説明を省略する。
【００３５】
ステップＳ１０３Ａでは、更新データエリアを複数の分割したブロック毎に、更新データの書き込みが中断したか否かを判別するための中断判別値である第１サム値及び第２サム値を読み出す。
更新データを更新データエリアに書き込む場合、ブロック毎に書き込みが決定した更新データの全体サム値を演算し、各ブロックの最初の更新データの書き込み時及び最後の更新データの書き込み時に、全体サム値を書き込むようにしてある。
そして、ステップＳ１０３Ａでは、対象とするブロックにおいて最初の更新データと共に書き込んだ全体サム値を第１サム値として読み出し、最後の更新データと共に書き込んだ全体サム値を第２サム値として読み出す。
【００３６】
次のステップＳ１０４Ａでは、ステップＳ１０３Ａで読み出した、ブロック毎の第１サム値と第２サム値とを比較（照合）し、第１サム値と第２サム値とが不一致（不整合）である場合には、当該ブロックにおける前回の更新データの書き込み処理において、書き込みの中断が発生したものと判断し、ステップＳ１０５Ａに進む。
ステップＳ１０５Ａでは、書き込みの中断が発生したと判断されたブロックの更新データを固定値に書き換え、書き込み処理中に算出し更新されるエラー訂正コードＥＣＣに書き換える処理を実施する。
【００３７】
一方、第１サム値と第２サム値とが一致（整合）している場合には、当該ブロックにおける前回の更新データの書き込み処理において、最初の更新データの書き込みから最後の更新データの書き込みまで中断することなく正常に行われたものと判断する。この場合、ステップＳ１０５Ａの処理は不要であるので、ステップＳ１０５Ａを迂回してステップＳ１０５Ｂへ進む。
ステップＳ１０５Ｂでは、更新データエリアを複数に分割した全てのブロックについて、書き込みの中断の有無を判断したか否かを確認し、中断の有無を判断していないブロックが残っている場合には、ステップＳ１０３Ａに戻る。
【００３８】
そして、ステップＳ１０３Ａでは、書き込みの中断の有無を判断していないブロックについて、第１サム値及び第２サム値の読み出しを行い、その後ステップＳ１０４Ａに進んで、第１サム値と第２サム値との整合判断を行って、当該ブロックでの更新データの書き込みにおいて電源遮断などによる中断が生じたか否かを判断する。
ステップＳ１０５Ｂで、更新データエリアを複数に分割する全てのブロックについて、中断の有無を判断したと判断すると、ステップＳ１０６へ進む。ステップＳ１０６では、ステップＳ１０２における更新データの誤り検出訂正の中止を解除し、ステップＳ１０７以降の誤り検出処理を伴う更新データの読み出しを開始させる。
【００３９】
上記のように、更新データエリアを複数のブロックに分割し、ブロック毎に書き込み中断の有無を判断させるようにすれば、書き込みが中断することがなく、更新データを正常に書き込むことができたものと推定できるブロックについては、固定値への書き換えが行われない。
従って、書き込みの中断による更新データの異常によって、リセット、誤り検出が繰り返されるようになることを抑制しつつ、正常に書き込まれた更新データが無用に固定値に書き換えられてしまうことを抑制でき、例えば、更新データが学習値であれば、学習のやり直しが無用に行われることを抑制できる。
【００４０】
ところで、更新データの不揮発性メモリ２２に対する書き込みにおいて、同一の更新データを２つのエリアにそれぞれ書き込むミラーリングが行われる場合、換言すれば、同じ構成のデータファイルが複製される場合、一方のエリアへの書き込みにおいて中断（電源遮断）が発生して更新データの誤りが発生しても、同じ構造の他方のエリアへは中断なく更新データを書き込むことができている場合ある。
そして、この場合、誤りが発生した更新データの正しい値は、他方のエリアに保存されていることになるから、書き込みの中断が発生したエリアの更新データを、他の更新データエリアに保存されている値に書き換えることができる。
【００４１】
係るミラーリングにおける書き換え処理の例を、図７のフローチャートに従って説明する。
図７のフローチャートにおいて、図４のフローチャートと同じ処理を行うステップについては、同じステップ番号を付してあり、図４のフローチャートに対して処理内容が異なるステップであるステップＳ１０３Ｂ、ステップＳ１０４Ｂ、ステップＳ１０５Ｃ及びステップＳ１０５Ｄについて詳細に説明し、他のステップについての説明を省略する。
【００４２】
ステップＳ１０３Ｂでは、ミラーリングにおける一方のエリア（面）について、書き込み過程の最初に書き込まれる更新データと共に格納されている全体サム値（中断判別値）を第１サム値として読み出し、更に、書き込み過程の最後に書き込まれる更新データと共に格納されている全体サム値（中断判別値）を第２サム値として読み出す。
そして、ステップＳ１０４Ｂでは、ステップＳ１０３Ｂで読み出した第１サム値と第２サム値とを比較（照合）し、第１サム値と第２サム値とが不一致（不整合）である場合には、前回の更新データの書き込み処理において、電源遮断による書き込みの中断が発生したものと判断し、中断による更新データの異常に対処するためのステップＳ１０５Ｃに進む。
【００４３】
一方、第１サム値と第２サム値とが一致（整合）している場合には、前回の更新データの書き込み処理において、当該エリア（面）については最後の更新データの書き込みまで中断することなく正常に行われたものと判断する。この場合、ステップＳ１０５Ｃの処理は不要であるので、ステップＳ１０５Ｃを迂回してステップＳ１０５Ｄへ進む。
ステップＳ１０５Ｃでは、中断の発生が検出されたエリアの全更新データを、他方の同じ構造のエリア（複製エリア）に格納されている複製データに書き換える処理を行う。尚、書き換え処理の過程で算出されるエラー訂正コードＥＣＣも書き換えられる。
【００４４】
ステップＳ１０５Ｄでは、ミラーリングの各エリアについて書き込み中断の有無を判断したか否かを判別し、書き込み中断の判断が終っていないエリアがあれば、ステップＳ１０３Ｂに戻り、中断の判断が終っていないエリアから、第１サム値及び第２サム値を読み出す。
ここで、ステップＳ１０５Ｃに進む前に、ミラーリングの各面それぞれについて書き込みの中断が生じたか否かを判別し、一方で中断が発生し、他方で中断が発生していない場合に、ステップＳ１０５Ｃに進んで、中断が発生したエリアの更新データを、中断が発生しなかったエリアの更新データで上書きするようにできる。
【００４５】
また、ミラーリングの各面の双方で中断が発生した場合には、双方のエリアの更新データを固定値に書き換えることができる。
更に、ミラーリングの各面それぞれを複数ブロックに分割して、ブロック毎に中断判別値（全体サム値）を格納させ、ブロック単位で中断の有無を判断し、書き込みの中断が発生したブロックについては、他方の面の対応するブロックの更新データに上書きさせることができる。
【００４６】
図７のフローチャートに示す処理では、ミラーリングによって更新データが複製される場合に、書き込み中断によって更新データの誤りが発生しても、正しい値に上書きすることが可能となる。
従って、書き込み中断によって更新データに異常が生じも、起動時の誤り検出によってリセットされてしまうことを未然に回避して、リセット、誤り検出が繰り返されるようになることを抑制できると共に、例えば更新データが学習データであれば、学習のやり直しを避けることができ、それまでの学習結果をそのまま反映した制御を行える。
【００４７】
尚、更新データの書き込み過程の最初及び最後に限定せず、更新データを１つ或いは複数書き込む毎に中断判別値を不揮発性メモリ２２に書き込ませることができ、この場合、中断判別値が整合する状態と、不整合となる状態との切り替わりタイミングから、書き込み中断（電源遮断）の発生位置、換言すれば、電源遮断によって破損した可能性がある更新データを、中断判別値の書き込み周期を最小単位として特定することが可能である。
そして、この場合、書き込みの中断位置を特定できるので、少なくとも中断位置に該当する１乃至複数の更新データ（破損の可能性が見込まれる更新データ）を固定値に書き換え、そのデータに対応する更新されたエラー訂正コードＥＣＣに書き換える一方、他の更新データについてはそのまま保持させることができる。
【００４８】
ここで、上記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）前記不揮発性メモリに対する更新データの書き込み過程の少なくとも最初と最後とで、中断判別値を書き込む、請求項２又は３記載の車両用制御装置。
上記発明によると、最初の中断判別値と最後の中断判別値とが整合しない場合、書き込み途中のいずれかで中断が生じたものと判断できる。
【００４９】
（ロ）前記中断判別値が、書き込みが決定された更新データの全体サム値である、請求項１〜３のいずれか１つに記載の車両用制御装置。
上記発明によると、書き込みが決定された更新データの全体サム値が、更新データの書き込み過程で複数書き込まれ、書き込みが中断される前に書き込まれた全体サム値は、そのときの書き込み予定の更新データに対応することになるが、中断後は全体サム値が書き換えられないので、中断後を書き込みタイミングとする全体サム値は更新前のデータに対応することになり、係る全体サム値の不整合によって中断の有無を判断できる。
【００５０】
（ハ）前記所定値が、予め決定された固定値である、請求項１〜３のいずれか１つに記載の車両用制御装置。
上記発明によると、書き込み中断によって破損した更新データを、固定値に書き換えることで、誤り検出を行っても正常と判断されるようにする。
【００５１】
（ニ）更新データの書き込みにおいて複製データが書き込まれ、
前記所定値が、更新データの複製データである、請求項１〜３のいずれか１つに記載の車両用制御装置。
上記発明によると、書き込み中断によって更新データが破損しても、別途格納されている複製データに書き換えることで、誤り検出を行っても正常と判断されるようにし、かつ、更新データとして最新の値に復活させることができる。
【００５２】
（ホ）前記更新データが、エラー訂正コードと共に前記不揮発性メモリに書き込まれ、
更新データを所定値に書き換えるときに、書き込み処理において算出された更新されたエラー訂正コードに書き換える、請求項１〜３のいずれか１つに記載の車両用制御装置。
上記発明によると、更新データの書き込み処理において算出された更新されたエラー訂正コードに書き換えることで、誤り検出で誤りの発生が検出されることを避ける。
【符号の説明】
【００５３】
１…車両用制御装置、２…マイコン、３…電源回路、４…Ｉ／Ｆ回路、５…電源スイッチ、６…車両電源、７…セルフシャットオフリレー、２１…ＣＰＵ、２２…不揮発性メモリ
【図１】
2014035729.tif 000003
【図２】
2014035729.tif 000004
【図３】
2014035729.tif 000005
【図４】
2014035729.tif 000006
【図５】
2014035729.tif 000007
【図６】
2014035729.tif 000008
【図７】
2014035729.tif 000009