(57)【要約】【課題】電子制御装置のデータ書換え時間を短縮する。【解決手段】電子制御装置の不揮発性メモリには、そこに書き込まれているプログラム及び制御定数を含むデータを書き換えるときに使用する予約領域が確保されている。そして、不揮発性メモリのデータを書き換えるときには、電子制御装置は、書換え対象となるデータの少なくとも一部を構成する差分データを通信によって取得し（Ｓ６）、不揮発性メモリに格納されている書換え対象のデータと差分データとを合わせて新しいデータを生成しながら、これを予約領域へ書き込む（Ｓ７）。【選択図】図６
2016170471.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに格納されたデータを、所定規則で分割された任意単位で書換え可能な電子制御装置であって、
前記データの少なくとも一部を書き換える書換えデータを通信によって取得し、前記不揮発性メモリにおける前記任意単位の書換え部分を特定し、前記書換えデータと前記不揮発性メモリにおける書換え部分以外のデータとを合わせてデータを書き換える、
ことを特徴とする電子制御装置。
【請求項２】
前記不揮発性メモリにおける書換え部分は、前記任意単位ごとに付された識別情報によって特定される、
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記不揮発性メモリに、前記書換えデータと前記不揮発性メモリにおける書換え部分以外のデータとを合わせたデータを書き込む予約領域が確保されている、
ことを特徴とする請求項１又は請求項２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用などに搭載された電子制御装置に関する。
【背景技術】
【０００２】
自動車に搭載された電子制御装置においては、フラッシュＲＯＭ（Read Only Memory）などの不揮発性メモリに格納されたプログラム及び制御定数などのデータを書き換えるとき、書換えツールから送信されるデータによって書き換えることが一般的である。データの書き換え時間を短縮するために、特開２０１４−１８２５７１号公報（特許文献１）に記載されるように、電子制御装置において新旧のデータを比較して差分を抽出し、その差分を書換え対象とする技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１８２５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術においては、比較対象となる新データを書換えツールから電子制御装置へと送信しなければならず、電子制御装置におけるデータ書込み速度と比較して通信速度が遅いことから、データ書換えに時間がかかっていた。
【０００５】
そこで、本発明は、データ書換え時間を短縮可能な、電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、不揮発性メモリに格納されたデータを、所定規則で分割された任意単位で書き換え可能な電子制御装置は、データの少なくとも一部を書き換える書換えデータを通信によって取得する。そして、電子制御装置は、不揮発性メモリにおける任意単位の書換え部分を特定し、書換えデータと不揮発性メモリにおける書換え部分以外のデータとを合わせてデータを書き換える。
【発明の効果】
【０００７】
本発明によれば、通信データ量が減ることから、データ書換え時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】電子制御装置のデータ書換えシステムの一例を示す概要図である。
【図２】電子制御装置の内部構造の一例を示すブロック図である。
【図３】書換えツールに備えられたデータベースの一例を示すブロック図である。
【図４】サーバに備えられたデータベースの一例を示すブロック図である。
【図５】ＲＯＭに格納されたデータの第１のフォーマットの説明図である。
【図６】データ書換え処理の第１実施例を示すフローチャートである。
【図７】書換えデータ量と通信データ量との相関関係の説明図である。
【図８】従来技術及び提案技術の通信データ量を比較した説明図である。
【図９】ＲＯＭに格納されたデータの第２のフォーマットの説明図である。
【図１０】データ書換え処理の第２実施例を示すフローチャートである。
【図１１】データ書換え処理の第２実施例を示すフローチャートである。
【図１２】データ書換え処理の第３実施例を示すフローチャートである。
【図１３】データ書換え処理の第３実施例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、電子制御装置のデータ書換えシステムの一例を示す。
【００１０】
自動車１００には、エンジン、自動変速機、ＡＢＳ（Antilock Brake System）、ＥＳＣ（Electronic Stability Control）システムなどの制御対象システム２００を電子制御する、少なくとも１つの電子制御装置３００が搭載されている。また、自動車１００の所定箇所には、各種のツールを有線で着脱可能に接続する、サービスコネクタ１２０が取り付けられている。サービスコネクタ１２０、制御対象システム２００及び電子制御装置３００は、例えば、ＣＡＮ（Controller Area Network）、ＦｌｅｘＲａｙ（登録商標）などの車載ネットワーク１４０を介して、相互に通信可能に接続されている。
【００１１】
自動車１００のサービスコネクタ１２０には、電子制御装置３００のプログラム及び制御定数などのデータを書き換えるとき、例えば、パーソナルコンピュータなどからなる書換えツール４００が着脱可能に接続される。自動車１００と書換えツール４００との間の通信は、例えば、車載ネットワーク１４０と同じＣＡＮ、ＦｌｅｘＲａｙなどで行うことができる。
【００１２】
また、書換えツール４００は、電子制御装置３００のデータを一括管理する、例えば、汎用コンピュータなどからなるサーバ５００と通信可能に接続されている。書換えツール４００とサーバ５００との間の通信は、例えば、有線又は無線によるインターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などの公知のネットワークを利用することができる。なお、インターネット、ＬＡＮ、ＷＡＮなどを利用することで、書換えツール４００とサーバ５００との間の通信速度を向上させることができる。
【００１３】
電子制御装置３００は、図２に示すように、プロセッサの一例として挙げられるＣＰＵ３１０と、揮発性メモリの一例として挙げられるＲＡＭ（Random Access Memory）３２０と、不揮発性メモリの一例として挙げられるＲＯＭ３３０と、外部装置とデータの送受信を行う入出力回路（Ｉ／Ｏ）３４０と、時間を計時するタイマ３５０と、これらを通信可能に接続するバス３６０と、を有する。ここで、ＲＯＭ３３０は、プログラム及び制御定数などのデータを格納し、例えば、所定単位でデータを消去した後に、その消去領域にデータを書込み可能なフラッシュＲＯＭとすることができる。
【００１４】
書換えツール４００は、図３に示すように、電子制御装置３００のデータ構成情報が登録されたデータベース（ＤＢ）４２０を備える。データベース４２０は、例えば、パーソナルコンピュータのハードディスクに構築され、識別子テーブル４２２、最新データファイル群４２４及び差分データファイル群４２６を有する。識別子テーブル４２２には、データの構成要素（プログラム、制御定数など）ごとに、最新の構成要素を特定可能な識別子（新ＩＤ）と、その次に新しい構成要素を特定可能な識別子（旧ＩＤ）と、を関連付けたレコードが格納されている。最新データファイル群４２４には、最新の構成要素のデータファイルが格納されている。差分データファイル群４２６には、最新の構成要素のデータとその次に新しい構成要素のデータとの差分データファイル（パッチファイル）が格納されている。
【００１５】
サーバ５００は、図４に示すように、一括管理対象となる電子制御装置３００のデータ構成情報が登録されたデータベース５２０を備える。データベース５２０は、書換えツール４００のデータベース４２０と同様に、識別子テーブル５２２、最新データファイル群５２４及び差分データファイル群５２６を有する。なお、識別子テーブル５２２、最新データファイル群５２４及び差分データファイル群５２６は、書換えツール４００と同一構成であるため、その説明は省略する。但し、サーバ５００のデータベース５２０は、電子制御装置３００のデータ構成情報を一括管理するため、例えば、作業者によって最新の状態に維持されている。
【００１６】
電子制御装置３００のＲＯＭ３３０には、図５に示すような第１のフォーマットで、プログラム及び制御定数を含んだデータが格納されていると共に、そのデータを書き換えるために使用される予約領域が確保されている。ＲＯＭ３３０は、消去可能な任意のブロック単位で、例えば、領域１〜５に論理的に分割されている。図示の例では、領域１〜４には、所定の機能（機能１〜７）を実現するデータが少なくとも１つ格納されていると共に、領域５が予約領域として確保されている様子を示している。また、各機能１〜７には、その機能を識別可能にする識別子（ＩＤ１〜７）が付与されている。各機能１〜７に付与された識別子（ＩＤ１〜７）は、書換えツール４００の識別子テーブル４２２及びサーバ５００の識別子テーブル５２２において、新旧のデータを識別する新ＩＤ及び旧ＩＤに対応している。
【００１７】
ここで、各機能１〜７としては、例えば、データの書換えプログラム、ＢＩＯＳ（Basic Input/Output System）、ＯＳ（Operating System）、アプリケーションのプログラム（制御）、アプリケーションの制御定数（定数）などとすることができる。なお、領域１〜４又は各機能１〜７には、空き領域があってもよい。また、電子制御装置３００のＲＯＭ３３０には、予約領域が確保されていなくてもよい。
【００１８】
図６は、作業者が書換えツール４００を操作して電子制御装置３００のデータ書換えを指示したことを契機として、電子制御装置３００、書換えツール４００及びサーバ５００が協働して実行するデータ書換え処理の第１実施例を示す。なお、作業者がデータ書換えを指示する前に、作業者が自動車１００のサービスコネクタ１２０に書換えツール４００を接続し、電子制御装置３００を予め起動させておく（以下同様）。
【００１９】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、書換えツール４００が、書換えツール４００のデータベース４２０とサーバ５００のデータベース５２０とが一致しているか否か、要するに、データベース４２０が最新の状態になっているか否かを判定する。そして、書換えツール４００は、データベース４２０とデータベース５２０とが一致していると判定すれば（Ｙｅｓ）、処理をステップ３へと進める。一方、書換えツール４００は、データベース４２０とデータベース５２０とが一致していないと判定すれば（Ｎｏ）、処理をステップ２へと進める。
【００２０】
ここで、書換えツール４００は、例えば、次のような処理によって、書換えツール４００のデータベース４２０とサーバ５００のデータベース５２０とが一致しているか否かを判定することができる。即ち、書換えツール４００は、サーバ５００に対して識別子テーブル５２２の送信を要求する。すると、サーバ５００は、書換えツール４００からの要求に応答して、データベース５２０の識別子テーブル５２２を書換えツール４００に返送する。そして、書換えツール４００は、サーバ５００から送信された識別子テーブル５２２とデータベース４２０の識別子テーブル４２２とを比較することで、両者に相違があるか否かを介して、データベース４２０とデータベース５２０とが一致しているか否かを判定することができる。
【００２１】
ステップ２では、書換えツール４００が、書換えツール４００のデータベース４２０を最新の状態に更新する。即ち、書換えツール４００は、サーバ５００に対してデータベース５２０に登録された最新のデータの送信を要求する。すると、サーバ５００は、書換えツール４００からの要求に応答して、データベース５２０の内容、具体的には、識別子テーブル５２２、最新データファイル群５２４及び差分データファイル群５２６を書換えツール４００に返送する。そして、書換えツール４００は、サーバ５００から送信されたデータベース５２０の内容に基づいて、データベース４２０の識別子テーブル４２２、最新データファイル群５２４及び差分データファイル群５２６を夫々更新する。
【００２２】
このとき、サーバ５００は、データベース５２０に登録されたデータのうち、機能拡張などによって修正されたデータのみを送信することもできる。このようにすれば、サーバ５００から書換えツール４００に送信されるデータ量が低減するので、データ送信に要する時間が短くなり、データ書換えに要する時間を短縮することができる。また、サーバ５００は、書換えツール４００に送信するデータを所定規則で暗号化することもできる。このようにすれば、データの秘匿性を確保することができる。
【００２３】
ステップ３では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に格納された各データ（機能）の識別子を取得する。即ち、書換えツール４００は、自動車１００の電子制御装置３００に対して、ＲＯＭ３３０に格納された各データの識別子の送信を要求する。すると、電子制御装置３００は、書換えツール４００からの要求に応答して、ＲＯＭ３３０の各データから識別子を読み出し、例えば、各データの識別子を列挙した識別子情報を書換えツール４００に返送する。そして、書換えツール４００は、電子制御装置３００から送信された識別子情報を受信し、例えば、これをＲＡＭ３２０に一時保存する。
【００２４】
ステップ４では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に書換え対象となるデータが存在するか否かを判定する。即ち、書換えツール４００は、ＲＡＭ３２０に一時保存した識別子情報の各識別子が、データベース４２０の識別子テーブル４２２の旧ＩＤに格納されているか否かを介して、書換え対象となるデータが存在するか否かを判定する。そして、書換えツール４００は、書換え対象となるデータが存在すると判定すれば（Ｙｅｓ）、処理をステップ５へと進める。一方、書換えツール４００は、書換え対象となるデータが存在しないと判定すれば（Ｎｏ）、処理をステップ１３へと進める。
【００２５】
ステップ５では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に予約領域が確保されているか否かを判定する。即ち、書換えツール４００は、電子制御装置３００に対して、ＲＯＭ３３０に確保された予約領域の個数を問い合わせる。すると、電子制御装置３００は、書換えツール４００からの問い合わせに応答して、例えば、ＲＯＭ３３０のデータフォーマットを参照し、ＲＯＭ３３０に確保されている予約領域の個数を計数して書換えツール４００に返送する。ここで、電子制御装置３００は、ＲＯＭ３３０に予約領域が確保されていない場合、その個数として０を書換えツール４００に返送する。また、電子制御装置３００は、ＲＯＭ３３０に確保された予約領域にデータが書き込まれている場合、その予約領域は使用済であるため、これを計数対象から除外する。そして、書換えツール４００は、電子制御装置３００から送信された予約領域の個数が０より大きいとき、ＲＯＭ３３０に予約領域が確保されていると判定し（Ｙｅｓ）、処理をステップ６へと進める。一方、書換えツール４００は、電子制御装置３００から送信された予約領域の個数が０のとき、ＲＯＭ３３０に予約領域が確保されていないと判定し（Ｎｏ）、処理をステップ８へと進める。
【００２６】
ステップ６では、書換えツール４００が、電子制御装置３００に対して、データの書込み領域としてＲＯＭ３３０の予約領域を指定し、データベース４２０の差分データファイル群４２６に格納された差分データファイルの中から、書換え対象となるデータの差分データファイルを送信する。ここで、書換えツール４００は、データの書き込み領域として指定する予約領域は、未使用のものから順次選定する。また、書換えツール４００は、書換え対象となるデータが複数存在する場合、例えば、電子制御装置３００のＲＯＭ３３０のアドレスが小さい領域から順次選定した、１つの差分データファイルを送信する。
【００２７】
ステップ７では、電子制御装置３００が、ＲＯＭ３３０に格納されている既存のデータと書換えツール４００から送信された差分データファイルとを合体させて新しいデータを生成、要するに、旧データにパッチを当てながら、指定された予約領域に書き込む。
【００２８】
ステップ８では、電子制御装置３００にデータの書き込み領域を確保するため、電子制御装置３００と書換えツール４００とが協働して、書換え対象となるデータが格納されている領域を消去する。即ち、書換えツール４００は、電子制御装置３００に対して、旧ＩＤによって特定されるデータが格納されている領域の消去を命令する。すると、電子制御装置３００は、書換えツール４００からの命令に応答して、旧ＩＤによって特定されるデータが格納されている領域を消去する。ここで、消去対象となる領域に、書換え対象となるデータに加えて、書換え対象とならないデータが格納されていても、その領域全体を消去する。以下、消去した領域を、「消去領域」と呼ぶ。
【００２９】
ステップ９では、書換えツール４００が、電子制御装置３００に対して、データベース４２０の最新データファイル群４２４に格納されたデータファイルの中から、消去領域に書き込む最新のデータファイルを送信する。ここで、書換えツール４００から電子制御装置３００に送信されるデータファイルは、１つに限らず、消去領域に格納されていたデータに応じた数とすることができる。
【００３０】
ステップ１０では、電子制御装置３００が、書換えツール４００から送信されたデータファイルを消去領域に書き込む。
【００３１】
ステップ１１では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０にデータが正常に書き込まれたか否かを判定する。即ち、電子制御装置３００は、例えば、ＲＯＭ３３０に書き込んだデータとＲＯＭ３３０から読み込んだデータとを比較することでベリファイを行い、そのベリファイ結果を書換えツール４００に送信する。書換えツール４００は、電子制御装置３００から送信されたベリファイ結果に基づいて、データが正常に書き込まれたか否かを判定する。そして、書換えツール４００は、データが正常に書き込まれたと判定すれば（Ｙｅｓ）、処理をステップ１２へと進める。一方、書換えツール４００は、データが正常に書き込まれていないと判定すれば（Ｎｏ）、データ書込みを再度実行すべく、処理をステップ５へと戻す。
【００３２】
ステップ１２では、書換えツール４００が、書換え対象となるデータに残りがあるか否かを判定する。そして、書換えツール４００は、データに残りがないと判定すれば（Ｙｅｓ）、処理をステップ１３へと進める。一方、書換えツール４００は、データに残りがあると判定すれば（Ｎｏ）、処理をステップ５へと戻す。
【００３３】
ステップ１３では、書換えツール４００が、データ書換えが完了したことをモニタに表示する。このようにすれば、作業者は、データ書換えが完了、即ち、電子制御装置３００のデータが最新となったことを容易に認識することができる。
【００３４】
かかるデータ書換えシステムによれば、データ書換え作業を開始するとき、必要に応じて、書換えツール４００のデータベース４２０が最新の状態に更新される。そして、電子制御装置３００のＲＯＭ３３０に書き込まれているデータの識別子と、データベース４２０に格納されている最新のデータの識別子（新ＩＤ）と、を比較することで、電子制御装置３００に書換え対象となるデータがあるか否かが判定される。
【００３５】
電子制御装置３００に書換え対象となるデータがある場合、そのＲＯＭ３３０に予約領域が確保されていれば、書換えツール４００から電子制御装置３００へと、書換え対象となるデータの差分データファイルが送信される。そして、電子制御装置３００では、ＲＯＭ３３０に書き込まれている旧データと差分データファイルとを合体させて新しいデータを生成しながら、これが予約領域に書き込まれる。
【００３６】
また、電子制御装置３００に書換え対象となるデータがある場合、そのＲＯＭ３３０に予約領域が確保されていなければ、書換え対象となるデータが格納されている領域が消去される。そして、書換えツール４００から電子制御装置３００へと、消去領域に書き込むデータの最新データファイルが送信され、これが消去領域に書き込まれる。
【００３７】
電子制御装置３００と書換えツール４００との間で送受信する通信データは、通信制御に関するデータ量と、データ送信に関するデータ量と、に分けることができる。通信制御に関するデータ量は、データ送信に関するデータ量の大小にかかわらず、同一又は略一定である。従来技術においては、前述したように、書換えツール４００から電子制御装置３００へとすべてのデータが送信されていたため、図７に示すように、通信データ量は、書換え対象となるデータ量にかかわらず、略一定であった。しかし、本提案技術においては、電子制御装置３００のＲＯＭ３３０に予約領域が確保されていれば、書換えツール４００から電子制御装置３００へと差分データファイルが送信される。このため、図７に示すように、通信データ量は、書換え対象となるデータ量に比例して増加し、すべてのデータが書換え対象となっても従来技術と同一である。
【００３８】
従って、本提案技術においては、電子制御装置３００と書換えツール４００との間の通信データ量は、図８に示すように、従来技術と比較して減少し、その分だけデータ通信に要する時間を短縮することができる。よって、本提案技術は、データ書換え時間を短縮することができる。
【００３９】
電子制御装置３００のＲＯＭ３３０には、図５に示す第１のフォーマットに限らず、図９に示すような第２のフォーマットで、プログラム及び制御定数を含んだデータが格納されていると共に、そのデータを書き換えるために使用される予約領域が確保されていてもよい。即ち、ＲＯＭ３３０は、消去可能な任意のブロック単位で、例えば、領域１〜５に論理的に分割されている。図示の例では、第１のフォーマットとは異なり、各機能１〜７には空き領域がなく、領域１から５に向かって、機能１、空き領域、機能２〜７及び予約領域がこの順番で連続して配置されている。従って、機能の一部、例えば、機能３（ＯＳ）、機能５（アプリケーション１の制御定数）及び予約領域などは、２つ以上の領域に亘って配置されることがある。ここで、空き領域は未使用であるので、これを予約領域とみなすこともできる。
【００４０】
なお、第２のフォーマットでは、各機能の配置領域が特定できないため、その機能を識別可能にする識別子は付与されていない。従って、各機能に識別子が付与されているか否かを調べることで、データの配置が第１のフォーマットか第２のフォーマットであるかを判定することができる。
【００４１】
図１０及び図１１は、作業者が書換えツール４００を操作して電子制御装置３００のデータ書換えを指示したことを契機として、電子制御装置３００、書換えツール４００及びサーバ５００が協働して実行するデータ書換え処理の第２実施例を示す。なお、先の第１実施例と共通する処理については、重複説明を排除する目的で、その説明を簡単にする（以下同様）。
【００４２】
ステップ２１では、書換えツール４００が、書換えツール４００のデータベース４２０とサーバ５００のデータベース５２０とが一致しているか否かを判定する。そして、書換えツール４００は、データベース４２０とデータベース５２０とが一致していると判定すれば（Ｙｅｓ）、処理をステップ２３へと進める。一方、書換えツール４００は、データベース４２０とデータベース５２０とが一致していないと判定すれば（Ｎｏ）、処理をステップ２２へと進める。
【００４３】
ステップ２２では、書換えツール４００が、書換えツール４００のデータベース４２０を最新の状態に更新する。
【００４４】
ステップ２３では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に格納された各データの識別子を取得する。
【００４５】
ステップ２４では、書換えツール４００が、各データの識別子がブランク（未設定）であるか否か、要するに、データの配置が第２のフォーマットであるか否かを判定する。そして、書換えツール４００は、各データの識別子がブランクであると判定すれば（Ｙｅｓ）、処理をステップ２５へと進める。一方、書換えツール４００は、各データの識別子がブランクでない、要するに、データの配置が第１のフォーマットであると判定すれば（Ｎｏ）、処理をステップ３４へと進める。
【００４６】
ステップ２５では、書換えツール４００が、作業者にデータを書き換えるか否かを選択させる画面をモニタに表示する。そして、作業者は、モニタに表示された画面において、データ書換えを行うか否かを選択する。
【００４７】
ステップ２６では、書換えツール４００が、作業者の選択結果に応じて、データを書き換えるか否かを判定する。そして、書換えツール４００は、データを書き換えると判定すれば（Ｙｅｓ）、処理をステップ２７へと進める。一方、書換えツール４００は、データを書き換えないと判定すれば（Ｎｏ）、処理をステップ４３へと進める。
【００４８】
ステップ２７では、書換えツール４００が、作業者に書き換えるデータを選択させる画面をモニタに表示する。そして、作業者は、モニタに表示された画面において、書換えを行うデータを少なくとも１つ選択する。
【００４９】
ステップ２８では、電子制御装置３００にデータの書き込み領域を確保するため、電子制御装置３００と書換えツール４００とが協働して、ＲＯＭ３３０の全領域（領域１〜５）を消去する。即ち、書換えツール４００は、電子制御装置３００に対して、全領域の消去を命令する。そして、電子制御装置３００は、書換えツール４００からの命令に応答し、ＲＯＭ３３０の全領域を消去する。なお、ＲＯＭ３３０の空き領域及び予約領域が消去済である場合には、これらに対応する領域を消去しなくてもよい。
【００５０】
ステップ２９では、書換えツール４００が、データベース４２０の最新データファイル群４２４に格納されたデータファイルの中から、電子制御装置３００に対して、作業者によって選択されたデータのデータファイルを送信する。ここで、作業者が複数のデータを選択した場合には、書換えツール４００は、例えば、作業者が選択した順序で１つのデータファイルを送信する。
【００５１】
ステップ３０では、電子制御装置３００が、書換えツール４００から送信されたデータファイルを消去領域に書き込む。ここで、データファイルは、消去範囲の先頭から順番に書き込まれる。
【００５２】
ステップ３１では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０にデータが正常に書き込まれたか否かを判定する。そして、書換えツール４００は、データが正常に書き込まれたと判定すれば（Ｙｅｓ）、処理をステップ３２へと進める。一方、書換えツール４００は、データが正常に書き込まれていないと判定すれば（Ｎｏ）、処理をステップ２９へと戻す。
【００５３】
ステップ３２では、書換えツール４００が、書換え対象となるデータに残りがあるか否かを判定する。そして、書換えツール４００は、データに残りがないと判定すれば（Ｙｅｓ）、処理をステップ３３へと進める。一方、書換えツール４００は、データに残りがあると判定すれば（Ｎｏ）、処理をステップ２９へと戻す。
【００５４】
ステップ３３では、書換えツール４００が、データ書換えが完了したことをモニタに表示する。
【００５５】
ステップ３４では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に書換え対象となるデータが存在するか否かを判定する。そして、書換えツール４００は、書換え対象となるデータが存在すると判定すれば（Ｙｅｓ）、処理をステップ３５へと進める。一方、書換えツール４００は、書換え対象となるデータが存在しないと判定すれば（Ｎｏ）、処理をステップ３３へと進める。
【００５６】
ステップ３５では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に予約領域が確保されているか否かを判定する。そして、書換えツール４００は、ＲＯＭ３３０に予約領域が確保されていると判定すれば（Ｙｅｓ）、処理をステップ３６へと進める。一方、書換えツール４００は、ＲＯＭ３３０に予約領域が確保されていないと判定すれば（Ｎｏ）、処理をステップ４０へと進める。
【００５７】
ステップ３６では、書換えツール４００が、電子制御装置３００に対して、データの書込み領域としてＲＯＭ３３０の予約領域を指定し、データベース４２０の差分データファイル群４２６に格納された差分データファイルの中から、書換え対象となるデータの差分データファイルを送信する。
【００５８】
ステップ３７では、電子制御装置３００が、ＲＯＭ３３０に格納されている既存のデータと書換えツール４００から送信された差分データファイルとを合体させて新しいデータを生成しながら、指定された予約領域に書き込む。
【００５９】
ステップ３８では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０にデータが正常に書き込まれたか否かを判定する。そして、書換えツール４００は、データが正常に書き込まれたと判定すれば（Ｙｅｓ）、処理をステップ３９へと進める。一方、書換えツール４００は、データが正常に書き込まれていないと判定すれば（Ｎｏ）、処理をステップ３５へと戻す。
【００６０】
ステップ３９では、書換えツール４００が、書換え対象となるデータに残りがあるか否かを判定する。そして、書換えツール４００は、データに残りがないと判定すれば（Ｙｅｓ）、処理をステップ３３へと進める。一方、書換えツール４００は、データに残りがあると判定すれば（Ｎｏ）、処理をステップ３５へと戻す。
【００６１】
ステップ４０では、電子制御装置３００にデータの書き込み領域を確保するため、電子制御装置３００と書換えツール４００とが協働して、書換え対象となるデータが格納されている領域を消去する。
【００６２】
ステップ４１では、書換えツール４００が、電子制御装置３００に対して、データベース４２０の最新データファイル群４２４に格納されたデータファイルの中から、消去領域に書き込む最新のデータファイルを送信する。
【００６３】
ステップ４２では、電子制御装置３００が、書換えツール４００から送信されたデータファイルを消去領域に書き込む。
【００６４】
ステップ４３では、作業者によってデータの書換え作業がキャンセルされたので、書換えツール４００が、書換えがキャンセルされたことをモニタに表示する。
【００６５】
かかるデータ書換えシステムによれば、電子制御装置３００のＲＯＭ３３０に格納されたデータの識別子がブランクであるか否かを介して、データの配置が第１のフォーマットであるか第２のフォーマットであるか否かが判定される。そして、データの配置が第１のフォーマットであれば、先の第１実施例と同様な処理によってデータが書き換えられる。一方、データの配置が第２のフォーマットであれば、作業者に対して、データの書換えを実行するか否か、及び、書換え対象となるデータを選択させる。そして、各データの配置が不定であるため、ＲＯＭ３３０の全領域が消去された後、作業者によって選択されたデータのデータファイルが順次送信され、これが消去領域に書き込まれる。
【００６６】
従って、データの配置が異なっていても、電子制御装置３００のＲＯＭ３３０のデータを書き換えることができる。このとき、電子制御装置３００のＲＯＭ３３０は、その全領域が消去されるので、例えば、新旧のデータでサイズが異なっていても、これに対応することができる。なお、他の作用及び効果については、先の第１実施例と同様であるので、必要があればその説明を参照されたい。
【００６７】
図１２及び図１３は、作業者が書換えツール４００を操作して電子制御装置３００のデータ書換えを指示したことを契機として、電子制御装置３００、書換えツール４００及びサーバ５００が協働して実行するデータ書換え処理の第３実施例を示す。
【００６８】
ステップ５１では、書換えツール４００が、書換えツール４００のデータベース４２０とサーバ５００のデータベース５２０とが一致しているか否かを判定する。そして、書換えツール４００は、データベース４２０とデータベース５２０とが一致していると判定すれば（Ｙｅｓ）、処理をステップ５３へと進める。一方、書換えツール４００は、データベース４２０とデータベース５２０とが一致していないと判定すれば（Ｎｏ）、処理をステップ５２へと進める。
【００６９】
ステップ５２では、書換えツール４００が、書換えツール４００のデータベース４２０を最新の状態に更新する。
【００７０】
ステップ５３では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に格納された各データの識別子を取得する。
【００７１】
ステップ５４では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に書換え対象となるデータが存在するか否かを判定する。そして、書換えツール４００は、書換え対象となるデータが存在すると判定すれば（Ｙｅｓ）、処理をステップ５５へと進める。一方、書換えツール４００は、書換え対象となるデータが存在しないと判定すれば（Ｎｏ）、処理をステップ６５へと進める。
【００７２】
ステップ５５では、書換えツール４００が、電子制御装置３００のＲＯＭ３３０に予約領域が確保されているか否かを判定する。そして、書換えツール４００は、ＲＯＭ３３０に予約領域が確保されていると判定すれば（Ｙｅｓ）、処理をステップ５６へと進める。一方、書換えツール４００は、ＲＯＭ３３０に予約領域が確保されていないと判定すれば（Ｎｏ）、処理をステップ６６へと進める。
【００７３】
ステップ５６では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０に確保された予約領域が消去、要するに、データを書き込む準備ができているか否かを判定する。即ち、書換えツール４００は、電子制御装置３００に対して、予約領域が消去されているか否かを問い合わせる。電子制御装置３００は、書換えツール４００からの問い合わせに応答して、ＲＯＭ３３０の予約領域を確認し、書換えツール４００に予約領域の状況を返送する。書換えツール４００は、電子制御装置３００から送信された予約領域の状況に応じて、予約領域が消去されているか否かを判定する。そして、書換えツール４００は、予約領域が消去されていないと判定すれば（Ｙｅｓ）、処理をステップ５７へと進める。一方、書換えツール４００は、予約領域が消去されていると判定すれば（Ｎｏ）、処理をステップ５８へと進める。
【００７４】
ステップ５７では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０に確保された予約領域を消去する。即ち、書換えツール４００は、電子制御装置３００に対して、予約領域の消去を命令する。電子制御装置３００は、電子制御装置３００からの命令に応答して、ＲＯＭ３３０に確保された予約領域を消去する。
【００７５】
ステップ５８では、書換えツール４００が、電子制御装置３００に対して、データの書き込み領域としてＲＯＭ３３０の予約領域を指定し、データベース４２０の差分データファイル群４２６に格納された差分データファイルの中から、書換え対象となるデータの差分データファイルを送信する。
【００７６】
ステップ５９では、電子制御装置３００が、ＲＯＭ３３０に格納されている既存のデータと書換えツール４００から送信された差分データファイルとを合体させて新しいデータを生成しながら、これを指定された予約領域に書き込む。
【００７７】
ステップ６０では、書込みツール４００が、電子制御装置３００にデータを書き込んでいるときに、例えば、通信ノイズ、バッテリ瞬断などに起因する外乱によって、異常が発生したか否かを判定する。ここで、外乱によって異常が発生したか否かは、書込みツール４００が、例えば、通信状態、バッテリ電圧を監視することで判定することができる。そして、書込みツール４００は、異常が発生したと判定すれば（Ｙｅｓ）、処理をステップ６１へと進める。一方、書込みツール４００は、異常が発生していないと判定すれば（Ｎｏ）、処理をステップ６３へと進める。
【００７８】
ステップ６１では、書込みツール４００が、異常が発生したことをモニタに表示する。ここで、モニタの表示には、データの書換え作業を継続するか否かを選択する画面が含まれる。そして、作業者は、この画面を操作し、データの書換え作業を継続するか否かを選択する。なお、モニタの表示には、異常発生の原因を併せて表示することもできる。
【００７９】
ステップ６２では、書込みツール４００が、作業者の選択結果に応じて、データの書換え作業を継続するか否かを判定する。そして、書込みツール４００は、データ書換え作業を続行すると判定すれば（Ｙｅｓ）、処理をステップ６４へと進める。一方、書込みツール４００は、データ書換え作業を継続しない、要するに、データ書換え作業をキャンセルすると判定すれば（Ｎｏ）、処理を終了させる。
【００８０】
ステップ６３では、電子制御装置３００と書換えツール４００とが協働して、電子制御装置３００のＲＯＭ３３０にデータが正常に書き込まれたか否かを判定する。そして、書換えツール４００は、データが正常に書き込まれたと判定すれば（Ｙｅｓ）、処理をステップ６４へと進める。一方、書換えツール４００は、データが正常に書き込まれていないと判定すれば（Ｎｏ）、処理をステップ５５へと戻す。
【００８１】
ステップ６４では、書換えツール４００が、書換え対象となるデータに残りがあるか否かを判定する。そして、書換えツール４００は、データに残りがないと判定すれば（Ｙｅｓ）、処理をステップ６５へと進める。一方、書換えツール４００は、データに残りがあると判定すれば（Ｎｏ）、処理をステップ５５へと戻す。
【００８２】
ステップ６５では、書換えツール４００が、データ書換えが完了したことをモニタに表示する。
【００８３】
ステップ６６では、電子制御装置３００にデータの書き込み領域を確保するため、電子制御装置３００と書換えツール４００とが協働して、書換え対象となるデータが格納されている領域を消去する。
【００８４】
ステップ６７では、書換えツール４００が、電子制御装置３００に対して、データベース４２０の最新データファイル群４２４に格納されたデータファイルの中から、消去領域に書き込む最新のデータファイルを送信する。
【００８５】
ステップ６８では、電子制御装置３００が、書換えツール４００から送信されたデータファイルを消去領域に書き込む。
【００８６】
かかるデータ書換えシステムによれば、電子制御装置３００のＲＯＭ３３０にデータを書き込んでいるときに、外乱などによって異常が発生すると、データ書換え作業が中断され、作業継続の要否が作業者によって選択される。そして、データ書換え作業を継続する場合には、データの書換え作業が最初から実行される。このため、異常が発生したときには、最初からデータ書換え作業が再開されるので、一部のデータが正しく書き込まれていないなど、電子制御装置３００が不完全な状態で稼働することを抑制できる。
【００８７】
また、電子制御装置３００のＲＯＭ３３０に予約領域が確保されている場合、その予約領域が消去されていなければ、データ書込みに先立ってこれが消去される。このため、予約領域が消去済である場合、その消去作業が実行されないため、データ書込み作業に要する時間を更に短縮することができる。なお、他の作用及び効果については、先の第１の実施例及び第２の実施例と同様であるので、その説明は省略する。必要があれば、第１の実施例又は第２の実施例の該当箇所を参照されたい。
【００８８】
上記実施形態から、次のような技術的特徴を把握することができる。
不揮発性メモリの一例として挙げられるＲＯＭ３３０に格納されたデータを、所定規則で分割された任意単位で書換え可能な電子制御装置３００は、データの少なくとも一部を書き換える書換えデータを通信によって取得する。そして、電子制御装置３００は、ＲＯＭ３３０における任意単位の書換え部分を特定し、書換えデータとＲＯＭ３３０における書換え部分以外のデータとを合わせてデータを書き換える。
【００８９】
本実施形態では、第１の実施例、第２の実施例及び第３の実施例における各処理を、技術的に矛盾が発生しない限りにおいて、適宜置き換えたり、又は、適宜組み合わせたりすることができる。
【００９０】
また、本実施形態は、自動車１００に搭載された電子制御装置３００に限らず、例えば、インターネットに接続された家電製品などに搭載された電子制御装置にも適用することができる。
【符号の説明】
【００９１】
３００  電子制御装置
３３０  ＲＯＭ（不揮発性メモリ）
【図１】
2016170471.tif 000003
【図２】
2016170471.tif 000004
【図３】
2016170471.tif 000005
【図４】
2016170471.tif 000006
【図５】
2016170471.tif 000007
【図６】
2016170471.tif 000008
【図７】
2016170471.tif 000009
【図８】
2016170471.tif 000010
【図９】
2016170471.tif 000011
【図１０】
2016170471.tif 000012
【図１１】
2016170471.tif 000013
【図１２】
2016170471.tif 000014
【図１３】
2016170471.tif 000015