(57)【特許請求の範囲】
【請求項１】
揮発性メモリと、フラッシュメモリと、前記揮発性メモリに保存されているバックアップデータを所定条件の成立をトリガとして前記フラッシュメモリに保存するメモリ制御部とを備える電子制御装置であって、
前記メモリ制御部は、電源投入時において、前記フラッシュメモリの消去単位ブロックの内、データが全く保存されていない消去単位ブロックをブランクブロックとして特定し、前記ブランクブロックの１つ先の消去単位ブロックを前記消去ブロックとして特定すると共に、前記ブランクブロックの１つ前の消去単位ブロックを前記最新ブロックとして特定し、前記最新ブロックとして特定した消去単位ブロックにデータが保存されていない領域が一部でも存在する場合には、最初に特定した前記ブランクブロックの１つ前の消去単位ブロックを前記消去ブロック及びブランクブロックとして改めて特定すると共に、最初に特定した前記ブランクブロックの２つ前の消去単位ブロックを前記最新ブロックとして改めて特定することを特徴とする電子制御装置。
【請求項２】
前記メモリ制御部は、前記最新ブロックとして特定した消去単位ブロックに保存されているデータを読み出して前記揮発性メモリに保存することを特徴とする請求項１に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
近年の車載ＥＣＵ（Electronic Control Unit）は、イグニション・オン期間中に一定周期で取得した車両情報をバックアップデータとしてＲＡＭ（Random Access Memory）等の揮発性メモリに上書き保存しておき、所定条件の成立をトリガとして、揮発性メモリに保存されているバックアップデータをフラッシュメモリ等の不揮発性メモリに保存するバックアップ機能を備えている。
【０００３】
例えば下記特許文献１には、フラッシュメモリをバックアップ用の不揮発性メモリとして備える車載ＥＣＵにおいて、フラッシュメモリの記憶領域に常に消去済み領域を確保しておき、ＲＡＭに保存されているバックアップデータをフラッシュメモリに保存する際には、消去済み領域の先頭アドレスから順番にバックアップデータの書込みを行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１１３５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１の技術では、例えばフラッシュメモリのデータ消去中或いはデータ書込み中にＣＰＵ(Central Processing Unit)がリセットされると、フラッシュメモリのデータが不定となるため、故障を報知するための信号を出力する機能をＣＰＵに持たせる必要があった（文献中の段落００３５参照）。
【０００６】
また、従来では、バックアップデータの確からしさを、それらバックアップデータのＳＵＭ値を用いて判断していたが、フラッシュメモリのデータ消去中或いはデータ書込み中にＣＰＵがリセットされると、正確なＳＵＭ値が得られなくなり、バックアップデータの確からしさを判断できなくなる可能性がある。
【０００７】
本発明は上述した事情に鑑みてなされたものであり、フラッシュメモリのデータ消去中或いはデータ書込み中に、フラッシュメモリのデータ消去動作或いは書込み動作を中断させるような事象が発生した場合でも、適切なバックアップ動作を継続可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明では、電子制御装置に係る第１の解決手段として、揮発性メモリと、フラッシュメモリと、前記揮発性メモリに保存されているバックアップデータを所定条件の成立をトリガとして前記フラッシュメモリに保存するメモリ制御部とを備える電子制御装置であって、前記メモリ制御部は、電源投入時において、前記フラッシュメモリの消去単位ブロックの内、データが全く保存されていない消去単位ブロックをブランクブロックとして特定し、前記ブランクブロックを基準として消去すべき消去単位ブロックを消去ブロックとして特定すると共に最新データが保存されている消去単位ブロックを最新ブロックとして特定することを特徴とする。
【０００９】
また、本発明では、電子制御装置に係る第２の解決手段として、上記第１の解決手段において、前記メモリ制御部は、前記ブランクブロックの１つ先の消去単位ブロックを前記消去ブロックとして特定すると共に、前記ブランクブロックの１つ前の消去単位ブロックを前記最新ブロックとして特定することを特徴とする。
【００１０】
また、本発明では、電子制御装置に係る第３の解決手段として、上記第２の解決手段において、前記メモリ制御部は、前記最新ブロックとして特定した消去単位ブロックにデータが保存されていない領域が一部でも存在する場合、最初に特定した前記ブランクブロックの１つ前の消去単位ブロックを前記消去ブロック及びブランクブロックとして改めて特定すると共に、最初に特定した前記ブランクブロックの２つ前の消去単位ブロックを前記最新ブロックとして改めて特定することを特徴とする。
【００１１】
また、本発明では、電子制御装置に係る第４の解決手段として、上記第２または第３の解決手段において、前記メモリ制御部は、前記最新ブロックとして特定した消去単位ブロックに保存されているデータを読み出して前記揮発性メモリに保存することを特徴とする。
【発明の効果】
【００１２】
本発明に係る電子制御装置によれば、フラッシュメモリのデータ消去中或いはデータ書込み中に、リセットやイグニション・オンなど、フラッシュメモリのデータ消去動作或いは書込み動作を中断させるような事象が発生した場合でも、適切なバックアップ動作を継続可能である。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るＥＣＵ１のブロック構成図である。
【図２】（ａ）はＲＡＭ１２及びフラッシュメモリ１３の記憶領域の構造を模式的に表した図であり、（ｂ）〜（ｅ）はブランクブロック、一部ブランクブロック及び読出し可能ブロックの定義を表す図である。
【図３】ＣＰＵ１５がイグニション・オン時に実行するイニシャル処理の詳細を表すフローチャートである。
【図４】ＥＣＵ１のバックアップ動作に際して、フラッシュメモリ１３の各ブロックの状態がどのように変化するのかを表した図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態について、図面を参照しながら説明する。なお、以下では、本発明に係る電子制御装置として、車両に搭載され、イグニション・オン期間中に一定周期で取得した車両情報をバックアップデータとしてＲＡＭに上書き保存しておき、所定条件の成立をトリガとして、ＲＡＭに保存されているバックアップデータをフラッシュメモリに保存するバックアップ機能を備えたＥＣＵを例示して説明する。
【００１５】
図１は、本実施形態に係るＥＣＵ１のブロック構成図である。この図に示すように、ＥＣＵ１は、ＲＯＭ(Read Only Memory)１１、ＲＡＭ１２、フラッシュメモリ１３、通信回路１４及びＣＰＵ１５を備えている。
【００１６】
ＲＯＭ１１は、ＣＰＵ１５に各種処理を実行させるための制御プログラムや各種設定データを予め記憶している不揮発性メモリである。ＲＡＭ１２は、ＣＰＵ１５が各種処理を実行する際にバックアップデータを含む各種データの一時保存先として用いられる書き換え可能な揮発性メモリである。フラッシュメモリ１３は、ＣＰＵ１５による制御に応じて、ＲＡＭ１２に一時的に保存されたバックアップデータを保存する書き換え可能な不揮発性メモリである。
【００１７】
図２（ａ）は、ＲＡＭ１２及びフラッシュメモリ１３の記憶領域の構造を模式的に表した図である。この図２（ａ）に示すように、ＲＡＭ１２には、バックアップデータ保存用の記憶領域として例えば８ｋバイトの領域が確保されている。この８ｋバイトの記憶領域の内、例えばアドレス「００００」〜「１ＦＦ７」までの領域にバックアップデータ（実データ）が保存され、アドレス「１ＦＦ８」〜「１ＦＦＢ」までの４バイトの領域にバックアップデータのＳＵＭ値が保存され、アドレス「１ＦＦＣ」〜「１ＦＦＦ」までの４バイトの領域に書込み完了コードが保存される。
【００１８】
また、図２（ａ）に示すように、フラッシュメモリ１３には、バックアップデータ保存用の記憶領域として例えば３２ｋバイトの領域が確保されている。この３２ｋバイトの記憶領域は、それぞれ８ｋバイトの記憶容量を有する４つの消去単位ブロックに区分されている。公知のように、フラッシュメモリ１３は、記憶領域内のある一定範囲の領域に保存されているデータを一括消去する機能を有しており、その一括消去可能な最小範囲を消去単位ブロックと呼ぶ。
【００１９】
つまり、フラッシュメモリ１３の各消去単位ブロックは、それぞれＲＡＭ１２に保存された８ｋバイト分のバックアップデータ（ＳＵＭ値及び書込み完了コードも含む）を保存可能な記憶容量を有している。なお、以下では、４つの消去単位ブロックを、先頭アドレスの小さい方から順にブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕と呼ぶ。
【００２０】
また、以下では、図２（ｂ）のような、データが全く保存されていないブロック（つまり全領域ブランクのブロック）をブランクブロックと呼ぶ。また、図２（ｃ）のような、前半ブランク無し（データ有り）で後半ブランク（書込み完了コード無し）のブロック、或いは図２（ｄ）のような、前半ブランク（データ無し）で後半ブランク無し（書込み完了コード有り）のブロック、つまりデータが保存されていない領域が一部でも存在するブロックを一部ブランクブロックと呼ぶ。また、図２（ｅ）のような、ＳＵＭ値及び書込み完了コードも含むバックアップデータの全てが保存されているブロックを読出し可能ブロックと呼ぶ。
【００２１】
図１に戻り、通信回路１４は、ＥＣＵ１（正確にはＣＰＵ１５）と他の車載ＥＣＵ或いは各種センサ（図示省略）とのシリアル通信を実現するシリアル通信インターフェースである。ＣＰＵ１５（メモリ制御部）は、ＲＯＭ１１に記憶されている制御プログラムに従って各種処理を実行する中央演算処理装置である。
【００２２】
このＣＰＵ１５は、イグニション・オン期間中（電源オン期間中）に、通信回路１４を介して他の車載ＥＣＵ或いは各種センサから一定周期で取得した車両情報をバックアップデータとしてＲＡＭ１２に上書き保存し、所定条件の成立（イグニション・オフ）をトリガとして、ＲＡＭ１２に保存されているバックアップデータをフラッシュメモリ１３に保存するバックアップ機能を有している。
【００２３】
なお、図１では図示を省略しているが、ＥＣＵ１はイグニション・オフ、つまりバッテリによる電源電圧の供給が停止した後、ＲＯＭ１１、ＲＡＭ１２、フラッシュメモリ１３、通信回路１４及びＣＰＵ１５等の各電子部品に電源電圧を一定時間供給するバックアップ電源（例えばバックアップコンデンサ）を備えている。つまり、ＣＰＵ１５は、イグニションがオフされると、上記のバックアップ電源から電源電圧の供給を受けながらバックアップ処理（フラッシュメモリ１３へのバックアップデータの保存）を実行する。
【００２４】
また、詳細は後述するが、ＣＰＵ１５は、電源投入時（イグニション・オン時）のイニシャル処理として、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の内、データが全く保存されていないブロックをブランクブロックとして特定し、このブランクブロックを基準として消去すべきブロックを消去ブロックとして特定すると共に最新データが保存されているブロックを最新ブロックとして特定する。
【００２５】
次に、上記のように構成された本実施形態に係るＥＣＵ１の動作、特に車両情報（バックアップデータ）のバックアップ動作について詳細に説明する。
【００２６】
まず、始めに、ＣＰＵ１５がイグニション・オン時に実行するイニシャル処理について図３のフローチャートを参照しながら詳細に説明する。
この図３に示すように、ＣＰＵ１５は、イグニションがオンされると、まず、変数ＣＮＴ及びｉを「０」にリセットする（ステップＳ１）。そして、ＣＰＵ１５は、フラッシュメモリ１３のブロックＢ〔ｉ〕の状態調査を行う（ステップＳ２）。具体的には、ステップＳ２において、ＣＰＵ１５は、ブロックＢ〔ｉ〕がブランクブロック、一部ブランクブロック、或いは読出し可能ブロックのいずれの状態に当てはまるのかを調査する。
【００２７】
そして、ＣＰＵ１５は、ブロックＢ〔ｉ〕が読出し可能ブロックか否かを判定し（ステップＳ３）、「Ｙｅｓ」の場合には変数ＣＮＴをインクリメントしてステップＳ５の処理に移行し（ステップＳ４）、「Ｎｏ」の場合には直接ステップＳ５の処理に移行する。
【００２８】
ＣＰＵ１５は、上記ステップＳ４の終了後、或いは上記ステップＳ３で「Ｎｏ」と判定された場合、変数ｉをインクリメントし（ステップＳ５）、変数ｉが「４」より小さいか否かを判定する（ステップＳ６）。ＣＰＵ１５は、ステップＳ６において「Ｙｅｓ」の場合にステップＳ２の処理に戻る一方、「Ｎｏ」の場合にはステップＳ７の処理に移行する。
ＣＰＵ１５は、上記ステップＳ２〜Ｓ６の実行により、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の状態を把握すると共に、変数ＣＮＴのインクリメントによって読出し可能ブロックの数をカウントする。
【００２９】
そして、ＣＰＵ１５は、ステップＳ６において「Ｎｏ」の場合、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の中からブランクブロックをサーチし、そのブランクブロックのブロック番号を変数ＡＢＢに代入する（ステップＳ７）。つまり、この変数ＡＢＢは、ブランクブロックのブロック番号を示す変数である。例えばブロックＢ〔２〕がブランクブロックの場合、変数ＡＢＢには「２」が代入される。
【００３０】
そして、ＣＰＵ１５は、変数ＡＢＢから「１」を減算して得られる値を変数ＲＢに代入し（ステップＳ８）、変数ＡＢＢに「１」を加算して得られる値を変数ＥＢに代入する（ステップＳ９）。つまり、この変数ＲＢは、ブランクブロックの１つ前のブロック（最新データが保存されている最新ブロック）のブロック番号を示す変数であり、変数ＥＢは、ブランクブロックの１つ先のブロック（消去すべきブロック）のブロック番号を示す変数である。
【００３１】
例えばブロックＢ〔２〕がブランクブロックの場合、変数ＲＢには「１」が代入され、変数ＥＢには「３」が代入される。なお、例えばブロックＢ〔０〕がブランクブロックの場合、変数ＲＢには「−１」ではなく「３」が代入される。また、例えばブロックＢ〔３〕がブランクブロックの場合、変数ＥＢには「４」ではなく「０」が代入される。
ＣＰＵ１５は、上記ステップＳ７〜Ｓ９の実行により、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の中から、ブランクブロック、消去ブロック及び最新ブロックを特定する。
【００３２】
続いて、ＣＰＵ１５は、ブロックＢ〔ＲＢ〕、つまり最新ブロックが一部ブランクブロックか否かを判定する（ステップＳ１０）。ＣＰＵ１５は、ステップＳ１０において「Ｎｏ」の場合には直接ステップＳ１３の処理に移行する一方、「Ｙｅｓ」の場合には、変数ＡＢＢから「２」を減算して得られる値を変数ＲＢに代入し（ステップＳ１１）、変数ＡＢＢから「１」を減算して得られる値を変数ＥＢに代入し（ステップＳ１２）、さらに、変数ＡＢＢから「１」を減算して得られる値を新たに変数ＡＢＢに代入する（ステップＳ１３）。
【００３３】
例えばブロックＢ〔２〕がブランクブロックの場合、変数ＲＢには「０」が代入され、変数ＥＢ及び変数ＡＢＢには「１」が代入される。なお、例えばブロックＢ〔０〕がブランクブロックの場合、変数ＲＢには「−２」ではなく「２」が代入され、変数ＥＢ及び変数ＡＢＢには「−１」ではなく「３」が代入される。
【００３４】
つまり、ＣＰＵ１５は、上記ステップＳ１０〜１２の実行により、最初に特定した最新ブロックが一部ブランクブロックの場合に、最初に特定したブランクブロックの１つ前のブロックを消去ブロックとして改めて特定すると共に、最初に特定したブランクブロックの２つ前のブロックを最新ブロックとして改めて特定し、さらに最初に特定したブランクブロックの１つ前のブロックをブランクブロックとして改めて特定する。
【００３５】
続いて、ＣＰＵ１５は、変数ＣＮＴが「０」か否か、つまり読出し可能ブロックの数が「０」か否かを判定し（ステップＳ１４）、「Ｎｏ」の場合にはブロックＢ〔ＲＢ〕、つまり最新ブロックが読出し可能ブロックか否かを判定する（ステップＳ１５）。このステップＳ１５において「Ｙｅｓ」の場合、ＣＰＵ１５は、ブロックＢ〔ＲＢ〕、つまり最新ブロックに保存されているバックアップデータを読み出して、ＲＡＭ１２のバックアップデータ記憶領域（図２（ａ）参照）に書き込む（ステップＳ１６）。
【００３６】
一方、上記ステップＳ１４において「Ｙｅｓ」の場合、或いは上記ステップＳ１５において「Ｎｏ」の場合、ＣＰＵ１５は、ＲＯＭ１１に予め保存されている代替データを読み出して、ＲＡＭ１２のバックアップデータ記憶領域に書き込む（ステップＳ１７）。
【００３７】
以上説明したイニシャル処理によって、イグニションがオンされると、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の中から、ブランクブロック、消去ブロック及び最新ブロックが特定され、ＲＡＭ１２のバックアップデータ記憶領域には、フラッシュメモリ１３の最新ブロックに保存されていたバックアップデータ、或いはＲＯＭ１１に予め保存されていた代替データが書き込まれることになる。
【００３８】
次に、前述のイニシャル処理がイグニション・オン時に実行されることを前提として、ＣＰＵ１５がイグニション・オフ時にバックアップ処理を実行することにより、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の状態がどのように変化するのかを図４を参照しながら詳細に説明する。
なお、以下の説明において、ＣＰＵ１５は、イグニション・オン期間中に、通信回路１４を介して他の車載ＥＣＵ或いは各種センサから一定周期で取得した車両情報をバックアップデータとしてＲＡＭ１２に上書き保存していることに留意されたい。
【００３９】
図４（ａ）は、フラッシュメモリ１３が初期状態（全ブロックがブランクブロック状態）にある場合に、ＣＰＵ１５がイグニション・オフ時にバックアップ処理を実行することにより、フラッシュメモリ１３の各ブロックＢ〔０〕、Ｂ〔１〕、Ｂ〔２〕、Ｂ〔３〕の状態がどのように変化するかを表したものである。
【００４０】
まず、フラッシュメモリ１３の全ブロックがブランクブロック状態にある時（図中のａ−１参照）にイグニションがオフされると、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、ＲＡＭ１２からバックアップデータを読み出し、フラッシュメモリ１３のブロックＢ〔３〕にバックアップデータを保存する（図中のａ−２参照）。
【００４１】
詳細には、ＣＰＵ１５は、フラッシュメモリ１３に対して書込み要求信号、書込み先アドレス信号（ブロックＢ〔３〕内のアドレスを示す信号）及びバックアップデータを送信し、フラッシュメモリ１３は、ＣＰＵ１５からの書込み要求信号に応じて、書込み先アドレス信号で指定されたアドレスにバックアップデータを書込む。このようにして、フラッシュメモリ１３のブロックＢ〔３〕に全てのバックアップデータが保存されると、ブロックＢ〔３〕が最新データを保存する最新ブロックとなる（図中のａ−３参照）。
【００４２】
そして、次のイグニション・オフ時において、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、ＲＡＭ１２からバックアップデータを読み出し、次はフラッシュメモリ１３のブロックＢ〔０〕にバックアップデータを保存する。このようにして、フラッシュメモリ１３のブロックＢ〔０〕に全てのバックアップデータが保存されると、ブロックＢ〔０〕が最新ブロックとなり、ブロックＢ〔３〕が古いデータを保有する古いブロックとなる（図中のａ−４参照）。
【００４３】
さらに、次のイグニション・オフ時において、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、ＲＡＭ１２からバックアップデータを読み出し、次はフラッシュメモリ１３のブロックＢ〔１〕にバックアップデータを保存する。このようにして、フラッシュメモリ１３のブロックＢ〔１〕に全てのバックアップデータが保存されると、ブロックＢ〔１〕が最新ブロックとなり、ブロックＢ〔０〕、Ｂ〔３〕が古いブロックとなる（図中のａ−５参照）。
【００４４】
このように、ＣＰＵ１５は、フラッシュメモリ１３が初期状態（全ブロックがブランクブロック状態）にある場合、イグニションがオフされる度に、ブロックＢ〔３〕→ブロックＢ〔０〕→ブロックＢ〔１〕の順でバックアップデータの保存を行う。
【００４５】
ＣＰＵ１５は、フラッシュメモリ１３の各ブロックの内、１つのブロックのみがブランクブロックの状態となった後、イグニションがオンされる度に、図３に示したイニシャル処理を実行すると共に、イグニションがオフされる度に、イニシャル処理で特定された消去ブロックの保存データを消去して新たなブランクブロックを生成した後、同イニシャル処理で特定されたブランクブロックにバックアップデータを保存する。
【００４６】
例えば、図４（ｂ）に示すように、イグニション・オン時に実行されたイニシャル処理によって、フラッシュメモリ１３のブロックＢ〔０〕が最新ブロック、ブロックＢ〔１〕がブランクブロック、ブロックＢ〔２〕が消去ブロックとして特定されたと仮定する（図中のｂ−１参照）。このようなブロック状態でイグニションがオフされると、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、消去ブロックとして特定されたブロックＢ〔２〕の保存データを消去する（図中のｂ−２参照）。
【００４７】
詳細には、ＣＰＵ１５は、フラッシュメモリ１３に対してブロックＢ〔２〕の消去命令を送信し、フラッシュメモリ１３は、ＣＰＵ１５からの消去命令に応じて、ブロックＢ〔２〕の保存データを消去する（全て「１」にする）。このようにして、ブロックＢ〔２〕の保存データが全て消去されると、ブロックＢ〔２〕はブランクブロックとなる（図中のｂ−３参照）。
【００４８】
そして、ＣＰＵ１５は、ＲＡＭ１２からバックアップデータを読み出し、イニシャル処理によってブランクブロックとして特定されたブロックＢ〔１〕にバックアップデータを保存する（図中のｂ−４参照）。このようにして、フラッシュメモリ１３のブロックＢ〔１〕に全てのバックアップデータが保存されると、次回のイグニション・オン時に実行されるイニシャル処理によって、ブロックＢ〔１〕が最新ブロック、ブロックＢ〔２〕がブランクブロック、ブロックＢ〔３〕が消去ブロックとして特定されることになる（図中のｂ−５参照）。
【００４９】
ここで、図４（ｃ）に示すように、消去ブロックとして特定されたブロックＢ〔２〕の保存データの消去中に、ＣＰＵリセット（バックアップ電源による電源電圧の供給が停止する）やイグニション・オン（バッテリからの電源電圧の供給が再開される）など、フラッシュメモリ１３のデータ消去動作を中断させるような事象が発生した場合を想定する（図中のｃ−１、ｃ−２参照）。
【００５０】
この場合、イグニション・オン時に実行されるイニシャル処理によって、ブロックＢ〔０〕が最新ブロック、ブロックＢ〔１〕がブランクブロック、ブロックＢ〔２〕が消去ブロックとして特定されることになる（図中のｃ−３参照）。ここで、消去ブロックとして特定されたブロックＢ〔２〕は、図２（ｄ）に示すような一部ブランクブロック状態となっている。
【００５１】
このようなブロック状態でイグニションがオフされると、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、消去ブロックとして特定されたブロックＢ〔２〕、つまり一部ブランクブロックの保存データを消去する。このようにして、ブロックＢ〔２〕の保存データが全て消去されると、ブロックＢ〔２〕はブランクブロックとなる（図中のｃ−４参照）。
【００５２】
そして、ＣＰＵ１５は、ＲＡＭ１２からバックアップデータを読み出し、イニシャル処理によってブランクブロックとして特定されたブロックＢ〔１〕にバックアップデータを保存する。このようにして、フラッシュメモリ１３のブロックＢ〔１〕に全てのバックアップデータが保存されると、次回のイグニション・オン時に実行されるイニシャル処理によって、ブロックＢ〔１〕が最新ブロック、ブロックＢ〔２〕がブランクブロック、ブロックＢ〔３〕が消去ブロックとして特定されることになる（図中のｃ−５参照）。
【００５３】
一方、図４（ｄ）に示すように、ブランクブロックとして特定されたブロックＢ〔１〕のデータ書込み中に、ＣＰＵリセットやイグニション・オンなどの、フラッシュメモリ１３のデータ書込み動作を中断させるような事象が発生した場合を想定する（図中のｄ−１、ｄ−２参照）。
【００５４】
この場合、イグニション・オン時に実行されるイニシャル処理のステップＳ１〜Ｓ９の処理によって、始めはブロックＢ〔１〕が最新ブロック、ブロックＢ〔２〕がブランクブロック、ブロックＢ〔３〕が消去ブロックとして特定されることになる（図中のｄ−３参照）。ここで、最新ブロックとして特定されたブロックＢ〔１〕は、図２（ｂ）に示すような一部ブランクブロック状態となっている。
【００５５】
このため、イニシャル処理のステップＳ１０〜Ｓ１３の処理によって、最終的にブロックＢ〔０〕が最新ブロック、ブロックＢ〔１〕が消去ブロック及びブランクブロックとして特定されることになる（図中のｄ−４参照）。このようなブロック状態でイグニションがオフされると、ＣＰＵ１５は、バックアップ電源から電源電圧の供給を受けながら、消去ブロックとして特定されたブロックＢ〔１〕、つまり一部ブランクブロックの保存データを消去する。
【００５６】
このようにして、ブロックＢ〔１〕の保存データが全て消去されると、ブロックＢ〔１〕はブランクブロックとなる。そして、ＣＰＵ１５は、ＲＡＭ１２からバックアップデータを読み出し、イニシャル処理によってブランクブロックとして特定されたブロックＢ〔１〕にバックアップデータを保存する。
【００５７】
このようにして、フラッシュメモリ１３のブロックＢ〔１〕に全てのバックアップデータが保存されると、次回のイグニション・オン時に実行されるイニシャル処理によって、ブロックＢ〔１〕が最新ブロック、ブロックＢ〔２〕がブランクブロック、ブロックＢ〔３〕が消去ブロックとして特定されることになる（図中のｄ−５参照）。
【００５８】
以上説明したように、本実施形態に係るＥＣＵ１によれば、フラッシュメモリ１３のデータ消去中或いはデータ書込み中に、ＣＰＵリセットやイグニション・オンなど、フラッシュメモリ１３のデータ消去動作或いは書込み動作を中断させるような事象が発生した場合でも、適切なバックアップ動作を継続可能である。
【００５９】
また、前述の特許文献１（特開２０１０−１１３５８０号公報）の技術では、例えばフラッシュメモリのデータ消去中或いはデータ書込み中にＣＰＵがリセットされると、フラッシュメモリのデータが不定となるため、故障を報知するための信号を出力する機能をＣＰＵに持たせる必要があったが、本実施形態に係るＥＣＵ１では、不定となったブロック（一部ブランクブロック）を必ず消去するため、そのような機能をＣＰＵ１５に持たせる必要はない。
【００６０】
また、従来では、フラッシュメモリのデータ消去中或いはデータ書込み中にＣＰＵがリセットされると、正確なＳＵＭ値が得られなくなり、バックアップデータの確からしさを判断できなくなる可能性があったが、本実施形態に係るＥＣＵ１では、不定となったブロック（一部ブランクブロック）を必ず消去し、後にそのブロックに正常なバックアップデータを保存するため、バックアップデータの確からしさを判断できなくなる可能性は無い。
【００６１】
以上、本発明の一実施形態について説明したが、この実施形態はあくまで一例であって本発明の趣旨を逸脱しない範囲において実施形態の細部を種々変更可能であることは勿論である。例えば、上記実施形態では、本発明に係る電子制御装置として、イグニション・オン期間中に一定周期で取得した車両情報をバックアップデータとしてＲＡＭに上書き保存しておき、所定条件の成立をトリガとして、ＲＡＭに保存されているバックアップデータをフラッシュメモリに保存するバックアップ機能を備えたＥＣＵ１を例示して説明したが、本発明はこのような車載ＥＣＵに限らず、フラッシュメモリをバックアップ用メモリとして備える電子制御装置に広く適用することが可能である。
【符号の説明】
【００６２】
１…ＥＣＵ（電子制御装置）、１１…ＲＯＭ、１２…ＲＡＭ（揮発性メモリ）、１３…フラッシュメモリ、１４…通信回路、１５…ＣＰＵ（メモリ制御部）
【図１】
0005643708.tif 000002
【図２】
0005643708.tif 000003
【図３】
0005643708.tif 000004
【図４】
0005643708.tif 000005