(57)【要約】【課題】フラッシュメモリのメモリ容量を有効に活用でき、データの保存を効率良く行える自動車用電子制御装置を提供する。【解決手段】フラッシュメモリにデータを書き込むときに、既にデータが書き込まれているエリアのデータを同じ値にするか、又は、ＦＦｈとして書き換えない状態にして、同一の書き込み開始アドレスによるデータ書き込みを複数回にわたって行わせる。これにより、最小書き込み単位（例えば１２８バイト）よりもサイズの小さいデータ（例えば１バイトデータ）を、書き込みエリアに詰めて格納させることができる。【選択図】図４
2008146521.tif 000002
【特許請求の範囲】
【請求項１】
電気的にデータの消去及び書き込みが可能な不揮発性メモリを備えた自動車用電子制御装置であって、
前記不揮発性メモリにデータを書き込むときに、既にデータが書き込まれているエリアのデータ更新を禁止して、同一の書き込み開始アドレスで複数回にわたってデータの書き込みを行うことを特徴とする自動車用電子制御装置。
【請求項２】
既にデータが書き込まれているエリアに対して同じデータを再度書き込むことで、データ更新を禁止することを特徴とする請求項１記載の自動車用電子制御装置。
【請求項３】
書き込まれたデータの最終アドレスを記憶し、該最終アドレスに基づいて既にデータが書き込まれているエリアを特定することを特徴とする請求項１又は２記載の自動車用電子制御装置。
【請求項４】
１回に書き込むデータのサイズを固定し、書き込み回数から既にデータが書き込まれているエリアを特定することを特徴とする請求項１又は２記載の自動車用電子制御装置。
【請求項５】
書き込みデータにインデックスデータを付し、前記インデックスデータに基づいて既にデータが書き込まれているエリアを特定することを特徴とする請求項１又は２記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置に関し、詳しくは、電気的にデータの消去及び書き込みが可能な不揮発性メモリのデータ書き込み技術に関する。
【背景技術】
【０００２】
特許文献１には、ブロック単位で書き換え可能なフラッシュメモリを備え、該フラッシュメモリに記憶された制御プログラムに従って自動車に搭載された所定の制御対象を制御する自動車用電子制御装置が開示されている。
【特許文献１】特開２０００−２５７５０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のように、前記フラッシュメモリは、ブロック単位で書き換え可能であるため、書き換え単位のブロックよりもサイズの小さいデータを書き込むときにも、ブロック単位での書き込みが行われることになり、１ブロック単位で書き込み開始アドレスをずらしてデータの書き込みを行わせると、メモリ容量の使用効率が悪いという問題があった。
本発明は上記問題点に鑑みなされたものであり、フラッシュメモリのメモリ容量を有効に活用でき、データの保存を効率良く行える自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
そのため請求項１記載の発明は、電気的にデータの消去及び書き込みが可能な不揮発性メモリにデータを書き込むときに、既にデータが書き込まれているエリアのデータ更新を禁止して、同一の書き込み開始アドレスで複数回にわたってデータの書き込みを行うことを特徴とする。
上記発明によると、所定の書き込み開始アドレスに基づき、不揮発性メモリ（例えばフラッシュメモリ）に対して最初のデータ書き込みを行った後、２回目のデータ書き込みにおいては、同一の書き込み開始アドレスに基づいて同一ブロックの書き込みを行うが、最初にデータを書き込んだエリアのデータ更新（書き換え）を禁止して、同一ブロックの残存エリアにデータを書き足す。このような書き込み処理を繰り返すことで、同一ブロックに複数のデータを詰めて記憶させる。
【０００５】
従って、不揮発性メモリに対して、ブロック単位で書き込みが行われ、かつ、書き込むデータのサイズがブロックサイズよりも小さい場合であっても、メモリ容量を有効に利用してデータを書き込むことができる。
請求項２記載の発明は、既にデータが書き込まれているエリアに対して同じデータを再度書き込むことで、データ更新を禁止することを特徴とする。
【０００６】
上記発明によると、同一の書き込み開始アドレスに基づいて同一ブロックに複数回にわたって書き込みを行うときに、それまでにデータが書き込まれているエリアに対しては、最初の書き込み時と同じデータを書き込ませる。
従って、同一ブロックの書き込みを繰り返し行わせても、既にデータが書き込まれているエリアのデータはそのまま保存されることになり、残存のエリアに順次新たなデータが書き込まれる。
【０００７】
請求項３記載の発明は、書き込まれたデータの最終アドレスを記憶し、該書き込み最終アドレスに基づいて既にデータが書き込まれているエリアを特定することを特徴とする。
上記発明によると、データの書き込みを行う毎に、その書き込みでのデータの最終アドレスを記憶し、書き込み開始アドレスから前記最終アドレスまでを、既にデータが書き込まれているエリアとして特定する。
【０００８】
従って、データサイズに変動があっても、前回までにデータが書き込まれたエリアを確実に特定できる。
請求項４記載の発明は、１回に書き込むデータのサイズを固定し、書き込み回数から既にデータが書き込まれているエリアを特定することを特徴とする。
上記発明によると、書き込むデータのサイズが固定されるから、データサイズに書き込み回数を乗算した結果が、前回までに書き込まれたデータの総サイズであり、書き込み開始アドレスから前記書き込み済みデータの総サイズ分だけのエリアが、前回までにデータ書き込みが行われたエリアとなる。
【０００９】
従って、データサイズが固定であれば、前回までにデータが書き込まれたエリアを容易に特定することができる。
請求項５記載の発明では、書き込みデータにインデックスデータを付し、前記インデックスデータに基づいて既にデータが書き込まれているエリアを特定することを特徴とする。
【００１０】
上記発明によると、各データにインデックスデータ（索引情報）を付して書き込みを行わせ、前記インデックスデータから個々の書き込みデータを弁別することで、前回までにデータが書き込まれたエリアを特定する。
従って、前記インデックスデータの読み取りによって、既にデータが書き込まれているエリアを確実に特定することができる。
【発明を実施するための最良の形態】
【００１１】
以下に本発明の実施の形態を説明する。
図１は、実施の形態における自動車用電子制御装置としてのエンジンコントロールユニット（ＥＣＵ）１の構成を示す。
エンジンコントロールユニット１は、車両用エンジンにおける燃料噴射や点火を制御するためのものであり、電気的にデータの消去及び書き込みが可能な不揮発性メモリであるフラッシュメモリ２、ＲＡＭ３、及び、マイクロコンピュータ４を含んで構成される。
【００１２】
前記マイクロコンピュータ４は、ＣＰＵ，内蔵ＲＡＭ，タイマ，Ａ／Ｄコンバータ，ＳＣＩ等を備えて構成され、ＲＡＭ３やフラッシュメモリ２に格納された各種のプログラムを実行する。
前記フラッシュメモリ２の記憶領域は、ブロックＡとブロックＢとに区分される。
前記ブロックＡは、データの書き込みが行われる書き込みデータ格納領域である。
【００１３】
一方、ブロックＢは、データの更新を行わない領域であって、フラッシュ書き込みプログラムが格納される領域、アプリケーションプログラムが格納される領域、更に、定数データが格納される領域からなる。
前記フラッシュ書き込みプログラムは、前記書き込みデータ格納領域におけるデータの消去・書き込みを制御するためのプログラムである。
【００１４】
前記アプリケーションプログラムは、車両に搭載されるエンジンを制御するためのプログラムであり、イグニッションスイッチ８のオン・オフ信号や車両用エンジンの運転状態を検出する各種センサ７からの検出信号を入力して演算処理し、燃料噴射制御信号や点火制御信号などを出力する機能を備える。
前記定数データ格納領域には、エンジン制御等に必要な各種の定数データ（閾値、係数など）が格納される。
【００１５】
一方、外部ツールであるフラッシュ書き込みツール５は、前記エンジンコントロールユニット１に対して通信回線６を介して着脱可能に接続される。
前記フラッシュ書き込みツール５には、フラッシュメモリ５ａが備えられ、該フラッシュメモリ５ａに保存されているデータを、前記エンジンコントロールユニット１に対して送信することで、フラッシュメモリ２に対するデータの書き込みが行なわれるようになっている。
【００１６】
即ち、前記フラッシュ書き込みツール５は、フラッシュメモリ２のブロックＡに格納されるデータを書き換えるためのツールである。
図２のフローチャートは、エンジンコントロールユニット１によるフラッシュメモリ２のブロックＡの書き換え処理を示す。
まず、ステップＳ１００では、ブロックＢに格納されているアプリケーションプログラムを実行して、エンジンを通常に制御する。
【００１７】
次のステップＳ１１０では、イグニションスイッチ（ＩＧＳＷ）８がオフされたか否かを判別する。
イグニションスイッチ（ＩＧＮＳＷ）８がオン状態であれば、ステップＳ１００へ戻って、アプリケーションプログラムの実行を継続させる。
一方、イグニションスイッチ（ＩＧＮＳＷ）８がオフになると、ステップＳ１２０へ進み、前記フラッシュ書き込みツール５からフラッシュメモリの書換え要求信号が出力されているか否かを判別する。
【００１８】
ここで、前記フラッシュ書き込みツール５から書換え要求信号が出力されている場合には、ステップＳ１３０へ進む。
ステップＳ１３０では、前記フラッシュ書き込みツール５から送信される書き込みデータをバッファに格納する。
次のステップＳ１４０では、前記フラッシュ書き込みツール５から送信されたデータを、フラッシュメモリ２のデータ格納領域（ブロックＡ）に書き込むべく、書き込み制御プログラムを実行する。
【００１９】
前記書き込み制御プログラムの処理内容は、図３のフローチャートに示してある。
まず、ステップＳ２００では、書き込み開始アドレスを設定し、次のステップＳ２１０では、書き込みエリアの値が全てＦＦｈ（消去状態）であるか否かを判別する。
書き込みエリアの値が全てＦＦｈであれば、データ書き込みの１回目であるので、ステップＳ２３０に進み、フラッシュメモリ２に対するデータの書き込み処理を実行する。
【００２０】
一方、書き込みエリアの値が全てＦＦｈでない場合であって、２回目以降の書き込みであるときには、ステップＳ２２０へ進み、既にデータが書き込まれているエリアを特定し、該書き込み済みエリアをマスクして書き込みを行わせる設定を行った後、ステップＳ２３０へ進み、フラッシュメモリ２に対するデータの書き込み処理を実行する。
ステップＳ２４０では、データの書き込みが終了したか否かを判別し、書き込みが終了するまで、ステップＳ２００〜ステップＳ２３０の処理を繰り返す。
【００２１】
ここで、ステップＳ２３０におけるデータ書き込み処理の詳細を、図４に従って説明する。
図４に示す書き込み処理は、１バイトデータの書き込みであって、最小書き込みサイズ（１回の書き込み動作で書き込みを行う最小エリア）を１２８バイトとする例である。
まず、フラッシュメモリ２のデータ格納領域の値を全てＦＦｈ（初期値）として初期化しておく（図４（Ａ）参照）。
【００２２】
そして、１回目のデータ書き込みにおいては、先頭の１バイトに指定されたデータ（図４では「０１」）を書き込み、残りの１２７バイトにはＦＦｈを書き込む（図４（Ｂ）参照）。
続いて、２回目のデータ書き込みにおいては、書き込み開始アドレスを前回と同じに保持し、先頭の１バイトのデータ更新を禁止して、次のアドレス（２番目の１バイト）に指定データ（図４では「０２」）を書き込み、残りの１２６バイトにはＦＦｈを書き込む（図４（Ｂ）参照）。
【００２３】
前記先頭１バイトのデータ更新の禁止（マスク）は、同じデータを再度書き込むか、又は、書き込みデータを「ＦＦｈ」としてフラッシュメモリ２を書き換えない状態とすることで行われる。
３回目のデータ書き込みにおいては、やはり書き込み開始アドレスを前回と同じに保持し、先頭の１バイト及び２番目の１バイトにおけるデータ更新を禁止して、３番目の１バイトに指定データを書き込み、残りの１２５バイトにはＦＦｈを書き込む。
【００２４】
上記処理を繰り返すことで、最小書き込みサイズの１２８バイトである１ブロック内に、１バイトのデータを順次詰めて格納させる。
最初の１２８バイトへのデータ書き込みが全て完了すると、書き込み開始アドレスを、１２８バイト分だけずらして、次の１２８バイト領域へのデータ書き込みを同様にして実行させる。
【００２５】
上記のように、前回までにデータが書き込まれているエリアのデータ更新を禁止し、更新が禁止されるエリアの次のアドレスに新たなデータを書き込む動作を、同一の書き込み開始アドレスで複数回にわたって行わせるようにすれば、最小書き込みサイズ（本実施形態では１２８バイト）よりもサイズの小さいデータ（本実施形態では１バイト）を詰めて書き込むことができ、フラッシュメモリ２の容量を効率良く使用することができる。
【００２６】
ここで、どのアドレスまでデータ更新を禁止し、指定データをどのアドレスに書き込むかは、データ書き込みを行った最終アドレスを記憶しておくことで判断でき、また、最終アドレスから書き込みを行う１２８バイト単位のブロックとして、次のブロックに移行させるべきであるか否かを判断できる。
尚、データ書き込みを行った最終アドレスを記憶する構成であれば、必ずしも書き込むデータのサイズは一定である必要はない。
【００２７】
また、本実施形態のように、書き込みデータのサイズが固定される場合には、書き込み回数とデータサイズとの乗算結果が、既にデータが書き込まれているエリアの大きさを示すことになる。
そこで、データ書き込みを行った最終アドレスを記憶する代わりに、書き込み回数を計数して記憶し、書き込み回数の計数結果と、予め記憶されているデータサイズとから既にデータが書き込まれているエリアの大きさ（容量）を算出し、次に指定データを書き込むべきアドレスを特定することができる。
【００２８】
更に、書き込むデータにインデックスデータを付すことで、既にデータが書き込まれているエリア（次回に指定データを書き込むアドレス）を特定させることができる。
例えば、データサイズが一定である場合に、データの前又は後に一定サイズのインデックスデータを付し、このインデックスデータを書き込み毎にインクリメントさせるようにする。
【００２９】
この場合、インデックスデータの書き込み位置は予め特定されるから、インデックスデータが書き込まれるはずのアドレス位置のデータを検証し、インデックスデータとは認められない値が格納されたアドレスのうちで最も小さいアドレスを、既にデータが書き込まれているエリアの次のアドレスであって次回の指定データを書き込むアドレスとして特定することができる。
【００３０】
また、インデックスデータとして、書き込み開始位置情報や書き込み終了位置情報などをデータに付すようにすることができる。
また、１２８バイトの１ブロックの最初からデータを書き始めるのではなく、データをブロックの後ろ側から書き込み、書き込み位置を順次前にずらすようにすることができる。
【００３１】
尚、本実施形態では、書き込みの最小単位を１２８バイト、データサイズを１バイトとしたが、これらのサイズに限定されるものでないことは明らかである。
ここで、上記実施形態から把握し得る請求項以外の技術思想について、以下にその効果と共に記載する。
（イ）前記データが一定サイズであって、前記インデックスデータが、データの前又は後に付される一定サイズで、かつ、書き込み毎にインクリメントされることを特徴とする請求項５記載の自動車用電子制御装置。
【００３２】
上記発明によると、データ及びインデックスデータのサイズが一定であるので、詰めて書き込みを行わせる場合には、インデックスデータが書き込まれるアドレス位置が予め特定されることになる。
従って、インデックスデータが書き込まれるアドレス位置のデータを読み取り、インデックスデータであると認められるデータが書き込まれているか否かを判断することで、どこまで書き込みが行われているか、即ち、既にデータが書き込まれているエリアを特定することができる。
【図面の簡単な説明】
【００３３】
【図１】実施形態における自動車用電子制御装置の構成図。
【図２】実施形態におけるフラッシュメモリへの書き込み処理のメインルーチンを示すフローチャート。
【図３】実施形態におけるフラッシュメモリへの書き込み処理のサブルーチンを示すフローチャート。
【図４】実施形態における書き込み回数毎の書き込みの様子を示す図。
【符号の説明】
【００３４】
１…エンジンコントロールユニット、２…フラッシュメモリ、３…ＲＡＭ、４…マイクロコンピュータ、５…フラッシュ書き込みツール、６…通信回線
【図１】
2008146521.tif 000003
【図２】
2008146521.tif 000004
【図３】
2008146521.tif 000005
【図４】
2008146521.tif 000006