(57)【要約】【課題】冗長性を持たせつつ、かつフラッシュＲＯＭにデータを即時記憶させる場合であっても、必要なブロック数の増加を抑制する、あるいは低減する【解決手段】２つのブロックＢＬ−Ａ，ＢＬ−Ｂを内蔵したフラッシュＲＯＭ５を有し、車載電子制御装置１の電源オン時に、ブロックＢＬ−Ａ，ＢＬ−Ｂの中から選択されたブロック（以下、第１ブロックともいう）の第１記憶領域ＭＲ１に記憶されている記憶データをＲＡＭ４に記憶させる。その後に、ＭＩＬ２２が点灯すると、ＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内の永久故障コード記憶領域ＭＲＰと、第１ブロックの第１記憶領域ＭＲ１とは別に予め設けられた第２記憶領域ＭＲ２に記憶させる。そして、車載電子制御装置１のシャットダウン時に、ＲＡＭ４の第１記憶領域ＭＲ３に記憶されているデータを、第１ブロックと異なるブロック内の第１記憶領域ＭＲ１に記憶させる。【選択図】図１
2011100416.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位でデータを一括消去した後にデータの記憶を行うブロックを少なくとも２つ内蔵した不揮発性メモリを有し、車両に搭載される車載電子制御装置であって、
当該車載電子制御装置の電源オン時に、前記不揮発性メモリに内蔵された前記ブロックの中から予め決定された第１ブロック内において予め設定された一括記憶用の記憶領域である第１ブロック第１記憶領域に記憶されている一括記憶データを、前記不揮発性メモリと異なるメモリである一時記憶メモリに記憶させる第１データ記憶手段と、
前記一時記憶メモリにおいて前記第１データ記憶手段が前記一括記憶データを記憶した記憶領域を一時記憶用第１記憶領域として、当該車載電子制御装置の動作中に、前記不揮発性メモリに即時記憶すべきデータとして予め設定された即時記憶用データを記憶するための即時データ記憶条件が成立すると、前記即時記憶用データを、前記一時記憶メモリ内の前記一時記憶用第１記憶領域に記憶させる一時記憶手段と、
前記即時記憶用データを、前記第１ブロック内において前記第１ブロック第１記憶領域とは別に予め設けられた記憶領域である第１ブロック第２記憶領域に記憶させる即時記憶手段と、
予め設定された一括記憶条件が成立すると、前記不揮発性メモリに内蔵された前記ブロックの中から前記第１ブロックとは異なるように予め決定された第２ブロックのデータを一括消去した後に、前記一時記憶メモリ内の前記一時記憶用第１記憶領域に記憶されているデータを前記第２ブロック内において予め設定された一括記憶用の記憶領域である第２ブロック第１記憶領域に一括記憶させる一括記憶手段と
を備えることを特徴とする車載電子制御装置。
【請求項２】
前記一括記憶条件は、
前記一時記憶メモリに記憶されている前記一括記憶データが、予め設定された記憶判定時間継続して変更されなかったことである
ことを特徴とする請求項１に記載の車載電子制御装置。
【請求項３】
前記即時記憶用データは、
前記車両で発生した故障を示す故障コードのうち、車両のバッテリが外された場合でも保持されることが要求される永久故障コードである
ことを特徴とする請求項１または請求項２に記載の車載電子制御装置。
【請求項４】
前記第１ブロック第２記憶領域内にデータ記憶可能な領域が残されていない場合には、前記即時記憶手段の動作を禁止する即時記憶禁止手段を備える
ことを特徴とする請求項３に記載の車載電子制御装置。
【請求項５】
前記即時記憶用データは、
前記車両のイモビライザの認証が正常に実施されなかったことを示すものである
ことを特徴とする請求項１または請求項２に記載の車載電子制御装置。
【請求項６】
前記第１ブロック第２記憶領域内にデータ即時記憶可能な領域が残されていない状態で、前記車両のイモビライザの認証が正常に実施されなかった場合に、前記車両のエンジンの始動を禁止するエンジン始動禁止手段を備える
ことを特徴とする請求項５に記載の車載電子制御装置。
【請求項７】
ブロック単位でデータを一括消去した後にデータの記憶を行うブロックを少なくとも２つ内蔵した不揮発性メモリを有し、車両に搭載される車載電子制御装置で用いられるメモリ制御方法であって、
当該車載電子制御装置の電源オン時に、前記不揮発性メモリに内蔵された前記ブロックの中から予め決定された第１ブロック内において予め設定された一括記憶用の記憶領域である第１ブロック第１記憶領域に記憶されている一括記憶データを、前記不揮発性メモリと異なるメモリである一時記憶メモリに記憶させる第１データ記憶手順と、
前記一時記憶メモリにおいて前記第１データ記憶手段が前記一括記憶データを記憶した記憶領域を一時記憶用第１記憶領域として、当該車載電子制御装置の動作中に、前記不揮発性メモリに即時記憶すべきデータとして予め設定された即時記憶用データを記憶するための即時データ記憶条件が成立すると、前記即時記憶用データを、前記一時記憶メモリ内の前記一時記憶用第１記憶領域に記憶させる一時記憶手順と、
前記即時記憶用データを、前記第１ブロック内において前記第１ブロック第１記憶領域とは別に予め設けられた記憶領域である第１ブロック第２記憶領域に記憶させる即時記憶手順と、
予め設定された一括記憶条件が成立すると、前記不揮発性メモリに内蔵された前記ブロックの中から前記第１ブロックとは異なるように予め決定された第２ブロックのデータを一括消去した後に、前記一時記憶メモリ内の前記一時記憶用第１記憶領域に記憶されているデータを前記第２ブロック内において予め設定された一括記憶用の記憶領域である第２ブロック第１記憶領域に一括記憶させる一括記憶手順と
を備えることを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位でデータを一括消去した後にデータの記憶を行う不揮発性メモリを有した車載電子制御装置に関する。
【背景技術】
【０００２】
車両においては、制御の高度化やサービスの充実を図るために、多数の電子制御装置（ＥＣＵ）が搭載されている。
従来、電子制御装置（ＥＣＵ）に搭載される不揮発性メモリとして、８ビットまたは１６ビット単位でのデータ記憶が可能なＥＥＰＲＯＭが使用されていた。
【０００３】
しかし近年、車両制御の高度化等に伴って不揮発性メモリに記憶されるデータが増加し、不揮発性メモリの大容量化のために、電子制御装置にフラッシュＲＯＭが内蔵されるようになってきている（例えば、特許文献１，２を参照）。
【０００４】
フラッシュＲＯＭは、ＥＥＰＲＯＭに比べて大容量である。しかしフラッシュＲＯＭは、記憶されたデータの消去を、数十キロバイトのブロック単位でしか行うことができない。さらにフラッシュＲＯＭは、データの記憶を、データ消去済みの記憶領域に数バイト単位でしか行えない上に、一度記憶を行ったブロックを一括消去するまでは、同一の記憶領域にデータを記憶させることができない。
【０００５】
このため、フラッシュＲＯＭを内蔵した電子制御装置では通常、電子制御装置の電源がオンになったときにフラッシュＲＯＭからＲＡＭへデータをコピーして、ＲＡＭ上でデータを更新する。そして、電子制御装置のシャットダウン時に、ＲＡＭ上で更新されたデータをフラッシュＲＯＭに書き戻す。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１７２４４７号公報
【特許文献２】特開２００７−１７９４６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
カリフォルニア州大気資源局（ＣＡＲＢ：California Air Resources Board）のＯＢＤ（On Board Diagnosis）法規（以下、ＣＡＲＢ−ＯＢＤ法規という）で規定された永久故障コード（ＰＤＴＣ：Permanent Diagnostic Trouble Codes）は、法規上、電子制御装置のシャットダウンまでに不揮発性メモリに記憶できればよいことになっている。尚、永久故障コードとは、車両に搭載の診断装置によって車両に備えられている部品等の異常が検出され、かつその異常の程度から車両のユーザー等に報知する必要がある、と判断される際の異常検出に対応し、車両の外部から消去できないよう規定されたコードである。従って、例えば異常報知ランプ（ＭＩＬ；Ｍａｌｆｕｎｃｉｏｎ  Ｉｎｄｉｃａｔｏｒ  Ｌａｍｐ）を点灯させることが必要となるような異常が生じた場合にはその異常は、永久故障コードとして記憶されるべき、と判断できる。
【０００８】
すなわち、上述した、シャットダウン時にＲＡＭ上で更新されたデータをフラッシュＲＯＭに書き戻す方法（以下、「シャットダウン時書き戻し方法」という）は、ＣＡＲＢ−ＯＢＤ法規の規定に則っている。
【０００９】
しかし、永久故障コードに対応した故障が発生した時点で、この故障を示す永久故障コードをフラッシュＲＯＭに記憶させようとした場合には、「シャットダウン時書き戻し方法」では対応することができない。「シャットダウン時書き戻し方法」では、電子制御装置のシャットダウンまでフラッシュＲＯＭにデータを記憶させることができないからである。
【００１０】
この問題に対しては、フラッシュＲＯＭ内に設けられた複数のブロックのうちの一つを、永久故障コードを即時記憶するための専用記憶領域とすることで解決することができる。
【００１１】
さらに、不揮発性メモリにデータを記憶する場合には、不揮発性メモリ内のデータ化けが発生したとしても正しい値に戻すことができるように、「ミラー値を持つ」または「前回の記憶値を持つ」などの冗長性を持たせたブロックが必要となる。
【００１２】
従って、「シャットダウン時書き戻し方法」によるシャットダウン時記憶用ブロック、即時記憶用ブロック、さらに、それぞれの冗長確保用ブロック（ミラーあるいは前回値領域）と、都合、最低限４ブロックが必要になることとなる。
【００１３】
しかし、電子制御装置の製造コストを低減させるためには、フラッシュＲＯＭの記憶容量（ブロック数）を小さくする必要があり、必要以上に記憶容量を増やしたくないという要求がある。
【００１４】
したがって、数十〜数百バイトの記憶領域しか必要としない永久故障コードを記憶するために、上述のように数十キロバイトのブロックを最低限４つ用意しなくてはならず、フラッシュＲＯＭの記憶容量の低減が困難になるという問題があった。
【００１５】
本発明は、こうした問題に鑑みてなされたものであり、冗長性を持たせつつ、かつフラッシュＲＯＭにデータを即時記憶させる場合であっても、必要なブロック数の増加を抑制する、あるいは低減することができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するためになされた請求項１に記載の車載電子制御装置は、ブロック単位でデータを一括消去した後にデータの記憶を行うブロックを少なくとも２つ内蔵した不揮発性メモリを有し、車両に搭載される車載電子制御装置であって、まず第１データ記憶手段が、当該車載電子制御装置の電源オン時に、不揮発性メモリに内蔵されたブロックの中から予め決定された第１ブロック内において予め設定された一括記憶用の記憶領域である第１ブロック第１記憶領域に記憶されている一括記憶データを、不揮発性メモリと異なるメモリである一時記憶メモリに記憶させる。その後に一時記憶手段が、一時記憶メモリにおいて第１データ記憶手段が一括記憶データを記憶した記憶領域を一時記憶用第１記憶領域として、当該車載電子制御装置の動作中に、不揮発性メモリに即時記憶すべきデータとして予め設定された即時記憶用データを記憶するための即時データ記憶条件が成立すると、即時記憶用データを、一時記憶メモリ内の一時記憶用第１記憶領域に記憶させるとともに、即時記憶手段が、即時記憶用データを、第１ブロック内において第１ブロック第１記憶領域とは別に予め設けられた記憶領域である第１ブロック第２記憶領域に記憶させる。そして一括記憶手段が、予め設定された一括記憶条件が成立すると、不揮発性メモリに内蔵されたブロックの中から第１ブロックとは異なるように予め決定された第２ブロックのデータを一括消去した後に、一時記憶メモリ内の一時記憶用第１記憶領域に記憶されているデータを第２ブロック内において予め設定された一括記憶用の記憶領域である第２ブロック第１記憶領域に一括記憶させる。
【００１７】
このように構成された車載電子制御装置では、第１ブロックの第１ブロック第１記憶領域に記憶されている記憶データを一時記憶メモリに記憶させ、さらに、即時記憶用データを一時記憶メモリ内の一時記憶用第１記憶領域に記憶させた後に一括記憶条件が成立すると、一時記憶メモリ内の一時記憶用第１記憶領域に記憶されているデータを第２ブロックに記憶させる。すなわち、第１ブロックは、一時記憶手段が一時記憶メモリに即時記憶用データを記憶させる「前」の状態であり、第２ブロックは、一時記憶手段が一時記憶メモリに即時記憶用データを記憶させた「後」の状態となる。つまり、第１ブロックと第２ブロックとにはそれぞれ、データ更新前とデータ更新後のデータが記憶されている。
【００１８】
このため、第２ブロックでデータ化けなどが発生したとしても、第１ブロックのデータを用いて正しい値に戻すことができるようにするための冗長性が確保されている。
また即時記憶手段は、即時データ記憶条件が成立すると、即時記憶用データを、第１ブロック内において第１ブロック第１記憶領域とは別に予め設けられた第１ブロック第２記憶領域に記憶させる。すなわち、即時データ記憶条件が成立する毎に、即時記憶用データを不揮発性メモリに記憶させることができる。なお、第１ブロック第２記憶領域は第１ブロック内に設けられているため、即時記憶用データを不揮発性メモリに即時記憶するために、即時記憶専用のブロックとその冗長データを記憶するためのブロックとを設ける必要がない。
【００１９】
以上より、請求項１に記載の車載電子制御装置によれば、冗長性を確保するために最低２つのブロックを用意すれば、即時記憶のための専用のブロックを設けることなく、不揮発性メモリにデータを即時に記憶させることができる。
【００２０】
なお、請求項１に記載の車載電子制御装置において、上記の一括記憶条件を、「当該車載電子制御装置がシャットダウンする時であること」とすると、車載電子制御装置の制御動作中に、不揮発性メモリのブロックへ一括した記憶が実施されない。このため、車載電子制御装置の制御動作中に不揮発性メモリへ一括したデータ記憶をする場合と比較して処理負荷を減らすことができ、車載電子制御装置の制御処理速度を向上させることができる。
【００２１】
また、上記の一括記憶条件を、「車両が予め設定された所定走行距離を走行したこと」または「予め設定された所定時間が経過したこと」とすると、車載電子制御装置の制御動作中に予期しないＣＰＵリセットが発生しても、所定走行距離を走行した後または所定時間が経過した後の学習値が一括記憶されているため、車載電子制御装置の電源オン時の値に戻らない。このため、ＣＰＵリセットが発生するまでに行われた制御学習が無駄になる状況の発生を抑制することができる。
【００２２】
さらに、請求項１に記載の車載電子制御装置において、請求項２に記載のように、上記の一括記憶条件は、一時記憶メモリに記憶されている一括記憶用データが、予め設定された記憶判定時間継続して変更されなかったことであるようにしてもよい。
【００２３】
このように構成された車載電子制御装置によれば、一時記憶メモリ上で一括記憶用データが頻繁に更新されている間は不揮発性メモリに一括記憶用データが記憶されないため、不揮発性メモリへの記憶頻度を低減することができ、不揮発性メモリの寿命を延長させることができる。
【００２４】
また、請求項１に記載の車載電子制御装置において、一括記憶条件が成立した場合であっても、車載電子制御装置の制御処理の負荷が高いときには一括記憶手段の動作を禁止するようにしてもよい。
【００２５】
これにより、車載電子制御装置の制御処理の負荷が高いときに、車載電子制御装置の制御処理速度をさらに低下させてしまうことを抑制できる。
また、請求項１または請求項２に記載の車載電子制御装置において、請求項３に記載のように、即時記憶用データは、車両で発生した故障を示す故障コードのうち、車両のバッテリが外された場合でも保持されることが要求される永久故障コードであるようにするとよい。これにより、即時記憶のための専用のブロックを設けることなく、不揮発性メモリに永久故障コードを即時記憶させることができる。
【００２６】
また、請求項３に記載の車載電子制御装置では、請求項４に記載のように、即時記憶禁止手段が、第１ブロック第２記憶領域内にデータ記憶可能な領域が残されていない場合には、即時記憶手段の動作を禁止するようにするとよい。
【００２７】
ここで、ＣＡＲＢ−ＯＢＤ法規では、永久故障コードを４個以上記憶するように規定している。換言すると、永久故障コードを４個記憶すれば、それ以上記憶する必要がない。このため、請求項４に記載の車載電子制御装置によれば、第１ブロック第２記憶領域の記憶容量を必要最小限に抑えることができる。
【００２８】
なお、第２記憶領域内にデータ記憶可能な領域が残されていない場合に、永久故障コードを一時記憶メモリのみに記憶させるようにしてもよい。これにより、第２記憶領域に永久故障コードを即時記憶することができなくても、一括記憶条件が成立した時点で、不揮発性メモリに永久故障コードを記憶させることができる。
【００２９】
ところで、車両の盗難防止のため、イモビライザの認証が正常に実施されずにエンジンが始動された回数を不揮発性メモリに記憶する必要がある。
そこで、請求項１または請求項２に記載の車載電子制御装置において、請求項５に記載のように、即時記憶用データは、車両のイモビライザの認証が正常に実施されなかったことを示すものであるようにするとよい。これにより、車両のイモビライザの認証が正常に実施されなかった状況が発生する毎に、その旨を示す情報（以下、イモビ異常情報という）が不揮発性メモリに記憶される。すなわち、このイモビ異常情報の個数により、イモビライザの認証が正常に実施されずにエンジンが始動された回数（以下、イモビ認証異常回数という）を確認することができる。
【００３０】
そして請求項５に記載の車載電子制御装置よれば、即時記憶のための専用のブロックを設けることなく、車両のイモビライザの認証が正常に実施されなかった時点で、不揮発性メモリにイモビ異常情報を即時記憶させることができる。
【００３１】
また、請求項５に記載の車載電子制御装置では、請求項６に記載のように、エンジン始動禁止手段が、第１ブロック第２記憶領域内にデータ即時記憶可能な領域が残されていない状態で、車両のイモビライザの認証が正常に実施されなかった場合に、車両のエンジンの始動を禁止するようにするとよい。
【００３２】
すなわち、例えば５個のイモビ異常情報が記憶されたら車両のエンジン始動を禁止するシステムの場合に、５個分の異常情報を記憶できるだけの領域を第１ブロック第２記憶領域に設ければよく、第１ブロック第２記憶領域の記憶容量を必要最小限に抑えることができる。
【００３３】
また、請求項１に記載の車載電子制御装置において、車載電子制御装置の制御中に予期しないＣＰＵリセットが発生した場合には、第１ブロック内の第１ブロック第１記憶領域に記憶されているデータを一時記憶メモリに記憶させ、さらに、第１ブロック内の第１ブロック第２記憶領域に記憶されている即時記憶用データを、一時記憶メモリ内の一時記憶用第１記憶領域に記憶させるようにするとよい。
【００３４】
これにより、ＣＰＵリセットが発生した直後に一時記憶メモリに記憶されているデータは破棄される。すなわち、一時記憶メモリ上でＣＰＵリセット発生前に更新されたデータは失われる。しかし、ＣＰＵリセット発生前に第１ブロック第２記憶領域に記憶された即時記憶用データは、失われずに済ますことができる。
【００３５】
また、請求項１に記載の車載電子制御装置において、車載電子制御装置の電源オン時に、不揮発性メモリ内の最新のデータが記憶されたブロック（最新データブロック）の正当性チェック（例えばチェックサムなど）を行い、その結果、データが壊れていると判断された場合には、最新データブロックの次に新しいデータが記憶されたブロック（以下、過去データブロックという）内の第１記憶領域に記憶されているデータを一時記憶メモリに記憶させ、さらに、過去データブロックの第２記憶領域に記憶されている即時記憶用データを、一時記憶メモリ内の一時記憶用第１記憶領域に記憶させるようにするとよい。
【００３６】
これにより、最新データが失われても、前回に電源オンしたときの状態にまで、データを戻すことができる。
また、請求項７に記載のメモリ制御方法は、ブロック単位でデータを一括消去した後にデータの一括記憶を行うことができるブロックを少なくとも２つ内蔵した不揮発性メモリを有し、車両に搭載される車載電子制御装置で用いられるメモリ制御方法であって、まず第１データ記憶手順で、当該車載電子制御装置の電源オン時に、不揮発性メモリに内蔵されたブロックの中から予め決定された第１ブロック内において予め設定された一括記憶用の記憶領域である第１ブロック第１記憶領域に記憶されている一括記憶データを、不揮発性メモリと異なるメモリである一時記憶メモリに記憶させる。その後に一時記憶手順で、一時記憶メモリにおいて第１データ記憶手段が一括記憶データを記憶した記憶領域を一時記憶用第１記憶領域として、当該車載電子制御装置の動作中に、不揮発性メモリに即時記憶すべきデータとして予め設定された即時記憶用データを記憶するための即時データ記憶条件が成立すると、即時記憶用データを、一時記憶メモリ内の一時記憶用第１記憶領域に記憶させるとともに、即時記憶手順で、即時記憶用データを、第１ブロック内において第１ブロック第１記憶領域とは別に予め設けられた記憶領域である第１ブロック第２記憶領域に記憶させる。そして一括記憶手順で、予め設定された一括記憶条件が成立すると、不揮発性メモリに内蔵されたブロックの中から第１ブロックと異なるように予め決定された第２ブロックのデータを一括消去した後に、一時記憶メモリ内の一時記憶用第１記憶領域に記憶されているデータを第２ブロック内において予め設定された一括記憶用の記憶領域である第２ブロック第１記憶領域に一括記憶させる
このメモリ制御方法は、請求項１に記載の車載電子制御装置にて実行される方法であり、当該方法を実行することで、請求項１に記載の車載電子制御装置と同様の効果を得ることができる。
【図面の簡単な説明】
【００３７】
【図１】車載電子制御装置１の構成を示すブロック図である。
【図２】永久故障コード記憶処理の第１部分を示すフローチャートである。
【図３】永久故障コード記憶処理の第２部分を示すフローチャートである。
【図４】永久故障コード記憶処理の第３部分を示すフローチャートである。
【図５】永久故障コード記憶処理の第４部分を示すフローチャートである。
【図６】ドライビングサイクル終了処理を示すフローチャートである。
【図７】イモビ異常情報を記憶する場合の処理の一部を示すフローチャートである。
【図８】「冗長性の確保」を説明する図である。
【発明を実施するための形態】
【００３８】
以下に本発明の実施形態を図面とともに説明する。
図１は車載電子制御装置１の構成を示すブロック図である。
本実施形態の車載電子制御装置１は、車両に搭載され、図１に示すように、車両のエンジンＥＧの制御を行う。
【００３９】
車載電子制御装置１は、ＣＰＵ（中央演算装置）２と、ＣＰＵ２が実行するプログラムやプログラムの実行時に参照されるデータを格納するＲＯＭ３と、電源が供給されている間はデータの記憶が維持できる、データを一時的に記憶するためのＲＡＭ４と、データ書き換え可能な不揮発性メモリであるフラッシュＲＯＭ５と、入出力回路６と、車両内の通信線２１に接続された他の装置とＣＰＵ２が通信するための通信回路７と、これらの構成を接続するバスライン８とを備えている。
【００４０】
ＣＰＵ２は、エンジンＥＧを制御するための情報として、吸気管圧力センサ、エンジン回転数センサ、エンジン水温センサ、排気系の酸素センサ（空燃比センサ）、車速センサ、イグニッションスイッチ等から各種信号を入出力回路６を介して入力する。尚、図１に示すエンジンＥＧは、エンジン本体を含め、吸気系、排気系等、エンジンに関連する系を総称して示すものであって、本実施例では詳細な説明は割愛する。
【００４１】
そしてＣＰＵ２は、入出力回路６を介して入力される各種信号に基づいて制御演算を行い、その演算結果に基づき、点火装置やインジェクタ等の電気負荷へ入出力回路６を介して駆動信号を出力することにより、エンジンＥＧの制御に関係する電気負荷を制御する。例えばＣＰＵ２は、インジェクタの開弁タイミング及び開弁時間を演算し、その演算結果に基づいて、インジェクタを駆動するための駆動信号を出力することにより、エンジンＥＧへの燃料噴射を制御する。
【００４２】
さらに車載電子制御装置１には、異常検出等の結果をユーザー等に報知するＭＩＬ２２が入出力回路６を介して接続されている。
また通信回路７には、車両の故障診断等を行うための故障診断装置ＤＴが、通信線２１を介して接続される。この故障診断装置ＤＴは、例えば、コネクタ（不図示）を介して着脱可能になっており、車両の故障診断時等に車載電子制御装置１に接続される。なお故障診断装置ＤＴは、マイコンおよび表示装置（ディスプレイ）を備えたハンディタイプの装置、または小型のパソコン等である。
【００４３】
またフラッシュＲＯＭ５は、ブロックＢＬ−ＡとブロックＢＬ−Ｂを有する。なお、本実施形態では、２つのブロックしか示していないが他にもブロックを備えていても良い。また、「ブロック」とは、「書換え・消去可能なフラッシュＲＯＭ（書換え可能不揮発性メモリ）の全記憶領域のうち、一度に消去可能な領域の単位（例：数十キロバイト）」を意味する。ブロックＢＬ−Ａのデータ記憶容量とブロックＢＬ−Ｂのデータ記憶容量とは等しく、ブロックＢＬ−Ａ，ＢＬ−Ｂはそれぞれ、第１記憶領域ＭＲ１−Ａ，ＭＲ１−Ｂと第２記憶領域ＭＲ２−Ａ，ＭＲ２−Ｂとに分割される。ブロックＢＬ−ＡとブロックＢＬ−Ｂの二つのブロックは、片方のブロックに最新のデータを記憶し、もう片方のブロックに最新データの次に新しい過去データを記憶する。また、ブロック内の第１記憶領域ＭＲ１は車載電子制御装置１において不揮発性メモリに記憶しなければならないデータを一括記憶するための領域であり、第２記憶領域ＭＲ２は車載電子制御装置１において即時に不揮発性メモリに記憶しなければならないデータを記憶するための領域である。
【００４４】
なお、車載電子制御装置１の電源としては、イグニッションスイッチのオン／オフに連動して車載バッテリから供給される動作用電源と、車載バッテリから常時供給されるバックアップ電源とがある。そして車載電子制御装置１は、イグニッションスイッチがオンされると動作用電源が供給されて動作する。
【００４５】
このように構成された車載電子制御装置１において、ＣＰＵ２は、永久故障コードをフラッシュＲＯＭ５に記憶するための永久故障コード記憶処理を実行する。
ここで、ＣＰＵ２が実行する永久故障コード記憶処理の手順を図２〜５を用いて説明する。図２〜５は永久故障コード記憶処理の第１〜４部分を示すフローチャートである。この永久故障コード記憶処理は、車載電子制御装置１の電源がオンになる（動作用電源が供給される）と車載電子制御装置１の電源がオフされるまで実行される処理である。
【００４６】
この永久故障コード記憶処理が実行されると、ＣＰＵ２は、まずＳ１０にて、車載電子制御装置１に異常が発生したか否かを判定する。具体的には、ＣＰＵリセットが発生したか否かを判定するとともに、ブロックＢＬ−Ａ，ＢＬ−Ｂの第１記憶領域ＭＲ１−Ａ，ＭＲ１−Ｂのうち、ＲＡＭ４にデータコピーする第１記憶領域ＭＲ１に記憶されているデータが壊れているか否かを、チェックサムで判定する。なお、ＲＡＭ４にデータコピーする第１記憶領域ＭＲ１を選択する方法は、Ｓ３０（後述）と同じである。
【００４７】
そしてＳ２０にて、Ｓ１０での判定結果に基づいて、車載電子制御装置１に異常が発生したか否かを判断する。ここで、異常が発生した場合には（Ｓ２０：ＹＥＳ）、Ｓ１５０に移行する。
【００４８】
一方、異常が発生していない場合には（Ｓ２０：ＮＯ）、Ｓ３０にて、ブロックＢＬ−Ａ，ＢＬ−Ｂのうち、ＲＡＭ４にデータコピーするブロックＢＬを選択する。具体的には、ブロックＢＬ−Ａ，ＢＬ−Ｂの第１記憶領域ＭＲ１−Ａ，ＭＲ１−Ｂ内にはそれぞれ、ＲＡＭ４にデータコピーした回数を示すコピー回数カウント値記憶領域が設けられており、ＲＡＭ４へのデータコピーが実行される毎にコピー回数カウント値記憶領域もＲＡＭ４へコピーされるとともに、ＣＰＵ２により実行される処理によって（図示せず）ＲＡＭ４のコピー回数カウント値をインクリメントするように構成されている。このＲＡＭ４上のカウント値記憶領域は、ＭＲ１−Ａ，もしくはＭＲ１−Ｂに一括記憶されるときに不揮発性メモリに記憶される。すなわちＳ３０では、ブロックＢＬ−Ａ，ＢＬ−Ｂのコピー回数カウンタの値を比較して、この値が大きいブロックを選択する。但し、コピー回数カウント値がその最大値（例えばカウント値記憶領域が２バイトで構成されるなら６５５３５）になっており、もう片方のブロックのコピー回数カウント値が０であれば、コピー回数カウント値が０のブロックを選択する。
【００４９】
例えば、ブロックＢＬ−Ａに設けられたコピー回数カウント値記憶領域のコピー回数カウント値ＣＣ−Ａが「０」で、ブロックＢＬ−Ｂに設けられたコピー回数カウント値記憶領域のコピー回数カウント値ＣＣ−Ｂが「１」であるときには、ブロックＢＬ−Ｂのコピー回数カウント値のほうが大きいため、ブロックＢＬ−Ｂが選択され、ブロックＢＬ−Ｂの第１記憶領域ＭＲ１−ＢがＲＡＭ４にコピーされる。このとき、ＲＡＭ４上においてブロックＢＬ−Ｂのコピー回数カウント値ＣＣ−Ｂがインクリメントされて「２」となる。その後、ＲＡＭ４上のデータがブロックＢＬ−Ａに一括記憶されるため、ブロックＢＬ−Ａのコピー回数カウント値ＣＣ−Ａが「２」となる。このときの、ブロックＢＬ−Ｂのコピー回数カウント値ＣＣ−Ｂは「１」である。したがって、この次には、ブロックＢＬ−Ａのコピー回数カウント値のほうが大きいため、ブロックＢＬ−Ａが選択される。
【００５０】
以下、Ｓ３０で選択されたブロックＢＬ−ＡまたはブロックＢＬ−Ｂを、Ｓ３０で選択されたブロックＢＬともいう。また、Ｓ３０で選択されたブロックＢＬの第１記憶領域ＭＲ１−Ａまたは第１記憶領域ＭＲ１−Ｂを、Ｓ３０で選択された第１記憶領域ＭＲ１ともいう。また、Ｓ３０で選択されたブロックＢＬの第２記憶領域ＭＲ２−Ａまたは第２記憶領域ＭＲ２−Ｂを、Ｓ３０で選択された第２記憶領域ＭＲ２ともいう。
【００５１】
その後Ｓ４０にて、Ｓ３０で選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータをＲＡＭ４にコピーする。なお以下、ＲＡＭ４の記憶領域において、ブロックＢＬの第１記憶領域ＭＲ１が記憶された領域を、「ＲＡＭ４の第１記憶領域ＭＲ３」ともいう（図１を参照）。
【００５２】
そしてＳ５０にて、ドライビングサイクル終了処理を実行する。なお、ドライビングサイクルとは、エンジンが起動されてから、その後エンジンが停止して次にエンジンが起動されるまでの期間のことである。よって、電源オン時を「次のエンジンの起動」と判断してＳ５０の処理を実行する。
【００５３】
ここで、ドライビングサイクル終了処理の手順を図６を用いて説明する。図６はドライビングサイクル終了処理を示すフローチャートである。
このドライビングサイクル終了処理が実行されると、ＣＰＵ２は、まずＳ４１０にて、永久故障コード消去条件が成立したか否かを判断する。ここで、永久故障コード消去条件が成立していない場合には（Ｓ４１０：ＮＯ）、Ｓ４３０に移行する。一方、永久故障コード消去条件が成立した場合には、この永久故障コード消去条件に対応する永久故障コードをＲＡＭ４から消去し、Ｓ４３０に移行する。
【００５４】
そしてＳ４３０に移行すると、全ての永久故障コードについてＳ４１０の処理を行ったか否かを判断する。ここで、全ての永久故障コードについて行っていない場合には（Ｓ４３０：ＮＯ）、Ｓ４１０に移行して、上述の処理を繰り返す。一方、全ての永久故障コードについて行った場合には（Ｓ４３０：ＹＥＳ）、ドライビングサイクル終了処理を終了する。
【００５５】
図２に戻り、Ｓ５０の処理が終了すると、Ｓ６０にて、車載電子制御装置１がエンジンＥＧの異常を検出してＭＩＬ２２が点灯したか否かを判断する。尚、エンジンＥＧの異常検出処理については割愛する。ここで、ＭＩＬ２２が点灯した場合には（Ｓ６０：ＹＥＳ）、Ｓ７０にて、Ｓ３０で選択された第２記憶領域ＭＲ２内に記憶可能な領域が存在するか否かを判断する。
【００５６】
ここで、第２記憶領域ＭＲ２内に記憶可能な領域が存在する場合には（Ｓ７０：ＹＥＳ）、Ｓ８０にて、Ｓ６０において点灯したと判断したＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内において永久故障コードを記憶するために設けられた永久故障コード記憶領域ＭＲＰと、Ｓ３０またはＳ１６０で選択されたブロックＢＬの第２記憶領域ＭＲ２に記憶し、Ｓ１２０に移行する。一方、第２記憶領域ＭＲ２内に記憶可能な領域が存在しない場合には（Ｓ７０：ＮＯ）、Ｓ９０にて、Ｓ６０において点灯したと判断したＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰに記憶し、Ｓ１２０に移行する。
【００５７】
またＳ６０にて、ＭＩＬ２２が点灯していない場合には（Ｓ６０：ＮＯ）、Ｓ１００にて、故障診断装置ＤＴからの永久故障コード読出指令を受信したか否かを判断する。ここで、永久故障コード読出指令を受信した場合には（Ｓ１００：ＹＥＳ）、Ｓ１１０にて、ＲＡＭ４に記憶されており、且つ、Ｓ３０またはＳ１６０で選択されたブロックＢＬの第１記憶領域ＭＲ１または第２記憶領域ＭＲ２に記憶されている永久故障コードを故障診断装置ＤＴへ送信し、Ｓ１２０に移行する。一方、永久故障コード読出指令を受信していない場合には（Ｓ１００：ＮＯ）、Ｓ１２０に移行する。
【００５８】
そしてＳ１２０に移行すると、車載電子制御装置１がシャットダウンされるか否かを判断する。ここで、車載電子制御装置１がシャットダウンされない場合には（Ｓ１２０：ＮＯ）、Ｓ６０に移行して、上述の処理を繰り返す。一方、車載電子制御装置１がシャットダウンされる場合には（Ｓ１２０：ＹＥＳ）、Ｓ１３０にて、Ｓ３０またはＳ１６０で選択されていないブロックＢＬを、コピー回数カウント値が最も小さい値を持つブロックＢＬを調べることで選択し、そのブロックＢＬに記憶されているデータを一括消去し、さらにＳ１４０にて、ＲＡＭ４の第１記憶領域ＭＲ３に記憶されているデータを、Ｓ１３０でデータを一括消去したブロックＢＬの第１記憶領域ＭＲ１に記憶させて、永久故障コード記憶処理を終了する。
【００５９】
次に、Ｓ２０にて、異常が発生したと判断した場合には（Ｓ２０：ＹＥＳ）、図３のＳ１５０に移行し、Ｓ１０で判定した異常はＣＰＵリセット発生であるか否かを判断する。ここで、ＣＰＵリセット発生である場合には（Ｓ１５０：ＹＥＳ）、Ｓ１６０にて、Ｓ３０と同様にして、ＲＡＭ４にデータコピーするブロックＢＬを選択する。
【００６０】
その後Ｓ１７０にて、Ｓ１６０で選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータをＲＡＭ４にコピーし、Ｓ１８０にて、Ｓ１６０で選択されたブロックＢＬの第２記憶領域ＭＲ２に、永久故障コードが記憶されているか否かを判断する。
【００６１】
ここで、第２記憶領域ＭＲ２に永久故障コードが記憶されていない場合には（Ｓ１８０：ＮＯ）、Ｓ５０に移行する。一方、第２記憶領域ＭＲ２に永久故障コードが記憶されている場合には（Ｓ１８０：ＹＥＳ）、Ｓ１９０にて、第２記憶領域ＭＲ２に記憶されている永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰに記憶させて、Ｓ５０に移行する。これにより、ＲＡＭ４の第１記憶領域ＭＲ３には、Ｓ１６０で選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータだけでなく、第２記憶領域ＭＲ２に記憶された永久故障コードも追加したデータにすることができる。すなわち、ＲＡＭ４の第１記憶領域ＭＲ３は、最後にフラッシュＲＯＭ５に正しくデータを記憶してからＣＰＵのリセットまでにＲＡＭ４上で更新したデータは含まれないものの、最後にフラッシュＲＯＭ５に正しく記憶されたデータと、第２記憶領域ＭＲ２に記憶されている永久故障コードをＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰに記憶させたデータとなる。
【００６２】
またＳ１５０にて、ＣＰＵリセット発生でない場合には（Ｓ１５０：ＮＯ）、ＲＡＭ４にデータコピーする第１記憶領域ＭＲ１に記憶されているデータが壊れていると判断し、図４のＳ２００にて、データが壊れていると判断したブロックＢＬとは異なるブロックＢＬを、ＲＡＭ４にデータコピーするブロックＢＬとして選択する。
【００６３】
そしてＳ２１０にて、Ｓ２００で選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータが壊れているか否かを、チェックサムチェックを行うことにより判定し、データが壊れていないと判定した場合に、Ｓ２００で選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータをＲＡＭ４にコピーする。一方、データが壊れていると判定した場合には、ＲＡＭ４に記憶されるデータを予め設定された初期値にする。この初期値とは、例えばエンジンの異常検出処理の結果をＲＡＭ４に記憶する場合には、「検出結果なし」とすることである。
【００６４】
その後Ｓ２２０にて、Ｓ２００で選択されたブロックＢＬの第２記憶領域ＭＲ２に、永久故障コードが記憶されているか否かを判断する。なおＳ２２０では、Ｓ２１０でデータが壊れていると判定した場合には、永久故障コードが記憶されていないと判断する。
【００６５】
ここで、第２記憶領域ＭＲ２に永久故障コードが記憶されていない場合には（Ｓ２２０：ＮＯ）、Ｓ２４０に移行する。一方、第２記憶領域ＭＲ２に永久故障コードが記憶されている場合には（Ｓ２２０：ＹＥＳ）、Ｓ２３０にて、第２記憶領域ＭＲ２に記憶されている永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰに記憶させて、Ｓ２４０に移行する。
【００６６】
そしてＳ２４０に移行すると、データが壊れていると判断したブロックＢＬに記憶されているデータを一括消去し、さらにＳ２５０にて、ＲＡＭ４に記憶されているデータを、Ｓ２４０でデータを一括消去したブロックに記憶させて、Ｓ２６０に移行する。
【００６７】
そしてＳ２６０に移行すると、Ｓ５０と同様にして、ドライビングサイクル終了処理を実行する。そしてＳ２６０の処理が終了すると、Ｓ２７０にて、車載電子制御装置１がエンジンＥＧの異常を検出してＭＩＬ２２が点灯したか否かを判断する。ここで、ＭＩＬ２２が点灯した場合には（Ｓ２７０：ＹＥＳ）、Ｓ２８０にて、Ｓ２５０でデータを記憶したブロックＢＬの第２記憶領域ＭＲ２内に記憶可能な領域が存在するか否かを判断する。
【００６８】
ここで、第２記憶領域ＭＲ２内に記憶可能な領域が存在する場合には（Ｓ２８０：ＹＥＳ）、Ｓ２９０にて、Ｓ２７０において点灯したと判断したＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰと、Ｓ２５０でデータを記憶したブロックＢＬの第２記憶領域ＭＲ２に記憶し、Ｓ３３０に移行する。一方、第２記憶領域ＭＲ２内に記憶可能な領域が存在しない場合には（Ｓ２８０：ＮＯ）、Ｓ３００にて、Ｓ２７０において点灯したと判断したＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられた永久故障コード記憶領域ＭＲＰに記憶し、Ｓ３３０に移行する。
【００６９】
またＳ２７０にて、ＭＩＬ２２が点灯していない場合には（Ｓ２７０：ＮＯ）、Ｓ３１０にて、故障診断装置ＤＴからの永久故障コード読出指令を受信したか否かを判断する。ここで、永久故障コード読出指令を受信した場合には（Ｓ３１０：ＹＥＳ）、Ｓ３２０にて、ＲＡＭ４に記憶されており、且つ、Ｓ２５０でデータを記憶したブロックＢＬの第１記憶領域ＭＲ１または第２記憶領域ＭＲ２に記憶されている永久故障コードを故障診断装置ＤＴへ送信し、Ｓ３３０に移行する。一方、永久故障コード読出指令を受信していない場合には（Ｓ３１０：ＮＯ）、Ｓ３３０に移行する。
【００７０】
そしてＳ３３０に移行すると、車載電子制御装置１がシャットダウンされるか否かを判断する。ここで、車載電子制御装置１がシャットダウンされない場合には（Ｓ３３０：ＮＯ）、Ｓ２７０に移行して、上述の処理を繰り返す。一方、車載電子制御装置１がシャットダウンされる場合には（Ｓ３３０：ＹＥＳ）、Ｓ３４０にて、Ｓ２２０で選択したブロックＢＬに記憶されているデータを一括消去し、さらにＳ３５０にて、ＲＡＭ４の第１記憶領域ＭＲ３に記憶されているデータを、Ｓ３４０でデータを一括消去したブロックＢＬの第１記憶領域ＭＲ１に記憶させて、永久故障コード記憶処理を終了する。
【００７１】
このように構成された車載電子制御装置１は、ブロック単位でデータを一括消去した後にデータの記憶を行うことができる２つのブロックＢＬ−Ａ，ＢＬ−Ｂを内蔵したフラッシュＲＯＭ５を有し、当該車載電子制御装置１の電源オン時に、フラッシュＲＯＭ５に内蔵されたブロックＢＬ−Ａ，ＢＬ−Ｂの中から、Ｓ３０の処理で選択されたブロック（以下、第１ブロックともいう）の第１記憶領域ＭＲ１（ＭＲ１−ＡまたはＭＲ１−Ｂ）に記憶されている記憶データを、ＲＡＭ４に記憶させる（Ｓ４０）。
【００７２】
その後に、当該車載電子制御装置１の動作中に、車載電子制御装置１がエンジンＥＧの異常を検出してＭＩＬ２２が点灯すると（Ｓ６０：ＹＥＳ）、点灯したＭＩＬ２２に対応する永久故障コードを、ＲＡＭ４の第１記憶領域ＭＲ３内の永久故障コード記憶領域ＭＲＰに記憶させる（Ｓ８０）。
【００７３】
さらに、当該車載電子制御装置１の動作中に、車載電子制御装置１がエンジンＥＧの異常を検出してＭＩＬ２２が点灯すると（Ｓ６０：ＹＥＳ）、点灯したＭＩＬ２２に対応する永久故障コードを、Ｓ３０の処理で選択されたブロック（第１ブロック）の第１記憶領域ＭＲ１とは別に予め設けられた第２記憶領域ＭＲ２に記憶させる（Ｓ８０）。
【００７４】
そして、車載電子制御装置１がシャットダウンされるときに（Ｓ１２０：ＹＥＳ）、フラッシュＲＯＭ５に内蔵されたブロックＢＬ−Ａ，ＢＬ−Ｂの中から、Ｓ３０の処理で選択されたブロック（第１ブロック）と異なるように予め決定されたブロック（以下、第２ブロックともいう）のデータを一括消去した後に（Ｓ１３０）、ＲＡＭ４の第１記憶領域ＭＲ３に記憶されているデータを第２ブロック内の第１記憶領域ＭＲ１に記憶させる（Ｓ１４０）。
【００７５】
このように構成された車載電子制御装置１では、第１ブロックの第１記憶領域ＭＲ１に記憶されている記憶データをＲＡＭ４内の第１記憶領域ＭＲ３に記憶させ、その後、エンジンＥＧの異常を検出してＭＩＬ２２が点灯すると、点灯したＭＩＬ２２に対応する永久故障コードをＲＡＭ４内の第１記憶領域ＭＲ３の領域（記憶領域ＭＲＰ）に記憶させる。そして、車載電子制御装置１がシャットダウンされると、ＲＡＭ４内の第１記憶領域ＭＲ３に記憶されているデータをすべて第２ブロックに記憶させる。すなわち、第１ブロックは、ＲＡＭ４に永久故障コードを記憶させる「前」の状態であり、第２ブロックは、ＲＡＭ４に永久故障コードを記憶させた「後」の状態となる。つまり、第１ブロックと第２ブロックとにはそれぞれ、データ更新前とデータ更新後のデータが記憶されている。
【００７６】
このため、第２ブロックでデータ化けなどが発生したとしても、第１ブロックのデータを用いて正しい値に戻すことができるようにするための冗長性が確保されている。
ここで、ＲＡＭ４に永久故障コードを記憶させる「前」が、第１ブロックに永久故障コードＣ１，Ｃ２を二つ記憶している状態で、永久故障コードを記憶させた「後」が、新しく別の永久故障コードＣ３を一つ記憶して、第２ブロックに合計三つの永久故障コードＣ１，Ｃ２，Ｃ３を記憶している状態である場合（図８を参照）を想定して、「冗長性の確保」を説明する。
【００７７】
まず、第１ブロックでデータ化けが発生した場合には、第２ブロックに記憶されている永久故障コードＣ１，Ｃ２，Ｃ３の全てが保持されているため、問題がない。一方、第２ブロックでデータ化けが発生した場合には、永久故障コードＣ３は失われるが、第１ブロックの永久故障コードＣ１，Ｃ２を用いて、第２ブロックの永久故障コードＣ１，Ｃ２を復元することができる。すなわち、第２ブロックの永久故障コードＣ１，Ｃ２，Ｃ３の全てが失われることはなく、永久故障コードの消失を最低限に抑えることができる。
【００７８】
また、ＭＩＬ２２が点灯すると、永久故障コードを、Ｓ３０の処理で選択されたブロック（第１ブロック）内において第１記憶領域ＭＲ１とは別に予め設けられた第２記憶領域ＭＲ２に記憶させる。すなわち、ＭＩＬ２２が点灯する毎に、永久故障コードをフラッシュＲＯＭ５に記憶させることができる。なぜならば、記憶されているデータを一括消去されたブロックＢＬには、まず第１記憶領域ＭＲ１にデータが一括して書き込まれ、第１記憶領域ＭＲ１とは異なる記憶領域である第２記憶領域ＭＲ２は、データが書き込まれていない状態となるからである。なお、第２記憶領域ＭＲ２は第１ブロック内に設けられているため、永久故障コードをフラッシュＲＯＭ５に即時記憶するために、即時記憶専用のブロックとその冗長データを記憶するためのブロックとを設ける必要がない。
【００７９】
以上より、車載電子制御装置１によれば、冗長性を確保するために最低２つのブロックを用意すれば、即時記憶のための専用のブロックを設けることなく、不揮発性メモリにデータを即時に記憶させることができる。
【００８０】
また、車載電子制御装置１がシャットダウンする時に（Ｓ１２０：ＹＥＳ）、ＲＡＭ４に記憶されたデータをフラッシュＲＯＭ５に記憶させる（Ｓ１４０）。これにより、車載電子制御装置１の制御動作中に、不揮発性メモリのブロックへ一括したデータ記憶が実施されない。このため、車載電子制御装置１の制御動作中に不揮発性メモリのブロックへ一括したデータ記憶をする場合と比較して処理負荷を減らすことができ、車載電子制御装置１の制御処理速度を向上させることができる。
【００８１】
また、第２記憶領域ＭＲ２内に記憶可能な領域が存在しない場合には（Ｓ７０：ＮＯ）、永久故障コードがフラッシュＲＯＭ５に記憶されない。
ここで、ＣＡＲＢ−ＯＢＤ法規では、永久故障コードを４個以上記憶するように規定している。換言すると、永久故障コードを４個記憶すれば、それ以上記憶する必要がない。このため、第２記憶領域ＭＲ２の記憶容量を必要最小限に抑えることができる。
【００８２】
なお、第２記憶領域ＭＲ２内に記憶可能な領域が存在しない場合には（Ｓ７０：ＮＯ）、永久故障コードがＲＡＭ４に記憶される（Ｓ９０）。これにより、第２記憶領域ＭＲ２に永久故障コードを即時記憶することができなくても、車載電子制御装置１がシャットダウンされると（Ｓ１２０：ＹＥＳ）、フラッシュＲＯＭ５に永久故障コードを記憶させることができる（Ｓ１４０）。
【００８３】
また、車載電子制御装置の制御中に予期しないＣＰＵリセットが発生した場合には（Ｓ１５０：ＹＥＳ）、ＲＡＭ４にデータコピーするブロックＢＬを選択して（Ｓ１６０）、選択されたブロックＢＬの第１記憶領域ＭＲ１に記憶されているデータをＲＡＭ４にコピーする（Ｓ１７０）。さらに、選択されたブロックＢＬ内の第２記憶領域ＭＲ２に記憶されている永久故障コードを、ＲＡＭ４内の第１記憶領域ＭＲ３に記憶させる（Ｓ１９０）。
【００８４】
これにより、ＣＰＵリセットが発生した直後にＲＡＭ４に記憶されているデータは破棄される。すなわち、ＲＡＭ４上でＣＰＵリセット発生前に更新されたデータは失われる。しかし、ＣＰＵリセット発生前に第２記憶領域ＭＲ２に記憶された永久故障コードは、失われずに済ますことができる。
【００８５】
また、フラッシュＲＯＭ５内の最新のデータが記憶されたブロックＢＬ（以下、最新データブロックともいう）の正当性チェックを行い（Ｓ１０）、その結果、データが壊れていると判断された場合には（Ｓ２０：ＹＥＳ，Ｓ１５０：ＮＯ）、最新データブロックの次に新しいデータが記憶されたブロックＢＬ（以下、過去データブロックという）内の第１記憶領域ＭＲ１に記憶されているデータをＲＡＭ４に記憶させ（Ｓ２１０）、さらに、過去データブロックの第２記憶領域ＭＲ２に記憶されている永久故障コードを、ＲＡＭ４内の第１記憶領域ＭＲ３に記憶させる（Ｓ２３０）。
【００８６】
これにより、最新データが失われても、前回に電源オンしたときの状態にまで、データを戻すことができる。
また、ドライビングサイクル終了処理（Ｓ５０）では、永久故障コード消去条件が成立したときに、フラッシュＲＯＭ５に記憶された永久故障コードを消去することなく、ＲＡＭ４に記憶された永久故障コードを消去する（Ｓ４２０）。これにより、フラッシュＲＯＭ５へのアクセスが不要となり、車載電子制御装置１のエンジン制御への影響を最小限に抑えることができる。
【００８７】
また、故障診断装置ＤＴからの永久故障コード読出指令を受信すると（Ｓ１００：ＹＥＳ）、ＲＡＭ４に記憶されており、且つ、選択されたブロックＢＬの第１記憶領域ＭＲ１または第２記憶領域ＭＲ２に記憶されている永久故障コードを故障診断装置ＤＴへ送信する（Ｓ１１０）。これにより、ＲＡＭ４のみに記憶された永久故障コードを故障診断装置ＤＴへ送信しないようにすることができる。
【００８８】
以上説明した実施形態において、Ｓ３０およびＳ４０の処理は本発明における第１データ記憶手段または第１データ記憶手順、Ｓ８０の処理は本発明における一時記憶手段および即時記憶手段または一時記憶手順および即時記憶手順、Ｓ１２０〜Ｓ１４０の処理は本発明における一括記憶手段または一括記憶手順、Ｓ７０の処理は本発明における即時記憶禁止手段である。
【００８９】
また、フラッシュＲＯＭ５は本発明における不揮発性メモリ、Ｓ３０またはＳ１６０で選択されたブロックＢＬの第１記憶領域ＭＲ１は本発明における第１ブロック第１記憶領域、Ｓ３０またはＳ１６０で選択されたブロックＢＬの第２記憶領域ＭＲ２は本発明における第１ブロック第２記憶領域、ＲＡＭ４の第１記憶領域ＭＲ３は本発明における一時記憶用第１記憶領域、ＲＡＭ４は本発明における一時記憶メモリ、永久故障コードは本発明における即時記憶用データ、Ｓ６０の判断条件は本発明における即時データ記憶条件、Ｓ１２０の判断条件は本発明における一括記憶条件である。
【００９０】
以上、本発明の一実施例について説明したが、本発明は上記実施例に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態においては、車載電子制御装置１がシャットダウンする時に（Ｓ１２０：ＹＥＳ）、ＲＡＭ４に記憶されたデータをフラッシュＲＯＭ５に記憶させる（Ｓ１４０）ものを示した。しかし、「車両が予め設定された所定走行距離を走行したとき」、または「予め設定された所定時間が経過したとき」に、ＲＡＭ４に記憶されたデータをフラッシュＲＯＭ５に記憶させるようにしてもよい。これにより、車載電子制御装置１の制御に用いる学習値を第１記憶領域ＭＲ１に記憶しておけば、車載電子制御装置１の制御動作中に予期しないＣＰＵリセットが発生しても、所定走行距離を走行した後または所定時間が経過した後の学習値がフラッシュＲＯＭ５に記憶されているので、車載電子制御装置１の電源オン時の値に戻らない。このため、ＣＰＵリセットが発生するまでに行われた制御学習が無駄になる状況の発生を抑制することができる。なお、上記の学習値とは演算学習値のことである。
【００９１】
また、「第１記憶領域ＭＲ３に記憶されたデータが、予め設定された記憶判定時間継続して変更されなかったとき」に、ＲＡＭ４に記憶されたデータをフラッシュＲＯＭ５に記憶させるようにしてもよい。これにより、ＲＡＭ４上で第１記憶領域ＭＲ３が頻繁に更新されている間はフラッシュＲＯＭ５に記憶されないため、フラッシュＲＯＭ５への記憶頻度を低減することができ、フラッシュＲＯＭ５の寿命を延長させることができる。また、車載電子制御装置１の制御に用いる学習値を第１記憶領域ＭＲ３に記憶しておけば、記憶判定時間継続して学習値が変更されなかったことにより学習値がフラッシュＲＯＭ５に記憶された後に予期しないＣＰＵリセットが発生しても、車載電子制御装置１の電源オン時の値に戻らない。このため、ＣＰＵリセットが発生するまでに行われた制御学習が無駄になる状況の発生を抑制することができる。
【００９２】
また、上記の「車両が予め設定された所定走行距離を走行したとき」、または「予め設定された所定時間が経過したとき」などの条件が成立した場合であっても、車載電子制御装置１の制御処理の負荷が高いときには、第１記憶領域ＭＲ３のフラッシュＲＯＭ５への記憶を禁止するようにしてもよい。
【００９３】
これにより、車載電子制御装置１の制御処理の負荷が高いときに、車載電子制御装置１の制御処理速度をさらに低下させてしまうことを抑制できる。
ところで、車両の盗難防止のため、イモビライザの認証が正常に実施されずにエンジンが始動された回数を不揮発性メモリに記憶する必要がある。
【００９４】
このため、上記実施形態においては、永久故障コードをフラッシュＲＯＭ５に即時記憶するものを示したが、車両のイモビライザの認証が正常に実施されなかったことを示す情報（以下、イモビ異常情報という）をフラッシュＲＯＭ５に即時記憶するようにしてもよい。これにより、車両のイモビライザの認証が正常に実施されなかった状況が発生する毎に、イモビ異常情報が不揮発性メモリに記憶される。すなわち、このイモビ異常情報の個数により、イモビライザの認証が正常に実施されずにエンジンが始動された回数（以下、イモビ認証異常回数という）を確認することができる。
【００９５】
図７は、イモビ異常情報をフラッシュＲＯＭ５に即時記憶する処理を示すフローチャートである。図７は、図２のＳ６０〜Ｓ９０の処理について、永久故障コードをイモビ異常情報に置き換えたものに相当する。なお、永久故障コード記憶領域ＭＲＰの代わりにイモビ異常情報記憶領域ＭＲＩが設けられる。
【００９６】
図７に示すように、Ｓ５１０にて、車両のイモビライザの認証が正常に実施されたか否かを判断し、車両のイモビライザの認証が正常に実施されなかった場合には（Ｓ５１０：ＮＯ）、Ｓ５２０にて、第２記憶領域ＭＲ２内に記憶可能な領域が存在するか否かを判断する。
【００９７】
ここで、第２記憶領域ＭＲ２内に記憶可能な領域が存在する場合には（Ｓ５２０：ＹＥＳ）、Ｓ５３０にて、イモビ異常情報を、ＲＡＭ４の第１記憶領域ＭＲ３内に設けられたイモビ異常情報記憶領域ＭＲＩと、選択されたブロックＢＬの第２記憶領域ＭＲ２に記憶する。一方、第２記憶領域ＭＲ２内に記憶可能な領域が存在しない場合には（Ｓ５２０：ＮＯ）、Ｓ５４０にて、エンジンＥＧの始動を禁止する。
【００９８】
すなわち、例えば５個のイモビ異常情報が記憶されたら車両のエンジン始動を禁止するシステムの場合に、５個分のイモビ異常情報を記憶できるだけの領域を第２記憶領域ＭＲ２に設ければよく、第２記憶領域ＭＲ２の記憶容量を必要最小限に抑えることができる。なお、Ｓ５４０の処理は本発明におけるエンジン始動禁止手段である。
【００９９】
また、故障診断装置ＤＴから永久故障コード消去指令を受信した場合に、ＲＡＭ４と、フラッシュＲＯＭ５の第１記憶領域ＭＲ１および第２記憶領域ＭＲ２に記憶されている永久故障コードを消去しないようにするとよい。これにより、第２記憶領域ＭＲ２に記憶できる永久故障コード数を超えて故障が発生してＲＡＭ４のみに記憶された永久故障コードは、車載電子制御装置１のシャットダウン時に、フラッシュＲＯＭ５に記憶される。
【０１００】
このため、車載電子制御装置１のシャットダウン前に車載バッテリを外されると、ＲＡＭ４のみに記憶された永久故障コードは消えてしまう。しかし、ＲＡＭ４のみに記憶された永久故障コードは、故障診断装置ＤＴに送信されないので、外部からは「車載バッテリが外されたために永久故障コードが消えた」と判断されない。
【符号の説明】
【０１０１】
１…車載電子制御装置、２…ＣＰＵ、３…ＲＯＭ、４…ＲＡＭ、５…フラッシュＲＯＭ、６…入出力回路、７…通信回路、８…バスライン、２１…通信線、２２…ＭＩＬ、ＢＬ（ＢＬ−Ａ，ＢＬ−Ｂ）…ブロック、ＭＲ１（ＭＲ１−Ａ，ＭＲ１−Ｂ）…第１記憶領域、ＭＲ２（ＭＲ２−Ａ，ＭＲ２−Ｂ）、ＭＲ３…第１記憶領域、ＭＲＰ…永久故障コード記憶領域
【図１】
2011100416.tif 000003
【図２】
2011100416.tif 000004
【図３】
2011100416.tif 000005
【図４】
2011100416.tif 000006
【図５】
2011100416.tif 000007
【図６】
2011100416.tif 000008
【図７】
2011100416.tif 000009
【図８】
2011100416.tif 000010