(57)【要約】【課題】共通のブートプログラムを用いながら、不揮発性メモリの容量を有効に使用して、プログラム書き込み処理の時間の短縮を図る。【解決手段】ブートプログラムにより、書き込み用プログラムの記憶に利用可能なＲＡＭ２４の容量が、書込装置１０に通知される。書込装置１０は、通知されたＲＡＭ２４の容量に基づき、ＲＡＭ２４にて記憶可能な機能プログラムの数を求め、その求めた数の機能プログラムを一度に送信することが可能になる。従って、共通のブートプログラムを用いながら、エンジン制御装置２０が比較的大きな容量のＲＡＭ２４を有する場合には、１回の通信で、複数の機能プログラムをまとめて取得することができる。そのため、エンジン制御装置２０は、書込装置１０との通信回数を低減することができ、それにより、プログラム書き込み処理時間を短縮することができる。【選択図】図６
2015148838.tif 000002
【特許請求の範囲】
【請求項１】
ブートプログラムの実行により、外部装置（１０）から書き込み用プログラムを取得するとともに、取得した前記書き込み用プログラムを実行させることで、書き換え可能な不揮発性メモリ（２６）にプログラムを書き込む電子制御装置（２０）であって、
揮発性メモリ（２４）を有し、
前記ブートプログラムの実行により、
前記書き込み用プログラムの記憶に利用可能な、前記揮発性メモリの容量を前記外部装置に通知する第１の通知機能（Ｓ２１０）と、
前記書き込み用プログラムは、前記プログラムの書き込みのために実行される機能ごとに分割されており、前記外部装置から、前記揮発性メモリにて記憶可能な数の、分割された機能プログラムが送信されたとき、その送信された機能プログラムを受信して前記揮発性メモリに記憶させる記憶機能（Ｓ２４０）と、
前記揮発性メモリにおいて、先頭位置に記憶された機能プログラムから順に、記憶された機能プログラムを実行させる実行機能（Ｓ２６０〜Ｓ２８０）と、
前記実行機能により前記揮発性メモリに記憶された全ての機能プログラムの実行が終了すると、前記外部装置へ通知する第２の通知機能（Ｓ３００）と、が実現されることを特徴とする電子制御装置。
【請求項２】
前記実行機能は、前記揮発性メモリの先頭位置に記憶されている機能プログラムを実行対象プログラムとして実行させるものであって、前記揮発性メモリに複数の機能プログラムが記憶されている場合、前記揮発性メモリの先頭位置に記憶された機能プログラムを実行した後、その実行した機能プログラムの次に記憶されている機能プログラムを前記先頭位置に移動させて前記実行対象プログラムとすることを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記ブートプログラムの実行により、さらに、
前記外部装置から、前記機能プログラムの送信に先立ち、一度に送信される機能プログラムの数を示すデータを取得する第１の取得機能（Ｓ２３０）が実現され、
前記実行機能は、前記第１の取得機能により取得したデータが示す数の機能プログラムが前記揮発性メモリに記憶されたことを契機として、前記揮発性メモリの先頭位置に記憶された機能プログラムの実行を開始することを特徴とする請求項１又は２に記載の電子制御装置。
【請求項４】
前記分割された機能プログラムは、前記書き込み用プログラムに含まれる全ての機能プログラムの送信が完了するまで、前記第２の通知機能による通知に応じて、繰り返し、前記外部装置から送信され、
前記第１の取得機能は、前記外部装置から前記機能プログラムが送信されるたびに、毎回、その機能プログラムの送信に先立ち、一度に送信される機能プログラムの数を示すデータを取得することを特徴とする請求項３に記載の電子制御装置。
【請求項５】
前記ブートプログラムの実行により、さらに、
前記外部装置から、前記書き込み用プログラムに含まれる全ての機能プログラムの数を示すデータを取得する第２の取得機能（Ｓ２２０）と、
前記第２の取得機能により取得したデータが示す数の機能プログラムの実行が終了すると、前記第２の通知機能による通知を行うことなく、書き込み処理を終了させる終了機能（Ｓ２９０）と、が実現されることを特徴とする請求項１乃至３のいずれか１項に記載の電子制御装置。
【請求項６】
ブートプログラムの実行により、外部装置（１０）から書き込み用プログラムを取得するとともに、取得した前記書き込み用プログラムを実行させることで、電子制御装置（２０）が有する書き換え可能な不揮発性メモリ（２６）にプログラムを書き込むプログラム書き込み方法であって、
前記電子制御装置に設けられた揮発性メモリ（２４）の、前記書き込み用プログラムの記憶に利用可能な容量を前記外部装置に通知する第１の通知ステップ（Ｓ２１０）と、
前記書き込み用プログラムは、前記プログラムの書き込みのために実行される機能ごとに分割されており、前記外部装置において、通知された前記揮発性メモリの容量に基づき、前記揮発性メモリにて記憶可能な機能プログラムの数を算出する算出ステップ（Ｓ１３０）と、
前記算出ステップにおいて算出された数の前記機能プログラムが前記外部装置から送信されたとき、その送信された機能プログラムを受信して前記揮発性メモリに記憶させる記憶ステップ（Ｓ２４０）と、
前記揮発性メモリにおいて、先頭位置に記憶された機能プログラムから順に、記憶された機能プログラムを実行させる実行ステップ（Ｓ２６０〜Ｓ２８０）と、
前記実行ステップにおいて、前記揮発性メモリに記憶された全ての機能プログラムの実行が終了すると、前記外部装置へ通知する第２の通知ステップ（Ｓ３００）と、を備えることを特徴とするプログラム書込方法。
【請求項７】
前記実行ステップでは、前記揮発性メモリの先頭位置に記憶されている機能プログラムが実行対象プログラムとして実行され、前記揮発性メモリに複数の機能プログラムが記憶されている場合、前記揮発性メモリの先頭位置に記憶された機能プログラムを実行した後、その実行した機能プログラムの次に記憶されている機能プログラムを前記先頭位置に移動させて前記実行対象プログラムとすることを特徴とする請求項６に記載のプログラム書込方法。
【請求項８】
前記外部装置から、前記機能プログラムの送信に先立ち、一度に送信される機能プログラムの数を示すデータを取得する第１の取得ステップ（Ｓ２３０）をさらに備え、
前記取得ステップにて取得したデータが示す数の機能プログラムが前記揮発性メモリに記憶されたことを契機として、前記実行ステップにおいて、前記揮発性メモリの先頭位置に記憶された機能プログラムの実行が開始されることを特徴とする請求項６又は７に記載のプログラム書込方法。
【請求項９】
前記分割された機能プログラムは、前記書き込み用プログラムに含まれる全ての機能プログラムの送信が完了するまで、前記第２の通知ステップによる通知に応じて、繰り返し、前記外部装置から送信され、
前記第１の取得ステップにて、前記外部装置から前記機能プログラムが送信されるたびに、毎回、その機能プログラムの送信に先立ち、一度に送信される機能プログラムの数を示すデータを取得することを特徴とする請求項８に記載のプログラム書込方法。
【請求項１０】
前記外部装置から、前記書き込み用プログラムに含まれる全ての機能プログラムの数を示すデータを取得する第２の取得ステップ（Ｓ２２０）と、
前記第２の取得ステップにより取得したデータが示す数の機能プログラムの実行が終了すると、前記第２の通知ステップによる通知を行うことなく、書き込み処理を終了させる終了ステップ（Ｓ２９０）と、をさらに備えることを特徴とする請求項６乃至９のいずれか１項に記載のプログラム書込方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに記憶されるプログラムを書き込み可能に構成した電子制御装置、及びそのプログラム書込方法に関する。
【背景技術】
【０００２】
例えば、特許文献１には、電子制御装置において、電気的にデータの消去及び書き込みが可能な不揮発性メモリ（例えばフラッシュＲＯＭ）に制御プログラムを書き込むことが記載されている。
【０００３】
この特許文献１の電子制御装置では、不揮発性メモリの使用量を削減すべく、制御プログラムなどの書き込み時に一時的に使用される書き込み用プログラムを、予め不揮発性メモリに格納しておくのではなく、通信によって外部（書き込みツール）から取得するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−６９００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した特許文献１の電子制御装置では、書き込みツールから書き込み用プログラムを受信し、揮発性メモリであるＲＡＭに展開した後、書き込み用プログラムを起動する。ただし、電子制御装置によっては、一度にすべての書き込み用プログラムを展開できないようなＲＡＭ容量の小さいものも存在する。
【０００６】
このようなＲＡＭ容量の小さい電子制御装置においても、書き込み用プログラムを用いてプログラムの書き込みを行うことを可能にするためには、例えば、書き込み用プログラムを機能単位で分割し、電子制御装置において、その分割した機能プログラムを１つずつ書き込みツールから取得（ダウンロード）してＲＡＭに記憶し、その記憶した機能プログラムを実行することが考えられる。このように、書き込み用プログラムを複数の機能プログラムに分割すれば、ＲＡＭ容量が小さい電子制御装置においても、機能プログラムの記憶及び実行を支障なく行うことができる。なお、この場合、電子制御装置は、書き込み用プログラムを構成するすべての機能プログラムの実行が終了するまで、繰り返し、書き込みツールから機能プログラムをダウンロードしてＲＡＭに記憶し、その記憶した機能プログラムを実行することになる。
【０００７】
上述した機能プログラムのダウンロードやその実行は、通常、電子制御装置のブートプログラムによって制御される。つまり、電子制御装置においては、ブートプログラムによって、起動処理が行なわれるとともに、書き込みツールと接続されていることで書き込みモードとなり、上述した機能プログラムのダウンロードやその実行が制御される。
【０００８】
ここで、ブートプログラムを共通化するために、上述したプログラム書き込み手法を、ＲＡＭ容量の大きさによらず、各種の電子制御装置に対して適用した場合、以下に説明するような課題が生じる。つまり、相対的に大きなＲＡＭ容量を持つ電子制御装置においては、本来、複数の機能プログラム、あるいは、書き込み用プログラム全体を一度にダウンロードしてＲＡＭに記憶できる。それにも係わらず、１つずつ機能プログラムを取得して実行するようにすると、書き込みツールとの通信回数が増えてしまい、プログラムの書き込みに長い時間がかかってしまう。
【０００９】
本発明は、上述した点に鑑みてなされたものであり、共通のブートプログラムを用いながら、不揮発性メモリの容量を有効に使用して、プログラム書き込み処理の時間の短縮を図ることが可能な電子制御装置及びプログラム書込方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した目的を達成するために、本発明による電子制御装置（２０）は、ブートプログラムの実行により、外部装置（１０）から書き込み用プログラムを取得するとともに、取得した書き込み用プログラムを実行させることで、書き換え可能な不揮発性メモリ（２６）にプログラムを書き込むものであって、
揮発性メモリ（２４）を有し、
ブートプログラムの実行により、
書き込み用プログラムの記憶に利用可能な、揮発性メモリの容量を外部装置に通知する第１の通知機能（Ｓ２１０）と、
書き込み用プログラムは、プログラムの書き込みのために実行される機能ごとに分割されており、外部装置から、揮発性メモリにて記憶可能な数の、分割された機能プログラムが送信されたとき、その送信された機能プログラムを受信して揮発性メモリに記憶させる記憶機能（Ｓ２４０）と、
揮発性メモリにおいて、先頭位置に記憶された機能プログラムから順に、記憶された機能プログラムを実行させる実行機能（Ｓ２６０〜Ｓ２８０）と、
実行機能により揮発性メモリに記憶された全ての機能プログラムの実行が終了すると、外部装置へ通知する第２の通知機能（Ｓ３００）と、が実現されることを特徴とする。
【００１１】
このように、本発明による電子制御装置では、共通使用されるブートプログラムにより、書き込み用プログラムの記憶に利用可能な、揮発性メモリの容量を外部装置に通知する機能が実現される。このため、外部装置は、電子制御装置から通知された揮発性メモリの容量に基づき、その揮発性メモリにて記憶可能な、書き込み用プログラムを機能単位で分割した機能プログラムの数を求め、その求めた数の機能プログラムを一度に送信することが可能になる。すなわち、電子制御装置が有する揮発性メモリの容量に適した数の機能プログラムがまとめて外部装置から送信され、電子制御装置においては、その送信された機能プログラムを揮発性メモリに記憶させることが可能となる。従って、共通のブートプログラムを用いながら、電子制御装置が比較的大きな容量の揮発性メモリを有する場合には、１回の通信で、複数の機能プログラムをまとめて取得することが可能となる。そのため、電子制御装置は、外部装置との通信回数を低減することができ、それにより、プログラム書き込み処理時間を短縮することができる。
【００１２】
上述した構成において、ブートプログラムにより実現される実行機能（Ｓ２６０〜Ｓ２８０）は、揮発性メモリの先頭位置に記憶されている機能プログラムを実行対象プログラムとして実行させるものであって、揮発性メモリに複数の機能プログラムが記憶されている場合、揮発性メモリの先頭位置に記憶された機能プログラムを実行した後、その実行した機能プログラムの次に記憶されている機能プログラムを先頭位置に移動させて実行対象プログラムとすることが好ましい。このように構成すると、ブートプログラムは、揮発性メモリに複数の機能プログラムが記憶されている場合であっても、揮発性メモリの先頭位置に対応するアドレスから機能プログラムを実行すれば済むので、ブートプログラムの内容をシンプルにすることができる。
【００１３】
また、本発明によるプログラム書き込み方法は、ブートプログラムの実行により、外部装置（１０）から書き込み用プログラムを取得するとともに、取得した書き込み用プログラムを実行させることで、電子制御装置（２０）が有する書き換え可能な不揮発性メモリ（２６）にプログラムを書き込むための方法であって、
電子制御装置に設けられた揮発性メモリ（２４）の、書き込み用プログラムの記憶に利用可能な容量を外部装置に通知する第１の通知ステップ（Ｓ２１０）と、
書き込み用プログラムは、プログラムの書き込みのために実行される機能ごとに分割されており、外部装置において、通知された揮発性メモリの容量に基づき、揮発性メモリにて記憶可能な機能プログラムの数を算出する算出ステップ（Ｓ１３０）と、
算出ステップにおいて算出された数の機能プログラムが外部装置から送信されたとき、その送信された機能プログラムを受信して揮発性メモリに記憶させる記憶ステップ（Ｓ２４０）と、
揮発性メモリにおいて、先頭位置に記憶された機能プログラムから順に、記憶された機能プログラムを実行させる実行ステップ（Ｓ２６０〜Ｓ２８０）と、
実行ステップにおいて、揮発性メモリに記憶された全ての機能プログラムの実行が終了すると、外部装置へ通知する第２の通知ステップ（Ｓ３００）と、を備えることを特徴とする。
【００１４】
このプログラム書き込み方法による作用効果は、本発明の電子制御装置により得られる作用効果とほぼ同様であるため、説明を省略する。
【００１５】
なお、上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１６】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１７】
【図１】実施形態における、電子制御装置としてのエンジン制御装置と、書込装置との構成を概略的に示す構成図である。
【図２】エンジン制御装置のフラッシュＲＯＭについて説明するための説明図である。
【図３】書き込み用プログラムの一例について説明するための説明図である。
【図４】制御プログラムの書き込み時に、書込装置によって実行される処理を示すフローチャートである。
【図５】制御プログラムの書き込み時に、エンジン制御装置において実行される処理を示すフローチャートである。
【図６】制御プログラムの書き込み時に、書込装置とエンジン制御装置との間でやりとりされるデータ、及びエンジン制御装置における処理について示した説明図である。
【図７】機能プログラムの１ページ毎にダウンロードして実行することを繰り返した場合の通信手順と、実施形態による通信手順とを対比して示した図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態による電子制御装置及びプログラム書込方法について、図面を参照しつつ、詳細に説明する。なお、本実施形態では、車両に搭載される電子制御装置の不揮発性メモリへ制御プログラムを書き込む例について説明する。車両に搭載される電子制御装置は、車両の製造ラインにおいて、不揮発性メモリに制御プログラムを書き込んだり、あるいは市場において、既に書き込まれている制御プログラムを、バージョンアップされた制御プログラムに書き換えたりすることが必要になることがあるためである。
【００１９】
図１には、車両に搭載される電子制御装置の一例として、エンジン制御装置２０が示されている。このエンジン制御装置２０は、制御プログラムに従って各種の演算処理を行うＣＰＵ２２、ＣＰＵ２２による演算処理結果等を一時的に保存したり、後述する書き込み用プログラムを記憶したりする揮発性メモリとしてのＲＡＭ２４、制御プログラムが書き込まれて、その書き込まれた制御プログラムを記憶する、書き換え可能な不揮発性メモリとしてのフラッシュＲＯＭ２６、及び書込装置１０と相互通信を行うための通信部２８を有している。
【００２０】
さらに、エンジン制御装置２０は、図示していないが、エンジンの動作状態を検出する各種センサからのセンサ情報を入力する入力回路や、エンジンに取り付けられたインジェクタやイグナイタ等のアクチュエータを駆動する駆動信号を出力する出力回路等を備えている。このような構成を備えることにより、エンジン制御装置２０は、フラッシュＲＯＭ２６に記憶された制御プログラムに従って、入力回路から入力されるセンサ情報に基づいて駆動信号を生成し、その生成した駆動信号をアクチュエータに出力することが可能となる。その結果、エンジン制御装置２０は、エンジンの運転状態を適切に制御することができる。
【００２１】
エンジン制御装置２０のフラッシュＲＯＭ２６は、図２に示すように、電気的にデータの書き込みや書き換え（消去及び書き込み）が可能な書換領域と、データの書き換えが禁止された非書換領域とを有する。上述した制御プログラムは、フラッシュＲＯＭ２６の書換領域に書き込まれて記憶される。また、フラッシュＲＯＭ２６の非書換領域には、エンジン制御装置２０を起動するための起動処理（レジスタやハードウエアの設定など）を行うとともに、書込装置１０が接続されているときに、書き込み用プログラムをダウンロードしてＲＡＭ２４へ格納したり、その格納したプログラムを実行したりするブートプログラムが予め格納されている。このブートプログラムは、変数を持たない場合には、フラッシュＲＯＭに保存されたまま実行され、変数を持つ場合には、少なくとも変数を持つセクションがＲＡＭ２４にコピーされて実行される。
【００２２】
制御プログラムの書き込みは、図１に示すように、エンジン制御装置２０に対して書込装置１０が接続され、この書込装置１０から、制御プログラムの書込要求が出された場合に行われる。より具体的には、制御プログラムの書き込み（あるいは書き換え）を行う場合、まず、書込装置１０のＣＰＵ１２が、通信部１６を介して、エンジン制御装置２０に書込要求を出力する。この書込要求を受信すると、エンジン制御装置２０は書き込みモードとなり、ブートプログラムが、プログラムの書き込みに必要な処理を実行する。例えば、ブートプログラムは、書込装置１０のメモリ１４に記憶された書き込み用プログラムをダウンロードし、ＲＡＭ２４に記憶させる。そして、このＲＡＭ２４に記憶した書き換え用プログラム（機能プログラム）をコールしてＲＡＭ２４上で実行することにより、書込装置１０から送信されて来る書込データ（制御プログラム）をフラッシュＲＯＭ２６の書換領域に書き込む処理等が行われる。
【００２３】
なお、すでにフラッシュＲＯＭ２６内に制御プログラムが格納されている場合には、新たな制御プログラムに書換えられるだけであり、制御プログラムが書き込まれていない車両の製造時における書き込み処理と基本的に同様に行い得る。
【００２４】
ここで、本実施形態では、プログラムの書き込みや書き換えの対象となる電子制御装置であるエンジン制御装置２０が有するＲＡＭ２４の容量の大小に係わらず、書き込み用プログラムをダウンロードしてＲＡＭ２４に記憶できるようにするため、まず、書き込み用プログラムを、図３に示すように、「消去」、「書き込み」、「ベリファイ」などの機能単位で分割した。すなわち、本実施形態においては、書き込み用プログラムは、機能単位で分割された複数の機能プログラムからなる。このように、書き込み用プログラムを複数の機能プログラムに分割すれば、ＲＡＭ容量が小さい場合であっても、機能プログラムの記憶及び実行を支障なく行うことができるようになる。
【００２５】
このように書き込み用プログラムを複数の機能プログラムに分割したことを前提として、本実施形態では、この複数の機能プログラムをダウンロードしたり、実行させたりするブートプログラムを、ＲＡＭ２４の容量が異なる電子制御装置において共通使用しながら、極力、プログラム書き込み処理の時間の短縮を図ることができるようにした点に特徴がある。
【００２６】
以下、本実施形態の特徴点について、図４、図５のフローチャートなどを参照しつつ、詳しく説明する。なお、図４のフローチャートは、制御プログラムの書き込み時に、書込装置１０によって実行される処理を示し、図５のフローチャートは、エンジン制御装置２０において実行される処理を示している。また、図４及び図５のフローチャートに示す処理は、書込装置１０から制御プログラムの書込要求が出力され、エンジン制御装置２０が書き込みモードとなったときに開始される。
【００２７】
まず、書込装置１０において実行される処理について説明する。書込装置１０は、最初に、ステップＳ１００において、図６（ａ）に示すように、エンジン制御装置２０に対し、書き込み用プログラムの記憶に利用可能なＲＡＭ２４の容量を問い合わせる。エンジン制御装置２０は、その問い合わせを受信すると、後述するように、書き込み用プログラムの記憶に利用可能な自身のＲＡＭ容量を返送する。
【００２８】
続くステップＳ１１０では、エンジン制御装置２０から返送されるＲＡＭ容量を受信したか否かを判定する。この判定処理において、ＲＡＭ容量を受信済みであると判定した場合には、ステップＳ１２０の処理に進む。一方、ＲＡＭ容量を未受信であると判定した場合には、ＲＡＭ容量を受信するまで、ステップＳ１１０の判定処理を繰り返す。
【００２９】
ステップＳ１２０では、書込装置１０は、送信予定の書き込み用プログラムに含まれる機能プログラムの総数を示すデータをエンジン制御装置２０に送信する。ここで、各機能プログラムは、所定のデータフォーマットを有するフレームに載せて、エンジン制御装置２０に送信される。以下の説明では、このフレームを「ページ」と呼ぶこととする。従って、ステップＳ１２０では、書き込み用プログラムの各機能プログラムの総数として、図６（ａ）に示すように、送信予定の全ページ数を示すデータを送信する。
【００３０】
ここで、本実施形態では、各ページは、機能プログラムの種別によらず、同じサイズに定められている。各機能プログラムの機能が異なれば、通常、プログラムサイズは異なる。しかし、最大のプログラムサイズに合わせてページのサイズを定めることで、各機能プログラムのページサイズを同一にしている。エンジン制御装置２０は、機能プログラムのページを受信したとき、そのデータフォーマットから、１ページの受信を完了したことを判定したり、機能プログラムのデータ範囲を特定したりすることができる。
【００３１】
続くステップＳ１３０では、エンジン制御装置２０から返送されたＲＡＭ容量と、ページサイズとに基づき、一度に送信可能なページ数として、エンジン制御装置２０のＲＡＭ２４に記憶できるページ数を算出する。例えば、書き込み用プログラムの記憶に利用可能なＲＡＭ容量が７００byteであり、１ページのサイズが３００byteであった場合、書込装置１０は、記憶できるページ数は２ページであると算出する。このようにして、一度に送信可能なページ数の算出が完了すると、ステップＳ１４０において、図６（ｂ）に示すように、算出したページ数を示すデータをエンジン制御装置２０に送信する。これにより、エンジン制御装置２０は、書込装置１０から一度に送信されるページ数を把握することができる。
【００３２】
次いで、ステップＳ１５０では、機能プログラムの１ページ分の送信を行う。そして、ステップＳ１６０にて、一度に送信可能な機能プログラムのページ数分の送信が完了したか否かを判定する。まだ、送信が完了していないと判定すると、ステップＳ１５０の処理を繰り返す。これにより、図６（ｂ）に示すように、一度に送信可能なページ数分の機能プログラムが、書込装置１０からエンジン制御装置２０にダウンロードされ、ＲＡＭ２４に格納される。
【００３３】
一度に送信可能なページ数分の送信が完了すると、ステップＳ１６０において「ＹＥＳ」と判定され、書込装置１０は、ステップＳ１７０の処理に移る。ステップＳ１７０では、書き込み用プログラムを構成する全ての機能プログラムのページの送信が完了したか否かを判定する。この判定処理において、全ての機能プログラムのページの送信が未完了であると判定すると、エンジン制御装置２０において、次の機能プログラムのページの受信が可能な状態となるまで待機する必要があるので、ステップＳ１８０の処理を実行する。ステップＳ１８０では、エンジン制御装置２０から、次の機能プログラムのページの送信を要求する通知を受信したか否かを判定する。なお、エンジン制御装置２０からの送信要求通知に関しては、後に詳しく説明する。この判定処理において、エンジン制御装置２０から送信要求通知を受信したと判定すると、ステップＳ１５０の処理に戻り、上述した処理を繰り返す。一方、送信要求通知は未受信と判定すると、エンジン制御装置２０から送信要求通知を受信するまで、ステップＳ１８０の判定を繰り返す。
【００３４】
次に、エンジン制御装置２０において実行される処理について説明する。エンジン制御装置２０は、まず、ステップＳ２００において、書込装置１０から、ＲＡＭ容量の問い合わせを受信したか否かを判定する。ＲＡＭ容量の問い合わせを受信したと判定した場合、ステップＳ２１０の処理に進む。一方、ＲＡＭ容量の問い合わせを未だ受信していないと判定した場合、ステップＳ２００の処理を繰り返す。
【００３５】
ステップＳ２１０では、書込装置１０からのＲＡＭ容量の問い合わせに応答すべく、図６（ａ）に示すように、書き込み用プログラムの記憶に利用可能なＲＡＭ２４の容量を送信する。
【００３６】
続くステップＳ２２０では、書込装置１０から、送信予定の書き込み用プログラムに含まれる機能プログラムの総数を示す、全ページ数を示すデータを受信したか否かを判定する。全ページ数を示すデータを受信したと判定した場合には、ステップＳ２３０の処理に進む。一方、全ページ数を示すデータを未だ受信していないと判定した場合には、ステップＳ２２０の処理を繰り返す。
【００３７】
ステップＳ２３０では、書込装置１０から、一度に送信するページ数を示すデータを受信したか否かを判定する。一度に送信するページ数を示すデータを受信したと判定した場合には、ステップＳ２４０の処理に進む。一方、一度に送信するページ数を示すデータを未だ受信していないと判定した場合には、ステップＳ２３０の処理を繰り返す。
【００３８】
ステップＳ２４０では、書込装置１０から送信された機能プログラムの１ページ分を受信してＲＡＭ２４に格納する。これにより、１ページ分の機能プログラムが書込装置１０からダウンロードされ、ＲＡＭ２４に記憶される。続くステップＳ２５０では、ステップＳ２３０にて受信したデータに基づき、一度に送信される機能プログラムのページ数分の受信が完了したか否かを判定する。一度に送信される機能プログラムのページ数分をすべて受信したと判定した場合、ステップＳ２６０の処理に進む。一方、まだ、一度に送信される機能プログラムのページ数分をすべて受信していないと判定すると、ステップＳ２４０の処理に戻り、機能プログラムのページの受信を継続する。
【００３９】
上述したステップＳ２４０の処理において、最初に受信した機能プログラムのページは、ＲＡＭ２４の、書き込み用プログラムを記憶するエリアの先頭位置から保存される。１度に送信されるページ数が複数である場合には、続いて受信される機能プログラムのページが、その受信された順番に従って、ＲＡＭ２４の書き込み用プログラムの記憶エリアに順に保存される。
【００４０】
ステップＳ２６０では、ＲＡＭ２４の書き込み用プログラムの記憶エリアの先頭位置に保存された機能プログラムをコールして、その機能プログラムを実行させる。その機能プログラムの実行が完了すると、ブートプログラムに処理が戻る。すると、ブートプログラムは、ステップＳ２７０の処理を実行する。ステップＳ２７０では、ＲＡＭ２４に記憶されている全ページの機能プログラムの実行が完了したか否かを判定する。この判定処理において、まだ、ＲＡＭ２４に記憶されている全ページの機能プログラムの実行が完了していないと判定すると、ステップＳ２８０の処理に進む。一方、ＲＡＭ２４内の全ページの機能プログラムが実行されたと判定すると、ステップＳ２９０の処理に進む。
【００４１】
ステップＳ２８０では、図６（ｃ）に示すように、ＲＡＭ２４において、実行された機能プログラムのページの次に保存されている機能プログラムのページを、先頭位置に移動（コピー）させる。そして、ステップＳ２６０の処理を再度実行する。これにより、先頭位置に移動されたページの機能プログラムを実行させることができる。
【００４２】
ステップＳ２９０では、ステップＳ２２０にて受信した全ページ数を示すデータに基づき、全てのページの機能プログラムの実行が完了したか、すなわち、書き込み用プログラムを構成する全ての機能プログラムの実行が完了したか否かを判定する。まだ、全ての機能プログラムの実行が完了していないと判定すると、ステップＳ３００に進み、図６（ｄ）に示すように、書込装置１０に対して、送信要求通知を送信する。このように、送信要求通知は、エンジン制御装置２０において、書込装置１０から一度に受信したすべての機能プログラムの実行が完了したタイミングで、書込装置１０に送信される。その後、ブートプログラムは、書込装置１０から送信される機能プログラムの受信を行うため、ステップＳ２４０の処理に戻る。
【００４３】
上述した処理を実行することにより、書き込み用プログラムを構成する全ての機能プログラムの実行が完了すると、ステップＳ２９０における判定が「ＹＥＳ」となり、図５のフローチャートに示す処理を終了する。このときには、フラッシュＲＯＭ２６への制御プログラムの書込が終了している。
【００４４】
上述したように、本実施形態によれば、ブートプログラムにより、書き込み用プログラムの記憶に利用可能なＲＡＭ２４の容量が、書込装置１０に通知される。このため、書込装置１０は、通知されたＲＡＭ２４の容量に基づき、ＲＡＭ２４にて記憶可能な機能プログラムの数を求め、その求めた数の機能プログラムを一度に送信することが可能になる。すなわち、エンジン制御装置２０が有するＲＡＭ２４の容量に適した数の機能プログラムがまとめて書込装置１０から送信され、エンジン制御装置２０において、その送信された機能プログラムをＲＡＭ２４に記憶させることが可能となる。従って、共通のブートプログラムを用いながら、エンジン制御装置２０が比較的大きな容量のＲＡＭ２４を有する場合には、１回の通信で、複数の機能プログラムをまとめて取得することが可能となる。そのため、エンジン制御装置２０は、書込装置１０との通信回数を低減することができ、それにより、プログラム書き込み処理時間を短縮することができる。
【００４５】
一例として、図７（ａ）に、ＲＡＭ容量の情報を用いずに、機能プログラムの１ページ毎に書込装置１０からダウンロードして実行することを繰り返した場合の通信手順を示し、図７（ｂ）に、本実施形態による通信手順を示す。図７（ａ）、（ｂ）から明らかなように、本実施形態による通信手順により、書込装置１０との通信回数を低減することができ、エンジン制御装置２０が比較的大きな容量のＲＡＭ２４を有する場合には、書込処理時間の短縮を図ることができる。
【００４６】
また、本実施形態では、複数の機能プログラムがＲＡＭ２４に記憶されている場合、ブートプログラムは、実行された機能プログラムのページの次に保存されている機能プログラムのページを、先頭位置に移動させる。このような機能プログラムのページの移動処理により、ＲＡＭ２４に複数の機能プログラムのページが記憶されている場合でも、ブートプログラムは、先頭位置に保存されたページの機能プログラムを実行するだけで済む。このため、ブートプログラムの内容をシンプルにすることができる。
【００４７】
さらに、本実施形態では、ブートプログラムは、書込装置１０から、一度に送信する機能プログラムのページ数を示すデータを受信している。そして、そのページ数を示すデータに基づき、受信すべきページ数分を受信したと判定すると、機能プログラムの実行を開始するようにしている。つまり、ブートプログラムが、一度に送信するページ数を把握できるようにしているので、一度に受信すべき機能プログラムの受信が完了したことを契機として、遅滞なく、その受信した機能プログラムを実行させることが可能となる。
【００４８】
また、本実施形態のブートプログラムは、予め、書込装置１０から書き込み用プログラムに含まれる機能プログラムの総数を示す、全ページ数を示すデータを受信している。このため、ブートプログラムは、この全ページ数を示すデータに基づいて、書き込み用プログラムを構成する全ての機能プログラムの実行が完了したか否かを判定可能となる。換言すれば、ブートプログラムは、書き込み用プログラムを構成する全ての機能プログラムの実行が完了したか否かを、書込装置１０との通信を通じて確認する必要がないので、その分、書き込み処理の時間の短縮化を図ることができる。
【００４９】
以上、本発明の好ましい実施形態について説明したが、本発明は上述した実施形態に何ら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【００５０】
例えば、上述した実施形態では、複数の機能プログラムがＲＡＭ２４に記憶されている場合、ブートプログラムは、実行された機能プログラムのページの次に保存されている機能プログラムのページを、先頭位置に移動させた。しかしながら、ブートプログラムの多少のアレンジにより、ページ移動を行うことなく、次の機能プログラムを実行させることも可能である。例えば、本実施形態では、機能プログラムの種別によらず、各機能プログラムのページサイズを一定にしている。そのため、次の機能プログラムを実行させようとした場合には、ブートプログラムがコールするアドレスをそのページサイズ分だけオフセットさせるようにしても良い。
【００５１】
上述した実施形態では、機能プログラムの種別によらず、ページサイズを一定としたが、各機能プログラムの大きさに応じて、ページサイズを異ならせても良い。ページサーズを異ならせた場合であっても、ページフォーマットからページの先頭や最後尾が認識できるので、ページの移動処理等を支障なく行うことができる。
【００５２】
また、上述した実施形態では、書込装置１０が、１回だけ、１度に送信するページ数を示すデータを送信する例について説明したが、機能プログラムのページが送信されるたびに、毎回、その機能プログラムのページの送信に先立ち、一度に送信されるページ数を示すデータを送信するようにしても良い。このような変形は、ページサイズを、各機能プログラム毎に変化させた場合、特に重要となる。つまり、この場合、送信する機能プログラムの種別や組み合わせにより、一度に送信可能なページ数が変化する場合が生じる。従って、機能プログラムのページの送信前に、一度に送信されるページ数を示すデータを送信することが必要になる。
【符号の説明】
【００５３】
１０  書込装置
１２  ＣＰＵ
１４  メモリ
１６  通信部
２０  エンジン制御装置
２２  ＣＰＵ
２４  ＲＡＭ
２６  フラッシュＲＯＭ
【図１】
2015148838.tif 000003
【図２】
2015148838.tif 000004
【図３】
2015148838.tif 000005
【図４】
2015148838.tif 000006
【図５】
2015148838.tif 000007
【図６】
2015148838.tif 000008
【図７】
2015148838.tif 000009