(57)【特許請求の範囲】
【請求項１】
電気的にデータの消去及び書込みが可能な不揮発性メモリと、それぞれが外部装置との通信用に予め割り当てられている複数の通信バッファを有する通信回路と、を含んで構成される自動車用電子制御装置であって、
前記外部装置には、前記不揮発性メモリへのプログラムの書込み時に前記電子制御装置と接続されてプログラムを送信する書込みツールが含まれ、
前記電子制御装置は、車載状態で、前記書込みツール以外の外部装置と通信するときには、前記複数の通信バッファのうち、当該外部装置との通信用に予め割り当てられている通信バッファを用いて通信するように構成されると共に、
非車載状態で、前記書込みツールと通信するときには、前記書込みツールとの通信用に予め割り当てられた通信バッファと、前記書込みツール以外の外部装置との通信用に予め割り当てられた通信バッファとの両方を用いて通信するように構成されることを特徴とする自動車用電子制御装置。
【請求項２】
電気的にデータの消去及び書込みが可能な不揮発性メモリと、それぞれが外部装置との通信用に予め割り当てられている複数の通信バッファを有する通信回路とを備えた自動車用電子制御装置が、前記外部装置との間で通信する際のデータ通信方法であって、
前記外部装置には、前記不揮発性メモリへのプログラムの書込み時に前記電子制御装置と接続されてプログラムを送信する書込みツールが含まれ、
車載状態で、前記書込みツール以外の外部装置と通信するときには、前記複数の通信バッファのうち、当該外部装置との通信用に予め割り当てられている通信バッファを使用し、
非車載状態で、前記書込みツールと通信するときには、前記書込みツールとの通信用に予め割り当てられた通信バッファと、前記書込みツール以外の外部装置との通信用に予め割り当てられた通信バッファとの両方を使用することを特徴とするデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置及びデータ通信方法に関する。
【背景技術】
【０００２】
自動車用のＥＣＵ（Electronic Control Unit）などの自動車用電子制御装置は、電気的にデータの消去及び書込みが可能な不揮発性メモリ（例えばフラッシュＲＯＭ（Read-Only Memory））を搭載している。電子制御装置は、不揮発性メモリに格納された制御プログラム等によって車載装置（例えば、燃料噴射装置）を制御する。
【０００３】
不揮発性メモリに制御プログラム等のデータを書込むとき、特開２００８−１４６５２１号公報（特許文献１）に記載されているように、書込みデータを電子制御装置に転送するための書込みツールを電子制御装置に接続する。そして、書込みツールから電子制御装置に書込みデータを転送しながら、電子制御装置が、書込みデータを不揮発性メモリに書込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１４６５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、電子制御装置は、通信相手となる装置ごとに異なる通信バッファを使用することで通信を行う。よって、電子制御装置は、書込みツールから転送される書込みデータを受信するとき、その書込みツールとの通信用に割当てられた通信バッファしか使用できないため、１回の通信で受信できるデータのサイズは限られていた。従って、例えば、書込みツールからデータを１回受信するごとにその応答を書込みツールに送信するような同期を取る通信の場合、電子制御装置は、受信する回数と同じ回数の送信を行うことになる。このため、電子制御装置と書込みツールとの間で通信する回数が多くなり、書込みデータを転送する時間を長くする原因の一つとなっていた。
【０００６】
そこで、本技術はこのような問題点に鑑み、電子制御装置において、書込みデータの転送に要する時間を短縮する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するための自動車用電子制御装置は、電気的にデータの消去及び書込みが可能な不揮発性メモリと、それぞれが外部装置との通信用に予め割り当てられている複数の通信バッファを有する通信回路と、を含んで構成され、前記外部装置には、前記不揮発性メモリへのプログラムの書込み時に前記電子制御装置と接続されてプログラムを送信する書込みツールが含まれ、そして、前記電子制御装置は、車載状態で、前記書込みツール以外の外部装置と通信するときには、前記複数の通信バッファのうち、当該外部装置との通信用に予め割り当てられている通信バッファを用いて通信するように構成されると共に、非車載状態で、前記書込みツールと通信するときには、前記書込みツールとの通信用に予め割り当てられた通信バッファと、前記書込みツール以外の外部装置との通信用に予め割り当てられた通信バッファとの両方を用いて通信するように構成される。
【発明の効果】
【０００８】
本技術によれば、電子制御装置において、電子制御装置と書込みツールとの間で通信する回数を減らすことができ、書込みデータの転送に要する時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】ＥＣＵ製造工程及びアプリケーションプログラム書込み工程の説明図である。
【図２】ＥＣＵ及び書込みツールの構成図である。
【図３】通信バッファ領域の詳細を示す図である。
【図４】アプリケーションプログラム書込み工程の手順をフローチャートで示した図である。
【図５】プログラム書込み全体処理の概要を示す図である。
【図６】通信環境が変更された後の、通信バッファ領域の詳細を示す図である。
【図７】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図８】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図９】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図１０】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図１１】ＥＣＵのＲＡＭ展開プログラムが実行する処理のフローチャートである。
【図１２】ＥＣＵの書込みメインプログラムが実行する処理のフローチャートである。
【図１３】ＥＣＵの書込みメインプログラムが実行する処理のフローチャートである。
【図１４】ＥＣＵの書込みメインプログラムが実行する処理のフローチャートである。
【図１５】ＥＣＵの書込みメインプログラムが実行する処理のフローチャートである。
【図１６】ＥＣＵの書込みサブプログラムが実行する処理のフローチャートである。
【図１７】アプリケーションプログラムの転送及び書込み処理の実施例のシーケンスを示す図である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照して本発明を実施するための実施形態について技術を詳細に説明する。
ＥＣＵ１００に搭載されたＲＯＭ（例えば，フラッシュＲＯＭ）に対し、アプリケーションプログラム（例えばエンジン制御プログラム）を書込むためのＥＣＵ製造工程１０及びアプリケーションプログラム書込み工程２０を図１に示す。
【００１１】
ＥＣＵ製造工程１０では、ＥＣＵ１００に搭載されたＲＯＭに、ハードウェアの検査プログラムが実行でき、後の工程でアプリケーションプログラムの書込みが可能となるような必要最低限のプログラム（以下、最低限プログラムと略記する）を書込み、検査する。なお、ＥＣＵ製造工程１０は、例えば、ＥＣＵサプライヤ等によって行われる作業の一部である。
【００１２】
アプリケーションプログラム書込み工程２０では、ＥＣＵ１００上のＲＯＭに対し、書込みツール２００を使用することにより、車種に応じたアプリケーションプログラムを書込む。これにより、ＥＣＵ製造工程１０から供給されるＥＣＵ１００は、各車種用ＥＣＵ１００となる。なお、後の検査工程において、自動車に組付けられたＥＣＵ１００のＲＯＭに、その自動車に応じたアプリケーションプログラムが書き込まれているか否か検査する。また、アプリケーションプログラム書込み工程２０は、例えば、自動車工場等のＥＣＵ組付け工程に関連して行われる作業である。
【００１３】
このように、ＥＣＵ１００は、アプリケーションプログラム書込み工程２０のＲＯＭ書込みの前までは各車種共通のものであるため、例えば、ＥＣＵサプライヤ等は、各車種共通のＥＣＵを製造し、自動車工場等に納品すればよい。従って、ＥＣＵサプライヤ等では、各車種ごとのＥＣＵ１００のプログラミング、製造及び納品管理等が不要となる。また、自動車工場等では、アプリケーションプログラム書込み工程２０のＲＯＭ書込みの前まで、各車種ごとのＥＣＵ１００の保持及び管理（在庫状況など）が不要となる。よって、これらの工程により、ＥＣＵサプライヤ及び自動車工場等では、製造及び管理等を大幅に削減できるメリットがある。
【００１４】
しかしながら、自動車工場等において、従来では存在しなかったアプリケーションプログラム書込み工程２０が新たなに追加される。このアプリケーションプログラム書込み工程２０において、車種に応じたアプリケーションプログラムを迅速にＲＯＭに書込むことが要求される。この要求に応じるＥＣＵ１００及び書込みツール２００の構成を図２に示す。
【００１５】
ＥＣＵ１００は、車両用エンジンにおける燃料噴射や点火等を制御するためのものであり、ＲＯＭ１１０、マイクロコンピュータ１２０、及び、揮発性メモリであるＲＡＭ（Random Access Memory）１３０、通信回路１４０を含んで構成される。ＥＣＵ１００は、ＣＡＮ（Controller Area Network）などの通信回線３００によって、書込みツール２００に対し着脱可能に接続される。
【００１６】
マイクロコンピュータ１２０は、ＣＰＵ、及び、キャッシュメモリ等を備え、ＲＯＭ１１０及びＲＡＭ１３０に格納された各種プログラムを実行する。
ＲＡＭ１３０には、第１のバッファ領域１３３及び第２のバッファ領域１３４が存在する。第１のバッファ領域１３３及び第２のバッファ領域１３４は、ＲＯＭ１１０にデータを書込むときに使用される。
【００１７】
通信回路１４０には、通信バッファ領域１４１が存在する。通信バッファ領域１４１は、ＥＣＵ１００が通信回路１４０によって他の装置と通信するときに使用される。
書込みツール２００は、ストレージ２１０（例えばハードディスク）及び通信回路２４０を含んで構成される。また、書込みツール２００は、端末（例えば、パーソナルコンピュータ）及びＥＣＵ１００と接続する装置を含み、書込みツール２００を操作する作業者が、書込みツール２００に対し対話的に指示を出すことができる。書込みツール２００はストレージ２１０に格納されている書込みデータを、ＥＣＵ１００に対して転送する。
【００１８】
ストレージ２１０には、ＥＣＵ１００に転送されるアプリケーションプログラム等が格納されている。
通信回路２４０には、通信バッファ領域２４１が存在する。通信バッファ領域２４１は、書込みツール２００が通信回路２４０によってＥＣＵ１００と通信するときに使用される。
【００１９】
ここで、ＥＣＵ１００が、書込みツール２００と通信するときに使用する通信バッファ領域１４１の詳細を図３に示す。
ＥＣＵ１００の通信バッファ領域１４１には、一定のサイズの通信バッファ（例えば、ＣＡＮにおけるメールボックス）が複数存在する。ＥＣＵ１００は、各装置と通信するとき、通信バッファ領域１４１の通信バッファのうち、通信相手となる装置との通信用として予め割当てられている通信バッファを使用する。なお、それぞれの通信バッファは、データの送信に使用される送信バッファ（ＴＸ）、データの受信に使用される受信バッファ（ＲＸ）に分かれている。また、通信相手となる装置との通信用として予め割当てられている通信バッファの数を、車載状態の通信環境で使用する数とする。
【００２０】
一方、書込みツール２００の通信バッファ領域２４１には、一定のサイズの通信バッファが複数存在する。なお、通信バッファ領域２４１の通信バッファのサイズは、ＥＣＵ１００の通信バッファ領域１４１の通信バッファのサイズと同じである。
【００２１】
図３において、ＥＣＵ１００の通信バッファ領域１４１には、ＥＣＵ１００が書込みツール２００と通信するために使用する通信バッファ（以下、書込みツール用通信バッファと略記する）として、２個の通信バッファ（ＴＸ１個、ＲＸ１個）が、割り当てられている。また、通信バッファ領域１４１のその他の通信バッファは、書込みツール２００以外の装置との通信用に割当てられている。
【００２２】
従って、通信バッファのサイズが８バイトであり、かつ、ＥＣＵ１００が、１つのデータの受信ごとに書込みツール２００にその応答を返すように、ＥＣＵ１００と書込みツール２００との間で同期を取りながら通信を行う場合、１つのデータの受信に１個のＲＸを使用するため、ＥＣＵ１００が６４バイトのデータを取得するまでに、１６回の通信が必要になる。即ち、書込みツール２００が６４バイトのデータを８バイトごとに分けて転送し、ＥＣＵ１００は８バイト受信するごとに書込みツール２００に応答を返すため、通信回数が１６回となる。
【００２３】
アプリケーションプログラム書込み工程２０における手順を図４に示す。
ステップ１（図では「Ｓ１」と略記する。以下同様）では、作業者が、書込みツール２００に、ＥＣＵ１００を接続する。ＥＣＵ１００は、接続されると電源が投入され、マイクロコンピュータ１２０が最低限プログラムを実行することによって、書込みツール２００と通信可能になり、書込みツール２００から転送されるデータの受信待ち状態となる。
【００２４】
ステップ２では、作業者が、ＲＯＭ１１０に書込むためのアプリケーションプログラム（例えば車種Ａ用のエンジン制御プログラム）等を指定する。書込みツール２００は、アプリケーションプログラムが指定されると、指定されたアプリケーションプログラムをＥＣＵ１００に転送する。ＥＣＵ１００は、転送されたアプリケーションプログラム等を受信しながら、アプリケーションプログラムをＲＯＭ１１０に書き込む。以下、このステップ２の処理を、プログラム書込み全体処理と呼ぶ。
【００２５】
ステップ３では、作業者が、書込みツール２００からＥＣＵ１００を取外す。
なお、この後、ＥＣＵ１００は、各自動車に組付けられる。また、検査工程において、ＥＣＵ１００のＲＯＭ１１０に正しいアプリケーションプログラムが書き込まれた否か（例えば、組付けられた自動車に応じたアプリケーションプログラムか否か）チェックされる。正しいアプリケーションプログラムが書き込まれていなければ、自動車に組付けられたＥＣＵ１００に対し、書込みツール２００を接続し、正しいアプリケーションプログラムを書込む。
【００２６】
図５に、プログラム書込み全体処理の概要を示す。
ステップ１１では、書込みツール２００は、作業者によって書込みプログラム及びＲＯＭ１１０に書込むためのアプリケーションプログラムが指定されると、書込みプログラム及びアプリケーションプログラムを転送するデータ転送プログラムを起動する。そして、書込みツール２００は、データ転送プログラムによって、ＥＣＵ１００に対し、書込みプログラム（例えば書込みプログラム２）の転送を開始するメッセージを送信すると共に、指定された書込みプログラムを転送する。
【００２７】
ここで、作業者が指定する書込みプログラムは、ストレージ２１０に存在する書込みプログラムデータベース２１１に格納されている。書込みプログラムは、ＥＣＵ１００に転送され、通信環境の変更などの初期化処理、書込みデータの受信処理、及び、書込みデータをＲＯＭ１１０に書込む処理をＥＣＵ１００上で実行する。また、書込みプログラムは、書込みメインプログラム及び書込みサブプログラムから構成される。
【００２８】
書込みメインプログラムは、ＥＣＵ１００に転送された後にＥＣＵ１００上で動作し、書込みツール２００とＥＣＵ１００との間で、書込みプログラムに応じた通信環境（通信バッファの使用方法、通信速度、暗号化方式等）を確立する。また、書込みメインプログラムは、書込みツール２００から転送されるアプリケーションプログラムを、書込みプログラムに応じた書込み条件（書込むＲＯＭの領域のアドレス等）によってＲＯＭ１１０に書込む。書込みサブプログラムは、書込みメインプログラムから起動され、通信バッファ領域１４１にある受信データを、第１のバッファ領域及び第２のバッファ領域にコピーする。
【００２９】
さらに、作業者が指定するアプリケーションプログラムは、ストレージ２１０に存在するアプリケーションプログラムデータベース２１２に格納されている。各アプリケーションプログラムは、それぞれの車種に応じたエンジン制御用プログラム等である。
【００３０】
ステップ１２では、ＥＣＵ１００が、書込みプログラムの転送元である書込みツール２００から、書込みプログラムの転送を開始するメッセージを受信すると、ＲＯＭ１１０に格納されているＲＡＭ展開プログラムを起動する。ここで、ＲＡＭ展開プログラムは、ＥＣＵ１００が受信した書込みプログラムをＲＡＭ１３０上に展開する処理を行う。従って、ＥＣＵ１００は、書込みプログラムを受信しながら、ＲＡＭ展開プログラムによって、受信した書込みプログラムをＲＡＭ１３０に展開する。
【００３１】
ステップ１３で、ＥＣＵ１００は、書込みプログラムの展開が完了すると、ＲＡＭ展開プログラムによって、ＲＡＭ１３０に展開した書込みプログラムを起動する。
ステップ１４で、ＥＣＵ１００は、書込みプログラムによって、ＥＣＵ１００と書込みツール２００との間の通信環境を、その書込みプログラムに応じた通信環境に変更し、書込みツール２００に対し、アプリケーションプログラムの送信を要求するメッセージを送信する。
【００３２】
ステップ１５で、書込みツール２００が、アプリケーションプログラムの送信を要求するメッセージを受信すると、データ転送プログラムによって、ＥＣＵ１００に対し、作業者によって指定されたアプリケーションプログラム（例えば、アプリケーションプログラム１）の転送を開始する。
【００３３】
ステップ１６で、ＥＣＵ１００は、書込みツール２００からアプリケーションプログラムを受信しながら、書込みメインプログラム及び書込みサブプログラムによって、書込み条件に基づき、受信したアプリケーションプログラムを、ＲＯＭ１１０に書き込む。
【００３４】
なお、書込み終了後、ＥＣＵ１００は書込みツール２００から取外され、電源がＯＦＦになる。次にＥＣＵ１００の電源が投入されたとき、ＥＣＵ１００の通信環境は、初期状態（ステップ１のときと同様の通信環境）に戻る。また、プログラム書込み全体処理の途中で、何からの異常（例えば、書込みプログラム動作時、書込みツール２００との通信が切断された等）が発生した場合は、ＥＣＵ１００が自らをリセットする。そして、ＥＣＵ１００の通信環境は、初期状態に戻る。
【００３５】
従って、書込みプログラムを選択することで、プログラム書込み全体処理において、使用する通信環境及びアプリケーションプログラムの書込み条件等に応じて、より適した書込みプログラムを動作させることができる。このため、例えば、通信速度がより高速な書込みプログラムを動作させることで高速に通信を行い、プログラム書込み全体処理を高速化することができる。
【００３６】
また、プログラム書込み全体処理のときに、書込みプログラムがＥＣＵ１００に転送されるため、書込みプログラムをＲＯＭ１１０に格納する必要がなくなり、ＲＯＭ１１０の使用量を削減することができる。
【００３７】
さらに、書込みプログラムを変更することにより、プログラム書込み全体処理に新しい機能を追加することができる。
なお、ＥＣＵ１００に書込みツール２００に加えて他の装置が接続された状況でも、ＥＣＵ１００は、プログラム書込み全体処理の間、他の装置との通信を遮断し、書込みツール２００のみと通信するようにすれば、プログラム書込み全体処理を実行することができる。
【００３８】
ＥＣＵ１００に書込みツール２００に加えて他の装置が接続された状況で、プログラム書込み全体処理を行う例として、ＥＣＵ１００が自動車に組付けられた状態で、アプリケーションプログラムの書込みを実施することが挙げられる。
【００３９】
この場合、通信路の競合を防ぐため、ＥＣＵ１００は、書込みツール２００と通信するときに使用する通信環境は、他の装置と共通する通信環境（例えば、通信速度が共通）である必要がある。このため、作業者は、書込みプログラムを、他の装置と共通の通信環境を確立するものを指定し、プログラム書込み全体処理を実施する。このとき、ＥＣＵ１００は、書込みツール２００のみと通信し、他の装置との通信を遮断する。
【００４０】
次に、ＥＣＵ１００が、書込みツール２００から転送されるアプリケーションプログラムを受信するときに使用する、通信バッファ領域１４１の使用方法を説明する。
アプリケーションプログラム書込み工程２０のような状況において、ＥＣＵ１００は、書込みツール２００以外の装置と通信しないため、書込みツール２００以外の装置と通信するために予め割当てられた通信バッファ（以下、他の装置用通信バッファと略記する）は、使用されない。
【００４１】
このため、書込みプログラムは、書込みツール用通信バッファに加えて他の装置用通信バッファを、ＥＣＵ１００と書込みツール２００との間の通信に使用するように変更することができる。
【００４２】
変更後の通信バッファ領域１４１の詳細を示したのが図６である。
図６の例では、ＥＣＵ１００は、書込みツール２００と通信するとき、書込みツール用通信バッファとして２個の通信バッファ、及び、他の装置用通信バッファのうちの７個の通信バッファを使用する。このとき、ＥＣＵ１００が使用する９個の通信バッファは、ＴＸとして１個、ＲＸとして８個を設定する。なお、このとき、書込みツール２００の通信バッファ領域２４１の通信バッファは、ＴＸが８個、ＲＸが１個となる。
【００４３】
例えば、１つの通信バッファのサイズが８バイトであり、かつ、ＥＣＵ１００が、１つのデータの受信ごとに書込みツール２００にその応答を返すように、ＥＣＵ１００と書込みツール２００との間で同期を取りながら通信を行う場合、１つのデータの受信に８個の
ＲＸが使用できるため、ＥＣＵ１００が６４バイトのデータを書込みツール２００から取得するまで、従来と比較して、９回の通信ですむことになる。即ち、書込みツール２００が６４バイトのデータを１つのデータとして８バイトごとに分けて転送し、ＥＣＵ１００は８バイトのデータを８個受信するごとに書込みツール２００に応答を返す。このため、通信回数が９回となる。
【００４４】
なお、書込みプログラムは、ＥＣＵ１００が書込みツール２００との通信に使用する通信バッファの数を、データの送受信のサイズ、データの送受信のサイズの整数倍、ＲＯＭ１１０への１回の書込みのサイズ又はＲＯＭ１１０への１回の書込みのサイズの整数倍等に応じた数にしてもよい。
【００４５】
このように、書込みツール用通信バッファに加えて他の装置用通信バッファも使用して通信することができるため、同期をとるような通信では、通信回数が少なくなり、データの転送に要する時間が減少し、データの転送の高速化が図れる。また、他の装置用通信バッファを使用するため、通信バッファのオーバライトを気にすることなく、書込みツール２００が連続してデータを転送することができる。
【００４６】
なお、通信バッファ領域１４１のうち、どの装置にも割当てられていない未使用の通信バッファがあれば、書込みプログラムが、未使用の通信バッファを、ＥＣＵ１００と書込みツール２００との間の通信で使用するように変更することもできる。
【００４７】
次に、プログラム書込み全体処理において動作する各プログラムを説明する。
図７及び図８は、書込みツール２００において、書込みプログラム及びアプリケーションプログラムが作業者によって指定されたことを契機として、データ転送プログラムが、書込みツール２００によって実行する処理のフローチャートを示す。
【００４８】
ステップ３１では、データ転送プログラムが、書込みプログラムの転送を開始することを示すメッセージ（書込みプログラムの転送開始メッセージ）をＥＣＵ１００に送信する。
【００４９】
ステップ３２では、データ転送プログラムが、指定された書込みプログラムのデータを、ＥＣＵ１００が１回の通信で受信可能なサイズだけ順次転送する。
ステップ３３では、データ転送プログラムが、ＥＣＵ１００から次のデータの要求メッセージを受信したか否かを判定する。データ転送プログラムは、ＥＣＵ１００から次のデータの要求メッセージを受信していれば、処理をステップ３４に進める（Ｙｅｓ）一方、ＥＣＵ１００から次のデータの要求メッセージを受信していなければ、処理をステップ３３に戻す（Ｎｏ）。
【００５０】
ステップ３４では、データ転送プログラムが、指定された書込みプログラムの転送を完了したか否かを判定する。データ転送プログラムは、指定された書込みプログラムの転送を完了していれば、処理をステップ３５に進める（Ｙｅｓ）一方、指定された書込みプログラムの転送を完了していなければ、処理をステップ３２に戻す（Ｎｏ）。
【００５１】
ステップ３５では、データ転送プログラムが、書込みプログラムの転送が完了したことを示すメッセージ（書込みプログラムの転送完了メッセージ）をＥＣＵ１００に送信する。
【００５２】
ステップ３６では、データ転送プログラムが、ＥＣＵ１００からメッセージを受信したか否かを判定する。データ転送プログラムは、ＥＣＵ１００からメッセージを受信していれば、処理をステップ３７に進める（Ｙｅｓ）一方、ＥＣＵ１００からメッセージを受信していなければ、処理をステップ３６に戻す（Ｎｏ）。
【００５３】
ステップ３７では、データ転送プログラムは、ＥＣＵ１００から受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージかを否かを判定する。データ転送プログラムは、受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージであれば、処理をステップ３８に進める（Ｙｅｓ）一方、受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージでなければ、処理をステップ３９に進める（Ｎｏ）。
【００５４】
ステップ３８では、データ転送プログラムが、アプリケーション転送処理サブルーチンを実行する。なお、アプリケーション転送処理サブルーチンは、指定されたアプリケーションプログラムのデータを、分割して転送する処理を行う。以下では、この分割して転送するデータを分割データと呼ぶ。
【００５５】
ステップ３９では、データ転送プログラムが、書込みプログラムを再度先頭から転送するような設定（例えば、書込みプログラムのインデックスを先頭に戻すなど）を行う。
【００５６】
図９〜図１０は、アプリケーション転送処理サブルーチンの処理のフローチャートを示す。
ステップ４１では、データ転送プログラムは、書込みツール２００がＥＣＵ１００よりメッセージを受信したか否かを判定する。データ転送プログラムは、ＥＣＵ１００よりメッセージを受信していれば、処理をステップ４２に進める（Ｙｅｓ）一方、ＥＣＵ１００よりメッセージを受信していなければ、処理をステップ４１に戻す（Ｎｏ）。
【００５７】
ステップ４２では、データ転送プログラムは、受信したメッセージが分割データの送信要求を示すメッセージ（分割データの送信要求メッセージ）か否か判定する。データ転送プログラムは、受信したメッセージが分割データの送信要求メッセージなければ、処理をステップ４３に進める（Ｙｅｓ）一方、受信したメッセージが分割データの送信要求メッセージであれば、処理をステップ４４に進める（Ｎｏ）。
【００５８】
ステップ４３では、データ転送プログラムは、受信したメッセージが分割データの再送要求を示すメッセージ（分割データの再送要求メッセージ）か否か判定する。データ転送プログラムは、受信したメッセージが分割データの再送要求メッセージでなければ、処理をステップ４７に進める（Ｙｅｓ）一方、受信したメッセージが分割データの再送要求メッセージであれば、処理をステップ４６に進める（Ｎｏ）。
【００５９】
ステップ４４では、データ転送プログラムが、指定されたアプリケーションプログラムのインデックスを表わす読出しポインタが指す位置からデータを読出し、その読出したデータにチェックサムを付加することで分割データを作成する。ここで、データの読出しサイズは、転送した書込みプログラムがＥＣＵ１００において確立する通信環境で使用する各ＲＸのサイズの総計から、チェックサムのサイズを減算した値にする。
【００６０】
また、読出しポインタの初期値は、アプリケーションプログラムの先頭のアドレスである。読出しポインタは、ステップ４４が実行されるごとに、データの読出しサイズだけ加算される。
【００６１】
例えば、転送した書込みプログラムが確立する通信環境で使用する各ＲＸのサイズの総計が６４バイト、及び、チェックサムのサイズが２バイトである場合、データの読出しサイズは６２バイト、分割データのサイズは６４バイトとなる。
【００６２】
なお、データ検証用として、チェックサムの他にはＣＲＣ（Cyclic Redundancy Check）がある。また、分割データに対し、書込みツール２００側で、何番目に転送した分割データであるかを示すシーケンス番号を分割データに含め、ＥＣＵ１００側で、受信した分割データのシーケンス番号をチェックすることで、正しい順序で分割データが受信できたかどうかチェックするようにしてもよい。
【００６３】
ステップ４５では、データ転送プログラムが、作成した分割データをＥＣＵ１００に転送する。このとき、データ転送プログラムは、分割データを転送するため、分割データを通信バッファ領域２４１のＴＸのサイズごとに分け、通信バッファ領域２４１の各ＴＸに格納する。例えば、分割データが６４バイト、及び、１個あたり８バイトのＴＸが通信バッファ領域２４１に８個ある場合、データ転送プログラムは、分割データを、８バイトごとに８個のデータに分けて各ＴＸに格納する。
なお、ＴＸに格納されたデータは、通信回路２４０によって、ＥＣＵ１００に転送される。
【００６４】
ステップ４６では、データ転送プログラムが、作成した分割データを再度、ＥＣＵ１００に転送する。
【００６５】
ステップ４７では、データ転送プログラムは、受信したメッセージが、分割データがＥＣＵ１００のＲＯＭ１１０に正常に書込まれなかったことを示すメッセージ（分割データの書込みＮＧメッセージ）か否かを判定する。データ転送プログラムは、受信したメッセージが分割データ書込みＮＧメッセージでなければ、処理をステップ４８に進める（Ｙｅｓ）一方、受信したメッセージが分割データの書込みＮＧメッセージであれば、処理をステップ５０に進める（Ｎｏ）。
【００６６】
ステップ４８では、データ転送プログラムが、読出しポインタがアプリケーションプログラムの最後まで到達したか否かを介し、アプリケーションプログラムの転送を最後まで完了したか否かを判定する。データ転送プログラムは、アプリケーションプログラムの転送を最後まで完了していれば、処理をステップ４９に進める（Ｙｅｓ）一方、アプリケーションプログラムの転送を最後まで完了していなければ、処理をステップ４１に進める（Ｎｏ）。
【００６７】
ステップ４９では、データ転送プログラムが、アプリケーションプログラムの転送が完了したことを示すメッセージ（アプリケーションの転送完了メッセージ）をＥＣＵ１００に送信する。
【００６８】
ステップ５０では、データ転送プログラムが、アプリケーションプログラムを再度先頭から転送するために、読出しポインタの値をアプリケーションプログラムの先頭アドレスに設定する。
【００６９】
図１１は、ＥＣＵ１００が書込みプログラムの転送開始メッセージを受信したことを契機として、ＲＡＭ展開プログラムがＥＣＵ１００によって実行する処理のフローチャートを示す。
【００７０】
ステップ５１では、ＲＡＭ展開プログラムは、ＥＣＵ１００が書込みツール２００からデータを受信したか否かを判定する。ＲＡＭ展開プログラムは、書込みツール２００からデータを受信していれば、処理をステップ５２に進める（Ｙｅｓ）一方、書込みツール２００からデータを受信していなければ、処理をステップ５１に戻す（Ｎｏ）。
【００７１】
ステップ５２では、ＲＡＭ展開プログラムは、受信したデータが、書込みプログラムの転送完了メッセージであるか否かを判定する。ＲＡＭ展開プログラムは、受信したデータが書込みプログラムの転送完了メッセージであれば、処理をステップ５３に進める（Ｙｅｓ）一方、受信したデータが書込みプログラムの転送完了メッセージでなければ、処理をステップ５６に進める（Ｎｏ）。
【００７２】
ステップ５３では、ＲＡＭ展開プログラムが、チェックサム等によって、転送された書込みプログラムが正当か否かを判定する。ＲＡＭ展開プログラムは、転送された書込みプログラムが正当であれば、処理をステップ５４に進める（Ｙｅｓ）一方、転送された書込みプログラムが正当でなければ、処理をステップ５８に進める（Ｎｏ）。
【００７３】
ステップ５４では、ＲＡＭ展開プログラムが、書込みツール２００に対し、書込みプログラムが正当に転送された旨のメッセージを送信する。
ステップ５５では、ＲＡＭ展開プログラムが、ＲＡＭ１３０に展開した書込みプログラムのなかの書込みメインプログラムを起動する。
【００７４】
ステップ５６では、ＲＡＭ展開プログラムが、受信した書込みプログラムのデータを通信バッファ領域１４１のＲＸからＲＡＭ１３０に展開する。
ステップ５７では、ＲＡＭ展開プログラムが、書込みツール２００に対し、次のデータの要求メッセージを送信する。
【００７５】
ステップ５８では、ＲＡＭ展開プログラムが、書込みツール２００に対し、書込みプログラムが正当に転送されていない旨のメッセージを送信する。
【００７６】
図１２は、書込みメインプログラムが起動されたことを契機として、書込みメインプログラムが、ＥＣＵ１００によって実行する処理のフローチャートを示す。
【００７７】
ステップ６１では、書込みメインプログラムは、転送された書込みプログラムに応じて、ＥＣＵ１００が書込みツール２００と通信するための通信環境を変更する。なお、ＥＣＵ１００が書込みツール２００以外の他の装置と通信可能である場合は、通信環境を変更しないようにしてもよい。
【００７８】
ステップ６２では、書込みメインプログラムが、ＲＯＭ書込み処理サブルーチンを実行する。なお、ＲＯＭ書込み処理サブルーチンは、分割データの転送元である書込みツール２００から分割データを受信し、分割データに基づいてアプリケーションプログラムのデータをＲＯＭ１１０に書込む処理を行う。
【００７９】
図１３〜図１５は、ＲＯＭ書込み処理サブルーチンを示す。
ステップ７１では、書込みメインプログラムが、第１のバッファ領域１３３を、書込みツール２００から受信する分割データをコピーするためのコピー用の領域に設定する。
【００８０】
ステップ７２では、書込みメインプログラムが、書込みサブプログラムを起動する。
ステップ７３では、書込みメインプログラムが、ＲＯＭ１１０に書込むデータ（アプリケーションプログラムのデータ）のうち、何番目のデータが処理中であるかを表わすカウンタである変数ｎに１を代入する。
【００８１】
ステップ７４では、書込みメインプログラムは、初回の分割データを取得するために、分割データの送信要求メッセージを書込みツール２００に送信する。
ステップ７５では、書込みメインプログラムは、書込みツール２００から受信した分割データがコピー用の領域にコピーされたことを示すメッセージ（分割データのコピー完了メッセージ）を書込みサブプログラムより通知されたか否か判定する。書込みメインプログラムは、分割データのコピー完了メッセージが通知されていれば、処理をステップ７６に進める（Ｙｅｓ）一方、分割データのコピー完了メッセージが通知されていなければ、処理をステップ７５に戻す（Ｎｏ）。
【００８２】
ステップ７６では、書込みメインプログラムが、コピー用の領域に格納された初回の分割データを参照し、分割データに含まれたチェックサムを利用することによって、初回の分割データが正常に受信できたか否かを判定する。書込みメインプログラムは、初回の分割データが正常に受信できていれば、処理をステップ７７に進める（Ｙｅｓ）一方、初回の分割データが正常に受信できていなければ、処理をステップ７８に進める（Ｎｏ）。
【００８３】
ステップ７７では、書込みメインプログラムが、第１のバッファ領域１３３を、ＲＯＭ１１０に分割データを書込むときに使用する書込み用の領域に設定するとともに、第２のバッファ領域１３４をコピー用の領域に設定する。
【００８４】
ステップ７８では、書込みメインプログラムが、初回の分割データを再度取得するために、分割データの再送要求メッセージを書込みツール２００に送信する。なお、分割データの再送要求メッセージと共に、分割データを正常に受信できなかったことを示すメッセージ（分割データの受信ＮＧメッセージ）を、書込みツール２００に送信するようにしてもよい。
【００８５】
ステップ７９では、書込みメインプログラムが、２番目の分割データを取得するために分割データの送信要求メッセージを書込みツール２００に送信する。なお、分割データの送信要求メッセージと共に、前回の分割データを正常に受信できたことを示すメッセージ（分割データの受信ＯＫメッセージ）を、書込みツール２００に送信してもよい。
【００８６】
ステップ８０では、書込みメインプログラムが、書込み用の領域に格納されているｎ番目の分割データからチェックサムを取り除き、書込み条件に従って、書込み用の領域に格納されているデータをＲＯＭ１１０に書込む。
【００８７】
ステップ８１では、書込みメインプログラムが、書込みデータのベリファイを実行することによって、ｎ番目のデータがＲＯＭ１１０に正常に書込まれたか否か判定する。書込みメインプログラムは、ｎ番目のデータがＲＯＭ１１０に正常に書込まれていれば、処理をステップ８２に進める（Ｙｅｓ）一方、ｎ番目のデータがＲＯＭ１１０に正常に書込まれていなければ、処理をステップ８４に進める（Ｎｏ）。
【００８８】
なお、書込みデータのベリファイは、例えば、書込み用の領域の内容と、書き込んだＲＯＭ１１０の領域の内容とを比較することで行われる。
【００８９】
ステップ８２では、書込みメインプログラムが、分割データのコピー完了メッセージが書込みサブプログラムから通知されたか否かを判定する。書込みメインプログラムは、分割データのコピー完了メッセージが通知されていれば、処理をステップ８３に進める（Ｙｅｓ）一方、分割データのコピー完了メッセージが通知されていなければ、処理をステップ８２に戻す（Ｎｏ）。
【００９０】
ステップ８３では、書込みメインプログラムは、コピー用の領域に格納されたデータが、アプリケーションの転送完了メッセージであるか否か判定する。書込みメインプログラムは、コピー用の領域に格納されたデータがアプリケーションの転送完了メッセージであれば、処理を終了する（Ｙｅｓ）一方、コピー用の領域に格納されたデータがアプリケーションの転送完了メッセージでなければ、処理をステップ８７に進める（Ｎｏ）。
【００９１】
ステップ８４では、書込みメインプログラムが、分割データの書込みＮＧメッセージを、書込みツール２００に送信する。
ステップ８５では、書込みメインプログラムが、書込みを行ったＲＯＭ１１０の領域のデータを消去する。
【００９２】
ステップ８６では、書込みメインプログラムが、第１のバッファ領域１３３を、コピー用の領域に設定する。
ステップ８７では、書込みメインプログラムが、コピー用の領域にコピーされたｎ＋１番目の分割データをチェックサムにより検証することによって、ｎ＋１番目の分割データが正常に受信できたか否かを判定する。書込みメインプログラムは、ｎ＋１番目の分割データが正常に受信できていれば、処理をステップ８８に進める（Ｙｅｓ）一方、ｎ＋１番目の分割データが正常に受信できていなければ、処理をステップ９１に進める（Ｎｏ）。なお、ｎ＋１番目の分割データの検証は、ｎ＋１番目の分割データを受信した直後に書込みサブプログラムが行ってもよい。
【００９３】
ステップ８８では、書込みメインプログラムが、コピー用に設定されていたバッファ領域を書込み用の領域にすると共に、書込み用に設定されていたバッファ領域をコピー用の領域にする。
【００９４】
ステップ８９では、書込みメインプログラムが、ｎ＋２番目の分割データを取得するために、分割データの送信要求メッセージを書込みツール２００に送信する。
なお、分割データの送信要求メッセージと共に、ｎ番目の分割データをＲＯＭ１１０に書込んだ旨のメッセージ（分割データの書込みＯＫメッセージ）及びｎ＋１番目の分割データを受信した旨のメッセージ（分割データの受信ＯＫメッセージ）を書込みツール２００に送信するようにしてもよい。
【００９５】
ステップ９０では、書込みメインプログラムが、ｎに１を加算する。
ステップ９１では、書込みメインプログラムが、ｎ＋１番目の分割データを再度取得するために、分割データの再送要求メッセージを書込みツール２００に送信する。なお、分割データの再送要求メッセージと共に、ｎ＋１番目の分割データが正常に受信できなかった旨のメッセージ（分割データの受信ＮＧメッセージ）を、書込みツール２００に送信するようにしてもよい。
【００９６】
図１６は、ＥＣＵ１００が書込みツール２００からデータを受信したことを契機として、書込みサブプログラムがＥＣＵ１００によって実行する処理のフローチャートを示す。
ステップ１０１では、書込みサブプログラムが、受信した分割データを、通信バッファ領域１４１のＲＸからコピー用の領域にコピーする。
【００９７】
ステップ１０２では、書込みサブプログラムが、分割データのコピー完了メッセージを、書込みメインプログラムに通知する。
なお、コピー用の領域を、通信バッファ領域１４１のＲＸに相当する領域に設定し、ＥＣＵ１００が、コピー用の領域を使用してデータを受信するようにしてもよい。この場合、通信バッファ領域１４１のＲＸからコピー用の領域に分割データをコピーする処理が不要となる。
【００９８】
また、分割データの送信要求からコピー完了までの処理時間と、データをＲＯＭ１１０に書込み及び検証処理に要する時間とで差がある場合、いずれかの時間の長い方の処理が完了したときに、次の分割データの受信処理と、データをＲＯＭ１１０に書込む処理とを開始するようにしてもよい。
【００９９】
このように、受信した分割データをＥＣＵ１００のＲＸにコピーし、ＲＯＭ１１０に書込みを行うためのバッファ領域を２つ用意する。そして、２つのバッファ領域のうち、一方のバッファ領域を、ＲＯＭ１１０に対する書込み処理に使用している間、他方のバッファ領域を、ＥＣＵ１００が受信した分割データをコピーする処理に使用する。これにより、ＥＣＵ１００において、一方のバッファ領域を使用しＲＯＭ１１０にデータを書込む処理と、分割データの受信、及び、受信した分割データを他方のバッファ領域にコピーする処理とを並列に行うことができる。このため、プログラム書込み全体処理に要する時間を削減することができる。
【０１００】
また、これらの処理を実現するには、ＥＣＵ１００側の処理を変更すればよいため、書込みツール２００を大幅に変更することなく、プログラム書込み全体処理に要する時間を削減することができる。
【０１０１】
アプリケーションプログラムの転送及び書込み処理の実施例のシーケンスは図１７に示すとおりとなる。ここで、書込みツール２００が転送するプログラムの大きさは、１８０バイトである。また、ＥＣＵ１００の各ＲＸのサイズの総計は６４バイトである。
【０１０２】
ＥＣＵ１００は、初回の分割データの送信要求メッセージを、書込みツール２００に送信する。
書込みツール２００は、アプリケーションプログラムのデータのうち、最初の６２バイトのデータを読み、２バイトのチェックサムを付加して初回の分割データを作成し、ＥＣＵ１００に転送する。
【０１０３】
ＥＣＵ１００は、初回の分割データを受信した後、初回の分割データを通信バッファ領域１４１のＲＸから第１のバッファ領域１３３にコピーする。次に、ＥＣＵ１００は、初回の分割データの検証を行い、第２の分割データの送信要求メッセージを書込みツール２００に送信する。また、ＥＣＵ１００は、第１のバッファ領域１３３を使用し、データをＲＯＭ１１０に書込む処理、及び、書込みデータの検証を行う。
【０１０４】
書込みツール２００は、第２の分割データの送信要求メッセージを受信すると、次に転送する６２バイトのデータを読み、チェックサムを付加して第２の分割データを作成し、ＥＣＵ１００に転送する。
【０１０５】
ＥＣＵ１００は、第２の分割データを受信した後、第２の分割データを通信バッファ領域１４１のＲＸから第２のバッファ領域１３４にコピーする。次に、ＥＣＵ１００は、第２の分割データの検証を行う。また、ＥＣＵ１００は、第２の分割データの検証及び初回の書込みデータの検証が完了すると、第３の分割データの送信要求メッセージを書込みツール２００に送信する。さらに、ＥＣＵ１００は、第２のバッファ領域１３４を使用し、データをＲＯＭ１１０に書込む処理、及び、書込みの検証を行う。
【０１０６】
書込みツール２００が、第３の分割データの送信要求メッセージを受信した後、残りの５６バイトのデータを読み、チェックサムを付加して第３の分割データを作成し、ＥＣＵ１００に転送する。
【０１０７】
ＥＣＵ１００が、第３の分割データを受信した後の処理は、第２データを受信した後の処理と同様である。
書込みツール２００は、第４の分割データの送信要求メッセージを受信すると、アプリケーションの転送完了メッセージをＥＣＵ１００に送信する。
【０１０８】
なお、本実施形態はＥＣＵ１００を例にしたものであるが、ＥＣＵ１００に代えて、不揮発性メモリを搭載した他の電子制御装置にも適用できる。また、１つの書込みツール２００に複数のＥＣＵ１００を接続し、１つの書込みツール２００が、各ＥＣＵ１００に対し、ＲＯＭ１１０に書き込むためのデータを時分割に転送するようにしてもよい。
【０１０９】
ここで、前記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）前記プログラムの受信において使用する通信バッファは、前記車載状態の通信環境で未使用な通信バッファを含むことを特徴とする請求項１〜請求項３のいずれか１つに記載の自動車用電子制御装置。
【０１１０】
車載状態で、通信相手となるどの装置も使用しない未使用の通信バッファがある場合、プログラムを取得するときにその未使用の通信バッファを使用することで、１つのデータを受信するために使用できる通信バッファのサイズが大きくなるため、通信回数を少なくすることができる。
【符号の説明】
【０１１１】
１００    ＥＣＵ
１１０    ＲＯＭ
１４１    通信バッファ領域
【図１】
0005451705.tif 000002
【図２】
0005451705.tif 000003
【図３】
0005451705.tif 000004
【図４】
0005451705.tif 000005
【図５】
0005451705.tif 000006
【図６】
0005451705.tif 000007
【図７】
0005451705.tif 000008
【図８】
0005451705.tif 000009
【図９】
0005451705.tif 000010
【図１０】
0005451705.tif 000011
【図１１】
0005451705.tif 000012
【図１２】
0005451705.tif 000013
【図１３】
0005451705.tif 000014
【図１４】
0005451705.tif 000015
【図１５】
0005451705.tif 000016
【図１６】
0005451705.tif 000017
【図１７】
0005451705.tif 000018