(58)【調査した分野】(Int.Cl.,DB名)
前記所定の条件は、各前記制御装置での、下記の第1時間〜第3時間を含む更新所要時間の組み合わせである同時更新所要時間を最も短くするスケジューリング条件よりなり、
前記同時更新所要時間は、前記複数の更新プログラムのうちの最初に前記制御装置に伝送される更新プログラムについての前記第1時間の開始時から、前記複数の更新プログラムの最後に制御プログラムの書き換えが終了する更新プログラムについての前記第3時間の終了時までの時間である、請求項2に記載の中継装置。
第1時間:更新プログラムの伝送時間
第2時間:更新プログラムのチェックに要する時間
第3時間:更新プログラムを用いた制御プログラムの書き換えに要する時間
前記制御部は、前記分岐ノードが、前記メインネットワークから前記ローカルネットワークへの前記第1更新プログラムの伝送を中継するためのバッファ機能を有するか否かに応じて、前記メインネットワークの伝送速度を決定する、請求項7に記載の中継装置。
【発明を実施するための形態】
【0015】
[実施の形態の説明]
本実施の形態には、少なくとも以下のものが含まれる。
すなわち、本実施の形態に含まれる中継装置は、車載ネットワークに属する複数の制御装置と通信する中継装置であって、複数の制御装置に対する同時更新の必要性がある複数の更新プログラムと、車載ネットワークのトポロジーとを記憶する記憶部と、複数の更新プログラムを対応する制御装置にそれぞれ送信する車内通信部と、自装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置については、当該制御装置に対応する複数の更新プログラムを並行して送信するように車内通信部を制御する制御部と、を備える。
この構成によれば、同時更新の必要性がある複数の更新プログラムのうちの、中継装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置に対する更新プログラムについては、中継装置からの伝送の開始を同時にすることができる。このため、これら複数の更新プログラムを、それぞれ、制御プログラムの書き換えの終了後に順に送信する場合よりも、複数の更新プログラムの伝送時間の合計を短縮することができる。その結果、同時更新所要時間を短くすることができる。
【0016】
好ましくは、中継装置は、制御部は、所定の条件に従って複数の更新プログラムの送信順序を決定する。
適切な条件が中継装置に設定されることによって、同時更新の必要性がある複数の更新プログラムの伝送にかかる時間の合計を短くすることができる。その結果、同時更新所要時間を短くすることができる。
【0017】
好ましくは、所定の条件は、各制御装置での、下記の第1時間〜第3時間を含む更新所要時間の組み合わせである同時更新所要時間を最も短くするスケジューリング条件よりなり、同時更新所要時間は、複数の更新プログラムのうちの最初に制御装置に伝送される更新プログラムについての第1時間の開始時から複数の更新プログラムの最後に制御プログラムの書き換えが終了する更新プログラムについての第3時間の終了時までの時間である。
第1時間:更新プログラムの伝送時間
第2時間:更新プログラムのチェックに要する時間
第3時間:更新プログラムを用いた制御プログラムの書き換えに要する時間
この構成によって、同時更新の必要性がある複数の更新プログラムの伝送にかかる時間の合計を短くすることができる。その結果、同時更新所要時間を短くすることができる。
【0018】
好ましくは、スケジューリング条件には、バス型トポロジーである1つの車載ネットワークに含まれる複数の制御装置について、第3時間が長い制御装置ほど更新プログラムの送信順序を早めることが含まれる。
この構成によって、制御プログラムの書き換えに要する時間が長い更新プログラムほど先に伝送され、制御プログラムの書き換えが先に開始される。そして、制御プログラムの書き換えと並行して、次の更新プログラムが伝送される。そのため、各制御プログラムの書き換えの終了後に順に更新プログラムを伝送するよりも同時更新所要期間を短縮することができる。
【0019】
好ましくは、スケジューリング条件には、バス型トポロジーである1つの車載ネットワークに含まれる複数の制御装置について、第1時間が短い制御装置ほど更新プログラムの送信順序を早めることが含まれる。
この構成によって、各更新プログラムについて対応する制御装置での当該更新プログラムのチェックおよび制御プログラムの書き換えを早く開始できるため、また、当該更新プログラムのチェックおよび制御プログラムの書き換えと並行して次の更新プログラムが伝送される。そのため、各制御プログラムの書き換えの終了後に順に更新プログラムを伝送するよりも同時更新所要期間をより短縮することができる。
【0020】
好ましくは、スケジューリング条件には、バス型トポロジーである1つの車載ネットワークに含まれる複数の制御装置について、制御装置に付与された識別情報に基づいて送信順序を決定することが含まれる。
この構成によって、各制御装置に対して適した名前等の識別情報を予め付与しておくことによって、更新所要期間をより短縮することができる。
【0021】
好ましくは、1つの車載ネットワークに、自装置に直接接続されたメインネットワークと、メインネットワークに含まれる制御装置を分岐ノードとして分岐するローカルネットワークが含まれる場合は、スケジューリング条件には、ローカルネットワークに属する制御装置への送信順序を、メインネットワークに含まれる制御装置の送信順序よりも早めることが含まれる。
この構成によって、ローカルネットワークでの更新プログラムの伝送と並行して、次の更新プログラムをメインネットワークで送信することができ、複数の更新プログラムの伝送時間の合計を短縮することができる。その結果、同時更新所要時間をより短縮することができる。
【0022】
好ましくは、制御部は、分岐ノードが、メインネットワークでの伝送速度とローカルネットワークでの伝送速度の差を吸収するバッファ機能を有するか否か応じて、メインネットワークの伝送速度を決定する。
この構成によって、メインネットワークでの更新プログラムの送信を効率的に行うことができ、複数の更新プログラムの伝送時間の合計を短縮することができる。
【0023】
本実施の形態に含まれるプログラム更新システムは、車載ネットワークに属する複数の制御装置と、複数の制御装置と通信する中継装置と、を含むプログラム更新システムであって、中継装置は、複数の制御装置に対する同時更新の必要性がある複数の更新プログラムと、車載ネットワークのトポロジーとを記憶する記憶部と、複数の更新プログラムを対応する制御装置にそれぞれ送信する車内通信部と、自装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置については、当該制御装置に対応する複数の更新プログラムを並行して送信するように車内通信部を制御する制御部と、を備える。
この構成によれば、同時更新の必要性がある複数の更新プログラムのうちの、中継装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置に対する更新プログラムについては、中継装置からの伝送の開始を同時にすることができる。このため、これら複数の更新プログラムを、それぞれ、制御プログラムの書き換えの終了後に順に送信する場合よりも、複数の更新プログラムの伝送時間の合計を短縮することができる。その結果、同時更新所要時間を短くすることができる。
【0024】
本実施の形態に含まれるプログラム更新方法は車載ネットワークに属する複数の制御装置と通信する中継装置が実行するプログラム更新方法であって、複数の制御装置に対する同時更新の必要性がある複数の更新プログラムと、車載ネットワークのトポロジーとを記憶するステップと、複数の更新プログラムを対応する制御装置にそれぞれ送信するステップと、を含み、送信するステップは、中継装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置については、当該制御装置に対応する複数の更新プログラムを並行して送信することを含む。
この構成によれば、同時更新の必要性がある複数の更新プログラムのうちの、中継装置に個別に接続された互いに独立する複数の車載ネットワークに属する制御装置に対する更新プログラムについては、中継装置からの伝送の開始を同時にすることができる。このため、これら複数の更新プログラムを、それぞれ、制御プログラムの書き換えの終了後に順に送信する場合よりも、複数の更新プログラムの伝送時間の合計を短縮することができる。その結果、同時更新所要時間を短くすることができる。
【0025】
[実施の形態の詳細]
以下に、図面を参照しつつ、好ましい実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【0026】
<第1の実施の形態>
〔システムの全体構成〕
図1は、本発明の実施形態に係るプログラム更新システムの全体構成図である。
図1に示すように、本実施形態のプログラム更新システムは、広域通信網2を介して通信可能な車両1、管理サーバ5およびDL(ダウンロード)サーバ6を含む。
管理サーバ5およびDLサーバ6は、たとえば、車両1のカーメーカーにより運営されており、予め会員登録されたユーザが所有する多数の車両1と通信可能である。
【0027】
車両1には、ゲートウェイ10と、無線通信部15と、複数のECU30と、各ECU30によりそれぞれ制御される各種の車載機器(図示せず)とが搭載されている。
車両1には、共通の車内通信線にバス接続された複数のECU30による通信グループ(車載ネットワーク)が存在し、ゲートウェイ10は、通信グループ間の通信やECU30と車外の装置との通信を中継する中継装置として機能する。このため、ゲートウェイ10には、複数の車内通信線が接続されている。
【0028】
詳しくは、ゲートウェイ10には、それぞれに1つ以上のECU30が接続されて通信グループを構成する、複数のバスが接続されて、ネットワークトポロジーを形成している。一例として、
図1に示されるように、ゲートウェイ10には、メインバスである、第1のバスNW1と第2のバスNW2とが接続されている。バスNW1には、3つのECU(ECU_A,ECU_B,ECU_C)30が接続されている。バスNW2には、1つのECU(ECU_F)30が接続されている。3つのECU(ECU_A,ECU_B,ECU_C)30がメインバスNW1に接続されたネットワークトポロジーおよび1つのECU(ECU_F)30がメインバスNW2に接続されたネットワークトポロジーは、それぞれバス型トポロジーである。伝送路としてのメインバスNW1,NW2は、それぞれに接続される複数のECUで共有可能される。そのために、信号の衝突、干渉するため、同時に信号の伝送がなされないように制御される必要がある。
【0029】
複数のECU30のいずれかは、さらに、ローカルバスに接続されていてもよい。たとえば、
図1では、バスNW1は、接続された1つのECU(ECU_C)30を分岐ノードとして、ローカルバスである第3のバスNW3に分岐している。バスNW3には、さらに2つのECU(ECU_E,ECU_D)30が接続されて、バス型トポロジーを形成している。ECU_Cは、バスNW3に接続された2つのECU(ECU_E,ECU_D)30とゲートウェイ10との信号の伝送を中継する。
【0030】
無線通信部15は、携帯電話網などの広域通信網2に通信可能に接続され、車内通信線によりゲートウェイ10に接続されている。ゲートウェイ10は、広域通信網2を通じて管理サーバ5およびDLサーバ6などの車外装置から無線通信部15が受信した情報を、ECU30に送信する。
ゲートウェイ10は、ECU30から取得した情報を無線通信部15に送信し、無線通信部15は、その情報を管理サーバ5などの車外装置に送信する。
【0031】
図1では、ゲートウェイ10は、無線通信部15と車内通信線を介して接続されているが、これらは1つの装置で構成してもよい。
【0032】
また、
図1のプログラム更新システムでは、管理サーバ5とDLサーバ6とが別個のサーバで構成されているが、これらのサーバ5,6を1つのサーバ装置で構成してもよい。
【0033】
〔ゲートウェイの内部構成〕
図2は、ゲートウェイ10の内部構成を示すブロック図である。
図2に示すように、ゲートウェイ10は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、記憶部13、および車内通信部14などを備える。ゲートウェイ10は、無線通信部15と車内通信線とを介して接続されているが、これらは一つの装置で構成してもよい。
【0034】
CPU11は、記憶部13に記憶された一または複数のプログラムをRAM12に読み出して実行することにより、ゲートウェイ10を各種情報の中継装置として機能させる。
CPU11は、たとえば時分割で複数のプログラムを切り替えて実行することにより、複数のプログラムを並列的に実行可能である。RAM12は、SRAM(Static RAM)又はDRAM(Dynamic RAM)等のメモリ素子で構成され、CPU11が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【0035】
記憶部13は、フラッシュメモリ若しくはEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性のメモリ素子などにより構成されている。
記憶部13は、CPU11が実行するプログラムおよび実行に必要なデータ等を記憶する記憶領域を有する。記憶部13は、DLサーバ6から受信した各ECU30の更新プログラムなども記憶する。また、記憶部13には、車載ネットワークである、各ECU30およびバスNW1〜NW3の形成するトポロジーも記憶されている。車載ネットワークのトポロジーは、更新プログラムの伝送および後述するスケジューリング処理において用いられる。
【0036】
車内通信部14には、車両1に配設された車内通信線を介して複数のECU30が接続されている。車内通信部14は、たとえばCAN(Controller Area Network)、CANFD(CAN with Flexible Data Rate)、LIN(Local Interconnect Network)、Ethernet(登録商標)、またはMOST(Media Oriented Systems Transport:MOSTは登録商標)等の規格に応じて、ECU30との通信を行う。
車内通信部14は、CPU11から与えられた情報を対象のECU30へ送信するとともに、ECU30から受信した情報をCPU11に与える。車内通信部14は、上記の通信規格だけでなく、車載ネットワークに用いる他の通信規格によって通信してもよい。
【0037】
無線通信部15は、アンテナと、アンテナからの無線信号の送受信を実行する通信回路とを含む無線通信機よりなる。無線通信部15は、携帯電話網等の広域通信網2に接続されることにより車外装置との通信が可能である。
無線通信部15は、図示しない基地局により形成される広域通信網2を介して、CPU11から与えられた情報を管理サーバ5等の車外装置に送信するとともに、車外装置から受信した情報をCPU11に与える。
【0038】
図2に示す無線通信部15に代えて、車両1内の中継装置として機能する有線通信部を採用してもよい。この有線通信部は、USB(Universal Serial Bus)またはRS232C等の規格に応じた通信ケーブルが接続されるコネクタを有し、通信ケーブルを介して接続された別の通信装置と有線通信を行う。
別の通信装置と管理サーバ5等の車外装置とが広域通信網2を通じた無線通信が可能である場合には、車外装置→別の通信装置→有線通信部→ゲートウェイ10の通信経路により、車外装置とゲートウェイ10とが通信可能になる。
【0039】
〔ECUの内部構成〕
図3は、ECU30の内部構成を示すブロック図である。
図3に示すように、ECU30は、CPU31、RAM32、記憶部33、通信部34などを備える。ECU30は、車両1に搭載された対象機器を個別に制御する車載制御装置である。ECU30の種類には、たとえば、エンジン制御ECU、ステアリング制御ECU、およびドアロック制御ECUなどがある。
【0040】
CPU31は、記憶部33に予め記憶された一または複数のプログラムをRAM32に読み出して実行することにより、自身が担当する対象機器の動作を制御する。
RAM32は、SRAMまたはDRAM等のメモリ素子で構成され、CPU31が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【0041】
記憶部33は、フラッシュメモリ若しくはEEPROM等の不揮発性のメモリ素子、或いは、ハードディスクなどの磁気記憶装置等により構成されている。
記憶部33が記憶する情報には、たとえば、車内の制御対象である対象機器を制御するための情報処理をCPU31に実行させるためのコンピュータプログラム(以下、「制御プログラム」という。)が含まれる。
【0042】
通信部34には、車両1に配設された車内通信線を介してゲートウェイ10が接続されている。通信部34は、たとえばCAN、Ethernet、またはMOST等の規格に応じて、ゲートウェイ10との通信を行う。
通信部34は、CPU31から与えられた情報をゲートウェイ10へ送信するとともに、ゲートウェイ10から受信した情報をCPU31に与える。通信部34は、上記の通信規格だけなく、車載ネットワークに用いる他の通信規格によって通信してもよい。
【0043】
ECU30のCPU31には、当該CPU31による制御モードを、「通常モード」または「リプログラミングモード」(以下、「リプロモード」ともいう。)のいずれかに切り替える起動部35が含まれる。
ここで、通常モードとは、ECU30のCPU31が、対象機器に対する本来的な制御(たとえば、燃料エンジンに対するエンジン制御や、ドアロックモータに対するドアロック制御など)を実行する制御モードのことである。
【0044】
リプログラミングモードとは、対象機器の制御に用いる制御プログラムを更新する制御モードである。
すなわち、リプログラミングモードは、CPU31が、記憶部33のROM領域に対して、制御プログラムの消去や書き換えを行う制御モードのことである。CPU31は、この制御モードのときにのみ、記憶部33のROM領域に格納された制御プログラムを新バージョンに更新することが可能となる。
【0045】
リプロモードにおいてCPU31が新バージョンの制御プログラムを記憶部33に書き込むと、起動部35は、ECU30をいったん再起動(リセット)させ、新バージョンの制御プログラムが書き込まれた記憶領域についてベリファイ処理を実行する。
起動部35は、上記のベリファイ処理の完了後に、CPU31を更新後の制御プログラムによって動作させる。
【0046】
〔管理サーバの内部構成〕
図4は、管理サーバ5の内部構成を示すブロック図である。
図4に示すように、管理サーバ5は、CPU51、ROM52、RAM53、記憶部54、および通信部55などを備える。
【0047】
CPU51は、ROM52に予め記憶された一又は複数のプログラムをRAM53に読み出して実行することにより、各ハードウェアの動作を制御し、管理サーバ5をゲートウェイ10と通信可能な車外装置として機能させる。
RAM53は、SRAM又はDRAM等のメモリ素子で構成され、CPU51が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【0048】
記憶部54は、フラッシュメモリ若しくはEEPROM等の不揮発性のメモリ素子、又は、ハードディスクなどの磁気記憶装置等により構成されている。
通信部55は、所定の通信規格に則って通信処理を実行する通信装置よりなり、携帯電話網等の広域通信網2に接続されて当該通信処理を実行する。通信部55は、CPU51から与えられた情報を、広域通信網2を介して外部装置に送信するとともに、広域通信網2を介して受信した情報をCPU51に与える。
【0049】
図4に示すように、記憶部54が記憶する情報には、車両1に搭載されたECU30(ここでは、VIN=1の車両1に搭載されたECU30の識別番号を1〜3とする。)の制御プログラムのバージョンを記録したリビジョンテーブルRTが含まれる。
リビジョンテーブルRTは、車両1の車両識別番号(VIN)と、車両識別番号ごとのリビジョンアップの履歴を表す識別情報であるリビジョン番号と、各リビジョン番号に対応するECU1〜3のバージョンとを纏めたテーブルよりなる。
【0050】
図4のリビジョンテーブルRTにおいて、同じリビジョン番号に含まれる各ECU1〜3の制御プログラムのバージョンは、カーメーカーにおいて動作確認が取れていることを示している。
たとえば、現状のリビジョン番号である「R2.0」の場合には、ECU1のバージョン1.0の制御プログラム、ECU2のバージョン1.3の制御プログラム、およびECU3のバージョン2.0の制御プログラムの動作確認が取れている。
【0051】
最新のリビジョン番号である「R2.4」の場合には、ECU1のバージョン1.2の制御プログラム、ECU2のバージョン2.0の制御プログラム、およびECU3のバージョン2.2の制御プログラムの動作確認が取れている。
従って、車両1をR2.0からR2.4にリビジョンアップする場合には、ECU1の1.0から1.2へのバージョンアップ、ECU2の1.3から2.0へのバージョンアップ(更新)、およびECU3の2.0から2.2へのバージョンアップ(更新)を同じタイミングに行う必要がある。ここで、「同じタイミング」とは、複数のECU30がゲートウェイ10からの要求に応じてリプロモードに移行してから、次に、ゲートウェイ10からの要求に応じてリセットされ、ベリファイ処理の完了後に通常モードに復帰するまでのタイミングを指す。以降の説明において、上記の意味で同じタイミングに複数の制御プログラムを更新することを「同時更新」とも言う。
【0052】
図4のリビジョンテーブルRTには、一例として車両識別番号VIN=1の場合のバージョン情報のみが例示されている。
もっとも、管理サーバ5が保持するリビジョンテーブルRTには、管理サーバ5の登録会員が所有するすべての車両1の車両識別番号(VIN)ごとに、上記と同様のバージョン情報が記録されている。また、DLサーバ6には、すべてのECU30に関する複数の更新プログラムが格納されている。
【0053】
CPU51は、ゲートウェイ10から車両識別番号と各ECU1〜3の現状の制御プログラムのバージョンとが通知されると、通知されたバージョン情報をリビジョンテーブルRTに含まれる当該車両識別番号の最新バージョンと照合する。
CPU51は、照合の結果、ゲートウェイ10から通知されたECU1〜3のバージョン情報が最新でないと判定した場合には、最新バージョンに更新するための更新プログラムの保存先URLとダウンロード要求とをゲートウェイ10に送信する。
【0054】
〔制御プログラムの同時更新のシーケンス〕
図5は、本実施形態のプログラム更新システムにおいて実行される、複数のECU1〜3に対する制御プログラムの同時更新の一例を示すシーケンス図である。なお、以下においては、
図4のリビジョンテーブルRTに従って、各ECU1〜3の制御プログラムを次のように更新する場合を想定する。
リビジョン番号:R2.0→R2.4
ECU1:バージョン1.0→バージョン1.2
ECU2:バージョン1.3→バージョン2.0
ECU3:バージョン2.0→バージョン2.2
【0055】
更新プログラムは、新バージョンのプログラムそのものであってもよいが、本実施形態では、旧バージョンからの差分プログラムである場合を想定する。この場合、旧バージョンと新バージョンとのファイルの差分情報を含む更新プログラムΔが同じ記憶領域にあれば、旧バージョンに更新プログラムΔを適応することで、新バージョンに更新することができる。
ECU1のバージョン1.0からバージョン1.2への更新プログラムを「Δ1」とし、ECU2のバージョン1.3からバージョン2.0への更新プログラムを「Δ2」とし、ECU3のバージョン2.0からバージョン2.2への更新プログラムを「Δ3」とする。
【0056】
図5に示すように、本実施形態の制御プログラムの同時更新においては、一例として、ゲートウェイ10が、各ECU1〜3の制御プログラムの現状のバージョン情報を収集する(ステップS1)。
図示の例では、ECU1の制御プログラムの現バージョンは「1.0」であり、ECU2の制御プログラムの現バージョンは「1.3」であり、ECU3の制御プログラムの現バージョンは「2.0」である。
【0057】
次に、ゲートウェイ10は、収集したECU1〜3の制御プログラムのバージョン情報と、自車両の車両識別番号(VIN)を管理サーバ5に送信する(ステップS2)。
管理サーバ5は、ゲートウェイ10から通知されたバージョン情報と車両識別番号に基づいて、前述のリビジョンテーブルRT(
図4参照)を探索することにより、各ECU1〜3について、車両1の各ECU1〜3の制御プログラムを同じタイミングに更新する必要があるか否かを判定する。
【0058】
ここでは、ECU1がバージョン1.0であり、ECU2がバージョン1.3であり、ECU3がバージョン2.0であるから、管理サーバ5は、車両1がリビジョンR2.0で運用中であると判定する。
また、管理サーバ5は、最新版のリビジョンR2.4が存在することから、ECU1のバージョン1.2への更新、ECU2のバージョン2.0への更新、および、ECU3のバージョン2.2への更新を、同じタイミングに行う必要があると判定する。
【0059】
そこで、管理サーバ5は、バージョン情報を送信してきたゲートウェイ10宛てに、各ECU1〜3の更新プログラムΔ1〜Δ3の保存先URLとダウンロード要求とをゲートウェイ10宛てに送信する(ステップS3)。
これにより、ゲートウェイ10は、各ECU1〜3のための更新プログラムΔ1〜Δ3をDLサーバ6からダウンロードする(ステップS4)。ゲートウェイ10は、受信した更新プログラムΔ1〜Δ3を自装置の記憶部13に一時的に格納して保存する。
【0060】
更新プログラムΔ1〜Δ3の保存が完了すると、ゲートウェイ10は、DLが正常に完了したことを管理サーバ5に送信する(ステップS5)。引き続き自動で更新を行う場合、DL完了通知を受信した管理サーバ5は、制御プログラムの更新要求をゲートウェイ10に送信する。DL完了後、一時中断し外部から更新要求を受けてから、制御プログラムの更新要求をゲートウェイ10に送信してもよい(ステップS6)。
更新要求を受信したゲートウェイ10は、記憶部13に保存した更新プログラムΔ1〜Δ3を用いて制御プログラムを更新させるべく、各ECU1〜3にリプロモード移行要求をそれぞれ送信する(ステップS7)。
【0061】
リプロモード移行要求を受信すると、各ECU1〜3は自身の制御モードを通常モードからリプログラミングモードに切り替える。これにより、各ECU1〜3は、更新プログラムΔ1〜Δ3の展開と、現状の制御プログラムを新バージョンの制御プログラムに書き換える処理とが可能な状態となる。
【0062】
ここで、同時更新する制御プログラムが複数ある場合、ゲートウェイ10は、記憶部13に保存した更新プログラムΔ1〜Δ3の送信順序を決定するためのスケジューリング処理を実行する(ステップS8)。
【0063】
更新プログラムΔがECUに伝送されると、ECUは、当該更新プログラムが伝送経路で欠損していないか、MD(Message Digest)5,CRC(Cyclic Redundancy Code)等を用いて完全性の確認を実施し、デジタル署名等を用いて元ファイルに所有者の確認を実施し改ざんなきことの確認を実施した上で展開し(書き換え)て旧バージョンに適用する。すなわち、制御プログラムの更新には、ゲートウェイ10から該当するECUまでの伝送(第1のタスク)、更新ファイルのチェック(第2のタスク)、およびECUでの当該プログラムの展開(アップデート)(第3のタスク)の3つのタスクがある。各ECUでの制御プログラムの更新に要する時間である「更新所要時間」は、上記第1のタスクに要する時間(第1時間)と第2のタスクに要する時間(第2時間)と第3のタスクに要する時間(第3時間)を含む。制御プログラムの更新のための動作が上記第1〜第3のタスクのみである場合には、更新所要時間は、第1〜第3時間を加えたもの(更新所要時間=第1時間+第2時間+第3時間)となる。
【0064】
複数のECUそれぞれの複数の制御プログラムを同時に更新する場合、最初の更新プログラムの該当するECUへの伝送の開始から最後の更新プログラムによって該当するECUで制御プログラムの書き換えが完了するまでが、同じタイミングで制御プログラムを更新するために要する「同時更新所要時間」となる。言い換えると、同時更新所要時間は、上記複数の更新プログラムのうちの最初にECUに伝送される更新プログラムの第1時間の開始時から、最後に制御プログラムの書き換えが終了する更新プログラムの第3時間の終了時までの時間である。
【0065】
同時更新する制御プログラムが複数ある場合、すべての制御プログラムの更新が完了するまで、すべてのECUではリプロモードが維持される。すなわち、該当する複数のECUのうち1つでも制御プログラムの更新中であると、複数のECUすべてのリプロモードが維持される。従って、同時更新所要時間が長くなるとリプロモードから通常モードへの復帰が遅れる。リプロモード中は車両1の使用ができないため、たとえばユーザが運転したいときにリプロモードが長く継続する場合など、ユーザに不都合、不利益を生じさせることになる。そこで、本実施の形態にかかるプログラム更新システムでは、複数の制御プログラムを同時更新する場合に、同時更新所要時間を短くするようにスケジューリング処理が行われる。
【0066】
スケジューリング処理には、各更新プログラムの上記第1時間〜第3時間、および車載ネットワークのトポロジーが用いられる。各更新プログラムの各タスクに要する時間は管理サーバ5からゲートウェイ10に渡されてもよい。この場合、管理サーバ5はDLサーバ6から更新プログラムに関する情報を得、当該情報に基づいて各タスクに要する時間を計算する。更新プログラムに関する情報は、たとえば、更新プログラムのデータサイズなどである。または、上記第1時間〜第3時間は、DLサーバ6から送信された更新プログラムと、各ECU30から得られる情報、または予め記憶している車両1の各部の情報とを用いて、ゲートウェイ10において計算されてもよい。ゲートウェイ10は、ステップS8のスケジューリング処理によって決定された送信順序に従って、記憶部13に保存した更新プログラムを各ECUに送信する(ステップS9,11,13)。
【0067】
すなわち、ゲートウェイ10は、最初に送信すると決定した更新プログラムΔ1を該当するECU1に送信する(ステップS9)。
ECU1は、受信した更新プログラムΔ1を展開して旧バージョン1.0に適用することにより、制御プログラムを旧バージョン1.0から新バージョン1.2に書き換える。書き換えが完了すると、ECU1は、書き換えの完了通知をゲートウェイ10に送信する(ステップS10)。
【0068】
次に、ゲートウェイ10は、次に送信すると決定した更新プログラムΔ2を該当するECU2に送信する(ステップS11)。
ECU2は、受信した更新プログラムΔ2を展開して旧バージョン1.3に適用することにより、制御プログラムを旧バージョン1.3から新バージョン2.0に書き換える。書き換えが完了すると、ECU2は、書き換えの完了通知をゲートウェイ10に送信する(ステップS12)。
【0069】
次に、ゲートウェイ10は、次に送信すると決定した更新プログラムΔ3を該当するECU3に送信する(ステップS13)。
ECU3は、受信した更新プログラムΔ3を展開して旧バージョン2.0に適用することにより、制御プログラムを旧バージョン2.0から新バージョン2.2に書き換える。書き換えが完了すると、ECU3は、書き換えの完了通知をゲートウェイ10に送信する(ステップS14)。
【0070】
なお、上記ステップS9,11,13の、複数のECU30それぞれに対する更新プログラムΔの送信は、上記したように、ステップS8のスケジューリング処理によって決定された送信順序に従って行われる。決定された送信順序は、必ずしも複数のECU301つずつに送信することのみではない。つまり、複数のECU30に同時にそれぞれの更新プログラムΔを送信する送信順序も決定され得る。すなわち、上記ステップS9,11,13はこの順に実行されることを意味するものではなく、それぞれの処理が、規定された送信順序で行われ、その規定された送信順序によっては同時に実行される場合もあり得る。
【0071】
ゲートウェイ10は、すべてのECU1〜3から書き換えの完了通知を受信すると、各ECU1〜3に通常モード移行要求とリセット要求を送信する(ステップS15)。
通常モード移行要求を受信した各ECU1〜3は、自身の制御モードをリプロモードから通常モードに切り替え、リセット要求に応じてシステムを再起動する。これにより、各ECU1〜3が、新バージョンの制御プログラムによりそれぞれ動作する。
【0072】
また、ゲートウェイ10は、書き換えの完了通知をすべてのECU1〜3から受信すると、更新完了通知を管理サーバ5に送信する(ステップS16)。
これにより、管理サーバ5は、車両1の各ECU1〜3について、制御プログラムの更新がすべて完了したことを察知する。
【0073】
〔スケジューリング処理〕
図6は、ステップS8のスケジューリング処理の流れを表したフローチャートである。
図6のフローチャートに表されたスケジューリング処理は、ゲートウェイ10のCPU11が記憶部13に記憶されているスケジューリング処理実行用のプログラムをRAM12上に読み出して実行することによって実現される。このとき、
図2に示されるようにCPU11は、該プログラムを実行することによって実現される機能であるスケジューリング部111および更新制御部112を含む。CPU11がこれら機能を発揮することによってスケジューリング処理が実現される。
図6のフローチャートに表された動作は、複数の更新プログラムをDLサーバ6から取得し、同時更新する制御プログラムが複数ある場合に開始される。
【0074】
図6を参照して、ゲートウェイ10のCPU11は、記憶部13に記憶されている車載ネットワークのトポロジーに基づいてゲートウェイ10に接続されている複数のメインバスNW1,NW2を特定し、それぞれに対して並行して以降のスケジューリング処理を実行する(ステップS101)。
【0075】
はじめに、CPU11は、同時更新の必要性がある複数の更新プログラムそれぞれの宛先と、記憶部13に記憶されている車載ネットワークのトポロジーとに基づいて、該複数の更新プログラムにローカルバスに属するECU用の更新プログラムが含まれるか否かを判断する。
図1の例では、CPU11は、該複数の更新プログラムにECU_DまたはECU_E用の更新プログラムが含まれるか否かを判断する。
【0076】
同時更新の必要性がある複数の更新プログラムにローカルバスを介して接続されたECU用の更新プログラムが含まれる場合(ステップS103でYES)、CPU11は、さらに、メインバスをローカルバスに分岐する分岐ノードであるECU(ECU_C)が更新プログラムの伝送を中継するための中継バッファを使用可能であるか、すなわちバッファ機能を有するか否かを判断する。中継バッファは、メインバスとローカルバスとの伝送能力(伝送速度)差を吸収するために用いられる。
図1の例では、ECU_Cが中継バッファを使用可能であるか否かを判断する。
【0077】
分岐ノードであるECUが中継バッファを使用可能である(バッファ機能を有する)場合には(ステップS105でYES)、ローカルバスでの伝送速度を考慮せずにメインバスにて、ローカルバスに属するECUの更新プログラムを伝送することができる。この場合、CPU11は、ローカルバスに分岐するメインバス(NW1)での更新プログラムの伝送が排他的なもの、つまり、同時に複数の伝送のために伝送路を共有できないことを前提として、以降のスケジューリング処理を実行する(ステップS107)。なお、メインバスとローカルバスとの伝送速度差がない、または、ローカルバスでの伝送速度がメインバスでの伝送速度よりも速い場合には、分岐ノードであるECUが中継バッファを使用可能である場合と同様のスケジューリング処理を行う。具体的には、CPU11は、ECU_Cが中継バッファを使用可能である場合に、メインバスNW1を、同時に複数の更新プログラムの伝送に共有できないものとして、以降のスケジューリング処理を行う。
【0078】
ローカルバスでの伝送速度がメインバスでの伝送速度よりも遅く、かつ、分岐ノードであるECUが中継バッファを使用可能でない(バッファ機能を有しない)場合には(ステップS105でNO)、ローカルバスでの伝送速度を考慮して、つまり、ローカルバスでの伝送速度に応じた速度でメインバスで更新プログラムを伝送する必要がある。この場合、CPU11は、当該メインバス(NW1)において更新プログラムを並列して伝送可能である、つまり、ローカルバスに属するECUへの更新プログラムの伝送と他の更新プログラムの伝送とが同時にメインバスを共有可能であることを前提として、以降のスケジューリング処理を実行する(ステップS109)。具体的には、CPU11は、ローカルバスNW3での伝送速度がメインバスNW1での伝送速度よりも遅く、かつ、ECU_Cが中継バッファを使用可能でない場合には、メインバスNW1においては、ローカルバスNW3での更新プログラムの伝送と他の更新プログラムの伝送とを並列に行うことができるものとして、以降のスケジューリング処理を行う。
【0079】
なお、いずれのスケジューリング処理においても、あるバスでの更新プログラムの伝送が終了した時点で、当該バスに空き帯域を生じないように次の更新プログラムの伝送を開始するものとする。
【0080】
具体的に、CPU11は、予め規定されている複数のスケジューリング条件それぞれに従って同時更新の必要性がある複数の制御プログラムの送信順序を決定する(ステップS111〜S115)。たとえば、条件Aとして「更新時間が長い更新プログラムを優先してスケジューリングする」という条件が規定されている場合、CPU11は、各更新プログラムについて上記の第1時間〜第3時間の総和である更新所要時間の順に基づいて送信順序を決定する(ステップS111)。条件Aであるスケジューリング条件に従って決定された送信順序を送信順序Aとする。
【0081】
条件Bとして「伝送時間が短い更新プログラムを優先してスケジューリングする」という条件が規定されている場合、CPU11は、各更新プログラムについて上記第1時間の順に基づいて送信順序を決定する(ステップS113)。条件Bであるスケジューリング条件に従って決定された送信順序を送信順序Bとする。
【0082】
条件Cとして「ECUに付与された識別情報(たとえば名前やID等)順でスケジューリングする」という条件が規定されている場合、CPU11は、各更新プログラムについて、当該更新プログラムの該当するECUのたとえば名前順に基づいて送信順序を決定する(ステップS115)。条件Cであるスケジューリング条件に従って決定された送信順序を送信順序Cとする。
【0083】
CPU11は、予め規定されている複数のスケジューリング条件(条件A〜C)それぞれに従ってスケジューリング処理を実行し、送信順序を決定した後に、その結果(送信順序A〜C)を比較して、同時更新所要期間が最も短い送信順序をこれら複数の更新プログラムの送信順序とする(ステップS117)。CPU11は、以上のスケジューリング処理をメインバスNW1,NW2それぞれに対して並行して実行して(ステップS119)、ステップS8の一連の処理を終了する。
【0084】
ステップS8で以上のスケジューリング処理を実行した後、ステップS9,11,13でCPU11は、決定した送信順序にて更新プログラムを各ECUに送信して更新を指示する、更新制御を実行する。上記のスケジューリング処理および更新制御を実行するために、CPU11は、スケジューリング部111および更新制御部112を含む(
図2)。これらは、CPU11が記憶部13に記憶されているプログラムを読み出してRAM12上で実行することによってCPU11において実現される機能である。
【0085】
〔スケジューリング処理の具体例1〕
図7は、同時更新の必要性がある複数の更新プログラムの第1の具体例を表した図である。
図7を参照して、第1の例において、第1の更新プログラムΔ1はECU_A用の更新プログラムであって、第1のメインバスNW1でECU_Aに伝送されて(第1のタスク)、ECU_Aにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Aで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、30[s(秒)]、10[s]および30[s]である。第2の更新プログラムΔ2はECU_F用の更新プログラムであって、第2のメインバスNW2でECU_Fに伝送されて(第1のタスク)、ECU_Fにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Fで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、10[s]、10[s]および30[s]である。第3の更新プログラムΔ3はECU_D用の更新プログラムであって、第1のメインバスNW1でECU_Cまで伝送され、ECU_Cを介してローカルバスNW3でECU_Dに伝送されて(第1のタスク)、ECU_Dにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Dで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、60[s]、10[s]および30[s]である。なお、更新プログラムΔ3の伝送(第1のタスク)については、さらに、第1のメインバスNW1での伝送に要する時間は30[s]およびローカルバスNW3での伝送に要する時間は30[s]である。また、メインバスNW1からローカルバスNW3への伝送を中継するECU_Cは中継バッファを使用可能であって、メインバスNW1からローカルバスNW3への伝送の中継時間が10[s]である。
【0086】
同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図7のものである場合、ゲートウェイ10のCPU11は、上記ステップS103でYES、かつステップS107でYESと判断する。そのため、メインバスNW1での更新プログラムの伝送が排他的なものであることを前提として(ステップS107)、予め規定されている各スケジューリング条件(条件A〜C)それぞれを用いたスケジューリング処理を実行する。
【0087】
図8は、ステップS8のスケジューリング処理を行わない場合の更新スケジュール(A)と、スケジューリング処理を行った場合の更新スケジュール(B)とを比較して示した図である。横軸は時間[s]を表して、(A),(B)の1ブロックが10[s]を表している。
【0088】
はじめに(A)を参照して、一例として、CPU11が、更新プログラムの順(Δ1→Δ2→Δ3)に1プログラムずつ更新処理が完了するように更新制御を行った場合、同時更新所要時間は各ECUでの更新所要時間を加えた時間、つまり、
図7に示された各タスクに要する時間を加えた時間である230[s]となる。
【0089】
これに対して、ステップS8のスケジュール処理が実行されると、メインバスNW1についてはローカルバスNW3で(分岐して)伝送する更新プログラムΔ3の伝送をローカルバスNW3を用いない(分岐しない)更新プログラムΔ1よりも優先し、更新プログラムΔ3,Δ1を連続してメインバスNW1で伝送するよう送信順序が決定される。また、メインバスNW1と並列して伝送可能なメインバスNW2についてはメインバスNW1での更新プログラムの伝送と並行して更新プログラムΔ2を伝送するよう送信順序が決定される(B)。これは、車載ネットワークのトポロジーに基づいて、独立するメインバスNW1,NW2に並行して更新プログラムを伝送し、同一のメインバスについては複数の更新プログラム1つずつ順に伝送せざるを得ないためである。このため、ローカルバスに分岐するメインバス(NW1)については、さらにローカルバス(NW3)に分岐して伝送する更新プログラムを先に伝送する。これにより、ローカルバス(NW3)に分岐して伝送しない更新プログラムのメインバスでの伝送と、ローカルバス(NW3)での更新プログラムの伝送とを並行して行わせることができる。このようにすることで、同時更新所要時間のうちの伝送に要する時間を、複数の更新プログラムそれぞれの第1時間の合計よりも短くすることができ、その結果、同時更新所要時間を短くすることができる。なお、伝送(第1のタスク)に続く更新ファイルのチェック(第2のタスク)およびアップデート(第3のタスク)は、伝送終了後に連続して実行される。これは、以降のスケジューリング処理の具体例でも同じとする。
【0090】
同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図7の場合、CPU11がステップS8のスケジューリング処理を実行して
図8の(B)に表されたスケジュールを決定することによって、同時更新所要時間は230[s]から110[s]に大幅に短縮される。
【0091】
〔スケジューリング処理の具体例2〕
図9は、同時更新の必要性がある更新プログラムの第2の具体例を表した図である。
図9を参照して、第2の例において、第1の更新プログラムΔ1はECU_A用の更新プログラムであって、第1のメインバスNW1でECU_Aに伝送されて(第1のタスク)、ECU_Aにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Aで制御プログラムが書き換えされる(第3のタスク)。第1時間〜第3時間は、30[s]、10[s]および30[s]である。第2の更新プログラムΔ2はECU_F用の更新プログラムであって、第2のメインバスNW2でECU_Fに伝送されて(第1のタスク)、ECU_Fにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Fで制御プログラムが書き換えされる(第3のタスク)。第1時間〜第3時間は、10[s]、10[s]および30[s]である。第3の更新プログラムΔ3はECU_D用の更新プログラムであって、第1のメインバスNW1でECU_Cまで伝送され、ECU_Cを介してローカルバスNW3でECU_Dに伝送されて(第1のタスク)、ECU_Dにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Dで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、120[s]、10[s]および20[s]である。なお、第2の例では、メインバスNW1からローカルバスNW3への伝送を中継するECU_Cは中継バッファを使用不可である(バッファ機能を有さない)。そのため、ECU_D用の更新プログラムΔ3の伝送においては、ローカルバスNW3での伝送速度と同じ速度で第1のメインバスNW1で伝送されるため、第1のメインバスNW1での伝送に要する時間が、ローカルバスNW3での伝送に要する時間と同じ120[s]となる。
【0092】
同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図9のものである場合、ゲートウェイ10のCPU11は、上記ステップS103でYES、かつステップS107でNOと判断する。そのため、メインバスNW1においてローカルバスNW3に分岐して伝送する更新プログラムに関しては他の更新プログラムを並列して伝送可能であることを前提として(ステップS109)、予め規定されている各スケジューリング条件(条件A〜C)を用いたスケジューリング処理を実行する。
【0093】
図10は、ステップS8のスケジューリング処理を行わない場合の更新スケジュール(A)と、スケジューリング処理を行った場合の更新スケジュール(B)とを比較して示した図である。横軸は時間[s]を表して、(A),(B)の1ブロックが10[s]を表している。
【0094】
はじめに(A)を参照して、一例として、CPU11が、更新プログラムの順(Δ1→Δ2→Δ3)に1プログラムずつ更新処理が完了するように更新制御を行った場合、同時更新所要時間は各ECUでの更新所要時間を加えた時間、つまり、
図9に示された各タスクに要する時間を加えた時間である270[s]となる。
【0095】
これに対して、ステップS8のスケジュール処理が実行されると、メインバスNW1についてはローカルバスNW3に分岐して伝送する更新プログラムΔ3の伝送を優先する。また、メインバスNW1と並列して伝送可能なメインバスNW2についてはメインバスNW1での更新プログラムの伝送と並行して更新プログラムΔ2を伝送するよう送信順序が決定される。これらは、
図8に示されたスケジューリング処理の第1の具体例でのスケジューリング処理と同じ思想に基づく。さらに、メインバスNW1については、更新プログラムΔ3の伝送と並行して更新プログラムΔ1を伝送するよう送信順序が決定される(B)。これは、メインバスNW1で更新プログラムΔ3を伝送する際に、ローカルバスNW3の伝送速度にあわせた伝送速度あるいは伝送タイミングとすることにより、伝送路であるメインバスNW1に生じた空き帯域を更新プログラムΔ1の伝送に用いるようにしたためである。この場合、更新プログラムΔ1の伝送には、更新プログラムΔ3がメインバスNW1で伝送される際のメインバスNW1の空き帯域が用いられる。つまり、メインバスNW1の伝送帯域を更新プログラムΔ1と更新プログラムΔ3とで共有することになる。そのため、通常であれば更新プログラムΔ1の伝送は30[s]で完了するところ、更新プログラムΔ3と共有によって伝送帯域が半減するために60[s]が必要となる。このようにすることで、同時更新所要時間のうちの伝送に要する時間を、複数の更新プログラムそれぞれの伝送に要する時間の合計よりも短くすることができ、その結果、同時更新所要時間を短くすることができる。
【0096】
同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図9の場合、CPU11がステップS8のスケジューリング処理を実行して
図10の(B)に表されたスケジュールを決定することによって、同時更新所要時間は270[s]から150[s]に大幅に短縮される。
【0097】
〔スケジューリング処理の具体例3〕
図11は、同時更新の必要性がある更新プログラムの第3の具体例を表した図である。
図11を参照して、第3の例において、第1の更新プログラムΔ1はECU_A用の更新プログラムであって、第1のメインバスNW1でECU_Aに伝送されて(第1のタスク)、ECU_Aにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Aで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、30[s]、20[s]および40[s]である。第2の更新プログラムΔ2はECU_B用の更新プログラムであって、第1のメインバスNW1でECU_Bに伝送されて(第1のタスク)、ECU_Bにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Bで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、10[s]、10[s]および20[s]である。第3の更新プログラムΔ3はECU_C用の更新プログラムであって、第1のメインバスNW1でECU_Cに伝送されて(第1のタスク)、ECU_Cにおいて更新ファイルのチェックが実行され(第2のタスク)、ECU_Cで制御プログラムが書き換えられる(第3のタスク)。第1時間〜第3時間は、20[s]、10[s]および50[s]である。すなわち、これら複数の更新プログラムΔ1〜Δ3は、すべて、第1のメインバスNW1に属するECU用であって、メインバスNW1のみで各ECUに伝送される。
【0098】
同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図11のものである場合、ゲートウェイ10のCPU11は、上記ステップS103でNOと判断するため、上記ステップS107,S109のいずれも前提とせずに予め規定されている各スケジューリング条件(条件A〜C)を用いたスケジューリング処理を実行する。
【0099】
図12は、ステップS8のスケジューリング処理を行わない場合の更新スケジュール(A)と、上記の条件A〜Cそれぞれに従ったスケジューリング処理を行った場合の更新スケジュール(B)〜(D)とを比較して示した図である。横軸は時間[s]を表して、(A)〜(D)の1ブロックが10[s]を表している。
【0100】
はじめに(A)を参照して、一例として、CPU11が、更新プログラムの順(Δ1→Δ2→Δ3)に1プログラムずつ更新処理が完了するように更新制御を行った場合、同時更新所要時間は各ECUでの更新所要時間を加えた時間、つまり、
図11に示された各タスクに要する時間を加えた時間である210[s]となる。
【0101】
これに対して、上記条件Aに従ってスケジューリング処理が実行されると、第3時間の長い順(Δ3→Δ1→Δ2)に、これら更新プログラムを連続してメインバスNW1で伝送するよう送信順序Aが決定される(B)。なお、上記条件Aを、「受信したECUでの処理時間が長い更新プログラムを優先してスケジューリングする」と解釈することもできる。受信したECUでの処理は、更新ファイルのチェック(第2のタスク)および制御プログラムの書き換え(第3のタスク)である。上記解釈を採用すると、送信順序Aは、これらタスクに要する時間である第2時間と第3時間との合計時間の長い順(Δ1→Δ3→Δ2)に決定されてもよい。この場合、他の更新プログラムが該当するECUにおいて更新ファイルのチェック(第2のタスク)および制御プログラムの書き換え(第3のタスク)が行われている間に並行してメインバスNW1で伝送されることになる。そして、条件Aの場合には、第3時間、または第2時間と第3時間との合計時間の長いものほど先に第2のタスクおよび第3のタスクが開始されることになるため、最後の更新プログラムを用いた制御プログラムの更新の完了が早くなる可能性が高い。
図12(B)の送信順序Aの場合、同時更新所要時間は110[s]となる。
【0102】
上記条件Bに従ってスケジューリング処理が実行されると、第1時間の短い順(Δ2→Δ3→Δ1)に、これら更新プログラムを連続してメインバスNW1で伝送するよう送信順序Bが決定される(C)。この場合もまた、他の更新プログラムが該当するECUにおいて更新ファイルのチェック(第2のタスク)および制御プログラムの書き換え(第3のタスク)が行われている間に並行してメインバスNW1で伝送されることになる。そして、条件Bの場合には、各更新プログラムについて、伝送(第1のタスク)の後に第2のタスクの開始を最も早くすることができる。
図12(C)の送信順序Bの場合、同時更新所要時間は120[s]となる。
【0103】
上記条件Cに従ってスケジューリング処理が実行されると、対応するECUの名前順(Δ1→Δ2→Δ3)に、これら更新プログラムを連続してメインバスNW1で伝送するよう送信順序Cが決定される(D)。この場合もまた、他の更新プログラムが該当するECUにおいて更新ファイルのチェック(第2のタスク)および制御プログラムの書き換え(第3のタスク)が行われている間に並行してメインバスNW1で伝送されることになる。
図12(D)の送信順序Cの場合、同時更新所要時間は120[s]となる。
【0104】
以上のスケジューリング処理の結果、同時更新の必要性がある複数の更新プログラムΔ1〜Δ3が
図11の場合、上記送信順序A〜Cのうちの同時更新所要時間が最も短くなるスケジュール条件は条件Aであるため、ゲートウェイ10はステップS8で
図12の(B)に表された送信順序Aを更新プログラムΔ1〜Δ3の送信順序として決定する。これによって、同時更新所要時間は210[s]から110[s]に大幅に短縮される。
【0105】
<第1の実施の形態の効果>
第1の実施の形態にかかるプログラム更新システムによれば、複数のECUそれぞれの制御プログラムを同時更新する場合に、更新プログラムを提供する車外装置であるDLサーバ6からECU30への更新プログラムの送信を中継する中継装置であるゲートウェイ10において、複数の更新プログラムの送信順序を決定するスケジューリング処理が実行される。
【0106】
同時更新する必要性がある複数の更新プログラムに、ゲートウェイ10に個別に接続された互いに独立する車載ネットワークそれぞれに属するECU用の更新プログラムが含まれる場合、ゲートウェイ10は、これら更新プログラムをメインバス(NW1,NW2)に並行して送信する。
【0107】
また、同一の車載ネットワークに属する複数のECU用の複数の更新プログラムが含まれる場合、ゲートウェイ10は、予め規定された所定の条件(複数のスケジューリング条件)それぞれに従ってスケジューリング処理を実行する。そして、その結果得られた複数の送信順序のうちの同時更新所要時間を最も短くする送信順序をこれら複数の更新プログラムの送信順序として決定する。たとえば、同一のメインバス(NW1)で伝送される更新プログラムが複数あり、かつ、その複数の更新プログラムにさらにローカルバスに分岐して伝送されるものが含まれる場合、ゲートウェイ10は、メインバスに属するECUに伝送する更新プログラムよりも、当該メインバスに属するECUを分岐ノードとしてローカルバスに属するECUに伝送する更新プログラムを優先的に送信する。このとき、ゲートウェイ10は、分岐ノードであるECUがバッファ機能を有するか否かに応じて、上記同一のメインバス(NW1)での更新プログラムの伝送を排他的とするか並列可能とするかのいずれかを前提とする。
これにより、同時更新所要時間を短くすることができる。
【0108】
同時更新する複数の制御プログラムの更新処理中は該当するすべてのECUがリプロモードとなり、すべての更新処理が完了して再起動されるまで通常モードに復帰しない。そのため、同時更新所要期間が長くなるほど、たとえば運転したいタイミングで運転できないなどユーザの不都合、不利益がより生じやすくなる。したがって、上記のようにゲートウェイ10においてスケジューリング処理が実行されて同時更新所要期間を最も早く終了させる送信順序が決定されることによって、ユーザに生じる不都合、不利益を抑えることができる。
【0109】
<第2の実施の形態>
なお、上記したスケジューリング処理は、DLサーバ6からECU30へ送信される更新プログラムを中継するいずれの中継装置で行われてもよい。たとえば、DLサーバ6からECU30へ送信される更新プログラムが、ゲートウェイ10に加えて、
図1に示されていないさらなる中継装置によって中継される場合、当該さらなる中継装置において上記のスケジューリング処理が実行されてもよい。または、ゲートウェイ10と当該さらなる中継装置との協働によってスケジューリング処理が実現されてもよい。
【0110】
また、
図5に表されたように、DLサーバ6からECU30へ更新プログラムが伝送される際に、管理サーバ5がゲートウェイ10にダウンロードを要求し(ステップS3)、当該要求に従ってゲートウェイ10がDLサーバ6に更新プログラムを要求することによって、DLサーバ6からゲートウェイ10に更新プログラムが送信される(ステップS4)。そして、管理サーバ5がゲートウェイ10に各ECU30での更新を要求し(ステップS6)、当該要求に従ってゲートウェイ10が各ECU30に更新を要求することによって、ゲートウェイ10からECU30に更新プログラムが伝送されて制御プログラムが更新される(ステップS7,9,11,13)。従って、この流れに従うと、管理サーバ5もDLサーバ6からECU30への更新プログラムの伝送を中継する中継装置の一部として機能していると言える。
【0111】
従って、上記したスケジューリング処理は、中継装置の一種と言える管理サーバ5において実行され、上記ステップS4で更新プログラムと共に決定された送信順序を示す情報がゲートウェイ10に送信されてもよい。あるいは、上記のように管理サーバ5とDLサーバ6とは同一のサーバ装置で実現されてもよいため、サーバ5,6の機能を有するサーバにおいてスケジューリング処理が実行されてもよい。この場合、上記のスケジューリング処理を実行するための機能であるスケジューリング部111および更新処理部112(
図2)は、管理サーバ5のCPU51がROM52に記憶されているプログラムをRAM53上に読み出して実行することによってCPU51によって実現される。すなわち、管理サーバ5は、更新プログラムまたは上記の更新プログラムに関する情報をDLサーバ6から得て、記憶部54に記憶する。管理サーバ5のスケジューリング部111は、記憶部54に記憶された更新プログラムに関する情報を用いてスケジューリング処理を行う。更新処理部112は、スケジューリング部111によって決定された送信順序をゲートウェイ10に渡してECU30での更新処理を要求する。ゲートウェイ10の更新処理部112は、管理サーバ5から渡された送信順序で更新プログラムを送信して各ECU30に更新処理を要求することによって、同時更新での更新処理を制御する。
【0112】
第2の実施の形態にかかるプログラム更新システムにおいても、同時更新の必要性がある更新プログラムが複数ある場合に同時更新所要時間を短くすることができる。これによりユーザに生じる不都合、不利益を抑えることができる。
【0113】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。