(57)【特許請求の範囲】
【請求項１】
電気的に書き換え可能な不揮発性メモリ（１１）と、
所定の起動条件が成立すると動作を開始し、所定の動作停止条件が成立すると動作を停止する処理部（３）と、
を備える電子制御装置（１）において、
前記不揮発性メモリには、当該不揮発性メモリへの書き込み実施条件が異なる複数のデータの各々を記憶する複数のデータ記憶領域（Ｍ０〜Ｍ４）と、当該不揮発性メモリの最大書き込み回数を記憶する回数記憶領域（Ｍｍ）と、が設けられており、
前記処理部は、
前記複数のデータの何れかについての書き込み実施条件が成立すると、その書き込み実施条件が成立したデータを、前記不揮発性メモリの前記データ記憶領域のうち、そのデータに対応するデータ記憶領域に書き込む書き込み手段（Ｓ１２０）と、
当該処理部が動作を開始してから動作を停止するまでの動作期間毎に、前記書き込み手段により前記不揮発性メモリに書き込まれたデータの各々について、前記不揮発性メモリへの書き込み回数をカウントするカウント手段（Ｓ１３０〜Ｓ１５０）と、
前記動作停止条件が成立すると、当該処理部が動作を停止する前に、当該処理部の今回の動作期間において前記カウント手段によりカウントされた書き込み回数のうちの最大値と、前記不揮発性メモリの前記回数記憶領域に記憶されている値とを加算した値を、前記最大書き込み回数として前記回数記憶領域に更新して書き込む更新手段（Ｓ２２０）と、
前記回数記憶領域に記憶されている前記最大書き込み回数に基づいて、前記不揮発性メモリの寿命が来たか否か判定する判定手段（Ｓ１７０〜Ｓ２００）と、
を備えることを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記判定手段は、前記処理部の動作中において定期的に、前記カウント手段によりカウントされた書き込み回数のうちの最大値と、前記回数記憶領域に記憶されている前記最大書き込み回数とを加算して、その加算した値が規定値を超えたか否かを判定し、前記加算した値が前記規定値を超えたなら、前記不揮発性メモリの寿命が来たと判定すること、
を特徴とする電子制御装置。
【請求項３】
請求項１又は請求項２に記載の電子制御装置において、
前記カウント手段は、前記書き込み回数をＲＡＭ（９）上でカウントすること、
を特徴とする電子制御装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の電子制御装置において、
前記カウント手段は、前記複数のデータのうち、特定のデータについては、前記書き込み回数をカウントする対象から除外すること、
を特徴とする電子制御装置。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の電子制御装置において、
所定の電源供給停止条件が成立すると、前記処理部への電源電圧の供給が停止して前記処理部が動作を停止するようになっており、
前記動作停止条件は、前記電源供給停止条件であること、
を特徴とする電子制御装置。
【請求項６】
請求項１ないし請求項４の何れか１項に記載の電子制御装置において、
前記処理部は、所定のスリープ条件が成立すると電源電圧が供給されたまま動作を停止するスリープ状態に移行するようになっており、
前記動作停止条件は、前記スリープ条件であること、
を特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
電気的に書き換え可能な不揮発性メモリ（以下、書換可能不揮発性メモリともいう）を備えた電子制御装置が知られている。この種の電子制御装置では、例えば動作パラメータや障害履歴情報など、動作停止後も継続して保存する必要のある保存対象データを、書換可能不揮発性メモリに書き込むことで保存する。また、書換可能不揮発性メモリには、書き込み回数上限値が定められている。そして、書換可能不揮発性メモリの寿命を判断する方法として、特許文献１に記載の技術がある。
【０００３】
特許文献１の技術では、書換可能不揮発性メモリにおいて、書き込むデータをレコード単位に分割し、分割したレコードに１対１に対応するように書き込み回数記録領域を設ける。そして、書換可能不揮発性メモリ内のレコードを書き換える時に、そのレコードに対応した書き込み回数記録領域に保持される書き込み回数を＋１加算、更新して、全レコードに対応する書き込み回数記録領域の最大値と、書き込み回数上限値とを比較する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−２７６３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１の技術では、レコード単位のデータの各々について、書換可能不揮発性メモリに書き込み回数記録領域を設けなければならない。このため、書換可能不揮発性メモリに必要な記憶容量（メモリサイズ）が大きくなってしまう。逆に、書換可能不揮発性メモリの記憶容量を大きくすることができないのであれば、保存対象データを記憶するためのデータ記憶領域を大幅に減らさなければならなくなる。つまり、書き込み回数を記憶するための領域が、データ記憶領域を圧迫してしまう。
【０００６】
そこで、本発明は、書換可能不揮発性メモリを備える電子制御装置において、書換可能不揮発性メモリの記憶領域のうち、書き込み回数を記憶するための記憶領域を小さくしつつ、その書換可能不揮発性メモリの寿命判定を行うことができるようにすること、を目的としている。
【課題を解決するための手段】
【０００７】
第１発明の電子制御装置は、電気的に書き換え可能な不揮発性メモリ（書換可能不揮発性メモリ）と、処理部と、を備える。
前記不揮発性メモリには、当該不揮発性メモリへの書き込み実施条件が異なる複数のデータの各々を記憶する複数のデータ記憶領域と、当該不揮発性メモリの最大書き込み回数を記憶する回数記憶領域と、が設けられている。
【０００８】
処理部は、所定の起動条件が成立すると動作を開始し、所定の動作停止条件が成立すると動作を停止する。そして、処理部は、書き込み手段と、カウント手段と、更新手段と、判定手段と、を備える。
【０００９】
書き込み手段は、前記複数のデータの何れかについての書き込み実施条件が成立すると、その書き込み実施条件が成立したデータを、前記不揮発性メモリの前記データ記憶領域のうち、そのデータに対応するデータ記憶領域に書き込む。
【００１０】
カウント手段は、当該処理部が動作を開始してから動作を停止するまでの動作期間毎に、書き込み手段により前記不揮発性メモリに書き込まれたデータの各々について、前記不揮発性メモリへの書き込み回数をカウントする。
【００１１】
更新手段は、前記動作停止条件が成立すると、当該処理部が動作を停止する前に、当該処理部の今回の動作期間においてカウント手段によりカウントされた書き込み回数のうちの最大値と、前記不揮発性メモリの回数記憶領域に記憶されている値とを加算した値を、最大書き込み回数として前記回数記憶領域に更新して書き込む。
【００１２】
判定手段は、前記回数記憶領域に記憶されている最大書き込み回数に基づいて、前記不揮発性メモリの寿命が来たか否かを判定する。
この電子制御装置では、書き込み実施条件が異なる複数のデータのうち、処理部の動作期間毎に書き込み回数が最大となったデータの書き込み回数を、累積加算した値が、前記不揮発性メモリの回数記憶領域に最大書き込み回数として記憶される。
【００１３】
処理部の動作期間毎に書き込み回数が最大となるデータと、電子制御装置が完成してからのトータルの書き込み回数が最大となるデータは、結果的に同じになると考えられる。このため、トータルの書き込み回数が最大となるデータの書き込み回数を累積加算して、前記不揮発性メモリの回数記憶領域に最大書き込み回数として記憶することができる。そして、その最大書き込み回数に基づいて、前記不揮発性メモリの寿命が来たか否かを判定することができる。
【００１４】
この電子制御装置によれば、書換可能不揮発性メモリの記憶領域のうち、書き込み回数を記憶するための記憶領域としては、最大書き込み回数を１つ記憶する分の記憶領域で済む。よって、書換可能不揮発性メモリの記憶領域のうち、書き込み回数を記憶するための記憶領域を小さくしつつ、その書換可能不揮発性メモリの寿命判定を行うことができる。
【００１５】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態の電子制御装置（ＥＣＵ）の構成を表す構成図である。
【図２】フラッシュメモリに記憶するデータとＩＤとの組み合わせ、及びフラッシュメモリの記憶領域を表す図である。
【図３】第１実施形態の書き込み制御処理を表すフローチャートである。
【図４】ＲＡＭに一時記憶する書き込み回数の例を表す図である。
【図５】第２実施形態の書き込み制御処理を表すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、本発明が適用された実施形態の電子制御装置について説明する。
［第１実施形態］
図１に示す第１実施形態の電子制御装置（以下、ＥＣＵという）１は、例えば車両のエンジンを制御するＥＣＵであり、当該ＥＣＵ１の動作を司る処理部としてのマイクロコンピュータ（以下、マイコンという）３と、電源回路４とを備える。尚、ＥＣＵは、「Electronic Control Unit」の略である。
【００１８】
そして、マイコン３は、ＣＰＵ（Central Processing Unit）５と、ＣＰＵ５によって実行されるプログラムが記憶されたＲＯＭ（Read Only Memory）７と、ＣＰＵ５による演算結果が記憶されるＲＡＭ９（Random Access Memory）と、フラッシュメモリ１１と、を備える。フラッシュメモリ１１は、電気的に書き換え可能な不揮発性メモリ（書換可能不揮発性メモリ）である。尚、フラッシュメモリ１１は、マイコン３の外部に設けられていても良い。また、書換可能不揮発性メモリとしては、例えばＥＥＰＲＯＭなど、他の種類のメモリでも良い。
【００１９】
電源回路４は、ＥＣＵ１に供給される動作用電源としてのバッテリ電圧（車載バッテリの電圧）から、一定の電源電圧（例えば５Ｖ）を生成して出力する。そして、マイコン３は、その電源回路４からの電源電圧によって動作する。
【００２０】
ＥＣＵ１には、エンジンを制御するために用いる情報を検出するためのセンサとして、クランク角センサ１３、吸気量センサ１５、水温センサ１７などが接続されている。また、ＥＣＵ１には、駆動対象としてのインジェクタ１９が接続されている。
【００２１】
各センサ１３〜１７からの信号は、図示しない信号入力回路を介してマイコン３に入力される。マイコン３では、ＣＰＵ５が、ＲＯＭ７内のプログラムを実行することにより、各センサ１３〜１７からの信号に基づいてエンジンに対する燃料噴射量を演算し、その演算結果に基づいてインジェクタ１９の駆動を制御する。尚、図示を省略しているが、ＥＣＵ１には、マイコン３からの噴射指令信号に応じてインジェクタ１９に駆動信号を出力する駆動回路も備えられている。
【００２２】
本第１実施形態では、車両の電源スイッチに相当するイグニッションスイッチ（図示省略）がオンされると、ＥＣＵ１に、給電用のメインリレー（図示省略）を介して、動作用電源としてのバッテリ電圧が供給される。そして、ＥＣＵ１に動作用電源としてのバッテリ電圧が供給されると、電源回路４から電源電圧が出力されてマイコン３が起動する（つまり、動作を開始する）。マイコン３が動作することは、ＥＣＵ１が動作することに等しい。また、メインリレーは、イグニッションスイッチのオンに伴って一旦オンすると、イグニッションスイッチがオフされてからもマイコン３の制御によってオンし続けるようになっている。そして、マイコン３は、イグニッションスイッチがオフされたことを検知すると、予め定められた終了処理（いわゆるシャットダウン処理）を実行し、その終了処理の最後でメインリレーをオフさせる。すると、電源回路４からマイコン３への電源電圧の供給が停止して、マイコン３は動作を停止する。マイコン３が動作を停止することは、ＥＣＵ１が動作を停止することに等しい。尚、本第１実施形態では、イグニッションスイッチのオンが、マイコン３の起動条件に相当し、イグニッションスイッチのオフが、マイコン３の動作停止条件及び電源供給停止条件に相当している。
【００２３】
次に、フラッシュメモリ１１の記憶領域及び記憶内容について図２を用い説明する。
フラッシュメモリ１１には、ＥＣＵ１の動作停止後（換言すれば、マイコン３の動作停止後）も継続して保存する必要のあるデータが記憶される。
【００２４】
そして、図２に示すように、フラッシュメモリ１１に記憶させるデータ（以下、保存対象データともいう）は、フラッシュメモリ１１への記憶タイミング別に分類されている。この例では、記憶タイミングとして、「終了処理」と、「ダイアグ発生時」と、「常時」との、３つのタイミングがある。
【００２５】
「終了処理」の記憶タイミングは、前述の終了処理が実行されるタイミングであり、イグニッションスイッチがオンからオフされたというタイミングである。
このため、記憶タイミングが「終了処理」であるデータ（図２の例では、データＡ〜データＣ）は、イグニッションスイッチがオンからオフされると、フラッシュメモリ１１に書き込まれるデータである。換言すると、記憶タイミングが「終了処理」であるデータは、イグニッションスイッチがオフされたということが、フラッシュメモリ１１への書き込み実施条件になっているデータである。
【００２６】
「ダイアグ発生時」の記憶タイミングは、予め定められた診断対象の異常が検出されたというタイミングである。尚、ダイアグとは、ダイアグノシス（診断）の略である。
このため、記憶タイミングが「ダイアグ発生時」であるデータ（図２の例では、データＤ〜データＫ）は、診断対象の異常が検出された場合に、その都度、フラッシュメモリ１１に書き込まれるデータである。換言すると、記憶タイミングが「ダイアグ発生時」であるデータは、診断対象の異常が検出されたということが、フラッシュメモリ１１への書き込み実施条件になっているデータである。
【００２７】
「常時」の記憶タイミングは、マイコン３の動作中に保存対象データのフラッシュメモリ１１への書き込み実施条件が成立した、というタイミングである。
このため、記憶タイミングが「常時」であるデータ（図２の例では、データＬ〜データＺ）は、マイコン３の動作中において、そのデータについて定められた書き込み実施条件が成立した場合に、その都度、フラッシュメモリ１１に書き込まれるデータである。
【００２８】
更に、図２に示すように、保存対象データの各々には、識別情報としてのＩＤが割り当てられている。そして、フラッシュメモリ１１への記憶タイミングが同じデータ（換言すれば、書き込み実施条件が同じデータ）には、同じＩＤが割り当てられている。
【００２９】
図２の例では、記憶タイミングが「終了処理」であるデータのＩＤは“０”であり、記憶タイミングが「ダイアグ発生時」であるデータのＩＤは“１”である。そして、記憶タイミングが「常時」であるデータには、“２”以降の番号のＩＤがそれぞれ割り当てられている。記憶タイミングが「常時」であるデータのうち、同じＩＤが割り当てられているデータは、フラッシュメモリ１１への書き込み実施条件が同じデータである。
【００３０】
また、ＩＤは、フラッシュメモリ１１における記憶場所情報としての役割も果たす。
そして、図２に示すように、フラッシュメモリ１１には、同じＩＤ毎のデータを記憶する複数のデータ記憶領域Ｍ０〜Ｍ４と、当該フラッシュメモリ１１の最大書き込み回数を記憶する回数記憶領域Ｍｍと、が設けられている。データ記憶領域Ｍ０〜Ｍ４は、書き込み実施条件が異なる複数のデータの各々（即ちＩＤ毎のデータ）を記憶する領域である。例えば、ＩＤが“０”であるデータは、データ記憶領域Ｍ０に書き込まれ、ＩＤが“１”であるデータは、データ記憶領域Ｍ１に書き込まれる。つまり、ＩＤが“ｎ”（ｎは０以上の整数であり、以下でも同様）であるデータは、“ｎ”というＩＤに対応するデータ記憶領域Ｍｎに書き込まれる。
【００３１】
尚、図２では、データ記憶領域として、５個のデータ記憶領域Ｍ０〜Ｍ４を例示しているが、データ記憶領域の数は５個未満でも６個以上でも良い。また、図２には、各記憶領域Ｍ０〜Ｍ４，Ｍｍのサイズを表すバイト数を記載しているが、その数値も一例である。また、図２の最下段に記載されたＩＤである“ｍ”は、最大書き込み回数に割り当てられたＩＤである。
【００３２】
次に、マイコン３が行う書き込み制御処理について、図３を用い説明する。尚、書き込み制御処理は、フラッシュメモリ１１にデータを書き込むと共に、フラッシュメモリ１１の最大書き込み回数をカウントして寿命判定を行うための処理である。また、マイコン３が行う処理は、実際には、ＣＰＵ５がＲＯＭ７内のプログラムを実行することで実現される。
【００３３】
〈概要の説明〉
フラッシュメモリ１１への記憶タイミングの発生頻度（換言すれば、書き込み実施条件の成立頻度）の違いにより、最大書き込み回数のカウントが必要なデータのＩＤは、予め絞り込むことができる。
【００３４】
本実施形態では、記憶タイミングの発生頻度が、「常時」＞「終了処理」＞「ダイアグ発生時」の順に多いものとする。
ここで、車両の一生（例えば保証年数、あるいは、車両の走行距離が保証距離に到達するまでの期間）における各記憶タイミングの発生回数を考えてみる。
【００３５】
前述したように、「ダイアグ発生時」の記憶タイミングは、診断対象の異常が検出されたタイミングであるため、そのタイミングの発生回数は、他の記憶タイミングの発生回数と比べると、格段に少ないと考えられる。診断対象の異常が頻繁に発生するとは考えられないからである。このため、記憶タイミングが「ダイアグ発生時」であるデータの書き込み回数は、最大書き込み回数をカウントする上では無視して除外することができる。
【００３６】
また、「終了処理」の記憶タイミングは、マイコン３の１回の動作期間につき１回だけ発生する。一方、「常時」の記憶タイミングは、マイコン３の１回の動作期間において複数回発生し得る。例えば、記憶タイミングが「常時」であるデータのうち、ＩＤが“２”であるデータ（図２の例では、データＬ〜データＲ）の書き込み実施条件は、所定の操作部に対する操作が行われたという条件である。また、ＩＤが“３”であるデータ（図２の例では、データＳ〜データＸ）の書き込み実施条件は、上記操作部とは別の操作部に対する操作が行われたという条件である。また、ＩＤが“４”であるデータ（図２の例では、データＹ，データＺ）の書き込み実施条件は、車両のエンジンを自動的に停止させるアイドリングストップが実施されたという条件である。よって、記憶タイミングが「常時」である各データの書き込み回数は、記憶タイミングが「終了処理」であるデータの書き込み回数よりも多くなると予想できる。このため、記憶タイミングが「終了処理」であるデータの書き込み回数も、最大書き込み回数をカウントする上では除外することができる。
【００３７】
以上のことから、マイコン３は、動作を開始してから動作を停止するまでの動作期間において、記憶タイミングが「常時」のデータ（即ち、ＩＤが“２”以上の番号であるデータ）を対象に、フラッシュメモリ１１への書き込み回数をカウントする。この動作期間における書き込み回数のカウントは、ＲＡＭ９上でＩＤ毎に行う。
【００３８】
尚、ＲＡＭ９上でカウントするとは、カウント対象値をＲＡＭ９に記憶して、そのＲＡＭ９に記憶しているカウント対象値を更新していくことである。また、以下の説明において、ＩＤ毎の書き込み回数とは、ＩＤ毎のデータの書き込み回数であり、換言すれば、ＩＤ毎のデータ記憶領域Ｍ０〜Ｍ４に対する書き込み回数である。
【００３９】
ＩＤ毎の書き込み回数をフラッシュメモリ１１に記憶させるように構成すると、フラッシュメモリ１１の記憶領域のうち、データ記憶領域として使用できる領域が減ってしまうため、ＩＤ毎の書き込み回数はＲＡＭ９に記憶させてカウントしている。本実施形態において、フラッシュメモリ１１に記憶する書き込み回数は、ただ１つの最大書き込み回数である。
【００４０】
そして、マイコン３は、動作停止条件が成立すると（この例では、イグニッションスイッチがオフされると）、今回の動作期間においてＲＡＭ９上でカウントされたＩＤ毎の書き込み回数のうちの最大値を用いて、フラッシュメモリ１１の回数記憶領域Ｍｍ内の最大書き込み回数を更新する。具体的には、ＲＡＭ９上でカウントされたＩＤ毎の書き込み回数のうちの最大値と、回数記憶領域Ｍｍに記憶されている値とを加算した値を、最大書き込み回数として回数記憶領域Ｍｍに更新して書き込む。
【００４１】
〈処理内容の説明〉
マイコン３は、図３の書き込み制御処理を例えば一定時間毎に行う。また、マイコン３は、イグニッションスイッチがオフされてから動作を停止するまで（この例ではメインリレーをオフさせるまで）の間に、図３の書き込み制御処理を少なくとも１回は実行する。
【００４２】
図３に示すように、マイコン３は、書き込み制御処理を開始すると、まずＳ１１０にて、何れかのデータについてのフラッシュメモリ１１への書き込み要求があるか否かを判定する。尚、マイコン３において、書き込み要求は、ＩＤ毎に発生してＲＡＭ９の所定領域に記憶される情報（例えばフラグ）である。そして、ＩＤが“ｎ”であるデータについての書き込み要求は、ＩＤが“ｎ”であるデータについての書き込み実施条件が成立すると、ＲＡＭ９の上記所定領域に記憶される。よって、マイコン３は、Ｓ１１０では、何れかのＩＤに対応する書き込み要求がＲＡＭ９の上記所定領域に記憶されているか否かを判定することとなる。
【００４３】
マイコン３は、Ｓ１１０にて、書き込み要求があると判定した場合には、Ｓ１２０に進み、あると判定した書き込み要求に対応するデータ（つまり、書き込み実施条件が成立したデータ）を、フラッシュメモリ１１に書き込む。詳しくは、マイコン３は、あると判定した書き込み要求に対応するデータを、フラッシュメモリ１１のデータ記憶領域Ｍ０〜Ｍ４のうち、そのデータに対応するデータ記憶領域に書き込む。例えば、あると判定した書き込み要求が、ＩＤが“２”のデータについての書き込み要求であれば、ＩＤが“２”のデータを、フラッシュメモリ１１のデータ記憶領域Ｍ２に書き込む。そして、マイコン３は、フラッシュメモリ１１への書き込みを完了したデータについての書き込み要求はＲＡＭ９から消去する。また、マイコン３は、複数の書き込み要求があった場合には、Ｓ１２０では、複数の書き込み要求のうちの１つを選択し、その選択した書き込み要求に対応するデータをフラッシュメモリ１１に書き込むと共に、その選択した書き込み要求をＲＡＭ９から消去する。
【００４４】
マイコン３は、次のＳ１３０にて、直前のＳ１２０でフラッシュメモリ１１に書き込んだデータの記憶タイミングが「常時」であるか否かを判定する。具体的には、フラッシュメモリ１１に書き込んだデータのＩＤが、“２”以上の番号であるか否かを判定する。そして、マイコン３は、書き込んだデータの記憶タイミングが「常時」であると判定した場合には、Ｓ１４０に進む。
【００４５】
マイコン３は、Ｓ１４０では、Ｓ１２０でフラッシュメモリ１１に書き込んだデータの書き込み回数（換言すれば、書き込んだデータのＩＤに対応する書き込み回数）をインクリメントする。
【００４６】
具体的に説明すると、ＲＡＭ９にはＩＤ毎の書き込み回数が記憶される。また、ＲＡＭ９に記憶されるＩＤ毎の書き込み回数は、マイコン３の動作開始直後に実行される処理によって０に初期化されるようになっている。そして、マイコン３は、Ｓ１４０では、ＲＡＭ９に記憶されているＩＤ毎の書き込み回数のうち、Ｓ１２０でフラッシュメモリ１１に書き込んだデータのＩＤに対応する書き込み回数を読み出して、その読み出した書き込み回数をインクリメントする。インクリメントの演算結果は、マイコン３の内部レジスタに格納される。
【００４７】
そして、マイコン３は、次のＳ１５０にて、Ｓ１４０でインクリメントした後の書き込み回数をＲＡＭ９に更新して記憶する。このため、Ｓ１２０でフラッシュメモリ１１に書き込んだデータのＩＤに対応する書き込み回数は、ＲＡＭ９上でカウント（インクリメント）されることとなる。
【００４８】
マイコン３は、上記Ｓ１５０の処理を行った後、Ｓ１６０に進む。
また、マイコン３は、上記Ｓ１３０にて、フラッシュメモリ１１に書き込んだデータの記憶タイミングが「常時」ではないと判定した場合には、Ｓ１４０，Ｓ１５０の処理を行うことなく、Ｓ１６０に進む。
【００４９】
マイコン３は、Ｓ１６０では、他の書き込み要求があるか否かを判定する。他の書き込み要求とは、ＲＡＭ９の上記所定領域に記憶されたものの、フラッシュメモリ１１への書き込みが未だ実施されていないデータについての書き込み要求である。そして、マイコン３は、Ｓ１６０にて、他の書き込み要求があると判定した場合には、Ｓ１１０に戻る。マイコン３は、この場合のＳ１１０では、書き込み要求があると判定して、Ｓ１２０以降の処理を再び行うこととなる。
【００５０】
また、マイコン３は、上記Ｓ１６０にて、他の書き込み要求がないと判定した場合には、Ｓ１７０に進む。また、マイコン３は、上記Ｓ１１０にて、書き込み要求がないと判定した場合にも、Ｓ１７０に進む。
【００５１】
マイコン３は、Ｓ１７０では、フラッシュメモリ１１の回数記憶領域Ｍｍから、最大書き込み回数を読み出してＲＡＭ９に記憶する。
そして、マイコン３は、次のＳ１８０にて、ＲＡＭ９に記憶されているＩＤ毎の書き込み回数のうちの最大値を選択する。
【００５２】
マイコン３は、次のＳ１９０にて、Ｓ１８０で選択した最大値を、Ｓ１７０でフラッシュメモリ１１から読み出した最大書き込み回数に加算することにより、最大書き込み回数をＲＡＭ９上で更新する。
【００５３】
そして、マイコン３は、次のＳ２００にて、Ｓ１９０で更新した最大書き込み回数が、フラッシュメモリ１１の書き込み回数上限値を超えているか否かを判定する。書き込み回数上限値は、フラッシュメモリ１１について定められている規格値のうち、データの保持能力が保証される書き込み回数の上限値である。
【００５４】
マイコン３は、上記Ｓ２００にて、更新後の最大書き込み回数が書き込み回数上限値を超えていないと判定した場合には、Ｓ２１０に進む。
そして、マイコン３は、Ｓ２１０では、終了処理が発生したか否かを判定する。
【００５５】
終了処理が発生するとは、終了処理の実施条件が成立したということであり、この例では、イグニッションスイッチがオフされたということである。また、Ｓ２１０にて、終了処理が発生したと判定される場合には、今回の当該書き込み制御処理が開始される前に、記憶タイミングが「終了処理」であるデータ（ＩＤが“０”であるデータ）についての書き込み要求が発生している。このため、上記Ｓ１２０により、ＩＤが“０”であるデータのフラッシュメモリ１１への書き込みが実施される。
【００５６】
マイコン３は、上記Ｓ２１０にて、終了処理が発生していないと判定した場合には、そのまま当該書き込み制御処理を終了するが、上記Ｓ２１０にて、終了処理が発生したと判定した場合には、Ｓ２２０に進む。
【００５７】
マイコン３は、Ｓ２２０では、Ｓ１９０で更新した最大書き込み回数を、フラッシュメモリ１１の回数記憶領域Ｍｍに更新して書き込む。つまり、回数記憶領域Ｍｍに記憶されている最大書き込み回数を、Ｓ１９０で更新した最大書き込み回数に書き換える。
【００５８】
そして、マイコン３は、Ｓ２２０の処理を行った後、当該書き込み制御処理を終了する。その後、マイコン３は、終了処理を実行することによりメインリレーをオフさせて、動作を停止することとなる。
【００５９】
また、マイコン３は、上記Ｓ２００にて、Ｓ１９０で更新した最大書き込み回数が書き込み回数上限値を超えたと判定した場合には、フラッシュメモリ１１の寿命が来たと判断して、Ｓ２３０に進む。
【００６０】
そして、マイコン３は、Ｓ２３０では、フラッシュメモリ１１の寿命が来たという異常を車両のユーザ（ＥＣＵ１のユーザでもある）に知らせるための異常報知処理を行い、その後、当該書き込み制御処理を終了する。異常報知処理としては、例えば、フラッシュメモリ１１の寿命が来たことを示すメッセージを車内のディスプレイに表示する処理や、フラッシュメモリ１１の寿命が来たことを示す警告灯を点灯させる処理等であるが、他の処理でも良い。このような異常報知処理が行われることにより、車両のユーザは、車両の構成部品（即ちＥＣＵ１）の修理又は交換の必要性を知ることができる。
【００６１】
マイコン３は、図３の書き込み制御処理を実行することにより、下記の各手段として機能している。
・複数のデータ（保存対象データ）の何れかについての書き込み実施条件が成立すると（Ｓ１１０：ＹＥＳ）、その書き込み実施条件が成立したデータを、フラッシュメモリ１１のデータ記憶領域Ｍ０〜Ｍ４のうち、そのデータのＩＤに対応したデータ記憶領域に書き込む手段（Ｓ１２０）。
【００６２】
・マイコン３の動作期間毎に、フラッシュメモリ１１に書き込まれたデータのうち、記憶タイミングが「常時」であるデータの各々について、フラッシュメモリ１１への書き込み回数をＲＡＭ９上でカウントする手段（Ｓ１３０〜Ｓ１５０）。
【００６３】
・動作停止条件が成立すると（Ｓ２１０：ＹＥＳ）、当該マイコン３が動作を停止する前に、今回の動作期間においてＲＡＭ９上でカウントされた各データの書き込み回数のうちの最大値と、フラッシュメモリ１１の回数記憶領域Ｍｍに記憶されている値とを加算した値を、最大書き込み回数として回数記憶領域Ｍｍに更新して書き込む手段（Ｓ２２０）。
【００６４】
・フラッシュメモリ１１の回数記憶領域Ｍｍに記憶されている最大書き込み回数に基づいて、フラッシュメモリ１１の寿命が来たか否か判定する手段（Ｓ１７０〜Ｓ２００）。
以上のようなＥＣＵ１では、書き込み実施条件が異なる複数のデータのうち、マイコン３の動作期間毎に書き込み回数が最大となったデータの書き込み回数が、累積加算される。そして、その累積加算値がフラッシュメモリ１１の回数記憶領域Ｍｍに最大書き込み回数として記憶される。
【００６５】
例えば図４に示すように、マイコン３の１回の動作期間において、書き込み回数のカウント対象となったデータのうち、ＩＤが“２”であるデータの書き込み回数が２５となり、その２５が、各データの書き込み回数のうちの最大値であったとする。この場合、フラッシュメモリ１１の回数記憶領域Ｍｍに記憶される最大書き込み回数を更新することについて、２５以外の書き込み回数は無視される。つまり、マイコン３が動作を終了する際に、フラッシュメモリ１１の回数記憶領域Ｍｍに記憶される最大書き込み回数は、今回の最大値である上記２５だけ増加されることとなる。
【００６６】
マイコン３の動作期間毎に書き込み回数が最大となるデータと、ＥＣＵ１が完成してからのトータルの書き込み回数が最大となるデータは、結果的に同じになると考えられる。このため、トータルの書き込み回数が最大となるデータの書き込み回数を動的に選択して累積加算し、その累積加算値をフラッシュメモリ１１の回数記憶領域Ｍｍに最大書き込み回数として記憶することができる。そして、その最大書き込み回数に基づいて、フラッシュメモリ１１の寿命が来たか否かを判定することができる。
【００６７】
また例えば、ある回の動作期間では、ＩＤが“２”であるデータの書き込み回数が最大になり、別の回の動作期間では、ＩＤが“３”であるデータの書き込み回数が最大になった、というように、書き込み回数が最大となるデータが、マイコン３の動作期間毎の異なったとする。そのような場合でも、書き込み回数が最大となった各データの書き込み回数の差は小さいと考えられる。よって、回数記憶領域Ｍｍに記憶される最大書き込み回数の真値からの誤差は許容できる程度になる。
【００６８】
本実施形態のＥＣＵ１によれば、フラッシュメモリ１１の記憶領域のうち、書き込み回数を記憶するための記憶領域としては、最大書き込み回数を１つ記憶する分の記憶領域で済む。
【００６９】
比較例として、ＩＤ毎の書き込み回数をフラッシュメモリ１１に記憶させるように構成したとする。その場合、例えば、書き込み回数の記憶領域がそれぞれ４バイト（ｂｙｔｅ）で、ＩＤの数が１０００個であるとすると、書き込み回数の記憶領域だけで４キロバイトが必要となる。フラッシュメモリ１１のサイズが３２キロバイトであるとすると、その４キロバイトは全体の１２．５％にまで及ぶ大きさである。
【００７０】
これに対して、本実施形態のＥＣＵ１によれば、フラッシュメモリ１１には、書き込み回数として、最大書き込み回数を１つ記憶するだけで済むため、フラッシュメモリ１１に記憶可能なデータ量を大きくしつつ、フラッシュメモリ１１の寿命判定を行うことができる。
【００７１】
また、マイコン３は、動作中において、定期的に（具体的には、図３の書き込み制御処理を行う毎に）、ＲＡＭ９上でカウントしているＩＤ毎の書き込み回数のうちの最大値と、回数記憶領域Ｍｍに記憶されている最大書き込み回数とを加算する（Ｓ１７０〜Ｓ１９０）。更に、その加算した値が書き込み回数上限値（規定値に相当）を超えたか否かを判定する（Ｓ２００）。そして、加算した値が書き込み回数上限値を超えたなら（Ｓ２００：ＹＥＳ）、フラッシュメモリ１１の寿命が来たと判断している。
【００７２】
このため、マイコン３の動作中において、フラッシュメモリ１１の寿命が来たことを、早期に検出することができる。
比較例として、図３の書き込み制御処理では、Ｓ２００の判定処理を、Ｓ２２０の後に実施しても良いが、そのようにするよりも、フラッシュメモリ１１の寿命の到来を早く検知することができる。
【００７３】
また、マイコン３は、フラッシュメモリ１１の寿命が来たと判断した場合には（Ｓ２００：ＹＥＳ）、前述の異常報知処理（Ｓ２３０）を行うため、車両のユーザに、ＥＣＵ１の修理又は交換を促すことができる。
【００７４】
また、前述した通り、マイコン３はＩＤ毎の書き込み回数をＲＡＭ９上でカウントするため、ＩＤ毎の書き込み回数を記憶するための記憶領域を、フラッシュメモリ１１に確保する必要がない。
【００７５】
また、マイコン３は、保存対象データのうち、記憶タイミングが「ダイアグ発生時」と「終了処理」との何れかであるデータ（特定のデータに相当）については、書き込み回数をカウントする対象から除外している（Ｓ１３０：ＮＯ）。このため、書き込み回数をカウントするための処理負荷及びリソースを低減することができる。
【００７６】
また、マイコン３は、イグニッションスイッチがオフされてから、当該マイコン３への電源電圧の供給が停止するまでの間に、回数記憶領域Ｍｍ内の最大書き込み回数を更新する。このため、マイコン３が動作を停止する直前に回数記憶領域Ｍｍ内の最大書き込み回数を確実に更新することができる。
【００７７】
［第２実施形態］
次に、第２実施形態のＥＣＵについて説明するが、ＥＣＵの符号としては、第１実施形態と同じ“１”を用いる。また、第１実施形態と同様の構成要素や処理についても、第１実施形態と同じ符号を用いる。
【００７８】
第２実施形態のＥＣＵ１は、第１実施形態のＥＣＵ１と比較すると、下記《１》〜《５》の点が異なる。
《１》ＥＣＵ１にはバッテリ電圧が常時供給されており、電源回路４からマイコン３へも電源電圧が常時供給されている。
【００７９】
《２》マイコン３は、所定のスリープ条件が成立すると電源電圧が供給されたまま動作を停止するスリープ状態（低消費電力モード）に移行する。また、マイコン３は、スリープ状態の場合に、所定のウェイクアップ条件が成立すると、ウェイクアップして動作を開始する（つまり、通常動作状態になる）。スリープ条件としては、例えば、ＥＣＵ１の外部からマイコン３に入力される全てのセンサ信号や通信信号が所定時間以上継続して非アクティブレベルである、といった条件が考えられる。また、ウェイクアップ条件としては、例えば、ＥＣＵ１の外部からマイコン３に入力されるセンサ信号や通信信号のうちの何れかがアクティブレベルになった、という条件が考えられる。
【００８０】
《３》ＲＡＭ９に記憶されるＩＤ毎の書き込み回数は、マイコン３のウェイクアップ直後に実行される処理によって０に初期化される。
《４》マイコン３は第１実施形態で述べた終了処理を行わないため、記憶タイミングが「終了処理」であるデータはない。尚、スリープ条件が成立するとフラッシュメモリ１１に書き込まれるデータ（換言すれば、スリープ条件の成立が書き込み実施条件になっているデータ）があっても良い。
【００８１】
《５》マイコン３は、動作中においては、図３の書き込み制御処理に代えて、図５の書き込み制御処理を一定時間毎に実行する。また、マイコン３は、スリープ条件が成立してからスリープ状態になるまでの間に、図５の書き込み制御処理を少なくとも１回は実行する。
【００８２】
図５の書き込み制御処理は、図３の書き込み制御処理と比較すると、Ｓ２１０に代えて、Ｓ２１５が設けられている。
マイコン３は、Ｓ２１５では、スリープが発生したか否かを判定する。スリープが発生するとは、スリープ条件が成立したということである。そして、マイコン３は、Ｓ２１５にて、スリープが発生していないと判定した場合には、そのまま当該書き込み制御処理を終了する。
【００８３】
また、マイコン３は、上記Ｓ２１５にて、スリープが発生したと判定した場合には、Ｓ２２０の処理を行った後、当該書き込み制御処理を終了する。その後、マイコン３は、スリープ状態になる。
【００８４】
つまり、第２実施形態において、マイコン３は、スリープ条件が成立すると、スリープ状態になるまでの間に、フラッシュメモリ１１の回数記憶領域Ｍｍ内の最大書き込み回数を更新している。そして、この第２実施形態のＥＣＵ１によっても、第１実施形態のＥＣＵ１について述べた効果と同様の効果が得られる。尚、第２実施形態では、ウェイクアップ条件がマイコン３の起動条件に相当し、スリープ条件がマイコン３の動作停止条件に相当している。
【００８５】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、前述の数値も一例であり他の値でも良い。
例えば、ＥＣＵ１の制御対象は、車両のエンジンに限らず、トランスミッションや発電装置（オルタネータ）等でも良い。また、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述したＥＣＵの他、当該ＥＣＵを構成要素とするシステム、当該ＥＣＵとしてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、書換可能不揮発性メモリの寿命判定方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００８６】
１…ＥＣＵ（電子制御装置）、３…マイコン（マイクロコンピュータ）、１１…フラッシュメモリ、Ｍ０〜Ｍ４…データ記憶領域、Ｍｍ…回数記憶領域
【図１】
0006376006.tif 000002
【図２】
0006376006.tif 000003
【図３】
0006376006.tif 000004
【図４】
0006376006.tif 000005
【図５】
0006376006.tif 000006