(57)【要約】【課題】書換可能な不揮発性メモリに対するデータの書き換えが中断された場合、リトライによる書換時間を極力短縮する電子制御装置およびデータ書換システムを提供する。【解決手段】電子制御装置は、フラッシュメモリに対するデータの書き換えが中断した場合、外部の書換ツールからの問い合わせにより、フラッシュメモリの先頭ブロックから最終ブロックに向けて、書き換えが完了したか未完了であるかを表わす書換フラグを順次確認する（Ｓ４２４）。書き換えが未完了を表わす「ＦＦ」を検出した場合（Ｓ４２６：Ｙｅｓ）、その前のブロックを書き換えが完了した終端ブロック（Ｘ）として書換ツール３０に回答する（Ｓ４３２）。電子制御装置は、最初に「ＦＦ」を検出したブロックの消去処理を実行し（Ｓ４３４）、このブロックから最終ブロックまでの書換データを書換ツールから順次受信して各ブロックに書き込む（Ｓ４３８〜Ｓ４４４）。【選択図】図４
2014016890.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックのそれぞれにデータを記憶する書換可能な不揮発性メモリと（２０）、
前記不揮発性メモリのデータを書き換えるとともに、前記ブロックのそれぞれに対応して設けられ前記ブロックに対するデータの書換えが完了したか否かを表わす書換情報を設定する書換手段（１２）と、
書き換えが完了した前記ブロックと未完了の前記ブロックとを前記書換情報に基づいて判別する判別手段（１４、Ｓ４２６、Ｓ４７６、Ｓ５２６、Ｓ５５６）と、
を備えることを特徴とする電子制御装置。
【請求項２】
前記書換情報は各ブロックの最後に記憶されることを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記書換情報は、前記ブロックの書き換えが完了したか否かを示す書換フラグと前記ブロックの書換回数とから構成されることを特徴とする請求項１または２に記載の電子制御装置。
【請求項４】
前記不揮発性メモリのデータを書き換えるための書換データを外部の書換ツール（３０）から受信し、前記書換手段が前記書換データにより前記不揮発性メモリのデータを書き換えたときの書換結果に対する問い合わせを前記書換ツールから受信し、前記問い合わせに対して前記判別手段による判別結果を前記書換ツールに送信し、書き換えが未完了の前記ブロックに対して前記書換手段が書き換えをリトライするために前記判別結果に基づいて前記書換ツールから送信される前記書換データを受信する通信手段（１８、Ｓ４４０、Ｓ４９２、Ｓ５４２、Ｓ５７２）を備えることを特徴とする請求項１から３のいずれか一項に記載の電子制御装置。
【請求項５】
請求項４に記載の電子制御装置（１０）と、
前記電子制御装置と通信する外部の書換ツール（３０）と、
を備え、
前記書換ツールは、
前記不揮発性メモリのデータを書き換えるための前記書換データを前記電子制御装置に送信し、前記書換データによる書換結果に対する問い合わせを前記電子制御装置に送信し、前記問い合わせに対して前記判別結果を前記電子制御装置から受信し、前記判別結果に基づいて書き換えが未完了の前記ブロックに対する前記書換データを前記電子制御装置に送信する通信手段（３８、Ｓ４０２、Ｓ４０４、Ｓ４０８、Ｓ４５２、Ｓ４５４、Ｓ４６０、Ｓ５０２、Ｓ５０４、Ｓ５１４）を備える、
ことを特徴とするデータ書換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書換可能な不揮発性メモリに記憶されているデータを書き換える電子制御装置およびデータ書換システムに関する。
【背景技術】
【０００２】
従来、電源遮断時にもデータを保持する書換可能な不揮発性メモリに制御プログラムまたは制御データ等を記憶することが知られている。例えば、特許文献１では、電源遮断時にもデータを保持するバックアップメモリを備え、バックアップメモリに設けられた第１記憶領域と第２記憶領域とに異常発生時の診断データを交互に記憶する。
【０００３】
そして、２個の記憶領域のうち診断データが正常に書き換えられた記憶領域を読出し領域として指定し、読出し領域に指定されていない他方の記憶領域が次回の診断データの書換対象となる。診断データの書換中に電源遮断等のために最後まで正常に診断データが書き換えられなかった場合には、該当する記憶領域は読出し領域に指定されず、途中まで書き換えられたデータは使用されない。そして、次回異常が発生した場合には、前回書き換えが中断した記憶領域に次回の診断データを書き込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２６２０９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１とは異なり、データの書き換えが電源遮断等のために中断された場合、同じ記憶領域に対し同じデータにより最初から書き換えをリトライすることがある。書き換えが中断された位置が分かれば、その位置から残りのデータを書き込めばよい。しかしながら、書き換えが中断された位置が分からないと、全データを最初から書き換える必要がある。その結果、リトライによる書換時間が長くなるという問題がある。
【０００６】
フラッシュメモリのようにブロック単位でデータを消去してからデータを書き換える書換可能な不揮発性メモリの場合にも、書き換えが中断されたブロックの位置が分からないと、全データを最初のブロックから書き換える必要がある。その結果、リトライによる書換時間が長くなる。
【０００７】
書き換えの元データとブロックに書き込まれたデータとを比較することにより、書き換えが完了したブロックと中断されたブロックとを判別することはできる。しかし、各ブロックに記憶されているデータを順次読み出して書き換えの元データと比較すると、書き換えが中断されたブロックを判別するための時間が長くなるので、リトライによる書換時間が長くなる。
【０００８】
本発明は、上記課題を解決するためになされたものであり、書換可能な不揮発性メモリに対するデータの書き換えが中断された場合、リトライによる書換時間を極力短縮する電子制御装置およびデータ書換システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の電子制御装置によると、書換可能な不揮発性メモリのブロック毎に設けられた書換情報を、ブロックに対するデータの書換えが完了したか否かに応じて設定し、書換情報に基づいて書き換えが完了したブロックと未完了のブロックとを判別する。
【００１０】
これにより、電源遮断、あるいは書換データを通信で取得する場合には通信障害の発生により書き換えが中断されても、ブロック毎に設けられた書換情報を読み出すことにより、書き換えが完了したブロックと中断されたブロックとを短時間で容易に判別できる。その結果、書き換えが中断されたブロックからデータの書き換えをリトライできる。したがって、リトライによる書換時間を短縮できる。
【００１１】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組み合わせにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【図面の簡単な説明】
【００１２】
【図１】本実施形態によるデータ書換システムを示すブロック図。
【図２】（Ａ）は本実施形態によるデータ構成を示す模式図、（Ｂ）は比較例によるデータ構成を示す模式図。
【図３】書換ツールによるリトライ処理１を示すフローチャート。
【図４】電子制御装置によるリトライ処理１を示すフローチャート。
【図５】書換ツールによるリトライ処理２を示すフローチャート。
【図６】電子制御装置によるリトライ処理２を示すフローチャート。
【図７】書換ツールによるリトライ処理３を示すフローチャート。
【図８】電子制御装置によるリトライ処理３を示すフローチャート。
【図９】書き換えが中断されたときのデータ構成を示す模式図。
【図１０】電子制御装置によるリトライ処理４を示すフローチャート。
【図１１】本実施形態による他のデータ構成を示す模式図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図に基づいて説明する。
図１に示すデータ書換システム２は、例えば車両に搭載された車両制御用の電子制御装置であるマイクロコンピュータ（以下、単に「マイコン」とも言う。）１０と外部の書換ツール３０とから構成されている。マイコン１０と書換ツール３０とは、互いのフレーム送受信部１８、３８を介して無線回線または有線回線により通信可能に接続されている。マイコン１０は、書換ツール３０からの指令によりフラッシュメモリ２０（図２参照）の該当するブロックのデータを書き換える。
【００１４】
マイコン１０は、書込処理部１２、終端ブロック判別部１４、終端ブロック通知部１６、フレーム送受信部１８、およびフラッシュメモリ２０（図２参照）等を備えている。
書込処理部１２は、書換ツール３０から送信される書換データを該当するブロックに書き込む。書込処理部１２は、フラッシュメモリ２０にデータを書き込む前に、全ブロックのデータを一括消去するか、ブロック単位でデータを消去する。
【００１５】
終端ブロック判別部１４は、書換ツール３０からの指令により書込処理部１２がデータを書き換えたときの書換結果に基づいて、書き換えが完了した終端のブロックを判別する。終端ブロック通知部１６は、終端ブロック判別部１４が判別した判別結果に基づいて、終端ブロック番号をフレーム送受信部１８から書換ツール３０に通知する。フレーム送受信部１８は、フレーム単位でデータを送受信する。
【００１６】
フラッシュメモリ２０は、０〜ｎのブロック番号が付された複数のブロックのそれぞれにデータを記憶している。各ブロックの記憶容量はデータの消去単位で決定されており、同じであっても異なっていてもよい。
【００１７】
フラッシュメモリ２０には、制御プログラムまたは制御データ等が記憶されており、バージョンの更新等で書き換えられるときがある。フラッシュメモリ２０のデータを書き換える場合、全ブロックに対して一括してデータを消去してからデータを書き換える場合と、ブロック毎にデータを消去してデータを書き換える場合とがある。
【００１８】
書換ツール３０は、終端ブロック問い合わせ部３２、終端ブロック取得部３４、送信データ決定部３６およびフレーム送受信部３８等を備えている。終端ブロック問い合わせ部３２は、マイコン１０が書換ツール３０からの指令によりフラッシュメモリ２０のデータを書き換えたときに、書き換えが完了した終端のブロックを書換結果としてフレーム送受信部３８からマイコン１０に問い合わせる。
【００１９】
終端ブロック取得部３４は、終端ブロック問い合わせ部３２からの問い合わせに対してマイコン１０から送信された書き換えが完了した終端のブロック番号を取得する。
送信データ決定部３６は、終端ブロック取得部３４が取得した終端ブロック番号に基づき、マイコン１０において書き換えが完了していないフラッシュメモリ２０の残りのブロックを決定し、書き換えが未完了のブロックに対する書換リトライ用のデータをフレーム送受信部３８からマイコン１０に送信する。
【００２０】
フラッシュメモリ２０に記憶されているデータを書き換えて更新するために書換データを１回目（初回書換時）にマイコン１０に送信する場合には、送信データ決定部３６は、すべての書換データをマイコン１０に送信する。
【００２１】
（データの書き換え）
フラッシュメモリ２０のデータを書き換えるために各ブロックのデータを消去すると、ビット毎のデータ値は全て「１」、１６進数では「ＦＦ」になる。図２の（Ａ）に、フラッシュメモリ２０のデータを書き換える場合、フラッシュメモリ２０の全ブロックのデータを一括して消去してから各ブロックのデータを書き換える例を示す。
【００２２】
各ブロックに対するデータの書き換えが完了すると、各ブロックの最後に１６進数で「５Ａ」を書き込む。つまり、各ブロックの最後のデータ値は、該当するブロックに対して今回のデータの書き換えが完了したか否かを表わす書換フラグとして使用される。書換フラグは本発明の書換情報を構成している。
【００２３】
ブロックのデータを書き換えている途中で電源遮断または通信回線の障害等が発生しデータの書き換えが中断されると、書き換えが中断されたブロックと、それよりもブロック番号の大きいブロックの書換フラグは消去処理された「ＦＦ」のままである。
【００２４】
例えば、図２の（Ａ）でフラッシュメモリ２０のデータを一括消去してから、ブロック番号０からブロック番号ｎに向けて順番にデータを書き換えている場合、ブロック番号１のデータを書き換えている途中で電源が遮断されると、ブロック（０）の書換フラグは「５Ａ」に書き換えられるが、ブロック（１）〜ブロック（ｎ）の書換フラグは「ＦＦ」のままである。
【００２５】
そして、ブロック（１）のデータは、先頭から途中までが今回の書換データで書き換えられている。ブロック（１）の残りのデータと、ブロック（２）〜ブロック（ｎ）のデータは消去処理されたブランク「ＦＦ」のままである。
【００２６】
マイコン１０は、書換ツール３０から問い合わせがあると、ブロック（０）からブロック（ｎ）に向けて順番に書換フラグを参照し、書換フラグが「５Ａ」から最初に「ＦＦ」になるブロックの直前のブロックをデータの書き換えが完了した終端ブロックとして書換ツール３０に通知する。
【００２７】
書換ツール３０は、フラッシュメモリ２０のデータの書き換えをマイコン１０に指令すると、データの書き換えが完了した終端ブロックをマイコン１０に問い合わせる。
そして、マイコン１０から終端ブロックを通知されると、終端ブロックまではデータの書き換えが完了しているので、終端ブロックの次のブロックから書換データをマイコン１０に送信し、データの書き換えをリトライするように指令する。
【００２８】
図２の（Ａ）に対し、書換フラグを設定していない図２の（Ｂ）の場合、どのブロックでデータの書き換えが中断されたか否かを判別できない。したがって、書換ツール３０は、ブロック（０）の最初から再度マイコン１０に書換データを送信してデータの書き換えを指令する必要がある。図２ではブロック（１）でデータの書き換えが中断されたが、ブロック（ｎ）でデータの書き換えが中断されると、ブロック（ｎ−１）までデータの書き換えが完了しているにも関わらず、ブロック（０）からデータの書き換えをリトライさせる必要がある。
【００２９】
次に、書換ツール３０およびマイコン１０による書き換えのリトライ処理について、図３〜図８、および図１０のフローチャートに基づいて説明する。
図３、図５および図７のフローチャートは、書換ツール３０がマイコン１０にデータの書き換えを指令し、マイコン１０による書き換えが中断したか完了したかに関わらず、マイコン１０がデータを書き換えたときに書換ツール３０が実行する処理を表わしている。図４、図６、図８および図１０のフローチャートは、電源遮断または通信障害等でデータの書き換えが中断されたか、あるいはフラッシュメモリ２０に対するデータの書き換えが完了したときにマイコン１０が実行する処理を表わしている。
【００３０】
データを書き換える場合、図３〜図６では、フラッシュメモリ２０のデータを一括消去してからデータを書き換え、図７、図８および図１０では、ブロック毎にデータの消去、書き換えを繰り返す。図３〜図８、および図１０において「Ｓ」はステップを表わしている。
【００３１】
（書換ツール３０のリトライ処理１）
図３の処理において書換ツール３０は、リトライ処理を実行するための初期化処理を実行し（Ｓ４００）、マイコン１０に終端ブロック（書き換えが正常に完了した最終端のブロック）を問い合わせる（Ｓ４０２）。
【００３２】
マイコン１０から問い合わせ結果を受信すると（Ｓ４０４：Ｙｅｓ）、終端ブロック（Ｘ）のブロック番号がフラッシュメモリ２０の最終ブロック番号であるか否かを判定する（Ｓ４０６）。終端ブロック番号が最終ブロック番号であれば（Ｓ４０６：Ｙｅｓ）、最終ブロックまでデータの書き換えが完了したと判断し、本処理を終了する。
【００３３】
終端ブロック番号Ｘが最終ブロック番号ではない場合（Ｓ４０６：Ｎｏ）、終端ブロック（Ｘ）の次のブロック（Ｘ＋１）に対するデータの書き換えが中断されたと判断し、書換ツール３０はブロック（Ｘ＋１）以降の今回の書換データをマイコン１０に送信し、データの書き換えをリトライするように指令する（Ｓ４０８）。最終ブロックの書換データを送信すれば（Ｓ４１０：Ｙｅｓ）、本処理を終了する。
【００３４】
（マイコン１０のリトライ処理１）
図４の処理においてマイコン１０は、リトライ処理を実行するための初期化処理を実行し（Ｓ４２０）、書換ツール３０から終端ブロックの問い合わせを受信すると（Ｓ４２２：Ｙｅｓ）、フラッシュメモリ２０のブロック（０）からブロック（ｎ）に向けて書換フラグを順次確認する（Ｓ４２４）。
【００３５】
最終ブロックまで書換フラグとして「ＦＦ」を検出しなかった場合（Ｓ４２６：Ｎｏ、Ｓ４２８：Ｙｅｓ）、マイコン１０は最終ブロックを終端ブロックとして書換ツール３０に送信し、問い合わせに対する回答とする（Ｓ４３０）。
【００３６】
書換フラグとして「ＦＦ」を検出した場合（Ｓ４２６：Ｙｅｓ）、ブロック（０）から確認を開始して最初に「ＦＦ」を検出したブロック番号を−１したブロック番号Ｘのブロックを終端ブロック（Ｘ）として書換ツール３０に送信し、問い合わせに対する回答とする（Ｓ４３２）。次にマイコン１０は、最初に「ＦＦ」を検出したブロックの消去処理を実行し（Ｓ４３４）、変数ｋに終端ブロック番号Ｘを設定する（Ｓ４３６）。
【００３７】
図３および図４の処理では、前述したように、データの書き換えの前にフラッシュメモリ２０のデータを全ブロックにおいて一括で消去する方式を採用しているので、最初に「ＦＦ」が検出されデータの書き換えが中断されたブロックよりもブロック番号の大きいブロックのデータは消去されてブランク「ＦＦ」になっており、書換フラグも「ＦＦ」である。したがって、最初に「ＦＦ」が検出されデータの書き換えが中断されたブロックのデータだけを消去し、それよりもブロック番号の大きいブロックのデータは消去する必要がない。
【００３８】
次にマイコン１０は、Ｓ４３８〜Ｓ４４４の処理により、終端ブロック（Ｘ）の次のブロックから最終ブロックまで書換データを書換ツール３０から順次受信し、各ブロックに対してデータの書き換えをリトライする。
【００３９】
具体的には、マイコン１０は、ブロック番号を示す変数ｋを＋１し（Ｓ４３８）、書換ツール３０からブロック（ｋ）の書換データを受信すると（Ｓ４４０：Ｙｅｓ）、ブロック（ｋ）に対してデータの書き換えをリトライする（Ｓ４４２）。そして、最終ブロックの書き換えが完了するまで（Ｓ４４４：Ｙｅｓ）、Ｓ４３８〜Ｓ４４２の処理を繰り返す。
【００４０】
（書換ツール３０のリトライ処理２、マイコン１０のリトライ処理２）
図５および図６のリトライ処理２では、最初に「ＦＦ」を検出したブロック（Ｘ＋１）の消去処理を書換ツール３０が指令し（図５のＳ４５８）、マイコン１０が書換ツール３０から消去処理指令を受信してから（図６のＳ４８４：Ｙｅｓ）、最初に「ＦＦ」を検出したブロックの消去処理を実行する（Ｓ４８６）。それ以外の処理は、図３および図４のリトライ処理１と実施的に同一であるから説明を省略する。
【００４１】
（書換ツール３０のリトライ処理３、マイコン１０のリトライ処理３）
書換ツール３０による図７のＳ５００〜Ｓ５０６のリトライ処理３は、図５のＳ４５０〜Ｓ４５６のリトライ処理２と実質的に同一であり、マイコン１０による図８のＳ５２０〜Ｓ５３２のリトライ処理３は、図６のＳ４７０〜Ｓ４８２のリトライ処理２と実質的に同一であるから説明を省略する。
【００４２】
前述したように、データを書き換える場合、図７および図８では、ブロック毎にデータの消去、書き換えを繰り返す方式を採用している。したがって、前回のデータの書換処理が中断せずに完了し、今回のデータの書換処理が中断された場合、図９に示すように、今回の書換処理が中断したブロック（１）よりもブロック番号の大きいブロックのデータは前回の書換データのままであり、書換フラグは「５Ａ」のままである。
【００４３】
そして、書換処理が中断したブロック（１）の書換フラグは消去処理された「ＦＦ」のままであり、ブロック（１）の途中まで今回の書換データが書き込まれ、ブロック（１）の残りの領域は消去処理されたブランク「ＦＦ」のままである。
【００４４】
そこで、今回の書換処理が中断して書換ツール３０からの終端ブロックの問い合わせに応じてマイコン１０が「ＦＦ」の書換フラグを検出して書換ツール３０に通知すると、書換ツール３０は、ブロック番号（Ｘ＋１）のブロックからのデータの消去処理と書換処理をブロックごとにマイコン１０に指令する。
【００４５】
具体的には、図７の処理において書換ツール３０は、Ｓ５０６の判定が「Ｎｏ」であり、ブロック（Ｘ＋１）に対するデータの書き換えが中断されたと判断すると、ブロック番号を示す変数ｋに終端ブロック番号Ｘを設定する（Ｓ５０８）。そして、ｋを＋１し（Ｓ５１０）、ブロック（ｋ）のデータの消去処理をマイコン１０に指令し（Ｓ５１２）、ブロック（ｋ）の書換データをマイコン１０に送信する（Ｓ５１４）。
【００４６】
ブロック（ｋ）の書換データの送信が完了すると（Ｓ５１６：Ｙｅｓ）、変数ｋが最終ブロック番号であるか否かを判定する（Ｓ５１８）。変数ｋが最終ブロック番号ではない場合（Ｓ５１８：Ｎｏ）、Ｓ５１０に処理を戻し、変数ｋが最終ブロック番号の場合（Ｓ５１８：Ｙｅｓ）、本処理を終了する。
【００４７】
一方、マイコン１０では、図８の処理において、Ｓ５３２で終端ブロック番号Ｘを書換ツール３０に通知すると、ブロック番号を示す変数ｋに終端ブロック番号Ｘを設定する（Ｓ５３４）。そして、ｋを＋１し（Ｓ５３６）、ブロック（ｋ）のデータの消去指令を書換ツール３０から受信すると（Ｓ５３８：Ｙｅｓ）、ブロック（ｋ）の消去処理を実行する（Ｓ５４０）。
【００４８】
そして、書換ツール３０からブロック（ｋ）の書換データを受信すると（Ｓ５４２：Ｙｅｓ）、ブロック（ｋ）に対してデータの書き換えをリトライする（Ｓ５４４）。そして、最終ブロックの書き換えが完了するまで（Ｓ５４６：Ｙｅｓ）、Ｓ５３６〜Ｓ５４４の処理を繰り返す。
【００４９】
（マイコン１０のリトライ処理４）
マイコン１０による図１０のリトライ処理４では、図８のリトライ処理３と同様に、ブロック毎にデータの消去、書き換えを繰り返す方式を採用しており、「ＦＦ」および「５Ａ」の書換フラグに加え、書き換えが完了した書換回数を書換情報として採用する点が図８のリトライ処理３と異なっている。
【００５０】
図１０において、それ以外のＳ５５０、Ｓ５５２、Ｓ５５８〜Ｓ５７６の処理は図８のＳ５２０、Ｓ５２２、Ｓ５２８〜Ｓ５４６と実質的に同一であるから説明を省略する。また、マイコン１０のリトライ処理４に対応する書換ツール３０のリトライ処理は、図７のリトライ処理３と実質的に同一であるから説明を省略する。
【００５１】
図１０のリトライ処理４では、ブロック（０）〜ブロック（ｎ）の書換情報を順次確認し（Ｓ５５４）、書換フラグとして「ＦＦ」を検出したか、あるいは書換回数が直前のブロックと異なるブロックを検出すると（Ｓ５５６：Ｙｅｓ）、検出された該当するブロックがブロック（０）から順番に書き換えを実行して最初に書き換えが中断したブロックであると判断する。
【００５２】
このように、書換情報として書換フラグに加えて書換回数を採用する理由を図１１に基づいて説明する。図１１では、１回目のデータの書換処理は全ブロックにおいて完了し、２回目の書換処理が中断されたものとしている。
【００５３】
図１１に示すように、例えばデータを消去したブロック（０）の書き換えが完了し、書換フラグを「５Ａ」、書換回数を「２」に設定してから次のブロック（１）のデータの消去を開始するまでの間に電源が遮断されると、ブロック（１）の書換フラグは前回の書換処理の結果である「５Ａ」のまま残っている。この状態では、全ブロックの書換フラグが「５Ａ」であるから、書換フラグだけでは書き換えが中断したブロックを判別できない。
【００５４】
そこで、図１１に示すように、書換フラグに加えて書き換えが完了した書換回数を書換情報に加えることにより、ブロック（０）の書換回数の「２」に対し、ブロック（１）の書換回数は「１」のままであることが分かる。したがって、図１１に示すように書換フラグだけでは書き換えが中断したブロックを判別できない場合に、書換回数を比較することにより、書き換えが中断したブロックを判別できる。
【００５５】
以上説明した上記実施形態では、フラッシュメモリ２０のブロック毎にデータの書き換えが完了したか否かを表わす書換情報として書換フラグ、または書換フラグおよび書換回数を設けているので、書き換えが完了したブロックと未完了のブロックとを判別できる。これにより、書き換えが未完了のブロックに対してだけデータの書き換えをリトライすればよいので、リトライ処理の時間を短縮できる。
【００５６】
また、書換情報を各ブロックの最後に記憶するので、各ブロックに対するデータの書換えを書換情報が妨げることを防止できる。さらに、書換データが制御プログラムの場合には制御プログラムの処理の流れ、書換データが制御データの場合には制御データの参照を書換情報が妨げることを防止できる。
【００５７】
［他の実施形態］
上記実施形態では、データを書き換える各ブロックの最後に書換情報を記憶したが、先頭に書換情報を記憶してもよい。また、データを書き換えるブロック以外のブロック、あるいは書換情報用のレジスタ等の記憶領域に書換情報を記憶してもよい。
【００５８】
上記実施形態では、書換ツール３０からの指令に対してマイコン１０がデータを書き換えたときに、書き換えが完了した終端ブロックを書換ツール３０がマイコン１０に問い合わせることによりマイコン１０に書換結果を問い合わせ、書換結果に基づいて書換ツール３０がマイコン１０にデータのリトライ書換を指令した。
【００５９】
これに対し、書換ツール３０がマイコン１０にデータの書き換えを指令するときに、前回の書換処理において書き換えが完了した終端ブロックをマイコン１０に問い合わせてもよい。
【００６０】
上記実施形態では、書換可能な不揮発性メモリとしてデータの消去単位が固定長のブロックから構成されるフラッシュメモリを例にしたが、ブロック長を可変に設定できる書換可能な不揮発性メモリであれば、ブロック毎に異なるデータ量にしてもよい。例えば、複数の処理単位からなる制御プログラムの場合には、処理単位毎にブロックのデータ量を設定してもよい。
【００６１】
本発明の電子制御装置は車両に搭載されるものに限らず、書換可能な不揮発性メモリのデータを書き換えるのであれば、どのような用途に使用される電子制御装置にも適用できる。
【００６２】
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００６３】
２：データ書換システム、１０：マイコン（電子制御装置、書換手段、判別手段、通信手段）、１８：フレーム送受信部（通信手段）、２０：フラッシュメモリ（書換可能な不揮発性メモリ）、３０：書換ツール、３８：フレーム送受信部（通信手段）
【図１】
2014016890.tif 000003
【図２】
2014016890.tif 000004
【図３】
2014016890.tif 000005
【図４】
2014016890.tif 000006
【図５】
2014016890.tif 000007
【図６】
2014016890.tif 000008
【図７】
2014016890.tif 000009
【図８】
2014016890.tif 000010
【図９】
2014016890.tif 000011
【図１０】
2014016890.tif 000012
【図１１】
2014016890.tif 000013