(57)【要約】【課題】  車載電子制御装置（以下、ＥＣＵ）を、書換制御プログラムと新たなアプリケーションプログラム（以下、新アプリ）とが別々のファイルとして記憶されるＡタイプの外部装置と、その２つのプログラムが１つのファイルとして記憶されるＢタイプの外部装置と、新アプリだけを送信するＣタイプの外部装置との、何れにも対応可能にする。【解決手段】  プログラム書換用の外部装置は、Ａ〜Ｃタイプの何れであっても、ＥＣＵへ、新アプリの前に、以降のデータが新アプリであることを示す識別コードを送信する。そして、ＥＣＵのマイコンが実行するブートローダでは、外部装置から書込要求が出力された後、識別コードが送信されて来るまでは（Ｓ２１０：ＮＯ）、外部装置からのデータを書換制御プログラムとして扱い、識別コードが送信されて来たならば（Ｓ２１０：ＹＥＳ）、以後のデータは新アプリと判断して、書換制御プログラムへ移行する処理を行う。【選択図】  図５
2006171803.tif 000002
【特許請求の範囲】
【請求項１】
電気的に記憶データの書き換えが可能な不揮発性の書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有する車載電子制御装置と、
前記書換可能メモリ内のアプリケーションプログラムを書き換える際に、前記車載電子制御装置と通信可能に接続される外部装置とからなり、
前記外部装置としては、
前記車載電子制御装置へ、前記書換可能メモリ内のアプリケーションプログラムを書き換える動作モードに移行させるための書込要求を出力した後、前記コンピュータに当該外部装置から送信されて来る新たなアプリケーションプログラムを前記書換可能メモリに更新して書き込む書換処理を行わせるための書換制御プログラムを書込対象データとして送信し、その次に、前記新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置と、
前記車載電子制御装置へ、前記書込要求を出力した後、前記書換制御プログラムを送信することなく、前記新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置と、
がある車載電子制御装置のプログラム書換システムにおいて、
前記外部装置は、
前記車載電子制御装置へ、前記新たなアプリケーションプログラムを送信する前に、以降の書込対象データが前記新たなアプリケーションプログラムであることを示す識別コードを送信するようになっており、
前記車載電子制御装置のコンピュータは、
前記外部装置から、前記書込要求が出力された後、前記識別コードが送信されて来たか否かを判定する判定処理を行うと共に、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記識別コードが送信されて来たと判定するまでは、前記外部装置から送信されて来る書込対象データは前記書換制御プログラムであると判断し、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記識別コードが送信されて来たと判定すると、その後に前記外部装置から送信されて来る書込対象データは前記新たなアプリケーションプログラムであると判断するようになっていること、
を特徴とする車載電子制御装置のプログラム書換システム。
【請求項２】
請求項１に記載の車載電子制御装置のプログラム書換システムにおいて、
前記車載電子制御装置のコンピュータは、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記識別コードが送信されて来たと判定するまでは、前記外部装置から送信されて来る書込対象データを、前記書換制御プログラムとして作業用メモリ領域に格納する格納処理を行い、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記識別コードが送信されて来たと判定すると、前記格納処理によって前記作業用メモリ領域に前記書換制御プログラムが格納されているか否かを判定する第２の判定処理を行い、
更に、前記第２の判定処理により、前記作業用メモリ領域に前記書換制御プログラムが格納されていると判定したならば、その作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行い、
前記第２の判定処理により、前記作業用メモリ領域に前記書換制御プログラムが格納されていないと判定したならば、前記車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを前記作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行うこと、
を特徴とする車載電子制御装置のプログラム書換システム。
【請求項３】
電気的に記憶データの書き換えが可能な不揮発性の書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有すると共に、外部装置からの書込要求を受けた場合には、前記コンピュータが前記アプリケーションプログラムとは別の書換制御プログラムを実行することにより、前記外部装置から送信されて来る新たなアプリケーションプログラムを前記書換可能メモリに更新して書き込む書換処理を行う車載電子制御装置に用いられ、前記コンピュータが前記外部装置から前記書込要求が出力されたことを検知した場合に、前記書換制御プログラムを起動するためのブートローダであって、
前記コンピュータを、
前記外部装置から、前記書込要求が出力された後、以降のデータが前記新たなアプリケーションプログラムであることを示す識別コードが送信されて来たか否かを判定する第１の判定手段と、
前記外部装置から前記書込要求が出力されてから、前記第１の判定手段により前記識別コードが送信されて来たと判定されるまでは、前記外部装置から送信されて来た書込対象データを、前記書換制御プログラムとして作業用メモリ領域に格納する書換制御プログラム格納手段と、
前記外部装置から前記書込要求が出力されてから、前記第１の判定手段により前記識別コードが送信されて来たと判定されると、前記書換制御プログラム格納手段によって前記作業用メモリ領域に前記書換制御プログラムが格納されているか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記作業用メモリ領域に前記書換制御プログラムが格納されていると判定されたならば、その作業用メモリ領域内の書換制御プログラムを起動する第１の起動手段と、
前記第２の判定手段により、前記作業用メモリ領域に前記書換制御プログラムが格納されていないと判定されたならば、前記車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを前記作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動する第２の起動手段と、
して機能させることを特徴とする車載電子制御装置のコンピュータ用ブートローダ。
【請求項４】
請求項３に記載のコンピュータ用ブートローダを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
請求項４に記載の記録媒体とコンピュータとを備えた車載電子制御装置。
【請求項６】
電気的に記憶データの書き換えが可能な不揮発性の書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有する車載電子制御装置と、
前記書換可能メモリ内のアプリケーションプログラムを書き換える際に、前記車載電子制御装置と通信可能に接続される外部装置とからなり、
前記外部装置としては、
前記車載電子制御装置へ、前記書換可能メモリ内のアプリケーションプログラムを書き換える動作モードに移行させるための書込要求を出力した後、前記コンピュータに当該外部装置から送信されて来る新たなアプリケーションプログラムを前記書換可能メモリに更新して書き込む書換処理を行わせるための書換制御プログラムを書込対象データとして送信し、その次に、前記新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置と、
前記車載電子制御装置へ、前記書込要求を出力した後、前記書換制御プログラムを送信することなく、前記新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置と、
がある車載電子制御装置のプログラム書換システムにおいて、
前記外部装置は、
前記車載電子制御装置へ、書込対象データを送信する前に、その書込対象データの書込先情報を送信するようになっており、
前記車載電子制御装置のコンピュータは、
前記外部装置から、前記書込要求が出力された後、前記書込先情報が送信されて来ると、その書込先情報が前記書換可能メモリのアドレスを示すものであるか否かを判定する判定処理を行うと共に、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定するまでは、前記外部装置から送信されて来る書込対象データは前記書換制御プログラムであると判断し、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定すると、その後に前記外部装置から送信されて来る書込対象データは前記新たなアプリケーションプログラムであると判断するようになっていること、
を特徴とする車載電子制御装置のプログラム書換システム。
【請求項７】
請求項６に記載の車載電子制御装置のプログラム書換システムにおいて、
前記車載電子制御装置のコンピュータは、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定するまでは、前記外部装置から送信されて来る書込対象データを、前記書換制御プログラムとして作業用メモリ領域に格納する格納処理を行い、
前記外部装置から前記書込要求が出力されてから、前記判定処理により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定すると、前記格納処理によって前記作業用メモリ領域に前記書換制御プログラムが格納されているか否かを判定する第２の判定処理を行い、
更に、前記第２の判定処理により、前記作業用メモリ領域に前記書換制御プログラムが格納されていると判定したならば、その作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行い、
前記第２の判定処理により、前記作業用メモリ領域に前記書換制御プログラムが格納されていないと判定したならば、前記車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを前記作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行うこと、
を特徴とする車載電子制御装置のプログラム書換システム。
【請求項８】
電気的に記憶データの書き換えが可能な不揮発性の書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有すると共に、外部装置からの書込要求を受けた場合には、前記コンピュータが前記アプリケーションプログラムとは別の書換制御プログラムを実行することにより、前記外部装置から送信されて来る新たなアプリケーションプログラムを前記書換可能メモリに更新して書き込む書換処理を行い、更に、前記外部装置からは、書込対象データが送信されて来る前に、その書込対象データの書込先情報が送信されて来る車載電子制御装置に用いられ、前記コンピュータが前記外部装置から前記書込要求が出力されたことを検知した場合に、前記書換制御プログラムを起動するためのブートローダであって、
前記コンピュータを、
前記外部装置から、前記書込要求が出力された後、前記書込先情報が送信されて来ると、その書込先情報が前記書換可能メモリのアドレスを示すものであるか否かを判定する第１の判定手段と、
前記外部装置から前記書込要求が出力されてから、前記第１の判定手段により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定されるまでは、前記外部装置から送信されて来た書込対象データを、前記書換制御プログラムとして作業用メモリ領域に格納する書換制御プログラム格納手段と、
前記外部装置から前記書込要求が出力されてから、前記第１の判定手段により前記外部装置からの書込先情報が前記書換可能メモリのアドレスを示すものであると判定されると、前記書換制御プログラム格納手段によって前記作業用メモリ領域に前記書換制御プログラムが格納されているか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記作業用メモリ領域に前記書換制御プログラムが格納されていると判定されたならば、その作業用メモリ領域内の書換制御プログラムを起動する第１の起動手段と、
前記第２の判定手段により、前記作業用メモリ領域に前記書換制御プログラムが格納されていないと判定されたならば、前記車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを前記作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動する第２の起動手段と、
して機能させることを特徴とする車載電子制御装置のコンピュータ用ブートローダ。
【請求項９】
請求項８に記載のコンピュータ用ブートローダを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
請求項９に記載の記録媒体とコンピュータとを備えた車載電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載電子制御装置のコンピュータが実行するアプリケーションプログラムをオンボード状態で書き換える技術に関するものである。
【背景技術】
【０００２】
従来より、自動車に搭載されてエンジン等を制御する車載電子制御装置として、電気的に記憶データの書き換え（詳しくはデータの消去及び書き込み）が可能なフラッシュＲＯＭやＥＥＰＲＯＭといった不揮発性の書換可能メモリに、制御対象を制御するためのアプリケーションプログラムを格納しておき、そのアプリケーションプログラムを、上記書換可能メモリが電子制御装置の基板に搭載されたままのオンボード状態で書き換えることができるようにしたものが知られている（例えば、特許文献１参照）。
【０００３】
そして、この種の車載電子制御装置において、書換可能メモリ内のアプリケーションプログラムを書き換える際には、別途用意された外部装置が通信ラインを介して接続され、まず、その外部装置から、車載電子制御装置の動作モードを書換可能メモリ内のアプリケーションプログラムを書き換えるモードに移行させるための書込要求が出される。尚、その書込要求は、車載電子制御装置へ、通信ラインとは別の信号線を介して出力される形態と、通信ラインを介しコマンドとして送信される形態とがある。
【０００４】
そして、その後、外部装置から通信ラインを介して車載電子制御装置へ、まず、その車載電子制御装置に備えられたコンピュータに当該外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む書換処理を行わせるための書換制御プログラムが送信され、次いで、書換可能メモリに書き込むべき新たなアプリケーションプログラムが送信される（例えば、特許文献１参照）。
【０００５】
一方、車載電子制御装置では、外部装置からの書込要求を受けると、コンピュータが、書換制御プログラムを起動させるためのプログラムであるブートローダ（ブートプログラム）を実行することにより、まず、外部装置から送信されて来る書換制御プログラムを受信してＲＡＭに格納し、書換制御プログラムのＲＡＭへの格納が終了すると、そのＲＡＭ内の書換制御プログラムを起動する（つまり、ブートローダからＲＡＭ内の書換制御プログラムへジャンプする）。そして、その後は、コンピュータがＲＡＭ内の書換制御プログラムを実行することにより、外部装置から送信されて来る新たなアプリケーションプログラムを受信して書換可能メモリに更新して書き込む書換処理を行う（例えば、特許文献１参照）。
【０００６】
この書換処理により、書換可能メモリ内の旧来のアプリケーションプログラムが外部装置からの新たなアプリケーションプログラムに書き換えられることとなる。また、書換可能メモリ内にアプリケーションプログラムが未だ書き込まれていなかった場合には、外部装置からのアプリケーションプログラムが書換可能メモリに新規に書き込まれることとなる。
【特許文献１】特開平１０−１０５４６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記特許文献１において、書換制御プログラムと新たなアプリケーションプログラムは、外部装置側では、別々のファイルとして記憶されており、車載電子制御装置側のコンピュータが実行するブートローダは、書換制御プログラムのＲＡＭへのダウンロード（転送）と、そのＲＡＭにダウンロードした書換制御プログラムへの遷移との役割をしている。
【０００８】
しかしながら、自動車の分野において、プログラム書き換え用の外部装置としては、車載電子制御装置へ送信する書換制御プログラムと新たなアプリケーションプログラムとが別々のファイルとして記憶されるタイプのもの（以下、Ａタイプの外部装置という）だけでなく、書換制御プログラムと新たなアプリケーションプログラムとが１つのファイルとして記憶されるタイプのもの（以下、Ｂタイプの外部装置という）もある。
【０００９】
そして、そのＢタイプの外部装置では、Ａタイプの外部装置と同様に、車載電子制御装置へ、書換制御プログラムと新たなアプリケーションプログラムとを送信することとなるが、その２つのプログラムが区切り無く送信されると、車載電子制御装置のマイコンで実行されるブートローダでは、どこまでが書換制御プログラムなのかを判別できず、その結果、書換制御プログラムのＲＡＭへのダウンロードに失敗し、延いては、アプリケーションプログラムの書き換えを正常に実施することができなくなる。
【００１０】
また、プログラム書き換え用の外部装置としては、車載電子制御装置へ書換制御プログラムを送信することなく、新たなアプリケーションプログラムだけを送信するタイプのもの（以下、Ｃタイプの外部装置という）もある。このＣタイプの外部装置は、車載電子制御装置に備えられた不揮発性メモリに予め書換制御プログラムが格納されていることを想定したものである。
【００１１】
そして、そのＣタイプの外部装置からは書換制御プログラムが送信されさないため、Ａタイプ又はＢタイプの外部装置に対応するよう設計された車載電子制御装置側のブートローダでは、例えば、外部装置からの新たなアプリケーションプログラムを書換制御プログラムとしてＲＡＭにダウンロードしてしまい、やはり、アプリケーションプログラムの書き換えを正常に実施することができなくなる。
【００１２】
そこで、上記各タイプの外部装置毎に専用のブートローダを用意すれば良いが、そのようにしたのでは、車載電子制御装置のプログラム開発工数を増大させてしまう上に、外部装置に応じてブートローダを使い分ける必要があり、製品管理が非常に面倒となってしまう。誤って外部装置とマッチしないブートローダを車載電子制御装置のコンピュータシステムにインストールしてしまった場合には、アプリケーションプログラムの書き換え／書き込みができないからである。
【００１３】
本発明は、こうした問題に鑑みなされたものであり、車載電子制御装置を、書換制御プログラムと新たなアプリケーションプログラムとが別々のファイルとして記憶されるＡタイプの外部装置と、書換制御プログラムと新たなアプリケーションプログラムとが１つのファイルとして記憶されるＢタイプの外部装置と、書換制御プログラムを送信せずに新たなアプリケーションプログラムだけを送信するＣタイプの外部装置との、何れにも対応できるようにすることを目的としている。
【課題を解決するための手段】
【００１４】
上記目的を達成するためになされた請求項１に記載の車載電子制御装置のプログラム書換システムは、電気的に記憶データの書き換えが可能な不揮発性の書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有する車載電子制御装置と、その車載電子制御装置における書換可能メモリ内のアプリケーションプログラムを書き換える際に、その車載電子制御装置と通信可能に接続される外部装置とからなる。
【００１５】
そして、外部装置としては、車載電子制御装置へ、書換可能メモリ内のアプリケーションプログラムを書き換える動作モードに移行させるための書込要求を出力した後、前記コンピュータに当該外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む書換処理を行わせるための書換制御プログラムを書込対象データとして送信し、その次に、新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置（以下、第１種タイプの外部装置という）と、車載電子制御装置へ、前記書込要求を出力した後、書換制御プログラムを送信することなく、新たなアプリケーションプログラムを書込対象データとして送信するタイプの装置（以下、第２種タイプの外部装置という）とがある。つまり、前述したＡタイプの外部装置とＢタイプの外部装置が、何れも第１種タイプの外部装置に該当し、Ｃタイプの外部装置が、第２種タイプの外部装置に該当する。
【００１６】
ここで特に、請求項１のプログラム書換システムにおいて、外部装置は、車載電子制御装置へ、新たなアプリケーションプログラムを送信する前に、以降の書込対象データが新たなアプリケーションプログラムであることを示す識別コードを送信するようになっている。
【００１７】
そして、車載電子制御装置のコンピュータは、外部装置から、書込要求が出力された後、前記識別コードが送信されて来たか否かを判定する判定処理を行うと共に、外部装置から書込要求が出力されてから、前記判定処理により識別コードが送信されて来たと判定するまでは、外部装置から送信されて来る書込対象データは書換制御プログラムであると判断し、外部装置から書込要求が出力されてから、前記判定処理により識別コードが送信されて来たと判定すると、その後に外部装置から送信されて来る書込対象データは新たなアプリケーションプログラムであると判断するようになっている。
【００１８】
このような請求項１のプログラム書換システムでは、外部装置が、書換制御プログラムと新たなアプリケーションプログラムとが別々のファイルとして記憶されるＡタイプの外部装置と、書換制御プログラムと新たなアプリケーションプログラムとが１つのファイルとして記憶されるＢタイプの外部装置と、書換制御プログラムを送信せずに新たなアプリケーションプログラムだけを送信するＣタイプの外部装置との、何れであっても、その外部装置から車載電子制御装置へは、新たなアプリケーションプログラムの前に、以降の書込対象データが新たなアプリケーションプログラムであることを示す識別コードが送信されることとなり、車載電子制御装置のコンピュータは、外部装置から書込要求が出力されてから、その識別コードが送信されて来たか否かで、外部装置からの書込対象データが、書換制御プログラムなのか新たなアプリケーションプログラムなのかを判別することができる。
【００１９】
よって、このプログラム書換システムによれば、車載電子制御装置を、Ａ〜Ｃタイプの何れの外部装置にも対応できるようにすることができる。
具体的には、請求項２に記載のように、車載電子制御装置のコンピュータは、外部装置から書込要求が出力されてから、前記判定処理により識別コードが送信されて来たと判定するまでは、外部装置から送信されて来る書込対象データを、書換制御プログラムとして作業用メモリ領域に格納する格納処理を行い、外部装置から書込要求が出力されてから、前記判定処理により識別コードが送信されて来たと判定すると、前記格納処理によって作業用メモリ領域に書換制御プログラムが格納されているか否かを判定する第２の判定処理を行い、更に、その第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていると判定したならば、その作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理（つまり、外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む処理）を行い、逆に、前記第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていないと判定したならば、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行うようにすれば良い。
【００２０】
つまり、外部装置がＡタイプ又はＢタイプである場合には、その外部装置から送信される書換制御プログラムが前記格納処理によって作業用メモリ領域に格納され、その後、外部装置から識別コードが送信されると、前記第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていると判定されて、その作業用メモリ領域内の書換制御プログラム（即ち、外部装置からダウンロードされた書換制御プログラム）が起動され、その書換制御プログラムの実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれる（即ち、旧来のアプリケーションプログラムが新たなアプリケーションプログラムに書き換えられる）こととなる。
【００２１】
また、外部装置がＣタイプである場合には、書換制御プログラムが送信されて来ず、その外部装置から識別コードが送信されると、前記第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されることとなり、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムが、その不揮発性メモリ上で起動されるか、或いは、その不揮発性メモリから作業用メモリ領域にコピーされて、その作業用メモリ領域上で起動される。そして、その書換制御プログラム（即ち、車載電子制御装置に予め内蔵されていた書換制御プログラム）の実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれることとなる。
【００２２】
このように、外部装置がＡ〜Ｃタイプの何れであっても、アプリケーションプログラムの書き換えを正確に実施できるようになる。
そして、このような請求項２に記載のコンピュータの動作は、請求項３に記載のコンピュータ用ブートローダによって実現することができる。
【００２３】
まず、請求項３に記載のブートローダは、書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有すると共に、外部装置からの書込要求を受けた場合には、そのコンピュータがアプリケーションプログラムとは別の書換制御プログラムを実行することにより、外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む書換処理を行う車載電子制御装置に用いられ、その車載電子制御装置のコンピュータが外部装置から書込要求が出力されたことを検知した場合に、前記書換制御プログラムを起動するためのプログラムである。
【００２４】
そして、この請求項３のブートローダは、コンピュータを、以下の各手段として機能させる。
即ち、外部装置から、書込要求が出力された後、以降のデータが新たなアプリケーションプログラムであることを示す識別コードが送信されて来たか否かを判定する第１の判定手段と、外部装置から書込要求が出力されてから、第１の判定手段により識別コードが送信されて来たと判定されるまでは、外部装置から送信されて来た書込対象データを、書換制御プログラムとして作業用メモリ領域に格納する書換制御プログラム格納手段と、外部装置から書込要求が出力されてから、第１の判定手段により識別コードが送信されて来たと判定されると、書換制御プログラム格納手段によって作業用メモリ領域に書換制御プログラムが格納されているか否かを判定する第２の判定手段と、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていると判定されたならば、その作業用メモリ領域内の書換制御プログラムを起動する第１の起動手段と、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されたならば、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動する第２の起動手段の各手段である。
【００２５】
そして、このような請求項３のブートローダによれば、Ａ〜Ｃタイプの何れの外部装置にも対応することができ、また、車載電子制御装置を、Ａ〜Ｃタイプの何れの外部装置にも対応可能にすることができる。
【００２６】
つまり、外部装置がＡタイプ又はＢタイプである場合には、その外部装置から送信される書換制御プログラムが書換制御プログラム格納手段によって作業用メモリ領域に格納され、その後、外部装置から識別コードが送信されると、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていると判定されて、その作業用メモリ領域内の書換制御プログラム（即ち、外部装置からダウンロードされた書換制御プログラム）が第１の起動手段により起動されることとなる。そして、その書換制御プログラムの実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれる（即ち、旧来のアプリケーションプログラムが新たなアプリケーションプログラムに書き換えられる）こととなる。
【００２７】
また、外部装置がＣタイプである場合には、書換制御プログラムが送信されて来ず、その外部装置から識別コードが送信されると、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されることとなり、この場合には、第２の起動手段により、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムが、その不揮発性メモリ上で起動されるか、或いは、その不揮発性メモリから作業用メモリ領域にコピーされて、その作業用メモリ領域上で起動される。そして、その書換制御プログラム（即ち、車載電子制御装置に予め内蔵されていた書換制御プログラム）の実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれることとなる。
【００２８】
このように、外部装置がＡ〜Ｃタイプの何れであっても、車載電子制御装置にて、アプリケーションプログラムの書き換えを正確に実施できるようになるのである。尚、Ｃタイプの外部装置に接続される可能性がある車載電子制御装置の場合には、その車載電子制御装置における不揮発性メモリに予め書換制御プログラムを格納しておけば良い。
【００２９】
そして、このような請求項３のコンピュータ用ブートローダは、コンピュータ読み取り可能な記録媒体に記録して用いることができ、その記録媒体とコンピュータとを搭載した車載電子制御装置によれば、ブートローダの共用化により、開発工数や製品管理工数を低減させることができる。
【００３０】
次に、請求項６に記載の車載電子制御装置のプログラム書換システムも、請求項１のプログラム書換システムと同様の車載電子制御装置と外部装置とからなり、また、外部装置としても、第１種タイプの外部装置（Ａタイプ又はＢタイプの外部装置）と第２種タイプの外部装置（Ｃタイプの外部装置）とがあるが、この請求項６のプログラム書換システムにおいて、外部装置は、車載電子制御装置へ、書込対象データを送信する前に、その書込対象データの書込先情報を送信するようになっている。よって、書換制御プログラムが送信される前には、その書換制御プログラムの書込先情報が送信され、新たなアプリケーションデータが送信される前には、そのアプリケーションプログラムの書込先情報（即ち、書換可能メモリのアドレスを示す書込先情報）が送信される。
【００３１】
そこで、この請求項６のプログラム書換システムにおいて、車載電子制御装置のコンピュータは、外部装置から、書込要求が出力された後、前記書込先情報が送信されて来ると、その書込先情報が書換可能メモリのアドレスを示すものであるか否かを判定する判定処理を行うと共に、外部装置から書込要求が出力されてから、前記判定処理により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定するまでは、外部装置から送信されて来る書込対象データは書換制御プログラムであると判断し、外部装置から書込要求が出力されてから、前記判定処理により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定すると、その後に外部装置から送信されて来る書込対象データは新たなアプリケーションプログラムであると判断するようになっている。
【００３２】
このような請求項６のプログラム書換システムでは、外部装置がＡ〜Ｃタイプの何れであっても、その外部装置から車載電子制御装置へは、新たなアプリケーションプログラムの前に、その新たなアプリケーションプログラムの書込先情報として、書換可能メモリのアドレスを示す書込先情報が送信されることとなる。そして、車載電子制御装置のコンピュータは、外部装置から書込要求が出力されてから、書換可能メモリのアドレスを示す書込先情報が送信されて来たか否かで、外部装置からの書込対象データが、書換制御プログラムなのか新たなアプリケーションプログラムなのかを判別することができる。
【００３３】
よって、この請求項６のプログラム書換システムによれば、外部装置が前述の識別コードを送信するようにしなくても、車載電子制御装置を、Ａ〜Ｃタイプの何れの外部装置にも対応できるようにすることができる。
【００３４】
具体的には、請求項７に記載のように、車載電子制御装置のコンピュータは、外部装置から書込要求が出力されてから、前記判定処理により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定するまでは、外部装置から送信されて来る書込対象データを、書換制御プログラムとして作業用メモリ領域に格納する格納処理を行い、外部装置から書込要求が出力されてから、前記判定処理により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定すると、前記格納処理によって作業用メモリ領域に書換制御プログラムが格納されているか否かを判定する第２の判定処理を行い、更に、その第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていると判定したならば、その作業用メモリ領域内の書換制御プログラムを起動することにより書換処理（つまり、外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む処理）を行い、逆に、第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていないと判定したならば、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動することにより前記書換処理を行うようにすれば良い。
【００３５】
つまり、外部装置がＡタイプ又はＢタイプである場合には、その外部装置から送信される書換制御プログラムが前記格納処理によって作業用メモリ領域に格納され、その後、外部装置から書換可能メモリのアドレスを示す書込先情報が送信されると、前記第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていると判定されて、その作業用メモリ領域内の書換制御プログラム（即ち、外部装置からダウンロードされた書換制御プログラム）が起動され、その書換制御プログラムの実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれる（即ち、旧来のアプリケーションプログラムが新たなアプリケーションプログラムに書き換えられる）こととなる。
【００３６】
また、外部装置がＣタイプである場合には、書換制御プログラムが送信されて来ず、その外部装置から書換可能メモリのアドレスを示す書込先情報が送信されると、前記第２の判定処理により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されることとなり、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムが、その不揮発性メモリ上で起動されるか、或いは、その不揮発性メモリから作業用メモリ領域にコピーされて、その作業用メモリ領域上で起動される。そして、その書換制御プログラム（即ち、車載電子制御装置に予め内蔵されていた書換制御プログラム）の実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれることとなる。
【００３７】
このように、外部装置がＡ〜Ｃタイプの何れであっても、アプリケーションプログラムの書き換えを正確に実施できるようになる。
そして、このような請求項７に記載のコンピュータの動作は、請求項８に記載のコンピュータ用ブートローダによって実現することができる。
【００３８】
まず、請求項８に記載のブートローダは、書換可能メモリに格納されたアプリケーションプログラムを実行することで制御対象を制御するための処理を行うコンピュータを有すると共に、外部装置からの書込要求を受けた場合には、そのコンピュータがアプリケーションプログラムとは別の書換制御プログラムを実行することにより、外部装置から送信されて来る新たなアプリケーションプログラムを書換可能メモリに更新して書き込む書換処理を行い、更に、外部装置からは、書込対象データが送信されて来る前に、その書込対象データの書込先情報が送信されて来る車載電子制御装置に用いられ、その車載電子制御装置のコンピュータが外部装置から書込要求が出力されたことを検知した場合に、前記書換制御プログラムを起動するためのプログラムである。
【００３９】
そして、この請求項８のブートローダは、コンピュータを、以下の各手段として機能させる。
即ち、外部装置から、書込要求が出力された後、書込先情報が送信されて来ると、その書込先情報が書換可能メモリのアドレスを示すものであるか否かを判定する第１の判定手段と、外部装置から書込要求が出力されてから、第１の判定手段により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定されるまでは、外部装置から送信されて来た書込対象データを、書換制御プログラムとして作業用メモリ領域に格納する書換制御プログラム格納手段と、外部装置から書込要求が出力されてから、第１の判定手段により外部装置からの書込先情報が書換可能メモリのアドレスを示すものであると判定されると、書換制御プログラム格納手段によって作業用メモリ領域に書換制御プログラムが格納されているか否かを判定する第２の判定手段と、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていると判定されたならば、その作業用メモリ領域内の書換制御プログラムを起動する第１の起動手段と、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されたならば、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムを起動するか、或いは、その不揮発性メモリ内の書換制御プログラムを作業用メモリ領域にコピーして、そのコピーした作業用メモリ領域内の書換制御プログラムを起動する第２の起動手段の各手段である。
【００４０】
そして、このような請求項８のブートローダによれば、Ａ〜Ｃタイプの何れの外部装置にも対応することができ、また、車載電子制御装置を、Ａ〜Ｃタイプの何れの外部装置にも対応可能にすることができる。
【００４１】
つまり、外部装置がＡタイプ又はＢタイプである場合には、その外部装置から送信される書換制御プログラムが書換制御プログラム格納手段によって作業用メモリ領域に格納され、その後、外部装置から書換可能メモリのアドレスを示す書込先情報が送信されると、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていると判定されて、その作業用メモリ領域内の書換制御プログラム（即ち、外部装置からダウンロードされた書換制御プログラム）が第１の起動手段により起動されることとなる。そして、その書換制御プログラムの実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれる（即ち、旧来のアプリケーションプログラムが新たなアプリケーションプログラムに書き換えられる）こととなる。
【００４２】
また、外部装置がＣタイプである場合には、書換制御プログラムが送信されて来ず、その外部装置から書換可能メモリのアドレスを示す書込先情報が送信されると、第２の判定手段により、作業用メモリ領域に書換制御プログラムが格納されていないと判定されることとなり、この場合には、第２の起動手段により、車載電子制御装置に備えられた不揮発性メモリに予め格納されている書換制御プログラムが、その不揮発性メモリ上で起動されるか、或いは、その不揮発性メモリから作業用メモリ領域にコピーされて、その作業用メモリ領域上で起動される。そして、その書換制御プログラム（即ち、車載電子制御装置に予め内蔵されていた書換制御プログラム）の実行により、その後に外部装置から送信されて来る新たなアプリケーションプログラムが書換可能メモリに更新して書き込まれることとなる。
【００４３】
このように、外部装置がＡ〜Ｃタイプの何れであっても、車載電子制御装置にて、アプリケーションプログラムの書き換えを正確に実施できるようになるのである。尚、Ｃタイプの外部装置に接続される可能性のある車載電子制御装置の場合には、その車載電子制御装置における不揮発性メモリに予め書換制御プログラムを格納しておけば良い。
【００４４】
そして、このような請求項８のコンピュータ用ブートローダは、コンピュータ読み取り可能な記録媒体に記録して用いることができ、その記録媒体とコンピュータとを搭載した車載電子制御装置によれば、ブートローダの共用化により、開発工数や製品管理工数を低減させることができる。
【発明を実施するための最良の形態】
【００４５】
以下に、本発明が適用された実施形態の車載電子制御装置のプログラム書換システムについて説明する。
［第１実施形態］
図１に示すように、第１実施形態のプログラム書換システムは、車両（自動車）に搭載されて、その車両における制御対象（この例ではエンジン）の制御を行う車載電子制御装置（以下、ＥＣＵという）１と、そのＥＣＵ１に内蔵されたエンジン制御処理用のプログラムであるアプリケーションプログラムを書き換える際、或いは新規に書き込む際に、通信ライン３を介してＥＣＵ１に接続される外部ツール５（外部装置に相当）とからなる。
【００４６】
そして、ＥＣＵ１には、マイコン（マイクロコンピュータ）７と、マイコン７が外部ツール５と通信ライン３を介して通信するための通信ドライバ９とが備えられている。
そして更に、マイコン７には、プログラムを実行するための周知のＣＰＵ１１と、不揮発性の書換可能メモリであるフラッシュＲＯＭ１３と、揮発性のＲＡＭ１５とが備えられており、フラッシュＲＯＭ１３には、アプリケーションプログラムとブートローダが格納されている。
【００４７】
尚、ブートローダは、外部ツール５からＥＣＵ１へアプリケーションプログラムを書き換える動作モードに移行させるためのコマンドである書込要求が送信された際に、アプリケーションプログラムを書き換える書換処理用の書換制御プログラムを起動させるために実行されるプログラムである。このため、ブートローダは、記憶データの書き換えが不能な通常のＲＯＭに格納されていても良い。また、外部ツール５からＥＣＵ１へは、その外部ツール５に所定の操作が行われると、書込要求が送信される。
【００４８】
一方、外部ツール５としては、図１に示すように、ＥＣＵ１へ送信する書換制御プログラムと新たなアプリケーションプログラム（以下、新アプリケーションプログラムという）とが、別々のファイルＦ１，Ｆ２として記憶されるＡタイプの外部ツール（以下、このＡタイプ外部ツールの符号としては特に「５ａ」を用いる）と、図２に示すように、ＥＣＵ１へ送信する書換制御プログラムと新アプリケーションプログラムとが、１つのファイルＦ３として記憶されるＢタイプの外部ツール（以下、このＢタイプ外部ツールの符号としては特に「５ｂ」を用いる）と、新アプリケーションプログラムのファイルＦ２だけが記憶され、ＥＣＵ１へは書換制御プログラムを送信せずに、そのファイルＦ２の新アプリケーションプログラムだけを送信するＣタイプの外部ツール（以下、このＣタイプ外部ツールの符号としては特に「５ｃ」を用いる）とがある。
【００４９】
また、図１と図３に示すように、新アプリケーションプログラムのファイルＦ２において、そのファイルを形成するデータの先頭には、以降のデータが新アプリケーションプログラムであることを示すＲＯＭ識別コードが配置されている。よって、外部ツール５ａ，５ｃは、ＥＣＵ１へ新アプリケーションプログラムを送信する前に、ＲＯＭ識別コードを送信することとなる。
【００５０】
同様に、図２に示す如く、書換制御プログラムと新アプリケーションプログラムとの両方を含んだファイルＦ３において、書換制御プログラムと新アプリケーションプログラムとの境目にも、以降のデータが新アプリケーションプログラムであることを示すＲＯＭ識別コードが配置されている。よって、外部ツール５ｂも、ＥＣＵ１へ新アプリケーションプログラムを送信する前に、ＲＯＭ識別コードを送信することとなる。
【００５１】
尚、外部ツール５からＥＣＵ１へは、データが予め定められた単位量（例えば２バイト）毎に順次送信されるようになっており、上記ＲＯＭ識別コードのデータ長は、その単位量となっている。一方、図３に示すように、Ｃタイプ外部ツール５ｃに接続される可能性のあるＥＣＵ１では、そのＣタイプ外部ツール５ｃからは書換制御プログラムが送信されて来ないため、フラッシュＲＯＭ１３内の特定領域（請求項２，３記載の不揮発性メモリに相当）に予め書換制御プログラムが格納されている。また、その書換制御プログラムは、フラッシュＲＯＭ１３内に限らず、例えば記憶データの書き換えが不能な通常のＲＯＭ等、他の不揮発性メモリに格納されていても良い。
【００５２】
次に、Ａ〜Ｃタイプの外部ツール５ａ〜５ｃとＥＣＵ１との、アプリケーションプログラム書き換え時における動作概要について説明する。
まず、外部ツール５がＡ〜Ｃタイプの何れであっても、外部ツール５からＥＣＵ１へ書込要求が送信されると、ＥＣＵ１のマイコン７では、プログラムの実行先がフラッシュＲＯＭ１３内のアプリケーションプログラムからブートローダへ移行（ジャンプ）する。
【００５３】
そして、図１に示すように、外部ツール５がＡタイプの外部ツール５ａである場合、そのＡタイプ外部ツール５ａは、ＥＣＵ１へ書込要求を送信した後、まず、書換制御プログラム（即ち、ファイルＦ１）を送信する。
【００５４】
すると、ＥＣＵ１のマイコン７は、ブートローダの実行により、外部ツール５ａからの書換制御プログラムを受信してＲＡＭ１５に順次格納し、その書換制御プログラムのＲＡＭ１５へのダウンロードが完了すると、プログラムの実行先を、そのＲＡＭ１５内の書換制御プログラムへ移行させる。
【００５５】
また、外部ツール５ａは、書換制御プログラムの送信を終えると、次に、新アプリケーションプログラム（即ち、ファイルＦ２）を送信する。
そして、ＥＣＵ１のマイコン７は、ブートローダから移行したＲＡＭ１５内の書換制御プログラムを実行することで、外部ツール５ａからの新アプリケーションプログラムをフラッシュＲＯＭ１３に更新して書き込む書換処理を行うこととなる。
【００５６】
尚、こうした書換処理により、フラッシュＲＯＭ１３内の旧来のアプリケーションプログラムが外部ツール５ａからの新アプリケーションプログラムに書き換えられることとなる。また、フラッシュＲＯＭ１３内にアプリケーションプログラムが未だ書き込まれていなかった場合には、外部ツール５ａからの新アプリケーションプログラムがフラッシュＲＯＭ１３に新規に書き込まれることとなる。
【００５７】
また、図２に示すように、外部ツール５がＢタイプの外部ツール５ｂである場合、そのＢタイプ外部ツール５ｂは、ＥＣＵ１へ書込要求を送信した後、書換制御プログラムと新アプリケーションプログラムとを続けて送信する。
【００５８】
すると、ＥＣＵ１のマイコン７は、ブートローダの実行により、外部ツール５ａからの書換制御プログラムを受信してＲＡＭ１５に順次格納し、その書換制御プログラムのＲＡＭ１５へのダウンロードが完了すると、プログラムの実行先を、そのＲＡＭ１５内の書換制御プログラムへ移行させる。
【００５９】
そして更に、ＥＣＵ１のマイコン７は、そのＲＡＭ１５内の書換制御プログラムを実行することで、外部ツール５ｂからの書換制御プログラムに続く新アプリケーションプログラムを、フラッシュＲＯＭ１３に更新して書き込む書換処理を行うこととなる。
【００６０】
一方、図３に示すように、外部ツール５がＣタイプの外部ツール５ｃである場合、そのＣタイプ外部ツール５ｃは、ＥＣＵ１へ書込要求を送信した後、新アプリケーションプログラムだけを送信する。
【００６１】
そして、この場合、ＥＣＵ１のマイコン７は、ブートローダの実行により、フラッシュＲＯＭ１３内に予め格納されている書換制御プログラムをＲＡＭ１５にコピーし、そのコピーを完了すると、プログラムの実行先を、そのＲＡＭ１５内の書換制御プログラムへ移行させる。そして更に、ＥＣＵ１のマイコン７は、そのＲＡＭ１５内の書換制御プログラムを実行することで、外部ツール５ｂからの新アプリケーションプログラムを、フラッシュＲＯＭ１３に更新して書き込む書換処理を行うこととなる。
【００６２】
次に、上記Ａ〜Ｃタイプの外部ツール５ａ〜５ｃに接続される全てのＥＣＵ１に共通のブートローダ（即ち、全てのタイプの外部ツール５ａ〜５ｃに対応可能で、上記図１〜図３を参照して説明した動作概要を実現可能なブートローダ）の詳しい処理内容について、図４及び図５を用いて説明する。
【００６３】
まず図４は、ブートローダの処理全体を表すフローチャートである。
前述したように、ＥＣＵ１のマイコン７は、外部ツール５からＥＣＵ１へ書込要求が送信されると、プログラムの実行先がアプリケーションプログラムからブートローダへ移行する。つまり、アプリケーションプログラム中に、外部ツール５からの書込要求が通信ドライバ９によって受信されたことを検知する処理があり、マイコン７は、その処理で書込要求が受信されたことを検知すると、図４のブートローダを実行する。
【００６４】
そして、マイコン７がブートローダの実行を開始すると、まずＳ１１０にて、通信ドライバ９により外部ツール５から受信された単位量分の受信データを、その通信ドライバ９から取り込むデータ受信処理を行い、続くＳ１２０にて、上記Ｓ１１０で取り込んだ今回の受信データを解析することにより、書込要求を受信したか否か（即ち、今回の受信データが書込要求であるか否か）を判定する。
【００６５】
そして、書込要求を受信したと判定したならば、Ｓ１３０に進んで、外部ツール５へ書込要求応答を送信するための送信処理を行い、その後、上記Ｓ１１０へ戻る。尚、書込要求応答は、外部ツール５からの書込要求を正常に受信できたことを、外部ツール５に知らせるための応答メッセージである。
【００６６】
また、上記Ｓ１２０にて、書込要求を受信しなかったと判定したならば、Ｓ１４０に移行して、上記Ｓ１１０で取り込んだ今回の受信データを解析することにより、外部ツール５からのデータダウンロード要求を受信したか否か（即ち、今回の受信データがデータダウンロード要求であるか否か）を判定する。このデータダウンロード要求は、外部ツール５が、書込対象データ（即ち、コマンド以外のデータであり、具体的には書換制御プログラム又は新アプリケーションプログラム）の送信を開始することをＥＣＵ１へ報知するために送信するコマンドである。そして、このデータダウンロード要求には、これから送信される書込対象データ（以下、書込データともいう）の総データ量を示す情報であるダウンロードデータサイズも含まれている。
【００６７】
そして、上記Ｓ１４０にて、データダウンロード要求を受信したと判定したならば、Ｓ１５０に進んで、そのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更に続くＳ１６０にて、外部ツール５へデータダウンロード要求応答を送信するための送信処理を行った後、上記Ｓ１１０へ戻る。尚、データダウンロード要求応答は、外部ツール５からのデータダウンロード要求を正常に受信できたことを、外部ツール５に知らせるための応答メッセージである。
【００６８】
また、上記Ｓ１４０にて、データダウンロード要求を受信しなかったと判定したならば、Ｓ１７０に移行して、上記Ｓ１１０で取り込んだ今回の受信データを解析することにより、外部ツール５からの書込対象データを受信したか否か（即ち、今回の受信データが書込対象データであるか否か）を判定する。尚、ＲＯＭ識別コードも書込対象データであると判定される。
【００６９】
そして、このＳ１７０にて、書込対象データを受信しなかったと判定したならば、そのままＳ１１０へ戻るが、書込対象データを受信したと判定したならば、Ｓ１８０に進んで、図５に示す転送判定プログラムの処理を実行した後、上記Ｓ１１０に戻る。尚、転送判定プログラムは、ブートローダの一部を成すものである。
【００７０】
次に、マイコン７が上記Ｓ１８０で転送判定プログラムの処理を開始すると、図５に示すように、まずＳ２１０にて、上記Ｓ１１０で取り込んだ今回の受信データを解析することにより、外部ツール５からのＲＯＭ識別コードを受信したか否か（つまり、今回の受信がＲＯＭ識別コードであったか否か）を判定する。
【００７１】
ここで、ＲＯＭ識別コードを受信しなかったと判定した場合には、Ｓ２２０に進んで、書換制御プログラムのダウンロードを実施したことを示す書換制御プログラムダウンロードフラグＤＦをセットし、続くＳ２３０にて、今回の受信データ（書込対象データ）を、書換制御プログラムを構成するデータとして、ＲＡＭ１５に書き込む。
【００７２】
そして、次のＳ２４０にて、図４のＳ１５０で記憶したダウンロードデータサイズ分のデータ受信を完了したか否か（換言すれば、ダウンロードデータサイズ分の書込対象データを全てＲＡＭ１５に書き込めたか否か）を判定し、ダウンロードデータサイズ分のデータ受信を完了していないと判定した場合には、そのまま当該転送判定プログラムの処理を終了する。
【００７３】
また、上記Ｓ２４０にて、ダウンロードデータサイズ分のデータ受信を完了したと判定した場合には、Ｓ２５０に進んで、外部ツール５へ書込データ送信応答を送信するための送信処理を行い、その後、当該転送判定プログラムの処理を終了する。尚、書込データ送信応答は、外部ツール５からの書込対象データを全て正常に受信できたことを、外部ツール５に知らせるための応答メッセージである。
【００７４】
一方、上記Ｓ２１０にて、ＲＯＭ識別コードを受信したと判定した場合には、Ｓ２６０に移行して、書換制御プログラムダウンロードフラグＤＦがセットされているか否かを判定し、そのフラグＤＦがセットされていたならば、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されていると判断してＳ２７０に進む。そして、このＳ２７０にて、ＲＡＭ１５内の書換制御プログラムへジャンプする。
【００７５】
すると、マイコン７は、そのＲＡＭ１５内の書換制御プログラムの実行を開始することとなる。そして、マイコン７は、その書換制御プログラムを実行することにより、外部ツール５から送信されて来る新アプリケーションプログラムをフラッシュＲＯＭ１３に更新して書き込む書換処理を行うと共に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、外部ツール５へ書込データ送信応答を送信するための送信処理を行うこととなる。
【００７６】
また、上記Ｓ２６０にて、書換制御プログラムダウンロードフラグＤＦがセットされていないと判定した場合には、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されていないと判断してＳ２８０に移行する。そして、そのＳ２８０にて、フラッシュＲＯＭ１３の特定領域に格納されている書換制御プログラムをＲＡＭ１５にコピーし、その後、Ｓ２７０に移行する。
【００７７】
すると、この場合、マイコン７は、上記Ｓ２８０でフラッシュＲＯＭ１３からＲＡＭ１５にコピーした書換制御プログラムを実行することとなる。
そして、マイコン７は、その書換制御プログラムを実行することにより、上記書換処理を行うと共に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、外部ツール５へ書込データ送信応答を送信するための送信処理を行うこととなる。
【００７８】
次に、以上のようなブートローダの作用について、図６〜図８を用いて説明する。
まず、図６は、外部ツール５がＡタイプ外部ツール５ａである場合の、そのＡタイプ外部ツール５ａとＥＣＵ１との通信手順を表すシーケンスチャートである。
【００７９】
図６の（１）に示すように、Ａタイプ外部ツール５ａに所定の操作が行われて、そのＡタイプ外部ツール５ａからＥＣＵ１へ書込要求が送信されると、既述したように、ＥＣＵ１のマイコン７では、プログラムの実行先がアプリケーションプログラムからブートローダへ移行して、そのブートローダが実行される。
【００８０】
そして、ブートローダでは、Ｓ１２０で肯定判定（ＹＥＳと判定）され、Ｓ１３０の処理により、図６の（２）に示すように、Ａタイプ外部ツール５ａへ書込要求応答を送信することとなる。
【００８１】
次に、Ａタイプ外部ツール５ａは、ＥＣＵ１からの上記書込要求応答を受信すると、図６の（３）に示すように、ＥＣＵ１へ書換制御プログラムを送信する前の準備として、その書換制御プログラムの総データ量（つまり、ファイルＦ１の総データ量）を表すダウンロードデータサイズを含んだデータダウンロード要求を送信する。
【００８２】
すると、ブートローダでは、Ｓ１４０で肯定判定され、Ｓ１５０の処理により、Ａタイプ外部ツール５ａからのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更にＳ１６０の処理により、図６の（４）に示すように、Ａタイプ外部ツール５ａへデータダウンロード要求応答を送信することとなる。
【００８３】
次に、Ａタイプ外部ツール５ａは、ＥＣＵ１からの上記データダウンロード要求応答を受信すると、図６の（５）に示すように、ＥＣＵ１へ、ファイルＦ１として記憶されている書換制御プログラム（詳しくは、その書換制御プログラムを構成するデータ）を書込対象データとして送信する。尚、図６では、書込対象データを「書込データ」と記載しており、このことは、後述する図７及び図８においても同様である。
【００８４】
すると、ブートローダでは、Ｓ１７０で肯定判定され、Ｓ１８０にて図５の処理（転送判定プログラムの処理）が開始される。
ここで、Ａタイプ外部ツール５ａから書換制御プログラムが送信される場合には、ＲＯＭ識別コードが送信されて来ないため、Ｓ２１０で否定判定（ＮＯと判定）され、Ｓ２２０の処理により、書換制御プログラムダウンロードフラグＤＦがセットされ、更にＳ２３０の処理により、Ａタイプ外部ツール５ａからの書換制御プログラムがＲＡＭ１５に書き込まれることとなる。
【００８５】
そして、ブートローダでは、Ａタイプ外部ツール５ａから書換制御プログラムが単位量分送信される毎に、Ｓ１７０で肯定判定されると共に、図５におけるＳ２２０及びＳ２３０の処理が行われることとなり、Ａタイプ外部ツール５ａからの書換制御プログラムを全てＲＡＭ１５に書き込めたならば、Ｓ２４０で肯定判定されて、Ｓ２５０の処理により、図６の（６）に示すように、Ａタイプ外部ツール５ａへ、書込データ送信応答を送信することとなる。
【００８６】
次に、Ａタイプ外部ツール５ａは、ＥＣＵ１からの上記書込データ送信応答を受信すると、図６の（７）に示すように、ＥＣＵ１へ新アプリケーションプログラムを送信する前の準備として、その新アプリケーションプログラムの総データ量（つまり、ファイルＦ２の総データ量からＲＯＭ識別コードのデータ量を引いたデータ量）を表すダウンロードデータサイズを含んだデータダウンロード要求を送信する。
【００８７】
すると、ブートローダでは、Ｓ１４０で肯定判定され、Ｓ１５０の処理により、Ａタイプ外部ツール５ａからの今回のデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更にＳ１６０の処理により、図６の（８）に示すように、Ａタイプ外部ツール５ａへデータダウンロード要求応答を送信することとなる。
【００８８】
次に、Ａタイプ外部ツール５ａは、ＥＣＵ１からの上記データダウンロード要求応答を受信すると、図６の（９）に示すように、ＥＣＵ１へ、ファイルＦ２として記憶されている新アプリケーションプログラムの最初の単位量を書込対象データとして送信するが、このときに送信されるのは、ファイルＦ２の先頭に配置されているＲＯＭ識別コードである。
【００８９】
すると、ブートローダでは、Ｓ１７０で肯定判定され、Ｓ１８０にて図５の処理（転送判定プログラムの処理）が開始されるが、この場合には、ＲＯＭ識別コードが受信されるため、Ｓ２１０で肯定判定され、更に、書換制御プログラムダウンロードフラグＤＦが既にセットされており、Ａタイプ外部ツール５ａから新アプリケーションプログラムの前に送信されて来た書換制御プログラムがＲＡＭ１５に格納されているため、Ｓ２６０で肯定判定されることとなる。そして、Ｓ２７０の処理により、そのＲＡＭ１５内の書換制御プログラムへジャンプ（移行）することとなる。
【００９０】
そして以後は、図６の（１０）に示すように、Ａタイプ外部ツール５ａからＥＣＵ１へ、新アプリケーションプログラムを構成するデータが単位量ずつ送信され、ＥＣＵ１のマイコン７では、ＲＡＭ１５内の書換制御プログラム（つまり、Ａタイプ外部ツール５ａからダウンロードされた書換制御プログラム）が実行されることにより、Ａタイプ外部ツール５ａからの新アプリケーションプログラムをフラッシュＲＯＭ１３に順次更新して書き込む書換処理が行われることとなる。
【００９１】
尚、その書換処理は、まず、フラッシュＲＯＭ１３におけるアプリケーションプログラムの記憶領域を消去し、次いで、その消去した記憶領域に外部ツール５からの新アプリケーションプログラムを順次書き込んで行き、更に、全ての新アプリケーションプログラムをフラッシュＲＯＭ１３に書き込めたならば、外部ツール５へプログラムの書き換えが完了したことを報知するために書込データ送信応答を送信する、といった手順で行われる。つまり、図６の（１１）に示すＥＣＵ１からＡタイプ外部ツール５ａへの書込データ送信応答は、書換制御プログラムによって送信される。
【００９２】
次に、図７は、外部ツール５がＢタイプ外部ツール５ｂである場合の、そのＢタイプ外部ツール５ｂとＥＣＵ１との通信手順を表すシーケンスチャートである。
尚、図７における（４）までの動作は、図６における（４）までの動作とほぼ同じであり、図７の（３）では、Ｂタイプ外部ツール５ｂがＥＣＵ１へ、書換制御プログラム及び新アプリケーションプログラムの総データ量（つまり、ファイルＦ３の総データ量からＲＯＭ識別コードのデータ量を引いたデータ量）を表すダウンロードデータサイズを含んだデータダウンロード要求を送信する点のみが異なっている。よって、ここでは、図７の（５）以降の動作について説明する。
【００９３】
Ｂタイプ外部ツール５ｂは、図７の（３）で送信したデータダウンロード要求に対するＥＣＵ１からのデータダウンロード要求応答を受信すると、図７の（５）に示すように、ＥＣＵ１へ、ファイルＦ３のデータを書込対象データとして送信し出す。このため、Ｂタイプ外部ツール５ｂからは、まず、ファイルＦ３の前半に配置されている書換制御プログラムが単位量ずつ送信されることとなる。
【００９４】
すると、ブートローダでは、Ｓ１７０で肯定判定され、Ｓ１８０にて図５の処理が開始される。
ここで、Ａタイプ外部ツール５ａの場合と同様に、Ｂタイプ外部ツール５ｂから書換制御プログラムが送信される場合には、ＲＯＭ識別コードが送信されて来ないため、Ｓ２１０で否定判定され、Ｓ２２０の処理により、書換制御プログラムダウンロードフラグＤＦがセットされ、更にＳ２３０の処理により、Ｂタイプ外部ツール５ｂからの書換制御プログラムがＲＡＭ１５に書き込まれることとなる。そして、ブートローダでは、Ｂタイプ外部ツール５ｂから書換制御プログラムが単位量分送信される毎に、Ｓ１７０で肯定判定されると共に、図５におけるＳ２２０及びＳ２３０の処理が行われることとなる。
【００９５】
やがて、Ｂタイプ外部ツール５ｂは、書換制御プログラムの送信を終了し、ファイルＦ３において書換制御プログラムと新アプリケーションプログラムとの境目に配置されているＲＯＭ識別コードを、図７の（６）に示すように書込対象データとして送信することとなる。
【００９６】
すると、ブートローダでは、Ｓ１７０で肯定判定され、Ｓ１８０にて図５の処理が開始されるが、この場合には、ＲＯＭ識別コードが受信されるため、Ｓ２１０で肯定判定され、更に、書換制御プログラムダウンロードフラグＤＦが既にセットされており、Ｂタイプ外部ツール５ｂから新アプリケーションプログラムの前に送信されて来た書換制御プログラムがＲＡＭ１５に格納されているため、Ｓ２６０で肯定判定されることとなる。そして、Ｓ２７０の処理により、そのＲＡＭ１５内の書換制御プログラムへジャンプ（移行）することとなる。
【００９７】
そして以後は、図７の（７）に示すように、Ｂタイプ外部ツール５ｂからＥＣＵ１へ、新アプリケーションプログラムを構成するデータが単位量ずつ送信され、ＥＣＵ１のマイコン７では、ＲＡＭ１５内の書換制御プログラム（つまり、Ｂタイプ外部ツール５ｂからダウンロードされた書換制御プログラム）が実行されることにより、Ｂタイプ外部ツール５ｂからの新アプリケーションプログラムをフラッシュＲＯＭ１３に順次更新して書き込む書換処理が行われることとなる。そして、全ての新アプリケーションプログラムがフラッシュＲＯＭ１３に書き込まれたならば、図７の（８）に示すように、ＥＣＵ１からＢタイプ外部ツール５ｂへプログラムの書き換えが完了したことを報知するために書込データ送信応答が送信されることとなる。尚、その書込データ送信応答は、図６の（１１）と同様に、書換制御プログラムによって送信される。
【００９８】
次に、図８は、外部ツール５がＣタイプ外部ツール５ｃである場合の、そのＣタイプ外部ツール５ｃとＥＣＵ１との通信手順を表すシーケンスチャートである。
尚、図８における（４）までの動作は、図６における（４）までの動作とほぼ同じであり、図８の（３）では、Ｃタイプ外部ツール５ｃがＥＣＵ１へ、新アプリケーションプログラムの総データ量（つまり、ファイルＦ２の総データ量からＲＯＭ識別コードのデータ量を引いたデータ量）を表すダウンロードデータサイズを含んだデータダウンロード要求を送信する点のみが異なっている。よって、ここでは、図８の（５）以降の動作について説明する。
【００９９】
Ｃタイプ外部ツール５ｃは、図８の（３）で送信したデータダウンロード要求に対するＥＣＵ１からのデータダウンロード要求応答を受信すると、図８の（５）に示すように、ＥＣＵ１へ、ファイルＦ２のデータを書込対象データとして送信し出す。このため、Ｃタイプ外部ツール５ｃからは、まず、ファイルＦ２の先頭に配置されているＲＯＭ識別コードを送信することとなる。
【０１００】
すると、ブートローダでは、Ｓ１７０で肯定判定され、Ｓ１８０にて図５の処理が開始される。
そして、このときには、ＲＯＭ識別コードが受信されるため、Ｓ２１０で肯定判定されるが、この場合には、Ｃタイプ外部ツール５ｃからＲＡＭ１５へ書換制御プログラムがダウンロードされておらず、書換制御プログラムダウンロードフラグＤＦがセットされていないため、Ｓ２６０で否定判定されることとなる。
【０１０１】
このため、Ｓ２８０の処理により、フラッシュＲＯＭ１３の特定領域に予め格納されている書換制御プログラムがＲＡＭ１５にコピーされ、その後、Ｓ２７０の処理により、そのＲＡＭ１５内の書換制御プログラムへジャンプ（移行）することとなる。
【０１０２】
そして以後は、図８の（６）に示すように、Ｃタイプ外部ツール５ｃからＥＣＵ１へ、新アプリケーションプログラムを構成するデータが単位量ずつ送信され、ＥＣＵ１のマイコン７では、ＲＡＭ１５内の書換制御プログラム（つまり、フラッシュＲＯＭ１３からＲＡＭ１５にコピーした書換制御プログラム）が実行されることにより、Ｃタイプ外部ツール５ｃからの新アプリケーションプログラムをフラッシュＲＯＭ１３に順次更新して書き込む書換処理が行われることとなる。そして、全ての新アプリケーションプログラムがフラッシュＲＯＭ１３に書き込まれたならば、図８の（７）に示すように、ＥＣＵ１からＣタイプ外部ツール５ｃへプログラムの書き換えが完了したことを報知するために書込データ送信応答が送信されることとなる。尚、その書込データ送信応答は、図６の（１１）と同様に、書換制御プログラムによって送信される。
【０１０３】
以上のように、第１実施形態のプログラム書換システムにおいて、外部ツール５は、Ａ〜Ｃタイプの何れであっても、ＥＣＵ１へ、新アプリケーションプログラムを送信する前に、以降の書込対象データが新アプリケーションプログラムであることを示すＲＯＭ識別コードを送信するようになっている。
【０１０４】
そして、ＥＣＵ１に用いられるマイコン７のブートローダでは、外部ツール５から書込要求が送信されて来ると、その後、Ｓ２１０により、外部ツール５からＲＯＭ識別コードが送信されて来たか否かを判定し、そのＳ２１０によりＲＯＭ識別コードが送信されて来たと判定するまでは、外部ツール５から送信されて来る書込対象データは書換制御プログラムであると判断して、Ｓ２３０の処理により、その外部ツール５からの書込対象データを書換制御プログラムとしてＲＡＭ１５に格納し、また、Ｓ２１０によりＲＯＭ識別コードが送信されて来たと判定すると、その後に外部ツール５から送信されて来る書込対象データは新アプリケーションプログラムであると判断して、まずＳ２６０により、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されているか否かを、書換制御プログラムダウンロードフラグＤＦがセットされているか否かで判定するようにしている。
【０１０５】
そして、そのＳ２６０により、ＲＡＭ１５に書換制御プログラムが格納されていると判定したならば、Ｓ２７０にて、そのＲＡＭ１５内の書換制御プログラムへジャンプして、その書換制御プログラムが起動されるようにし、逆に、上記Ｓ２６０により、ＲＡＭ１５に書換制御プログラムが格納されていないと判定したならば、Ｓ２８０の処理により、フラッシュＲＯＭ１３の特定領域からＲＡＭ１５に書換制御プログラムをコピーし、その後、Ｓ２７０にて、そのＲＡＭ１５内の書換制御プログラムへジャンプして、その書換制御プログラムが起動されるようにしている。
【０１０６】
このため、外部ツール５がＡタイプ外部ツール５ａ又はＢタイプ外部ツール５ｂである場合には、その外部ツール５ａ，５ｂから送信される書換制御プログラムがＲＡＭ１５に格納され、その後、外部ツール５ａ，５ｂからＲＯＭ識別コードが送信されると、Ｓ２６０の処理により、ＲＡＭ１５に外部ツール５ａ，５ｂからの書換制御プログラムが格納されていると判定されて、そのＲＡＭ１５の書換制御プログラムが起動され、その書換制御プログラムの実行により、その後に外部ツール５ａ，５ｂから送信されて来る新アプリケーションプログラムがフラッシュＲＯＭ１３に更新して書き込まれることとなる。
【０１０７】
また、外部ツール５がＣタイプ外部ツール５ｃである場合には、書換制御プログラムが送信されて来ず、その外部ツール５ｃからＲＯＭ識別コードが送信されると、Ｓ２６０の処理により、ＲＡＭ１５に書換制御プログラムが格納されていないと判定されることとなり、フラッシュＲＯＭ１３の特定領域に予め格納されている書換制御プログラムがＲＡＭ１５にコピーされて、そのＲＡＭ１５上で起動される。そして、その書換制御プログラムの実行により、その後に外部ツール５ｃから送信されて来る新アプリケーションプログラムがフラッシュＲＯＭ１３に更新して書き込まれることとなる。
【０１０８】
このように、外部ツール５がＡ〜Ｃタイプの何れであっても、アプリケーションプログラムの書き換えを正確に実施できるようになる。そして、以上のような第１実施形態のブートローダによれば、外部ツール５のタイプ毎に開発する必要がないため、ＥＣＵ１に関するトータルの開発工数や製品管理工数を低減させることができる。
【０１０９】
尚、上記第１実施形態と請求項１〜５の発明との対応としては、Ｓ２１０の処理が、判定処理又は第１の判定手段としての処理に相当し、Ｓ２３０の処理が、格納処理又は書換制御プログラム格納手段としての処理に相当し、Ｓ２６０の処理が、第２の判定処理又は第２の判定手段としての処理に相当している。そして、Ｓ２６０から直接進むＳ２７０の処理が、第１の起動手段としての処理に相当し、Ｓ２８０とＳ２７０の処理が、第２の起動手段としての処理に相当している。また、ＲＡＭ１５が作業用メモリ領域に相当し、フラッシュＲＯＭ１３がブートローダを記録したコンピュータ読み取り可能な記録媒体に相当している。
【０１１０】
一方、図５のＳ２８０では、フラッシュＲＯＭ１３の特定領域に格納されている書換制御プログラムをＲＡＭ１５にコピーせずに、そのフラッシュＲＯＭ１３内の書換制御プログラムへジャンプする（つまり、アプリケーションプログラム書換領域を書換え中でもプログラムが動作できる領域へ、書換制御プログラムを配置し、書換制御プログラムをフラッシュＲＯＭ１３上で起動する）ようにしても良い。
【０１１１】
［第２実施形態］
次に、第２実施形態のプログラム書換システムについて説明する。尚、第１実施形態と同じ点に関しては説明を省略する。
【０１１２】
第２実施形態のプログラム書換システムは、第１実施形態のプログラム書換システムと比較すると、外部ツール５からＥＣＵ１へ、書込対象データ（書換制御プログラム又は新アプリケーションプログラム）が送信される前に、その書込対象データの書込先アドレス（書込先情報に相当）が送信されるようになっている。
【０１１３】
具体的に説明すると、その書込先アドレスは、これから送信する書込対象データを書き込むべきメモリ空間の先頭アドレスを示すものである。そして、外部ツール５は、Ａ〜Ｃタイプの何れであっても、データダウンロード要求として、前述のダウンロードデータサイズと共に、これから送信する書込対象データの書込先アドレスも含んだデータダウンロード要求を、ＥＣＵ１へ送信するようになっている。
【０１１４】
また、本第２実施形態のプログラム書換システムにおいて、図１〜図３に示した各タイプの外部ツール５ａ〜５ｃにそれぞれ記憶されるファイルＦ１〜Ｆ３には、ＲＯＭ識別コードが配置されていない。
【０１１５】
次に、本第２実施形態において、Ａ〜Ｃタイプの外部ツール５ａ〜５ｃに接続される全てのＥＣＵ１に共通のブートローダの処理内容について、図９及び図１０を用いて説明する。
【０１１６】
まず図９は、ブートローダの処理全体を表すフローチャートである。
第１実施形態と同様に、ＥＣＵ１のマイコン７は、外部ツール５からＥＣＵ１へ書込要求が送信されると、プログラムの実行先がアプリケーションプログラムからブートローダへ移行する。
【０１１７】
そして、マイコン７がブートローダの実行を開始すると、まずＳ３１０にて、通信ドライバ９により外部ツール５から受信された単位量分の受信データを、その通信ドライバ９から取り込むデータ受信処理を行い、続くＳ３２０にて、上記Ｓ３１０で取り込んだ今回の受信データを解析することにより、書込要求を受信したか否か（即ち、今回の受信データが書込要求であるか否か）を判定する。
【０１１８】
そして、書込要求を受信したと判定したならば、Ｓ３３０に進んで、外部ツール５へ書込要求応答を送信するための送信処理を行い、その後、上記Ｓ３１０へ戻る。
また、上記Ｓ３２０にて、書込要求を受信しなかったと判定したならば、Ｓ３４０に移行して、上記Ｓ３１０で取り込んだ今回の受信データを解析することにより、外部ツール５からのデータダウンロード要求を受信したか否か（即ち、今回の受信データがデータダウンロード要求であるか否か）を判定する。
【０１１９】
そして、上記Ｓ３４０にて、データダウンロード要求を受信したと判定したならば、Ｓ３５０に進んで、そのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更に続くＳ３６０にて、図１０に示す転送判定プログラムの処理を実行した後、上記Ｓ３１０に戻る。尚、本第２実施形態においても、転送判定プログラムはブートローダの一部を成すものである。
【０１２０】
ここで、マイコン７が転送判定プログラムの処理を開始すると、図１０に示すように、まずＳ４１０にて、今回受信したデータダウンロード要求に含まれている書込先アドレスがフラッシュＲＯＭ１３のアドレスであるか否かを判定する。
【０１２１】
そして、書込先アドレスがフラッシュＲＯＭ１３のアドレスではないと判定した場合には、Ｓ４２０に進んで、書換制御プログラムのダウンロードを実施したことを示す書換制御プログラムダウンロードフラグＤＦをセットする。そして更に、続くＳ４３０にて、外部ツール５へデータダウンロード要求応答を送信するための送信処理を行った後、当該転送判定プログラムの処理を終了する。尚、この場合には、その後、外部ツール５から書換制御プログラムが送信され、その書換制御プログラムが、後述するＳ３８０の処理によりＲＡＭ１５に格納されることとなる。
【０１２２】
また、上記Ｓ４１０にて、今回受信したデータダウンロード要求に含まれている書込先アドレスがフラッシュＲＯＭ１３のアドレスであると判定した場合には、Ｓ４４０に移行して、書換制御プログラムダウンロードフラグＤＦがセットされているか否かを判定し、そのフラグＤＦがセットされていたならば、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されていると判断してＳ４５０に進む。そして、このＳ４５０にて、ＲＡＭ１５内の書換制御プログラムへジャンプする。
【０１２３】
すると、マイコン７は、そのＲＡＭ１５内の書換制御プログラムの実行を開始することとなる。
そして、マイコン７は、その書換制御プログラムを実行することにより、まず、外部ツール５へデータダウンロード要求応答を送信するための送信処理を行い、次いで、外部ツール５から送信されて来る新アプリケーションプログラムをフラッシュＲＯＭ１３に更新して書き込む書換処理を行い、更に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、外部ツール５へ書込データ送信応答を送信するための送信処理を行うこととなる。
【０１２４】
また、上記Ｓ４４０にて、書換制御プログラムダウンロードフラグＤＦがセットされていないと判定した場合には、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されていないと判断してＳ４６０に移行する。そして、そのＳ４６０にて、フラッシュＲＯＭ１３の特定領域に格納されている書換制御プログラムをＲＡＭ１５にコピーし、その後、Ｓ４５０に移行する。
【０１２５】
すると、この場合、マイコン７は、上記Ｓ４６０でフラッシュＲＯＭ１３からＲＡＭ１５にコピーした書換制御プログラムを実行することとなる。
そして、マイコン７は、その書換制御プログラムを実行することにより、Ｓ４４０からＳ４５０へ進んだ場合と同様に、まず、外部ツール５へデータダウンロード要求応答を送信するための送信処理を行い、次に書換処理を行い、更に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、外部ツール５へ書込データ送信応答を送信するための送信処理を行うこととなる。
【０１２６】
一方、図９のＳ３４０にて、データダウンロード要求を受信しなかったと判定したならば、Ｓ３７０に移行して、上記Ｓ３１０で取り込んだ今回の受信データを解析することにより、外部ツール５からの書込対象データを受信したか否か（即ち、今回の受信データが書込対象データであるか否か）を判定する。
【０１２７】
そして、このＳ３７０にて、書込対象データを受信しなかったと判定したならば、そのままＳ３１０へ戻るが、書込対象データを受信したと判定したならば、Ｓ３８０に進んで、今回の受信データ（書込対象データ）を、書換制御プログラムを構成するデータとしてＲＡＭ１５に書き込む。
【０１２８】
そして、次のＳ３９０にて、上記Ｓ３５０で記憶したダウンロードデータサイズ分のデータ受信を完了したか否か（換言すれば、ダウンロードデータサイズ分の書込対象データを全てＲＡＭ１５に書き込めたか否か）を判定し、ダウンロードデータサイズ分のデータ受信を完了していないと判定した場合には、そのままＳ３１０へ戻る。
【０１２９】
また、上記Ｓ３９０にて、ダウンロードデータサイズ分のデータ受信を完了したと判定した場合には、Ｓ３９５に進んで、外部ツール５へ書込データ送信応答を送信するための送信処理を行い、その後Ｓ３１０へ戻る。
【０１３０】
次に、以上のようなブートローダの作用について、図１１及び図１２を用いて説明する。
まず、図１１は、外部ツール５がＡタイプ又はＢタイプの外部ツール５ａ，５ｂである場合の、そのＡタイプ又はＢタイプの外部ツール５ａ，５ｂとＥＣＵ１との通信手順を表すシーケンスチャートである。
【０１３１】
図１１の（１）に示すように、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂに所定の操作が行われて、その外部ツール５ａ，５ｂからＥＣＵ１へ書込要求が送信されると、ＥＣＵ１のマイコン７では、プログラムの実行先がアプリケーションプログラムからブートローダへ移行して、そのブートローダが実行される。
【０１３２】
そして、ブートローダでは、Ｓ３２０で肯定判定され、Ｓ３３０の処理により、図１１の（２）に示すように、外部ツール５ａ，５ｂへ書込要求応答を送信することとなる。
次に、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂは、ＥＣＵ１からの上記書込要求応答を受信すると、図１１の（３）に示すように、ＥＣＵ１へ書換制御プログラムを送信する前の準備として、その書換制御プログラムの総データ量を表すダウンロードデータサイズと、その書換制御プログラムの書込先アドレスとを含んだデータダウンロード要求を送信する。尚、書換制御プログラムの書込先アドレスは、ＲＡＭ１５のアドレスである。
【０１３３】
すると、ブートローダでは、Ｓ３４０で肯定判定され、Ｓ３５０の処理により、外部ツール５ａ，５ｂからのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更にＳ３６０にて図１０の処理（転送判定プログラムの処理）が開始される。
【０１３４】
ここで、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂから書換制御プログラムの前に送信されるデータダウンロード要求に含有の書込先アドレス（即ち、図１１の（３）で送信されたデータダウンロード要求に含まれる書込先アドレス）は、ＲＡＭ１５のアドレスであり、フラッシュＲＯＭ１３のアドレスではないため、図１０のＳ４１０にて否定判定されることとなる。よって、この場合には、Ｓ４２０の処理により、書換制御プログラムダウンロードフラグＤＦがセットされ、更にＳ４３０の処理により、図１１の（４）に示すように、外部ツール５ａ，５ｂへデータダウンロード要求応答を送信することとなる。
【０１３５】
次に、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂは、ＥＣＵ１からの上記データダウンロード要求応答を受信すると、図１１の（５）に示すように、ＥＣＵ１へ、書換制御プログラム（詳しくは、その書換制御プログラムを構成するデータ）を書込対象データとして送信する。尚、図１１では、書込対象データを「書込データ」と記載しており、このことは、後述する図１２においても同様である。
【０１３６】
すると、ブートローダでは、外部ツール５ａ，５ｂから書換制御プログラムが単位量分送信される毎に、Ｓ３７０で肯定判定されて、その外部ツール５ａ，５ｂからの書換制御プログラムが、Ｓ３８０の処理によりＲＡＭ１５へ書き込まれることとなる。そして、外部ツール５ａ，５ｂからの書換制御プログラムを全てＲＡＭ１５に書き込めたならば、Ｓ３９０で肯定判定されて、Ｓ３９５の処理により、図１１の（６）に示すように、外部ツール５ａ，５ｂへ書込データ送信応答を送信することとなる。
【０１３７】
次に、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂは、ＥＣＵ１からの上記書込データ送信応答を受信すると、図１１の（７）に示すように、ＥＣＵ１へ新アプリケーションプログラムを送信する前の準備として、その新アプリケーションプログラムの総データ量を表すダウンロードデータサイズと、その新アプリケーションプログラムの書込先アドレスとを含んだデータダウンロード要求を送信する。尚、新アプリケーションプログラムの書込先アドレスは、フラッシュＲＯＭ１３のアドレスである。
【０１３８】
すると、ブートローダでは、Ｓ３４０で肯定判定され、Ｓ３５０の処理により、外部ツール５ａ，５ｂからのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更にＳ３６０にて図１０の処理が開始される。
【０１３９】
ここで、Ａタイプ又はＢタイプの外部ツール５ａ，５ｂから新アプリケーションプログラムの前に送信されるデータダウンロード要求に含有の書込先アドレス（即ち、図１１の（７）で送信されたデータダウンロード要求に含まれる書込先アドレス）は、フラッシュＲＯＭ１３のアドレスであるため、図１０のＳ４１０にて肯定判定されることとなる。
【０１４０】
そして、この場合には、書換制御プログラムダウンロードフラグＤＦが既にセットされており、外部ツール５ａ，５ｂから新アプリケーションプログラムの前に送信されて来た書換制御プログラムがＲＡＭ１５に格納されているため、Ｓ４４０で肯定判定され、Ｓ４５０の処理により、そのＲＡＭ１５内の書換制御プログラムへジャンプ（移行）することとなる。
【０１４１】
以後、ＥＣＵ１のマイコン７では、ＲＡＭ１５内の書換制御プログラム（つまり、外部ツール５ａ，５ｂからダウンロードされた書換制御プログラム）が実行される。
そして、その書換制御プログラムの実行により、まず、図１１の（８）に示すように、外部ツール５ａ，５ｂへデータダウンロード要求応答が送信され、その後、そのデータダウンロード要求応答を受信した外部ツール５ａ，５ｂが、図１１の（９）に示すように、ＥＣＵ１への新アプリケーションプログラムの送信を開始すると、その外部ツール５ａ，５ｂからの新アプリケーションプログラムをフラッシュＲＯＭ１３に順次更新して書き込む書換処理が行われることとなる。そして更に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、図１１の（１０）に示すように、外部ツール５ａ，５ｂへ書込データ送信応答を送信することとなる。つまり、図１１の（８）に示すデータダウンロード要求応答と、図１１の（１１）に示す書込データ送信応答は、書換制御プログラムによって送信される。
【０１４２】
次に、図１２は、外部ツール５がＣタイプ外部ツール５ｃである場合の、そのＣタイプ外部ツール５ｃとＥＣＵ１との通信手順を表すシーケンスチャートである。
尚、図１２における（２）までの動作は、図１１における（２）までの動作と同じであるため、ここでは、図１１の（３）以降の動作について説明する。
【０１４３】
Ｃタイプ外部ツール５ｃは、ＥＣＵ１からの上記Ｓ３３０による書込要求応答を受信すると、図１２の（３）に示すように、ＥＣＵ１へ新アプリケーションプログラムを送信する前の準備として、その新アプリケーションプログラムの総データ量を表すダウンロードデータサイズと、その新アプリケーションプログラムの書込先アドレスとを含んだデータダウンロード要求を送信する。尚、新アプリケーションプログラムの書込先アドレスは、フラッシュＲＯＭ１３のアドレスである。
【０１４４】
すると、ブートローダでは、Ｓ３４０で肯定判定され、Ｓ３５０の処理により、外部ツール５ｃからのデータダウンロード要求に含まれていたダウンロードデータサイズを記憶し、更にＳ３６０にて図１０の処理が開始される。
【０１４５】
ここで、このときには、Ｃタイプ外部ツール５ｃから新アプリケーションプログラムの前に送信されるデータダウンロード要求に含有の書込先アドレス（即ち、図１２の（３）で送信されたデータダウンロード要求に含まれる書込先アドレス）が、フラッシュＲＯＭ１３のアドレスであるため、図１０のＳ４１０にて肯定判定されることとなる。
【０１４６】
そして更に、この場合には、Ｃタイプ外部ツール５ｃからＲＡＭ１５へ書換制御プログラムがダウンロードされておらず、書換制御プログラムダウンロードフラグＤＦがセットされていないため、Ｓ４４０で否定判定されることとなる。
【０１４７】
このため、Ｓ４６０の処理により、フラッシュＲＯＭ１３の特定領域に予め格納されている書換制御プログラムがＲＡＭ１５にコピーされ、その後、Ｓ４５０の処理により、そのＲＡＭ１５内の書換制御プログラムへジャンプ（移行）することとなる。
【０１４８】
以後、ＥＣＵ１のマイコン７では、ＲＡＭ１５内の書換制御プログラム（つまり、フラッシュＲＯＭ１３からＲＡＭ１５にコピーされた書換制御プログラム）が実行される。
そして、その書換制御プログラムの実行により、まず、図１２の（４）に示すように、外部ツール５ｃへデータダウンロード要求応答が送信され、その後、そのデータダウンロード要求応答を受信した外部ツール５ｃが、図１２の（５）に示すように、ＥＣＵ１への新アプリケーションプログラムの送信を開始すると、その外部ツール５ｃからの新アプリケーションプログラムをフラッシュＲＯＭ１３に順次更新して書き込む書換処理が行われることとなる。そして更に、全ての新アプリケーションプログラムのフラッシュＲＯＭ１３への書き込みが完了したならば、図１２の（６）に示すように、外部ツール５ｃへ書込データ送信応答を送信することとなる。つまり、図１２の（４）に示すデータダウンロード要求応答と、図１２の（６）に示す書込データ送信応答は、書換制御プログラムによって送信される。
【０１４９】
以上のように、第２実施形態のプログラム書換システムにおいて、外部ツール５は、Ａ〜Ｃタイプの何れであっても、ＥＣＵ１へ、書込対象データ（書換制御プログラム又は新アプリケーションプログラム）を送信する前に、その書込対象データの書込先アドレスを送信するようになっている。
【０１５０】
そして、ＥＣＵ１に用いられるマイコン７のブートローダでは、外部ツール５から書込要求が送信されて来た後、書込先アドレスを含んだデータダウンロード要求が送信されて来ると、Ｓ４１０により、その外部ツール５からの書込先アドレスがフラッシュＲＯＭ１３のアドレスであるか否かを判定し、そのＳ４１０により外部ツール５からの書込先アドレスがフラッシュＲＯＭ１３のアドレスであると判定するまでは、外部ツール５から送信されて来る書込対象データは書換制御プログラムであると判断して、Ｓ３８０の処理により、その外部ツール５からの書込対象データを書換制御プログラムとしてＲＡＭ１５に格納し、また、Ｓ４１０により外部ツール５からの書込先アドレスがフラッシュＲＯＭ１３のアドレスであると判定すると、その後に外部ツール５から送信されて来る書込対象データは新アプリケーションプログラムであると判断して、まずＳ４４０により、ＲＡＭ１５に外部ツール５からの書換制御プログラムが格納されているか否かを、書換制御プログラムダウンロードフラグＤＦがセットされているか否かで判定するようにしている。
【０１５１】
そして、そのＳ４４０により、ＲＡＭ１５に書換制御プログラムが格納されていると判定したならば、Ｓ４５０にて、そのＲＡＭ１５内の書換制御プログラムへジャンプして、その書換制御プログラムが起動されるようにし、逆に、上記Ｓ４４０により、ＲＡＭ１５に書換制御プログラムが格納されていないと判定したならば、Ｓ４６０の処理により、フラッシュＲＯＭ１３の特定領域からＲＡＭ１５に書換制御プログラムをコピーし、その後、Ｓ４５０にて、そのＲＡＭ１５内の書換制御プログラムへジャンプして、その書換制御プログラムが起動されるようにしている。
【０１５２】
このため、本第２実施形態においても、外部ツール５がＡタイプ外部ツール５ａ又はＢタイプ外部ツール５ｂである場合には、その外部ツール５ａ，５ｂから送信される書換制御プログラムがＲＡＭ１５に格納され、その後、外部ツール５ａ，５ｂから書込先アドレスとしてフラッシュＲＯＭ１３のアドレスを含んだデータダウンロード要求が送信されると、Ｓ４４０の処理により、ＲＡＭ１５に外部ツール５ａ，５ｂからの書換制御プログラムが格納されていると判定されて、そのＲＡＭ１５の書換制御プログラムが起動され、その書換制御プログラムの実行により、その後に外部ツール５ａ，５ｂから送信されて来る新アプリケーションプログラムがフラッシュＲＯＭ１３に更新して書き込まれることとなる。
【０１５３】
また、外部ツール５がＣタイプ外部ツール５ｃである場合には、書換制御プログラムが送信されて来ず、その外部ツール５ｃから書込先アドレスとしてフラッシュＲＯＭ１３のアドレスを含んだデータダウンロード要求が送信されると、Ｓ４４０の処理により、ＲＡＭ１５に書換制御プログラムが格納されていないと判定されることとなり、フラッシュＲＯＭ１３の特定領域に予め格納されている書換制御プログラムがＲＡＭ１５にコピーされて、そのＲＡＭ１５上で起動される。そして、その書換制御プログラムの実行により、その後に外部ツール５ｃから送信されて来る新アプリケーションプログラムがフラッシュＲＯＭ１３に更新して書き込まれることとなる。
【０１５４】
このように、外部ツール５がＡ〜Ｃタイプの何れであっても、アプリケーションプログラムの書き換えを正確に実施できるようになる。そして、以上のような第２実施形態のブートローダによっても、外部ツール５のタイプ毎に開発する必要がないため、ＥＣＵ１に関するトータルの開発工数や製品管理工数を低減させることができる。
【０１５５】
尚、上記第２実施形態と請求項６〜１０の発明との対応としては、Ｓ４１０の処理が、判定処理又は第１の判定手段としての処理に相当し、Ｓ３８０の処理が、格納処理又は書換制御プログラム格納手段としての処理に相当し、Ｓ４４０の処理が、第２の判定処理又は第２の判定手段としての処理に相当している。そして、Ｓ４４０から直接進むＳ４５０の処理が、第１の起動手段としての処理に相当し、Ｓ４６０とＳ４５０の処理が、第２の起動手段としての処理に相当している。また、ＲＡＭ１５が作業用メモリ領域に相当し、フラッシュＲＯＭ１３がブートローダを記録したコンピュータ読み取り可能な記録媒体に相当している。
【０１５６】
一方、図１０のＳ４６０では、フラッシュＲＯＭ１３の特定領域に格納されている書換制御プログラムをＲＡＭ１５にコピーせずに、そのフラッシュＲＯＭ１３内の書換制御プログラムへジャンプする（つまり、アプリケーションプログラム書換領域を書換え中でもプログラムが動作できる領域へ、書換制御プログラムを配置し、書換制御プログラムをフラッシュＲＯＭ１３上で起動する）ようにしても良い。
【０１５７】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１５８】
例えば、上記各実施形態のＥＣＵ１は、書換可能メモリとしてフラッシュＲＯＭ１３を備えたものであったが、書換可能メモリとしてはＥＥＰＲＯＭ等の他の種類のメモリでも良い。
【０１５９】
また、外部ツール５からＥＣＵ１への書込要求は、通信ライン３を介して出力されるのではなく、その通信ライン３とは別の信号線を介して出力される形態であっても良い。
一方、上記各実施形態では、ＥＣＵ１がエンジンを制御するものとして説明したが、本発明は、例えばブレーキ、トランスミッション、サスペンションといった、他の制御対象を制御するＥＣＵに関しても全く同様に適用することができる。
【図面の簡単な説明】
【０１６０】
【図１】外部ツールがＡタイプである場合のプログラム書換システムを表す構成図である。
【図２】外部ツールがＢタイプである場合のプログラム書換システムを表す構成図である。
【図３】外部ツールがＣタイプである場合のプログラム書換システムを表す構成図である。
【図４】第１実施形態のブートローダの処理全体を表すフローチャートである。
【図５】第１実施形態のブートローダ中の転送判定プログラムの処理を表すフローチャートである。
【図６】第１実施形態のブートローダにより実現される、ＥＣＵとＡタイプ外部ツールとの通信手順を表すシーケンスチャートである。
【図７】第１実施形態のブートローダにより実現される、ＥＣＵとＢタイプ外部ツールとの通信手順を表すシーケンスチャートである。
【図８】第１実施形態のブートローダにより実現される、ＥＣＵとＣタイプ外部ツールとの通信手順を表すシーケンスチャートである。
【図９】第２実施形態のブートローダの処理全体を表すフローチャートである。
【図１０】第２実施形態のブートローダ中の転送判定プログラムの処理を表すフローチャートである。
【図１１】第２実施形態のブートローダにより実現される、ＥＣＵとＡタイプ又はＢタイプ外部ツールとの通信手順を表すシーケンスチャートである。
【図１２】第２実施形態のブートローダにより実現される、ＥＣＵとＣタイプ外部ツールとの通信手順を表すシーケンスチャートである。
【符号の説明】
【０１６１】
１…ＥＣＵ（車載電子制御装置）、３…通信ライン、５…外部ツール（５ａ…Ａタイプ外部ツール、５ｂ…Ｂタイプ外部ツール、５ｃ…Ｃタイプ外部ツール）、７…マイコン、９…通信ドライバ、１１…ＣＰＵ、１３…フラッシュＲＯＭ、１５…ＲＡＭ、Ｆ１〜Ｆ３…ファイル
【図１】
2006171803.tif 000003
【図２】
2006171803.tif 000004
【図３】
2006171803.tif 000005
【図４】
2006171803.tif 000006
【図５】
2006171803.tif 000007
【図６】
2006171803.tif 000008
【図７】
2006171803.tif 000009
【図８】
2006171803.tif 000010
【図９】
2006171803.tif 000011
【図１０】
2006171803.tif 000012
【図１１】
2006171803.tif 000013
【図１２】
2006171803.tif 000014