(57)【特許請求の範囲】
【請求項１】
車両の動作を制御する処理を記述した制御ソフトウェアを実行する車両制御装置の前記制御ソフトウェアを更新するリプログラミングシステムであって、
前記車両制御装置は、
前記車両の動作を制御する処理を記述した制御ソフトウェア、および、前記制御ソフトウェアを書き換えることにより前記制御ソフトウェアの旧版である旧版制御ソフトウェアから前記制御ソフトウェアの新版である新版制御ソフトウェアへ更新する処理を記述した書換ソフトウェアを格納する記憶部、
前記制御ソフトウェアおよび前記書換ソフトウェアを実行する演算部、
前記演算部が前記制御ソフトウェアを実行することにより更新するデータのうち前記車両制御装置に対する電源供給が途絶えても保持すべき永続化データを格納する不揮発性メモリ、
を備え、
前記リプログラミングシステムは、
前記新版制御ソフトウェアを前記記憶部に対して書き込むリプログラミング装置、
前記旧版制御ソフトウェアが使用する前記永続化データの前記不揮発性メモリ上における配置を記述した旧配置データ、および前記新版制御ソフトウェアが使用する前記永続化データの前記不揮発性メモリ上における配置を記述した新配置データを格納する配置データベース、
を有し、
前記リプログラミング装置は、
前記旧配置データと前記新配置データを比較することにより、前記不揮発性メモリ内に格納されている前記永続化データのうち前記新配置データに対応する部分を特定し、
その特定した部分を前記新配置データにしたがって前記不揮発性メモリ上において再配置するよう指示する再配置データを生成して前記車両制御装置に対して送信し、
前記演算部は、
前記書換ソフトウェアを実行する過程において、前記再配置データの記述にしたがって、前記旧版制御ソフトウェアが使用する前記永続化データである旧版永続化データを、前記新版制御ソフトウェアが使用する前記永続化データである新版永続化データへ書き換え、
前記旧配置データと前記新配置データは、
前記不揮発性メモリ上における前記永続化データのアドレス、各前記アドレス上に配置される前記永続化データのラベル、および各前記アドレス上に配置される前記永続化データのサイズを記述しており、
前記リプログラミング装置は、
前記旧配置データが記述している前記ラベルおよび前記サイズと、前記新配置データが記述している前記ラベルおよび前記サイズとがそれぞれ同一である場合は、前記旧配置データが指している前記永続化データと前記新配置データが指している前記永続化データが同一であるとみなす同一チェックステップを実施し、
前記旧配置データが指している前記永続化データと前記新配置データが指している前記永続化データが同一であるとみなした場合は、前記旧配置データが記述している前記アドレスを前記サイズ分だけ前記再配置データへ転記し、
前記旧配置データが指している前記永続化データと前記新配置データが指している前記永続化データが同一であるとみなさなかった場合は、前記永続化データの初期値を格納しているアドレスを前記新配置データが記述している前記サイズ分だけ前記再配置データに記録する
ことを特徴とするリプログラミングシステム。
【請求項２】
前記リプログラミング装置は、
前記不揮発性メモリ上において前記永続化データを格納している永続化データ記憶領域の先頭アドレスから順に、前記永続化データ記憶領域上のアドレスが前記新配置データ上に記述されているか否かをチェックし、
記述されている場合は、前記同一チェックステップを実施し、
記述されていない場合は、任意の初期値を格納しているアドレスを前記再配置データに記録する
ことを特徴とする請求項１記載のリプログラミングシステム。
【請求項３】
前記車両制御装置は、
前記永続化データのコピーを一時的に格納する一時メモリを備え、
前記演算部は、
前記不揮発性メモリが格納している前記永続化データを前記一時メモリへコピーし、前記制御ソフトウェアまたは前記書換ソフトウェアを実行するときは、前記一時メモリ上にコピーされた前記永続化データを使用し、
前記リプログラミング装置は、
前記永続化データ記憶領域に対して書き込むべきデータを保持している前記永続化データ記憶領域のアドレスを、前記永続化データ記憶領域の先頭アドレスに対して書き込むべきデータから順に１バイトずつ、前記再配置データ内に記録し、
前記演算部は、
前記再配置データが記述しているアドレスに対応する前記一時メモリ上のデータを１バイトずつ順に読み取って前記永続化データ記憶領域に対して書き込むことにより、前記永続化データを前記永続化データ記憶領域上において再配置する
ことを特徴とする請求項２記載のリプログラミングシステム。
【請求項４】
車両の動作を制御する処理を記述した制御ソフトウェアを実行する車両制御装置の前記制御ソフトウェアを更新するリプログラミングシステムであって、
前記車両制御装置は、
前記車両の動作を制御する処理を記述した制御ソフトウェア、および、前記制御ソフトウェアを書き換えることにより前記制御ソフトウェアの旧版である旧版制御ソフトウェアから前記制御ソフトウェアの新版である新版制御ソフトウェアへ更新する処理を記述した書換ソフトウェアを格納する記憶部、
前記制御ソフトウェアおよび前記書換ソフトウェアを実行する演算部、
前記演算部が前記制御ソフトウェアを実行することにより更新するデータのうち前記車両制御装置に対する電源供給が途絶えても保持すべき永続化データを格納する不揮発性メモリ、
を備え、
前記リプログラミングシステムは、
前記新版制御ソフトウェアを前記記憶部に対して書き込むリプログラミング装置、
前記旧版制御ソフトウェアが使用する前記永続化データの前記不揮発性メモリ上における配置を記述した旧配置データ、および前記新版制御ソフトウェアが使用する前記永続化データの前記不揮発性メモリ上における配置を記述した新配置データを格納する配置データベース、
を有し、
前記リプログラミング装置は、
前記旧配置データと前記新配置データを比較することにより、前記不揮発性メモリ内に格納されている前記永続化データのうち前記新配置データに対応する部分を特定し、
その特定した部分を前記新配置データにしたがって前記不揮発性メモリ上において再配置するよう指示する再配置データを生成して前記車両制御装置に対して送信し、
前記演算部は、
前記書換ソフトウェアを実行する過程において、前記再配置データの記述にしたがって、前記旧版制御ソフトウェアが使用する前記永続化データである旧版永続化データを、前記新版制御ソフトウェアが使用する前記永続化データである新版永続化データへ書き換え、
前記旧配置データと前記新配置データは、
前記不揮発性メモリ上における前記永続化データのアドレス、各前記アドレス上に配置される前記永続化データのラベル、および各前記アドレス上に配置される前記永続化データのサイズを記述しており、
前記リプログラミング装置は、
前記旧配置データが記述している前記ラベルおよび前記サイズと、前記新配置データが記述している前記ラベルおよび前記サイズとがそれぞれ同一である場合は、前記旧配置データが示している前記永続化データと前記新配置データが示している前記永続化データが同一であるとみなし、
前記旧配置データが指している前記永続化データと前記新配置データが指している前記永続化データが同一であり、かつ前記旧配置データが記述している前記アドレスと前記新配置データが記述している前記アドレスが異なる場合は、前記旧配置データが記述している前記アドレスと前記新配置データが記述している前記アドレスとの間の対応関係および前記新配置データが記述している前記サイズを前記再配置データに記録し、
前記旧配置データが指している前記永続化データと前記新配置データが指している前記永続化データが同一でない場合は、前記新配置データが記述している前記アドレス、前記新配置データが記述している前記サイズ、および前記永続化データの初期値を格納しているアドレスを前記再配置データに記録する
ことを特徴とするリプログラミングシステム。
【請求項５】
前記車両制御装置は、
前記永続化データのコピーを一時的に格納する一時メモリを備え、
前記演算部は、
前記不揮発性メモリが格納している前記永続化データを前記一時メモリへコピーし、前記制御ソフトウェアまたは前記書換ソフトウェアを実行するときは、前記一時メモリ上にコピーされた前記永続化データを使用し、
前記演算部は、
前記不揮発性メモリ上のアドレスのうち前記再配置データが記述している前記旧配置データのアドレスについては、前記再配置データが記述している前記旧配置データのアドレスに対応する前記一時メモリ上のデータを前記再配置データが記述しているサイズだけ読み取って前記不揮発性メモリに対して書き込むことにより、前記永続化データを前記不揮発性メモリ上において再配置し、
前記不揮発性メモリ上のアドレスのうち前記再配置データが記述していない前記旧配置データのアドレスについては、前記不揮発性メモリ上のデータをそのまま残す
ことを特徴とする請求項４記載のリプログラミングシステム。
【請求項６】
前記配置データベースは、
前記制御ソフトウェアのバージョン毎に前記旧配置データを格納しており、
前記リプログラミング装置は、
前記旧版制御ソフトウェアのバージョンに基づき、前記再配置データを生成する際に使用すべき前記旧配置データを特定する
ことを特徴とする請求項１から５のいずれか１項記載のリプログラミングシステム。
【請求項７】
前記演算部は、
前記リプログラミング装置から前記制御ソフトウェアを更新する処理を開始する旨の通知を受け取ると、前記旧版制御ソフトウェアのバージョンを前記リプログラミング装置に対して送信し、
前記リプログラミング装置は、
前記演算部から受け取った前記旧版制御ソフトウェアのバージョンに基づき、前記再配置データを生成する際に使用すべき前記旧配置データを特定する
ことを特徴とする請求項６記載のリプログラミングシステム。
【請求項８】
前記リプログラミング装置は、
所定のマンマシンインターフェースを介して前記旧版制御ソフトウェアのバージョンを受け取り、その受け取ったバージョンに基づき、前記再配置データを生成する際に使用すべき前記旧配置データを特定する
ことを特徴とする請求項６記載のリプログラミングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の動作を制御する処理を記述した制御ソフトウェアを更新する技術に関する。
【背景技術】
【０００２】
車両の動作を制御する車両制御装置は、電気的に記憶内容を書き換えることができるフラッシュメモリやＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などのような不揮発性メモリを備え、同メモリ内に制御ソフトウェアを格納している。制御ソフトウェアは、エンジンや変速機などの車両が備える機器を制御する処理を実装している。下記特許文献１は、外部装置からの要求に応じて、制御ソフトウェアを書き換える技術について記載している。
【０００３】
車両制御装置は、制御ソフトウェアを実行することによって更新されるデータのうち、車両制御装置に対する電源供給が停止されても継続して保存すべきデータを、ＥＥＰＲＯＭなどの書換可能な不揮発性メモリ内に永続化して記憶する。例えば学習値や故障診断結果などのデータがこれに該当する。以下、このようなデータのことをバックアップデータと呼ぶ。
【０００４】
制御ソフトウェアを更新するとき、更新の前後においてバックアップデータの値を同一に維持するため、バックアップデータを格納する不揮発性メモリ上のアドレスは、一般に特定のアドレスに固定されている。例えば不揮発性メモリ上のあるアドレス範囲内はバックアップデータを格納する記憶領域として固定され、当該記憶領域にはその他データを格納しないようにしている。以下ではこの記憶領域のことをバックアップデータ記憶領域と呼ぶ。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１４９４３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
新規にバックアップデータを追加する場合、バックアップデータ記憶領域のうち他のバックアップデータが保存されていない領域へデータを格納する必要がある。このとき、データ型のアライメントの制約や未割当領域の空き領域の大きさなどの原因により、データとデータとの間に小さい未割当領域が残存する場合がある。この未割当領域により、記憶領域全体としては十分な空き領域を有していても、新たなバックアップデータを追加することができない可能性がある。
【０００７】
上記のような状況を回避するための手段として、バックアップデータを再配置することにより未割当領域を除去することが考えられる。しかし制御ソフトウェアを更新する従来の手順は、更新前後においてバックアップデータの値を同一に維持することを確実にするため、バックアップデータ記憶領域上におけるバックアップデータのアドレスは変更しないようにしている。
【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、制御ソフトウェアを更新することにともない、バックアップデータ記憶領域上のバックアップデータの同一性を維持しつつ効率的に再配置する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るリプログラミングシステムは、不揮発性メモリ上における旧版バックアップデータの配置を記述した旧配置データと、新版バックアップデータの配置を記述した新配置データとを比較し、両者が同一であれば旧版バックアップデータを流用し、同一でなければ新版バックアップデータを新たに配置する。
【発明の効果】
【００１０】
本発明に係るリプログラミングシステムによれば、バックアップデータの同一性を維持しつつ、制御ソフトウェアを更新することにともなってバックアップデータを再配置することができる。これにより、データとデータとの間の未割当領域を抑制し、記憶領域を効率よく使用することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係るリプログラミングシステム１００の構成図である。
【図２】旧配置データ１４１と新配置データ１４２を用いて再配置データを作成する様子を示す概念図である。
【図３】ＥＣＵ１１０の通常動作を説明するフローチャートである。
【図４】ＥＣＵ１１０が制御ソフトウェアを更新する処理を説明するフローチャートである。
【図５】リプログラミング装置１３０が再配置データを作成する手順を説明するフローチャートである。
【図６】書換ソフトウェアが再配置データの記述にしたがってバックアップデータをＥＥＰＲＯＭ１１４に対して再配置する処理を説明するフローチャートである。
【図７】実施形態２において旧配置データ１４１と新配置データ１４２を用いて再配置データを作成する様子を示す概念図である。
【図８】実施形態２においてリプログラミング装置１３０が再配置データを作成する手順を説明するフローチャートである。
【図９】実施形態２において書換ソフトウェアが再配置データの記述にしたがってバックアップデータをＥＥＰＲＯＭ１１４に対して再配置する処理を説明するフローチャートである。
【図１０】実施形態３に係るリプログラミングシステム１００の構成図である。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
図１は、本発明の実施形態１に係るリプログラミングシステム１００の構成図である。リプログラミングシステム１００は、車両制御装置（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：ＥＣＵ）１１０が実行する制御ソフトウェアを更新するためのシステムであり、リプログラミング装置１３０と配置データベース１４０を備える。
【００１３】
ＥＣＵ１１０は、車両の動作を制御する処理を実装した制御ソフトウェアを実行することにより当該車両の動作を制御する装置である。ＥＣＵ１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１３、ＥＥＰＲＯＭ１１４、通信回路１１５を備える。
【００１４】
ＣＰＵ１１１は、ＲＯＭ１１２が格納している制御ソフトウェアを実行する演算装置である。以下では記載の便宜上、ＣＰＵ１１１が実行するソフトウェアを動作主体として説明する場合があるが、実際にそれらソフトウェアを実行するのはＣＰＵ１１１である。ＲＡＭ１１３は、ＣＰＵ１１１が使用するデータを一時的に保存するメモリデバイスである。ＥＥＰＲＯＭ１１４は、バックアップデータを格納するバックアップデータ記憶領域を有し、同領域内にバックアップデータを格納している。通信回路１１５は、通信線１５０を介して他のＥＣＵ１１０と通信する。
【００１５】
ＣＰＵ１１１は、必要に応じて他のＥＣＵ１１０と通信してデータを取得し、制御ソフトウェアを実行することにより車両の動作を制御する。ＣＰＵ１１１は、制御ソフトウェアを実行する際に、ＥＥＰＲＯＭ１１４が格納しているバックアップデータをＲＡＭ１１３上へ読み出し、これを更新する。制御ソフトウェアを終了するとき（あるいはＥＣＵ１１０をシャットダウンするときなど適当なタイミング）、ＣＰＵ１１１はＲＡＭ１１３上のバックアップデータをＥＥＰＲＯＭ１１４へ書き戻す。ＥＥＰＲＯＭ１１４はＥＣＵ１１０に対する電源供給が遮断されてもデータを保持するので、バックアップデータは永続的に保存される。
【００１６】
リプログラミング装置１３０は、コネクタ１２０を介して当該車両に接続され、ＲＯＭ１１２が格納している制御ソフトウェアを更新するようＣＰＵ１１１に対して指示する。ＲＯＭ１１２は、制御プログラムを更新する処理を記述した書換ソフトウェアをさらに格納しており、ＣＰＵ１１１はリプログラミング装置１３０から更新指示および制御ソフトウェアの新版を受け取ると、書換ソフトウェアを実行することによりＲＯＭ１１２上の制御ソフトウェアを更新する。
【００１７】
リプログラミング装置１３０は、制御ソフトウェアを更新する際に、ＥＥＰＲＯＭ１１４内のバックアップデータを新版制御ソフトウェアの仕様に応じて更新する場合がある。リプログラミング装置１３０は、これを契機にしてＥＥＰＲＯＭ１１４上のバックアップデータを再配置することにより、微小な未割当領域を解消することを図る。
【００１８】
配置データベース１４０は、ＥＥＰＲＯＭ１１４上においてバックアップデータが配置されるアドレスを記述した配置データを保持するデータベースである。旧配置データ１４１は、現行バージョンを含む旧版制御ソフトウェアに対応するバックアップデータのＥＥＰＲＯＭ１１４上における配置アドレスを記述したデータであり、制御ソフトウェアのバージョン毎に同配置アドレスを記述している。新配置データ１４２は、更新後の制御ソフトウェア（新版制御ソフトウェア）が使用するバックアップデータのＥＥＰＲＯＭ１１４上における配置アドレスを記述したデータである。
【００１９】
新配置データ１４２が記述する配置アドレスは、例えば制御ソフトウェアの新版を作成するユーザが任意に指定することができる。ユーザはＥＥＰＲＯＭ１１４上においてバックアップデータが理想的に配置されるように配置アドレスを指定し、リプログラミング装置１３０がその指定にしたがってバックアップデータを再配置することにより、制御ソフトウェアを更新することにともなってＥＥＰＲＯＭ１１４上のデータ配置を最適化することができる。
【００２０】
リプログラミング装置１３０は、新配置データ１４２の記述にしたがって、新版バックアップデータをＥＥＰＲＯＭ１１４に対して書き込むようにＣＰＵ１１１へ指示する。このとき、新版バックアップデータと旧版バックアップデータとが共通している部分については、ＲＡＭ１１３上の旧版バックアップデータのコピーを流用することができる。そこでリプログラミング装置１３０は、旧配置データ１４１と新配置データ１４２を比較し、旧配置データ１４１が記述している旧版バックアップデータのうち新配置データ１４２が記述している新版バックアップデータとして流用できる部分についてはそのまま用いるよう指示する。この指示を記述したデータを再配置データと呼ぶ。
【００２１】
図２は、旧配置データ１４１と新配置データ１４２を用いて再配置データを作成する様子を示す概念図である。以下図２を用いて、再配置データを作成する手順について説明する。
【００２２】
旧配置データ１４１は、ＥＥＰＲＯＭ１１４のバックアップデータ記憶領域内の各アドレス上に格納されているデータの配置を記述している。ここでは１バイト単位の記憶領域毎に、アドレス／データラベル／データサイズを記述している例を示した。図２に示す例においては、アドレス１〜アドレス３はラベル１のデータを格納しており、そのデータサイズはサイズ１である。以下同様に各アドレスが格納しているデータのデータラベルとデータサイズをバックアップデータ記憶領域の先頭アドレスから順に記述している。
【００２３】
新配置データ１４２は、新版制御ソフトウェアを作成するユーザが任意に指定する。図２に示す例においては、アドレス１〜アドレス３とアドレス７については旧版バックアップデータと同じである。アドレス４〜アドレス５が格納するデータは、データサイズについては同じであるがデータラベルが異なっているので、旧版バックアップデータとは異なるデータである。アドレス６は空である。
【００２４】
再配置データにおいては、旧版バックアップデータをそのまま流用できるアドレス（アドレス１〜アドレス３とアドレス７）については旧配置データ１４１が転記されている。新たなバックアップデータを格納するアドレス（アドレス４〜アドレス５）については、バックアップデータ記憶領域内のアドレスのうちバックアップデータの初期値を格納する領域のアドレスが記述される。空データを格納するアドレス（アドレス６）については、ＥＥＰＲＯＭ１１４の初期値を格納する領域のアドレスが記述される。このアドレスはバックアップデータの初期値を格納する領域のアドレスと共通でもよい。以下では記載の簡易のため、これら初期値は共通であるものとする。
【００２５】
ＣＰＵ１１１（書換ソフトウェア）は、再配置データが記述しているアドレスに対応するＲＡＭ１１３上のアドレスからバックアップデータ（または各初期値）のコピーを１バイトずつ順に読み取り、ＥＥＰＲＯＭ１１４に対して書き戻す。
【００２６】
図３は、ＥＣＵ１１０の通常動作を説明するフローチャートである。車両のイグニッションスイッチがＯＮされるとＥＣＵ１１０が起動し、ＣＰＵ１１１はＲＯＭ１１２内の制御ソフトウェアを開始するとともに、バックアップデータをＥＥＰＲＯＭ１１４からＲＡＭ１１３へロードする（Ｓ３０１）。ＣＰＵ１１１は、以後イグニッションスイッチがＯＦＦされるまで、制御処理を実行する（Ｓ３０２）。イグニッションスイッチがＯＦＦされると、ＣＰＵ１１１は制御ソフトウェアを停止し、制御処理の過程において更新されたバックアップデータをＲＡＭ１１３からＥＥＰＲＯＭ１１４へ書き戻す（Ｓ３０３）。
【００２７】
図４は、ＥＣＵ１１０が制御ソフトウェアを更新する処理を説明するフローチャートである。以下図４の各ステップについて説明する。
【００２８】
（図４：ステップＳ４００）
ＣＰＵ１１１がリプログラミング装置１３０から制御ソフトウェアを更新するよう指示する命令を受信すると、ＣＰＵ１１１はＲＯＭ１１２内の書換ソフトウェアを起動することにより本フローチャートを開始する。
【００２９】
（図４：ステップＳ４０１）
書換ソフトウェアは、リプログラミング装置１３０が送信する新版制御ソフトウェアおよびバージョン情報を受信し、その新版制御ソフトウェアをＲＯＭ１１２に対して上書更新する。さらに書換ソフトウェアは、新版制御ソフトウェアのバージョン情報をＲＯＭ１１２内の適当な記憶領域に対して書き込む。
【００３０】
（図４：ステップＳ４０２）
書換ソフトウェアは、リプログラミング装置１３０から図２で説明した再配置データを受信し、その再配置データにしたがってＲＡＭ１１３上のバックアップデータをＥＥＰＲＯＭ１１４に対して書き戻す。このとき再配置データの記述にしたがってバックアップデータは再配置されることになる。
【００３１】
図５は、リプログラミング装置１３０が再配置データを作成する手順を説明するフローチャートである。以下図５の各ステップについて説明する。
【００３２】
（図５：ステップＳ５０１）
リプログラミング装置１３０は、バックアップデータ記憶領域上の各アドレスと新配置データ１４２が記述している各アドレスを順に対応付け、新配置データ１４２がバックアップデータ記憶領域上のいずれのアドレスに対して新版バックアップデータを書き込むよう指定しているかチェックする。本ステップにおいては、初期化処理としてバックアップデータ記憶領域の先頭アドレスを指定する。
【００３３】
（図５：ステップＳ５０２）
リプログラミング装置１３０は、現在の指定アドレスが新配置データ１４２内において記述されているか否かをチェックする。図２の例においては、アドレス６は新配置データ１４２内に記述されていないことになる。指定アドレスが記述されている場合はステップＳ５０３へ進み、記述されていない場合はステップＳ５０８へ進む。
【００３４】
（図５：ステップＳ５０３）
リプログラミング装置１３０は、新配置データ１４２上の現在の指定アドレスに対応するデータラベルとデータサイズに一致する旧配置データ１４１上のレコードを検索する。データラベルとデータサイズが一致するレコードが存在する場合はステップＳ５０４へ進み、存在しない場合はステップＳ５０５へ進む。
【００３５】
（図５：ステップＳ５０４）
リプログラミング装置１３０は、旧配置データ１４１上の当該レコードは現在の指定アドレスに対応する新配置データ１４２上のレコードと同一であるとみなす。図２のアドレス１〜アドレス３とアドレス７が本ステップに対応する。リプログラミング装置１３０は、ステップＳ５０３において発見した旧配置データ１４１上のレコードを、再配置データに当該データのデータサイズ分だけ転記する。これにより、旧配置データ１４１を新配置データ１４２において流用することができる。旧配置データ１４１上のアドレスが新配置データ１４２において変更された場合であっても、ステップＳ５０３においてデータラベルとデータサイズが同一であるレコードを探索することにより、同一のデータを発見して流用することができる。
【００３６】
（図５：ステップＳ５０５）
リプログラミング装置１３０は、現在の指定アドレスに対応する新配置データ１４２上のレコードと合致する旧配置データ１４１上のレコードは存在しない（すなわち新配置データ１４２は新たなバックアップデータを記述している）とみなす。リプログラミング装置１３０は、バックアップデータの初期値を格納する領域のアドレスを再配置データに当該データのデータサイズ分だけ記述する。図２のアドレス４〜アドレス５が本ステップに対応する。
【００３７】
（図５：ステップＳ５０６〜Ｓ５０７）
リプログラミング装置１３０は、新配置データ１４２が記述しているアドレスを全てチェックしたか否かを確認する。完了していない場合は、指定アドレスをステップＳ５０４またはＳ５０５におけるデータサイズ分だけ進め（Ｓ５０７）、ステップＳ５０２へ戻って同様の処理を繰り返す。完了した場合は本フローチャートを終了する。
【００３８】
（図５：ステップＳ５０８〜Ｓ５０９）
リプログラミング装置１３０は、指定アドレスが新配置データ１４２内に存在しない場合は、ＥＥＰＲＯＭ１１４の初期値を格納する領域のアドレスを再配置データに１バイト分記述し（Ｓ５０８）、指定アドレスを１バイト分進めてステップＳ５０２へ戻る（Ｓ５０９）。図２のアドレス６が本ステップに相当する。
【００３９】
図６は、書換ソフトウェアが再配置データの記述にしたがってバックアップデータをＥＥＰＲＯＭ１１４に対して再配置する処理を説明するフローチャートである。以下図６の各ステップについて説明する。
【００４０】
（図６：ステップＳ６０１、Ｓ６０３）
書換ソフトウェアは、再配置データが記述している１つのアドレスに対して書き込まれるデータサイズを１バイトとみなし、ＥＥＰＲＯＭ１１４上のバックアップデータ記憶領域の容量が不足していないことを確認する（Ｓ６０１）。旧配置データ１４１と新配置データ１４２はバックアップデータ記憶領域上の各アドレスについて１バイトずつ記述されているので、原則としてバックアップデータ記憶領域の容量が不足することはないと考えられるが、例えば新版バックアップデータを作成するユーザが新配置データ１４２を誤って記述する場合もあり得るので、本ステップにおいてチェックすることとした。バックアップデータ記憶領域の容量が不足している場合、書換ソフトウェアはリプログラミング装置１３０に対してエラーを通知し（Ｓ６０３）、不足していなければステップＳ６０２へ進む。
【００４１】
（図６：ステップＳ６０２）
書換ソフトウェアは、再配置データを先頭から順に読み取り、各レコードが指定しているＥＥＰＲＯＭ１１４上のアドレスに対応するＲＡＭ１１３上のアドレスから１バイト分のデータを取得する。書換ソフトウェアは、そのデータをＥＥＰＲＯＭ１１４に対して書き込む。書換ソフトウェアは再配置データが記述している各アドレスについて順次同様に書き込みを実施する。本ステップにおいて、ＥＥＰＲＯＭ１１４に対する書き込みは必ずしも１バイト毎に実施する必要はなく、例えばある程度のデータ量をＲＡＭ１１３上でバッファリングしてから実書き込みを実施してもよい。後述する実施形態２においても同様である。
【００４２】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係るリプログラミングシステム１００は、制御ソフトウェアを書き換える際に、バックアップデータを再配置する。旧配置データ１４１が記述しているデータを新配置データ１４２において流用できる場合は、再配置データ内にその旨を記述することにより旧配置データ１４１を流用する。これにより、制御ソフトウェアの更新前後にわたってバックアップデータの同一性を必要な範囲内で維持しつつ、更新処理を効率的に実施することができる。
【００４３】
＜実施の形態２＞
実施形態１においては、再配置データはバックアップデータ記憶領域の１バイト分のアドレス毎に記述することとした。この場合、再配置データのデータサイズはバックアップデータ記憶領域の容量に近いものとなる。本発明の実施形態２では、旧配置データ１４１と新配置データ１４２との間の差分を再配置データとして記述することにより、再配置データのサイズを抑制する構成例について説明する。リプログラミングシステム１００の構成は実施形態１と同様である。
【００４４】
図７は、本実施形態２において旧配置データ１４１と新配置データ１４２を用いて再配置データを作成する様子を示す概念図である。以下図７を用いて、再配置データを作成する手順について説明する。
【００４５】
旧配置データ１４１におけるアドレス１〜アドレス３のデータは、新配置データ１４２においてはアドレス２〜アドレス４に移動されている。このことは、両者のデータラベルとデータサイズが同一であることにより識別することができる。旧配置データ１４１におけるラベル２のデータとラベル３のデータは、新配置データ１４２においては存在しない。旧配置データ１４１におけるラベル４のデータは、新配置データ１４２においてもそのまま用いられている。
【００４６】
図７に示す旧配置データ１４１と新配置データ１４２との間の差分は、以下のように記述することができる。
【００４７】
（図７：差分その１）
新版バックアップデータをＥＥＰＲＯＭ１１４に対して書き込む際に、アドレス１から開始してサイズ１だけ旧版バックアップデータを読み取り、アドレス２に対してその旧版バックアップデータをコピーする。この処理は、図７に示す再配置データの１行目のように記述することができる。
【００４８】
（図７：差分その２）
新版バックアップデータをＥＥＰＲＯＭ１１４に対して書き込む際に、バックアップデータの初期値を格納しているアドレスからサイズ２だけ初期値データを読み取り、アドレス５に対してその初期値データをコピーする。この処理は、図７に示す再配置データの２行目のように記述することができる。
【００４９】
（図７：差分その３）
新版バックアップデータをＥＥＰＲＯＭ１１４に対して書き込む際に、アドレス７のデータはそのまま書き込むことができる。この場合は新旧配置間の差分がないので、再配置データにおいて格別記述する必要はない。
【００５０】
図８は、本実施形態２においてリプログラミング装置１３０が再配置データを作成する手順を説明するフローチャートである。以下図８の各ステップについて説明する。
【００５１】
（図８：ステップＳ８０１）
リプログラミング装置１３０は、新配置データ１４２の先頭レコードから順に、当該レコードが記述しているデータラベルを旧配置データ１４１から検索する。当該データラベルが旧配置データ１４１内に存在している場合はステップＳ８０２へ進み、存在していない場合はステップＳ８０５へスキップする。
【００５２】
（図８：ステップＳ８０２）
リプログラミング装置１３０は、ステップＳ８０１において発見した旧配置データ１４１のレコードのデータサイズが、新配置データ１４２の対応するレコードのデータサイズと同じであるか否かをチェックする。同一である場合はステップＳ８０３へ進み、同一でない場合はステップＳ８０５へスキップする。
【００５３】
（図８：ステップＳ８０３）
データラベルとデータサイズが同一である場合、旧配置データ１４１の当該レコードが指定するデータと、新配置データ１４２の当該レコードが指定するデータは、同一であると考えられる。リプログラミング装置１３０はさらに、旧配置データ１４１の当該レコードのアドレスと新配置データ１４２の当該レコードのアドレスが同一であるか否かをチェックする。同一でなければステップＳ８０４へ進み、同一であればステップＳ８０４をスキップしてステップＳ８０６へ進む。
【００５４】
（図８：ステップＳ８０４）
リプログラミング装置１３０は、新配置データ１４２のアドレス、新配置データのデータサイズ、および旧配置データ１４１のアドレスを、再配置データのレコードとして追加する。本ステップは、図７に示す再配置データの１行目に対応する。
【００５５】
（図８：ステップＳ８０５）
リプログラミング装置１３０は、新配置データ１４２のアドレス、新配置データのデータサイズ、およびバックアップデータ初期値を格納しているアドレスを、再配置データのレコードとして追加する。本ステップは、図７に示す再配置データの２行目に対応する。
【００５６】
（図８：ステップＳ８０４〜Ｓ８０５：補足）
データラベル、データサイズ、およびアドレスが同一である場合、旧配置データ１４１の当該レコードが示すデータを、新配置データ１４２においてそのまま流用することができる。したがってステップＳ８０３においてアドレスが同一であった場合は、再配置データを記述する必要はない。これは図７のアドレス７に相当する。
【００５７】
（図８：ステップＳ８０６）
リプログラミング装置１３０は、新配置データ１４２が記述しているデータラベルを全てチェックしたか否かを確認する。完了していない場合は、新配置データ１４２の次のレコードに進み、ステップＳ８０１へ戻って同様の処理を繰り返す。完了した場合は本フローチャートを終了する。
【００５８】
図９は、本実施形態２において書換ソフトウェアが再配置データの記述にしたがってバックアップデータをＥＥＰＲＯＭ１１４に対して再配置する処理を説明するフローチャートである。以下図９の各ステップについて説明する。
【００５９】
（図９：ステップＳ９０１）
書換ソフトウェアは、バックアップデータ記憶領域上の各アドレスと再配置データが記述している各アドレスを順に対応付け、再配置データがバックアップデータ記憶領域上のいずれのアドレスに対して新版バックアップデータを書き込むよう指定しているかチェックする。本ステップにおいては、初期化処理としてバックアップデータ記憶領域の先頭アドレスを指定する。
【００６０】
（図９：ステップＳ９０２）
書換ソフトウェアは、現在の指定アドレスが再配置データ内において記述されているか否かをチェックする。図７の例においては、アドレス１やアドレス７は再配置データ内に記述されていないことになる。指定アドレスが記述されている場合はステップＳ９０３へ進み、記述されていない場合はステップＳ９０５へ進む。
【００６１】
（図９：ステップＳ９０３〜Ｓ９０４）
書換ソフトウェアは、再配置データが指定しているＥＥＰＲＯＭ１１４上の旧アドレスから開始してデータサイズ分だけＲＡＭ１１３上の対応する領域からデータを読み出し、再配置データが指定しているＥＥＰＲＯＭ１１４上の新アドレスに対してデータサイズ分だけそのデータを書き込む（Ｓ９０３）。書換ソフトウェアは、指定アドレスを書き込んだデータサイズ分だけ進める（Ｓ９０４）。
【００６２】
（図９：ステップＳ９０５〜Ｓ９０６）
書換ソフトウェアは、現在の指定アドレスに対応するＲＡＭ１１３上の領域から１バイト分のデータを読み出し、ＥＥＰＲＯＭ１１４上の同じアドレスに対してそのデータを書き込む（Ｓ９０５）。書換ソフトウェアは、指定アドレスを１バイト分だけ進める（Ｓ９０６）。
【００６３】
（図９：ステップＳ９０７）
書換ソフトウェアは、再配置データの全レコードについて処理を完了していない場合はステップＳ９０２に戻って次以降のレコードについて同様の処理を繰り返す。全レコードについて処理を完了した場合は本フローチャートを終了する。
【００６４】
＜実施の形態２：まとめ＞
以上のように、本実施形態２に係るリプログラミングシステム１００は、旧配置データ１４１と新配置データ１４２との間の差分を再配置データとして生成し、更新前後において異なる部分についてのみ再配置データを適用する。これにより、再配置データのサイズを抑制し、更新処理を効率的に実施することができる。
【００６５】
＜実施の形態３＞
図１０は、本発明の実施形態３に係るリプログラミングシステム１００の構成図である。実施形態１〜２においては、リプログラミング装置１３０が再配置データを作成することを説明したが、制御ソフトウェアを作成する際に再配置データを併せて作成することもできる。図１０において、ソフトウェア生成装置１５０は、制御ソフトウェアの新版を作成する装置である。ユーザは適当なインターフェースを介してソフトウェア生成装置１５０に対してＥＣＵ１１０が搭載している制御ソフトウェアの現行バージョンを通知し、ソフトウェア生成装置１５０はその現行バージョンに対応する旧配置データ１４１および新配置データ１４２を用いて再配置データを作成する。
【００６６】
ソフトウェア生成装置１５０が生成した新版制御ソフトウェアおよび再配置データは、例えばＵＳＢメモリなどの記憶媒体、適当な通信回線などのデータ転送手段を介してリプログラミング装置１３０に対して転送され、リプログラミング装置１３０はこれらを用いて更新処理を実施する。リプログラミング装置１３０とソフトウェア生成装置１５０は必ずしも機能的に分離する必要はなく、これらを一体的に構成することもできる。
【００６７】
＜本発明の変形例について＞
本発明は上記した実施形態の形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
【００６８】
実施形態１〜３において、配置データベース１４０は、旧配置データ１４１と新配置データ１４２を制御ソフトウェアのバージョン毎に保持していることを説明した。ＥＣＵ１１０が現在使用している制御ソフトウェアのバージョンは外部からは必ずしも明らかではないので、いずれのバージョンに対応するデータを用いるかを指定する必要がある。例えばリプログラミング装置１３０（またはソフトウェア生成装置１５０）は、ＲＯＭ１１２が格納している制御ソフトウェアのバージョン番号を返信するようＣＰＵ１１１に対して指示し、その回答に基づきバージョンを取得することもできるし、ユーザが現行バージョン番号を把握しているのであればユーザが適当なインターフェースを介したマニュアル入力によってそのバージョン番号をリプログラミング装置１３０に対して通知してもよい。
【００６９】
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【符号の説明】
【００７０】
１００：リプログラミングシステム、１１０：ＥＣＵ、１１１：ＣＰＵ、１１２：ＲＯＭ、１１３：ＲＡＭ、１１４：ＥＥＰＲＯＭ、１１５：通信回路、１３０：リプログラミング装置、１４０：配置データベース、１４１：旧配置データ、１４２：新配置データ、１５０：ソフトウェア生成装置。
【図１】
0006301820.tif 000002
【図２】
0006301820.tif 000003
【図３】
0006301820.tif 000004
【図４】
0006301820.tif 000005
【図５】
0006301820.tif 000006
【図６】
0006301820.tif 000007
【図７】
0006301820.tif 000008
【図８】
0006301820.tif 000009
【図９】
0006301820.tif 000010
【図１０】
0006301820.tif 000011