(57)【要約】【課題】不揮発性メモリに記憶されたソフトウェアの更新時間を短縮できる自動車用電子制御装置を提供する。【解決手段】自動車用電子制御装置１０は、消去ブロックＥＢ１〜ＥＢｑ単位でデータを消去可能であると共に、消去ブロックと同一又は小さい書込ブロックＷＢ１，ＷＢ２，…，ＷＢｘ単位でデータを書込み可能な不揮発性メモリ１３を有し、該不揮発性メモリにおける消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムが記憶される。そして、外部からの書換え要求に応じて、不揮発性メモリの一部のデータを消去ブロック単位で消去し、不揮発性メモリに書込ブロック単位でデータを書込む際に、該ブロック毎に書換えの正誤を確認することを特徴とする。【選択図】図５
2019109745.tif 000002
【特許請求の範囲】
【請求項１】
消去ブロック単位でデータを消去可能であると共に、前記消去ブロックと同一又は小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有し、該不揮発性メモリにおける消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムが記憶された自動車用電子制御装置であって、
外部からの書換え要求に応じて、前記不揮発性メモリの一部のデータを消去ブロック単位で消去し、前記不揮発性メモリに書込ブロック単位でデータを書込む際に、該ブロック毎に書換えの正誤を確認する、ことを特徴とする自動車用電子制御装置。
【請求項２】
消去ブロック単位でデータを消去可能であると共に、前記消去ブロックと同一又は小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有し、該不揮発性メモリにおける消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムが記憶された自動車用電子制御装置であって、
外部からの書換え要求に応じて、前記不揮発性メモリの一部のデータを消去ブロック単位で消去し、前記不揮発性メモリに書込ブロック単位でデータを書込む際に、該ブロック毎に書換えの正誤を確認し、
誤りの場合は該当する書込ブロックを含む消去ブロックを消去し、書込ブロック単位で再書込みを行い、消去及び再書込み中は外部からの通信を途絶させない、ことを特徴とする自動車用電子制御装置。
【請求項３】
前記不揮発性メモリに記憶される各々の制御プログラムは、制御対象毎に消去ブロック単位で割り付ける、ことを特徴とする請求項１又は２に記載の自動車用電子制御装置。
【請求項４】
前記不揮発性メモリの書換えを実行する消去ブロックを予め設定し、当該消去ブロック内の書込ブロックを書換える、ことを特徴とする請求項１乃至３いずれか１つの項に記載の自動車用電子制御装置。
【請求項５】
前記不揮発性メモリの書換えを実行する消去ブロックを制御グループに応じて分類し、同一グループに対して連続的に書換えを実行する、ことを特徴とする請求項１乃至３いずれか１つの項に記載の自動車用電子制御装置。
【請求項６】
前記不揮発性メモリに記憶されている制御プログラムと、書換える制御プログラムとを比較し、差異のある部分を含む消去ブロックのみを書換える、ことを特徴とする請求項１乃至５いずれか１つの項に記載の自動車用電子制御装置。
【請求項７】
前記不揮発性メモリの同一消去ブロックで複数回書換えが失敗した場合は、エラーと判定して書換えを中断する、ことを特徴とする請求項１乃至６いずれか１つの項に記載の自動車用電子制御装置。
【請求項８】
前記不揮発性メモリにおける消去ブロック単位での消去の際に、正常に書込まれている書込ブロックのデータを退避してから消去し、正常に書込まれなかった残りのデータを再受信し、退避したデータと再受信したデータを用いて書換える、ことを特徴とする請求項１乃至７いずれか１つの項に記載の自動車用電子制御装置。
【請求項９】
前記不揮発性メモリには、記憶されている制御プログラムと書換える制御プログラムとを識別、または前記各消去ブロックを識別するための識別情報が更に記憶される、ことを特徴とする請求項１乃至８いずれか１つの項に記載の自動車用電子制御装置。
【請求項１０】
前記識別情報はハッシュ値である、ことを特徴とする請求項９に記載の自動車用電子制御装置。
【請求項１１】
前記不揮発性メモリに書込むデータを、書換え対象範囲を限定した無線通信により入力する、ことを特徴とする請求項１乃至１０いずれか１つの項に記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置に関し、更に詳しくは、自動車に搭載されたＥＣＵ（Electric Control Unit）における制御ソフトウェアの更新技術に関する。
【背景技術】
【０００２】
従来、この種の電子制御装置において、フラッシュＲＯＭ（Read Only Memory）などの不揮発性メモリに書込まれたプログラムやデータを書換えて更新する場合には、例えば特許文献１に記載されるような方法で行っていた。すなわち、電子制御装置に接続されたツール（メモリ書換機）からの指示に応答して、不揮発性メモリの対象領域を消去し、ツールから順次送信されるプログラムやデータを不揮発性メモリに書込んでいた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−１２８２２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年、自動車用電子制御装置に搭載される制御ソフトウェアの規模は増大の一途を辿っており、これに伴ってプログラムやデータの更新のための書換え時間が長大化している。現状の通信技術では、例えば４Ｍｂｙｔｅの記憶容量の書換えには２５分程度の時間が必要になる。今後、更に不揮発性メモリの記憶容量や制御ソフトウェアの規模が増大することを考えると、更新にはより長時間を要することになる。
【０００５】
本発明は上記のような事情に鑑みてなされたもので、その目的とするところは、不揮発性メモリに記憶されたソフトウェアの更新時間を短縮できる自動車用電子制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る自動車用電子制御装置は、消去ブロック単位でデータを消去可能であると共に、前記消去ブロックと同一又は小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有し、該不揮発性メモリにおける消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムが記憶された自動車用電子制御装置であって、外部からの書換え要求に応じて、前記不揮発性メモリの一部のデータを消去ブロック単位で消去し、前記不揮発性メモリに書込ブロック単位でデータを書込む際に、該ブロック毎に書換えの正誤を確認する、ことを特徴とする。
【０００７】
また、本発明の別の一態様に係る自動車用電子制御装置は、消去ブロック単位でデータを消去可能であると共に、前記消去ブロックと同一又は小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有し、該不揮発性メモリにおける消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムが記憶された自動車用電子制御装置であって、外部からの書換え要求に応じて、前記不揮発性メモリの一部のデータを消去ブロック単位で消去し、前記不揮発性メモリに書込ブロック単位でデータを書込む際に、該ブロック毎に書換えの正誤を確認し、誤りの場合は該当する書込ブロックを含む消去ブロックを消去し、書込ブロック単位で再書込みを行い、消去及び再書込み中は外部からの通信を途絶させない、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、不揮発性メモリに、消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムを記憶し、制御プログラムの割り付けと消去ブロックを対応させているので、書換え対象領域を制御プログラム毎にでき、データの転送量を削減してソフトウェアの更新時間を短縮できる。
また、外部からの書換え要求に応じて、不揮発性メモリの一部の記憶領域を消去し、この消去領域に書込ブロック単位で書込むことで、書換え対象領域のサイズの縮小を図れ、データの書込み時間を短縮してソフトウェアの更新時間を短縮できる。
更に、消去及び再書込み中は外部からの通信を途絶させないようにすれば、誤書込みを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態に係る自動車用電子制御装置のデータ書換えシステムを示す概要図である。
【図２】図１に示したシステムにおける自動車用電子制御装置の構成例を示すブロック図である。
【図３】図２におけるフラッシュＲＯＭのメモリ構成の一例を示す図である。
【図４】図１に示したシステムにおけるツールの構成例を示すブロック図である。
【図５】データ書換え処理の一例を説明するためのフローチャート、及びツール側のストレージのメモリ構成とＥＣＵ側のフラッシュＲＯＭのメモリ構成を示す図である。
【図６】書換え対象のＥＮＧ制御プログラムにおける書換え前と書換え中のストレージ、フラッシュＲＯＭ及びＲＡＭの状態を示す図である。
【図７】書換え対象のＥＮＧ制御プログラムにおける書換え中と書換え後のフラッシュＲＯＭ及びＲＡＭの状態を示す図である。
【図８】書換え領域の容量がオーバーした場合における、対策前と対策後のメモリ構成を対比して示す説明図である。
【図９】データ書換え処理の別の例を説明するためのフローチャート、及びツール側のストレージのメモリ構成とＥＣＵ側のフラッシュＲＯＭのメモリ構成を示す図である。
【図１０】本発明の第２の実施形態に係る自動車用電子制御装置におけるデータ書換えシステムを示す概要図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
図１は、自動車に搭載される電子制御装置（ＥＣＵ：Electronic Control Unit）のデータを書換える、データ書換えシステムの一例を示している。書換え対象となるＥＣＵ１０は、ＣＡＮ（Controller Area Network）、シリアル通信、ＦｌｅｘＲａｙ（登録商標）及びＥｔｈｅｒｎｅｔ（登録商標）などのネットワークケーブル２０を介して、ツール３０に着脱自在に接続される。そして、作業者がツール３０を操作して、ＥＣＵ１０の書換え作業を行う。
なお、ＥＣＵ１０とツール３０とは、ネットワークケーブル２０を使用した有線に限らず、無線送受信機を使用した無線通信によって相互に接続されるようにしてもよい。
【００１１】
ＥＣＵ１０は、自動車に搭載された各種の機器、例えば燃料噴射弁、変速機、電動ブレーキシステム、ＡＢＳ（Antilock Brake System）、可変バルブタイミング機構、及びブラシレスモータなどを制御する電子機器であって、マイクロコンピュータを内蔵している。具体的には、ＥＣＵ１０は、図２に示すように、ＣＰＵ（Central Processing Unit）などのプロセッサ１１と、ネットワークに接続するための通信装置１２と、不揮発性メモリの一例としてのフラッシュＲＯＭ１３と、揮発性メモリの一例としてのＲＡＭ（Random Access Memory）１４と、バス１５とを有する。ここで、バス１５は、プロセッサ１１、通信装置１２、フラッシュＲＯＭ１３及びＲＡＭ１４を相互に接続している。また、通信装置１２は、ネットワークケーブル２０を着脱可能に接続するコネクタ（図示せず）を備える。
【００１２】
フラッシュＲＯＭ１３の記憶領域は、図３に示すように、所定サイズの複数の消去ブロックＥＢ１〜ＥＢｑに分割されている。また、各々の消去ブロックＥＢ１〜ＥＢｑは、所定サイズの複数の書込ブロックＷＢ１，ＷＢ２，…，ＷＢｘに区画されている。ここで、消去ブロックは、データを消去する最小単位を規定し、書込ブロックはデータを書込む最小単位を規定しており、書込ブロックは消去ブロックと同一か、又は小さい容量になっている。そして、ある書込ブロックのデータを書換える場合、その書込ブロックが属する消去ブロックのデータを全て消去した後、データを消去した消去ブロックに属する全ての書込ブロックにデータを書込む、という手順を経るようになっている。なお、フラッシュＲＯＭ１３における消去ブロックのサイズが同一でない場合には、各消去ブロックに属する書込ブロックの数は異なっていてもよい。
【００１３】
フラッシュＲＯＭ１３の消去ブロックＥＢ１〜ＥＢｍに対応する記憶領域には、例えばＥＮＧ（エンジン）制御プログラムが記憶されており、余剰部分が空き領域となっている。消去ブロックＥＢ１の先頭アドレスには、記憶されている制御プログラムと書換える制御プログラムとを識別（例えば新旧プログラムの識別）、または前記各消去ブロックを識別するための識別情報が付与されている。識別情報としては、本例ではハッシュ値（ハッシュ値１）を用いている。
【００１４】
このハッシュ値は、データの同一性を比較するための識別情報の一例であって、類似するデータでも大きく異なる値をとるものを採用するとよい。そして、プロセッサ３１は、消去ブロックＥＢ１のデータから算出したハッシュ値を、プロセッサ３１内のＲＡＭなどの記憶媒体に一時的に記憶させておく。
【００１５】
消去ブロックＥＢｍ＋１〜ＥＢｎに対応する記憶領域には、例えばＴＣＵ（Transmission Control Unit）制御プログラムが記憶されており、余剰部分が空き領域となっている。消去ブロックＥＢｍ＋１の先頭アドレスには、記憶されている制御プログラムと書換える制御プログラムとを識別、または前記各消去ブロックを識別するための識別情報（例えばハッシュ値２）が付与されている。
【００１６】
消去ブロックＥＢｎ＋１〜ＥＢｏに対応する記憶領域には、例えばＡＰＩ（Application Programming Interface）が記憶されており、余剰部分が空き領域となっている。消去ブロックＥＢｎ＋１の先頭アドレスには、記憶されている制御プログラムと書換える制御プログラムとを識別、または前記各消去ブロックを識別するための識別情報（例えばハッシュ値３）が付与されている。
消去ブロックＥＢｏ＋１〜ＥＢｐに対応する記憶領域には、例えばＢＩＯＳ（Basic Input Output System）が記憶されており、余剰部分が空き領域となっている。消去ブロックＥＢｏ＋１の先頭アドレスには、記憶されている制御プログラムと書換える制御プログラムとを識別、または前記各消去ブロックを識別するための識別情報（例えばハッシュ値４）が付与されている。
【００１７】
消去ブロックＥＢｐ＋１〜ＥＢｑに対応する記憶領域は、共通の空き領域（共通領域）となっている。消去ブロックＥＢｐ＋１の先頭アドレスには、空き領域を識別、または前記各消去ブロックを識別するための識別情報（例えばハッシュ値５）が付与されている。
このように、フラッシュＲＯＭ１３には、消去ブロックの整数倍の単位で構成された記憶領域毎に各種のプログラムが記憶されている。
【００１８】
ツール３０は、作業者がＥＣＵ１０のデータ書換え作業を行う電子機器であって、例えば、パーソナルコンピュータなどから構成される。具体的には、ツール３０は、図４に示すように、ＣＰＵなどのプロセッサ３１と、ネットワークに接続するための通信装置３２と、ハードディスク装置やＳＳＤ（Solid State Drive）などのストレージ３３と、作業者へのインターフェースとなる入出力装置３４と、これらの機器を相互に接続するバス３５とを備えている。ここで、通信装置３２は、ネットワークケーブル２０を着脱可能に接続するコネクタ（図示せず）を備える。また、入出力装置３４は、ＬＣＤ（Liquid Crystal Display）などのディスプレイと、キーボードと、マウスなどのポインティングデバイスと、を含む。なお、ストレージ３３は、例えば、図示しないネットワークに接続されたＮＡＳ（Network Attached Storage）やサーバのストレージなどであってもよい。
【００１９】
ストレージ３３には、ＥＣＵ１０のフラッシュＲＯＭ１３を書換えるための書換えデータが格納されている。書換えデータは、例えば、自動車に搭載された各種機器を制御する制御プログラム、その制御プログラムで使用される定数やマップなどの制御パラメータなどを含む。ストレージ３３に格納された書換えデータは、プロセッサ３１の制御によりバス３５を介して通信装置３２に転送され、図示しないコネクタからネットワークケーブル２０を介してＥＣＵ１０に送信される。
【００２０】
次に、上記のような構成において、データ書換え処理（リプログラミング）について図５乃至図７により説明する。図５は、ＥＣＵ１０のフラッシュＲＯＭ１３の制御プログラムの一部を更新する手順の一例と、ツール側のストレージのメモリ構成とＥＣＵ側のフラッシュＲＯＭのメモリ構成を示している。また、図６は、書換え対象のＥＮＧ制御プログラムにおける書換え前と書換え中のストレージ、フラッシュＲＯＭ及びＲＡＭの状態をそれぞれ示し、図７は、書換え対象のＥＮＧ制御プログラムにおける書換え中と書換え後のフラッシュＲＯＭ及びＲＡＭの状態をそれぞれ示している。
【００２１】
データ書換え処理は、作業者がツール３０をネットワークケーブル２０でＥＣＵ１０に接続した後、ツール３０において、所定の操作を行ったときに実行される。ここでは、ＥＣＵ１０は、ネットワークケーブル２０を介してツール３０と接続されたときに、電力が供給されて起動することを前提とするが、別の電源ケーブルの接続により起動する形態もあり得る。
【００２２】
ツール３０におけるストレージ３３は、図３と同様にＥＮＧ制御プログラム、ＴＣＵ制御プログラム、ＡＰＩ、ＢＩＯＳ及び空き領域が割り付けられたメモリ構成になっており、本例では各々の識別情報としてバージョン２（Ｖｅｒ：２）が付与されている。また、ＥＣＵ１０におけるフラッシュＲＯＭ１３に書込まれているソフトウェアは、図３と同様にＥＮＧ制御プログラム、ＴＣＵ制御プログラム、ＡＰＩ、ＢＩＯＳ及び空き領域が割り付けられたメモリ構成になっている。そして、ＥＮＧ制御プログラムの識別情報としてバージョン１（Ｖｅｒ：１）が付与され、ＴＣＵ制御プログラム、ＡＰＩ、ＢＩＯＳ及び空き領域には識別情報としてバージョン２（Ｖｅｒ：２）が付与されている。
【００２３】
このように、本データ書換えシステムは、新旧の制御プログラムを比較し、バージョンが異なるブロックのみを書換える。これによって、フラッシュＲＯＭ１３に書込まれている旧バージョン１のＥＮＧ制御プログラムが、ストレージ３３における新バージョン２のＥＮＧ制御プログラムに書換えられることになる。
図６（ａ）は、ツール３０側のストレージ３３のＥＮＧ制御プログラム（Ｖｅｒ：２）と、ＥＣＵ１０側の書換え前のフラッシュＲＯＭ１３のＥＮＧ制御プログラム（Ｖｅｒ：１）を示しており、フラッシュＲＯＭ１３は余剰部分に空き領域を有している。
【００２４】
まず、ツール３０からＥＣＵ１０に識別情報照合要求が出され（ステップＳ１）、ツール３０におけるストレージ３３に記憶されている識別情報（ここではソフトＶｅｒ：２）とＥＣＵ１０におけるフラッシュＲＯＭ１３に記憶されている識別情報（ここではソフトＶｅｒ：１）とがＥＣＵ１０で比較される（ステップＳ２）。識別情報に差異があった場合は、ＥＣＵ１０側からツール３０側に書換えデータの送付要求を行う（ステップＳ３）。これによって、ツール３０から書換え対象（領域）の消去要求が出力される（ステップＳ４）。ＥＣＵ１０がツール３０からの消去要求を受け取ると、書換え対象（領域）の消去が開始される（ステップＳ５）。そして、消去が終了すると、ＥＣＵ１０側からツール３０側に消去終了を通知する（ステップＳ６）。
【００２５】
次に、ツール３０からＥＣＵ１０に書込みデータ（ソフトＶｅｒ：２のＥＮＧ制御プログラム）が転送され（ステップＳ７）、この書込みデータがＲＡＭ１４に格納される（ステップＳ８）。ＲＡＭ１４へのデータの書込みが終了すると（ステップＳ９）、ＥＣＵ１０により書込み異常の有無が判定される（ステップＳ１０）。上記ステップＳ２で識別情報に差異がなかった場合、及びステップＳ１０で「書込み異常なし」と判定された場合には、ＥＣＵ１０からツール３０に書込み完了を通知し（ステップＳ１３）、ツール３０が書込み完了通知を受け取ると入出力装置３４のディスプレイに書込み完了を表示して作業者に通知する（ステップＳ１４）。複数の書換え対象がある場合には、次の書込み対象に対して識別情報照合要求を出して、次の書換え対象へ移動し（ステップＳ１５）、上述したステップと同様な動作を繰り返す。
【００２６】
一方、ステップＳ１０で「書込み異常あり」、すなわち、書込みデータに誤りがあると判定された場合には、該当する書込ブロック（異常部）を含む消去ブロックを消去し（ステップＳ１１）、ＲＡＭ１４に保持されているデータを使って再書込みを行う（ステップＳ１２）。この消去及び再書込み中には、外部からの通信を途絶させないようにする。
【００２７】
例えば、図６（ｂ）に示すように、書換え後のフラッシュＲＯＭ１３において、消去ブロックＥＢ３中の書込ブロックＷＢｏに書込み失敗エリアが発生したと仮定する。この場合には、図７（ａ）に示すように、正常に書換えが完了した消去ブロックＥＢ１，ＥＢ２のデータは保持し、消去ブロックＥＢ３のみを消去し（このとき消去ブロックＥＢ４は消去状態）、書込ブロックＷＢｎ＋１〜ＷＢｏ、ＷＢｏ＋１〜ＷＢｐに対して再書込みする。同様に、消去ブロックＥＢ４中の書込ブロックに書込み失敗エリアが発生した場合には、消去ブロックＥＢ４のみを消去し、書込ブロックＷＢｏ＋１〜ＷＢｐに対して再書込みする。
【００２８】
この際、フラッシュＲＯＭ１３の書込ブロックＷＢｎ＋１〜ＷＢｏ−１に書込まれているデータをＲＡＭ１４に退避することで、再書込みする場合にＲＡＭ１４のデータを利用して短時間で書き込むことができる。すなわち、フラッシュＲＯＭ１３における消去ブロック単位での消去の際に、正常に書込まれている書込ブロックのデータをＲＡＭ１４に退避（コピー）してから消去し、正常に書込まれなかった残りのデータをツール３０から再受信して書換えを行う。
【００２９】
また、書込ブロックＷＢｎ＋１〜ＷＢｏ−１への書込データを、ツール３０のストレージ３３からＲＡＭ１４に再転送してもう一度書込みするようにしてもよい。リトライによる書込みが完了すると、図７（ｂ）に示すように、フラッシュＲＯＭ１３にはツール３０側のストレージ３３と同じバージョン２のＥＮＧ制御プログラムが書込まれ、旧バージョンから新バージョンへの更新が終了する。
【００３０】
上記ステップＳ１１，Ｓ１２の期間には、ツール３０側でＥＣＵ１０から出力されるビジィ（BUSY）信号を受信して監視し（ステップＳ１６）、ツール３０とＥＣＵ１０の通信タイムアウトを回避する。書込みが完了すると、ＥＣＵ１０からツール３０に書込み完了を通知し（ステップＳ１３）、ツール３０側で書込み完了通知を受け取ると入出力装置３４のディスプレイに表示して作業者に書込み完了を通知する（ステップＳ１４）。そして、複数の書換え対象がある場合には、次の書込み対象に対して識別情報照合要求を出して、次の書換え対象へ移動し（ステップＳ１５）、上述したステップと同様な動作を繰り返す。
【００３１】
なお、上記実施形態では、書換え対象の識別情報を順次比較して書換えの要否を判定する例を示した。このようにしているのは、無線通信でリプログラムする場合を考慮したもので、無線通信では不特定多数の車両が対象となるため、相手側の車両がどのような状態になっているか把握できていないままリプログラムが行われることがあるからである。特に、過去何度かリプログラムされている状態から最新のプログラムに変更する場合には、どこがリプログラムされているのか分からない。
しかしながら、書換え対象が明確な場合には、ツール３０からＥＣＵ１０に書換え対象の制御プログラム、消去ブロック、あるいは書込ブロックを指定して、ブロック単位で書換えるようにしても良い。すなわち、不揮発性メモリの書換えを実行する消去ブロックを予め設定し、当該消去ブロック内の書込ブロックを書換えるようにすることもできる。
【００３２】
図８は、上述したデータ書換え処理において、書込むデータ量が書込まれているデータ量よりも多く、書換え領域の容量がオーバーした場合における、対策前と対策後のメモリ構成を対比して示している。ここでは、図８（ａ）に示すように、フラッシュＲＯＭ１３が図３に示したメモリ構成と同じであると仮定し、ＥＮＧ制御プログラムを書換える場合を例に取って説明する。図８（ｂ）に示すように、ＥＮＧ制御プログラムには、「関数Ａコール」と「関数Ａ本体」が含まれており、このＥＮＧ制御プログラムの空き領域に追加分のＥＮＧ制御プログラムを書込むものとする。ここで、追加分のＥＮＧ制御プログラムには「関数Ｂコール」、「関数Ｂ本体」、「関数Ｃコール」及び「関数Ｃ本体」が含まれている。追加分のＥＮＧ制御プログラムが空き領域より容量が大きく、空き領域に収まらない場合には、書換える必要がない他の制御プログラム、例えばＴＣＵ制御プログラム、ＡＰＩ及びＢＩＯＳもアドレスを順次ずらして書換えなければならない。
【００３３】
そこで、図８（ｃ）に示すように、ＥＮＧ制御プログラムには「関数Ａコール」、及び追加分のＥＮＧ制御プログラムにおける「関数Ｂコール」と「関数Ｃコール」を書き込む。そして、「関数Ａ本体」と、追加分のＥＮＧ制御プログラムにおける「関数Ｂ本体」及び「関数Ｃ本体」はそれぞれ共通の空き領域（共通領域）に書き込む。
【００３４】
上述したように、基本的には各制御プログラム領域の空き領域を使用して追加分のデータ容量を確保するが、特定の制御プログラム領域が溢れる場合には、図８（ｂ），（ｃ）に示すように、任意の関数コール部を制御プログラム領域内に配置し、関数本体は共通の空き領域に移動するとよい。
【００３５】
このようなデータ書換えシステムによれば、複数の制御プログラムのうちの一部の制御プログラムを書換える際に、追加分が当該制御プログラムの空き領域より大きな容量であっても、アドレスを順次ずらして他の制御プログラムを書換える必要がなく、共通の空き領域を利用して最小限のデータ量で書換えが可能である。従って、書換えるメモリ領域を小さくしてソフトウェアの更新時間を短縮できる。
なお、複数の制御領域がオーバーする場合は、制御プログラム領域には空き領域を設けずに制御プログラムを敷き詰めるとよい。
【００３６】
図９は、ＥＣＵ１０のフラッシュＲＯＭ１３の制御プログラムの一部を更新するデータ書換え処理の別の例を示しており、複数の制御プログラムを書換えるものである。ここでは、書換え前のフラッシュＲＯＭ１３（ＥＣＵ１０側）のＥＮＧ制御プログラムが旧バージョンであり、且つ共通の空き領域に追加分のＥＮＧ制御プログラムを書き込む場合を例に取って示している。
【００３７】
まず、ツール３０からＥＣＵ１０に識別情報照合要求が出され（ステップＳ２１）、ツール３０におけるストレージ３３に記憶されている識別情報（ここではソフトＶｅｒ：２）とＥＣＵ１０におけるフラッシュＲＯＭ１３に記憶されている識別情報（ここではソフトＶｅｒ：１）とがＥＣＵ１０で比較される（ステップＳ２２）。識別情報に差異があった場合は、ＥＣＵ１０側から書換えデータであるＥＮＧ制御プログラムの送付要求をツール３０側に行う（ステップＳ２３）。これによって、ツール３０側から書換え対象の消去要求が出力され（ステップＳ２４）、ＥＣＵ１０側で書換え対象であるＥＮＧ制御プログラムの消去が開始される（ステップＳ２５）。そして、消去が終了すると、ＥＣＵ１０側からツール３０側に消去終了を通知する（ステップＳ２６）。
【００３８】
次に、ツール３０からＥＣＵ１０に書込みデータ（ソフトＶｅｒ：２のＥＮＧ制御プログラム）が転送され（ステップＳ２７）、このデータがＲＡＭ１４に格納される（ステップＳ２８）。ＲＡＭ１４へのデータの書込みが終了すると（ステップＳ２９）、ＥＣＵ１０により書込み異常の有無が判定される（ステップＳ３０）。上記ステップＳ２２で識別情報に差異がなかった場合、及びステップＳ３０で「書込み異常なし」と判定された場合には、ＥＣＵ１０からツール３０に書込み完了を通知し（ステップＳ３３）、ツール３０が書込み完了通知を受け取ると、次の書込み対象に対して識別情報照合要求を出して、次の書換え対象である共通領域の書換え動作を開始する（ステップＳ３５）。
【００３９】
一方、ステップＳ３０で「書込み異常あり」と判定された場合には、書込み異常が発生した消去ブロック（異常部）を消去し（ステップＳ３１）、異常が発生した消去ブロックからＲＡＭ１４に退避したデータを使って再書込みする（ステップＳ３２）。すなわち、フラッシュＲＯＭ１３における消去ブロック単位での消去の際に、正常に書込まれている書込ブロックのデータをＲＡＭ１４に退避（コピー）してから消去し、正常に書込まれなかった残りのデータを再受信して書換える。上記ステップＳ３１，Ｓ３２の期間には、ツール３０側でＥＣＵ１０から出力されるビジィ（BUSY）信号を受信して監視し（ステップＳ３４）、ツール３０とＥＣＵ１０の通信タイムアウトを回避する。書込みが完了すると、ＥＣＵ１０からツール３０に書込み完了を通知する（ステップＳ３３）。
【００４０】
ツール３０側では、書込み完了通知を受け取ると共通の空き領域（共通領域）の書換え動作に移る。すなわち、ツール３０からＥＣＵ１０に識別情報照合要求が出力され（ステップＳ３５）、ツール３０におけるストレージ３３に記憶されている識別情報（ここではソフトＶｅｒ：２）とＥＣＵ１０におけるフラッシュＲＯＭ１３に記憶されている識別情報（ここではソフトＶｅｒ：１）とがＥＣＵ１０で比較される（ステップＳ３６）。識別情報に差異があった場合は、ＥＣＵ１０側から共通領域に書換えデータの送付要求をツール３０側に行う（ステップＳ３７）。これによって、ツール３０から書換え対象である共通領域の消去要求が出力される（ステップＳ３８）。ＥＣＵ１０側で書換え対象である共通領域の消去が開始され（ステップＳ３９）、消去が終了するとＥＣＵ１０側からツール３０側に消去終了を通知する（ステップＳ４０）。
【００４１】
続いて、ツール３０からＥＣＵ１０に書込みデータ（追加分のＥＮＧ制御プログラム）が転送され（ステップＳ４１）、このデータがＲＡＭ１４に格納される（ステップＳ４２）。ＲＡＭ１４へのデータの書込みが終了すると、ＲＡＭ１４からフラッシュＲＯＭ１３へのデータの書込みが行われる（ステップＳ４３）。その後、上述したステップＳ３０以降と同様に、書込み異常の有無を判定し、書込が終了すると、次の書込み対象に対して識別情報照合要求を出して、次の書換え対象へ移動し、同様な動作を繰り返して書込みを行う。そして、ＥＣＵ１０からツール３０に全ての書込みが完了したことが通知されると、入出力装置３４のディスプレイに書込み完了を表示して作業者に通知する。
【００４２】
なお、上述したステップＳ３０〜Ｓ３２においては、書換えに失敗した場合には、次の書換え対象への処理には遷移しないようになっている。このようにしているのは、例えばツール３０と複数のＥＣＵ１０とを無線通信により接続してデータ書換えを行うと、通信が切断される可能性があるためである。このような場合に、制御プログラムのブロックを同一グループ（同一制御）で分類し、同じグループは連続で書換えを行うようにすれば誤書込みを抑制できる。
また、フラッシュＲＯＭ（不揮発性メモリ）の同一消去ブロックで複数回書換えが失敗した場合は、エラーと判定して書換えを中断するとよい。
【００４３】
図１０は、本発明の第２の実施形態に係る自動車用電子制御装置におけるデータ書換えシステムを示している。本例では、書換えツール４０が、無線送受信機４１を用いた無線通信により、自動車４２に搭載された第１ＥＣＵ４３に搭載されている不揮発性メモリ（フラッシュＲＯＭ）４５、または第２ＥＣＵ４４に搭載されている不揮発性メモリ（フラッシュＲＯＭ）４６の書換え作業を行うように構成されている。
【００４４】
自動車４２には、無線送受信機４７及び不正アクセスを防止するためのセキュリティゲートウェイ４８が搭載されており、無線送受信機４７で受信したデータを、セキュリティゲートウェイ４８からバス４９を介して第１ＥＣＵ４３と第２ＥＣＵ４４に入力するように構成されている。ここでは、便宜上、第１ＥＣＵ４３と第２ＥＣＵ４４と呼ぶが、基本的には両者は同一構成であり、主従の関係や優先順位はなく、実質的に同じ不揮発性メモリ４５，４６、例えばフラッシュＲＯＭと、ＣＰＵ５０，５１を備えている。
【００４５】
上記のような構成において、自動車４２の走行中には第１ＥＣＵ４３で制御されているものとすると、書換えツール４０からデータが送られてくると、第２ＥＣＵ４４の不揮発性メモリ４６に受信したデータが供給されて制御プログラムの書換えが実行される。具体的な書換えの手順は上述した通りである。そして、自動車４２の停車中に第１ＥＣＵ４３と第２ＥＣＵ４４の切換えが行われる。すなわち、自動車４２の制御が第２ＥＣＵ４４で実行される。従って、リプログラムされた新しい制御プログラムにより、自動車４２が制御される。
【００４６】
他の基本的な書換え動作は第１の実施形態と同様であるので、詳細な説明は省略する。
無線によるデータの書換えにおいては、自動車４２が動かされてしまう可能性があるので、ネットワークケーブル２０で接続する場合に比べて書換え対象範囲を狭くして、書換え時間を短縮するのが好ましい。すなわち、不揮発性メモリに書込むデータを、書換え対象範囲を限定して無線通信で入力するとよい。
【００４７】
このような構成であっても、基本的には第１の実施形態と同様であり、不揮発性メモリに、消去ブロックの整数倍の単位で構成された記憶領域毎に制御プログラムを記憶し、制御プログラムの割り付けと消去ブロックを対応させているので、書換え対象領域を制御プログラム毎にでき、データの転送量を削減してソフトウェアの更新時間を短縮できる。また、外部からの書換え要求に応じて、不揮発性メモリの一部の記憶領域を消去し、この消去領域に書込ブロック単位で書込むことで、書換え対象領域のサイズの縮小を図れ、データの書込み時間を短縮してソフトウェアの更新時間を短縮できる。更に、消去及び再書込み中は外部からの通信を途絶させないようにすれば、誤書込みを抑制できる。
【００４８】
なお、本第２の実施形態では、第１ＥＣＵ４３と第２ＥＣＵ４４を備える例について説明したが、１つのＥＣＵで２つのフラッシュＲＯＭを切換えて再書込みするような構成であってもよい。また、３つ以上のＥＣＵとフラッシュＲＯＭを切換えて用いる構成にも適用できるのは勿論である。
【００４９】
更に、自動車４２に予め設けられているカーナビゲーションシステムやオーディオシステムのハードディスクや半導体メモリなどの記憶装置を利用し、書換えツール４０から転送された書換えデータを予め記憶装置に取り込んでおき、この記憶装置に格納したデータを使って不揮発性メモリを書換えるように構成することもできる。
【符号の説明】
【００５０】
１０…ＥＣＵ、１１…プロセッサ、１２…通信装置、１３…フラッシュＲＯＭ、１４…ＲＡＭ、１５…バス、２０…ネットワークケーブル、３０…ツール、３１…プロセッサ、３２…通信装置、３３…ストレージ、３４…入出力装置、３５…バス、４０…書換えツール、４１…無線送受信機、４２…自動車、４３…第１ＥＣＵ、４４…第２ＥＣＵ、４５，４６…不揮発性メモリ（フラッシュＲＯＭ）、４７…無線送受信機、４８…セキュリティゲートウェイ、４９…バス、５０，５１…ＣＰＵ、ＥＢ１〜ＥＢｑ…消去ブロック、ＷＢ１，ＷＢ２，…，ＷＢｘ…書込ブロック
【図１】
2019109745.tif 000003
【図２】
2019109745.tif 000004
【図３】
2019109745.tif 000005
【図４】
2019109745.tif 000006
【図５】
2019109745.tif 000007
【図６】
2019109745.tif 000008
【図７】
2019109745.tif 000009
【図８】
2019109745.tif 000010
【図９】
2019109745.tif 000011
【図１０】
2019109745.tif 000012