(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
<本開示が解決しようとする課題>
車両の高機能化に伴って、1つの機能または互いに関連する複数の機能を複数のECUが協働して実現する場合がある。この場合、複数のECUの制御プログラムを同じタイミングで更新する必要がある。しかしながら、特許文献1,2に開示されている技術では、複数のECUのそれぞれにおいて、制御プログラムの書き換えが完了したタイミングで制御プログラムを読み出すメモリ領域の切替が行われると、現バージョンの制御プログラムが実行されるECUと新バージョンの制御プログラムが実行されるECUとが混在する場合がある。各ECU間で制御プログラムのバージョンが一致しないと、対象の機能によっては当該機能が適切に実現されない可能性があるという課題がある。
【0012】
<本開示の効果>
本開示によれば、複数の車載装置において、プログラムのバージョンの不一致の発生を抑えることができる。
【0013】
<本発明の実施形態の概要>
以下、本発明の実施形態の概要を列記して説明する。
(1) 本実施形態に係る制御装置は、複数の車載装置それぞれに対して、プログラムの更新処理の開始を指示する制御装置であって、前記車載装置は、以下の第1の記憶領域と第2の記憶領域とを有し、前記更新処理は、前記第2の記憶領域において新バージョンのプログラムが書き込まれた後に、実行するプログラムの読出対象を示す情報を、前記第1の記憶領域を示す情報から前記第2の記憶領域を示す情報へ書き換える書換処理と、前記読出対象を、前記第1の記憶領域から前記第2の記憶領域へ切り替える切替処理と、を含み、前記制御装置は、前記複数の車載装置と通信する車内通信部を備え、前記車内通信部は、前記複数の車載装置における前記書換処理を所定の同期タイミングに開始させる開始指示を送信する。
第1の記憶領域:プログラムの現バージョンが記憶された記憶領域
第2の記憶領域:プログラムを新バージョンに書換可能な記憶領域
上記の開始指示によって、複数の車載装置での書換処理が同期タイミングに開始する。その結果、複数の車載装置において、記憶領域に書き込まれているプログラムのバージョンが不一致である期間を抑えることができる。このため、たとえ意図しないタイミングで車載装置において切替処理が実行された場合であっても、各車載装置のプログラムのバージョンが不一致となる可能性を抑えることができる。
【0014】
(2)好ましくは、前記制御装置は、前記車内通信部を制御する制御部をさらに備え、前記制御部は、前記開始指示の受信から前記同期タイミングまでの待機時間を前記車載装置ごとに算出し、前記開始指示は、宛先である前記車載装置に対して算出された前記待機時間を含む。
かかる開始指示を受信した車載装置は、待機時間、書換処理の開始を待機し、当該期間の経過後に書換処理を開始する。そのため、複数の車載装置で書換処理を同期タイミングに開始させることができる。
【0015】
(3)好ましくは、前記制御装置は、前記車内通信部を制御する制御部をさらに備え、
前記制御部は、前記開始指示の送信予定時刻から、前記車載装置が前記同期タイミングに受信するための前記開始指示を送信するまでの待機時間を前記車載装置ごとに算出し、前記車内通信部は、宛先である前記車載装置に対して算出された前記待機時間の経過後に前記開始指示を送信する。
当該開始指示を受信した車載装置は、当該開始指示を受信したタイミングで書換処理を開始するため、複数の車載装置で書換処理を同期タイミングに開始させることができる。また、このとき、車載装置では待機時間を計時するためのタイマを不要とすることができる。
【0016】
(4)好ましくは、制御部は、自装置と車載装置との間の通信遅延時間に基づいて待機時間を決定する。
このように同期タイミングが決定されることによって、複数の車載装置で書換処理を高精度で同期タイミングに開始させることができる。
【0017】
(5)好ましくは、制御部は、車載装置に対する開始指示の送信間隔を用いて待機時間を決定する。
このように同期タイミングが決定されることによって、複数の車載装置で書換処理をより高精度で同期タイミングに開始させることができる。
【0018】
(6)本実施の形態に含まれる制御方法は、(1)〜(5)のいずれか1つに記載の制御装置における、複数の車載装置それぞれに対して、プログラムの更新処理の開始を指示する方法である。
かかる制御方法は、上記(1)〜(5)の制御装置と同様の効果を奏する。
【0019】
(7)本実施の形態に含まれるコンピュータプログラムは、コンピュータを(1)〜(5)のいずれか1つに記載の制御装置として機能させる。
かかるコンピュータプログラムは、上記(1)〜(5)の制御装置と同様の効果を奏する。
【0020】
<本発明の実施形態の詳細>
以下、図面を参照しつつ、本発明の実施形態の詳細を説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。なお、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0021】
<第1の実施の形態>
[システムの全体構成]
図1は本実施の形態にかかるプログラム更新システムの全体構成および車両の構成を表した概略図である。
図1を参照して、プログラム更新システムは、インターネットなどの広域通信網2を介して通信可能な車両1およびサーバ5を含む。サーバ5は、車両1の更新情報を管理するとともに、更新用プログラムを保存する。サーバ5は、予め登録された多数の車両1と通信可能である。
【0022】
[車両構成]
図1を参照して、本実施の形態にかかる車両1は、車外装置と通信するための車外通信機15と、複数のECU(Electronic Control Unit)30A,30B,30C,…と、車外装置と複数のECU30A,30B,30C,…との通信を中継するECUである中継装置10と、を含む。ECU30A,30B,30C,…は車載装置の一例である。複数のECU30A,30B,30C,…を代表させてECU30とも称する。複数のECU30それぞれを区別するときには、ECU−1,ECU−2,ECU−3,…とも表現する。
【0023】
各ECU30は、中継装置10において終端する車内通信線16A,16Bによって接続されて、中継装置10とともに車内の通信システム4を構成する。複数の車内通信線16A,16Bを代表させて車内通信線16とも称する。通信システム4は、一例として、車内通信線16AにECU30A,30Bが接続され、車内通信線16BにECU30Cが接続される、バス型の通信システム(たとえば、CAN(Controller Area Network))よりなる。CANでは、通信フレームと呼ばれるフォーマットに情報を格納して送受信される。通信フレームは、ハイレベルまたはローレベルの2種類の信号の連続からなる。
【0024】
通信システム4は、CANだけでなく、LIN(Local Interconnect Network)、CANFD(CAN with Flexible Data Rate)、Ethernet(登録商標)、又はMOST(Media Oriented Systems Transport:MOSTは登録商標)などの通信規格を採用するネットワークであってもよい。
【0025】
ECU30は、たとえば、アクセル、ブレーキ、ハンドルの操作に対してエンジンやブレーキ、EPS(Electric Power Steering)等の制御を行うパワー・トレイン系ECU、スイッチ操作に応じて車内照明やヘッドライトの点灯/消灯と警報器の吹鳴等の制御を行うボディ系ECU、運転席近傍に配設されるメータ類の動作を制御するメータ系ECUなどである。
【0026】
中継装置10は、さらに、所定規格の通信線を介して車外通信機15と接続されている。または、中継装置10は、車外通信機15を搭載していてもよい。車外通信機15は、インターネット等の広域通信網2を介して、車外装置と無線通信する。車外装置は、たとえば、ECU30の更新用プログラムを保存するサーバ5である。または、車外通信機15は図示しないプラグを有し、当該プラグに接続された車外装置と有線にて通信してもよい。車外通信機15は、ユーザが所有する携帯電話機、スマートフォン、タブレット型端末、ノートPC(Personal Computer)等の装置であってもよい。
【0027】
中継装置10は、車外装置から車外通信機15が受信した情報をECU30に中継する。また、中継装置10は、ECU30から受信した情報を車外通信機15に中継する。車外通信機15は、中継された情報を車外装置に無線送信する。
【0028】
[中継装置の構成]
図2は、中継装置10の内部構成を示すブロック図である。
図を参照して、中継装置10は、制御部11、記憶部12、および車内通信部13などを備える。
【0029】
中継装置10の制御部11は、CPU(Central Processing Unit)を搭載したMCU(Micro Controller Unit)を含む。制御部11のCPUは、記憶部12に記憶された1または複数のプログラムを読み出して、各種処理を実行するための機能を有している。
制御部11のCPUは、たとえば時分割で複数のプログラムを切り替えて実行することにより、複数のプログラムを並列的に実行可能である。
【0030】
制御部11のCPUは、1または複数の大規模集積回路(LSI)を含む。複数のLSIを含むCPUでは、複数のLSIが協働して当該CPUの機能を実現する。
【0031】
制御部11のCPUが実行するコンピュータプログラムは、CD−ROMやDVD−ROMなどの記録媒体に記録した状態で譲渡することもできるし、サーバコンピュータなどのコンピュータ装置からのダウンロードによって譲渡することもできる。
【0032】
記憶部12は、フラッシュメモリ若しくはEEPROM(Electrically Erasable Programmable Read Only Memory)などの不揮発性のメモリ素子よりなる。
記憶部12は、制御部11のCPUが実行するプログラムまたは実行に必要なデータなどを記憶する記憶領域を有する。
【0033】
車内通信部13には車内通信線16が接続されている。車内通信部13は、CANなどの所定の通信規格に則って、ECU30と通信する通信装置よりなる。
車内通信部13は、制御部11のCPUから与えられた情報を所定のECU30宛てに送信し、ECU30が送信元の情報を制御部11のCPUに与える。
【0034】
車外通信機15は、アンテナと、アンテナからの無線信号の送受信を実行する通信回路とを含む無線通信機よりなる。車外通信機15は、携帯電話網等の広域通信網2に接続されることにより車外装置との通信が可能である。
車外通信機15は、図示しない基地局により形成される広域通信網2を介して、制御部11のCPUから与えられた情報をサーバ5等の車外装置に送信するとともに、車外装置から受信した情報を制御部11のCPUに与える。
【0035】
[ECUの構成]
図3は、ECU30の内部構成を示すブロック図である。
図3を参照して、ECU30は、制御部31、記憶部32、および車内通信部33などを備える。
【0036】
ECU30の制御部31は、CPUを搭載したMCUを含む。制御部31のMCUは、記憶部32に記憶された1または複数のプログラムを読み出して、各種処理を実行するための機能を有している。
制御部31のMCUは、たとえば時分割で複数のプログラムを切り替えて実行することにより、複数のプログラムを並列的に実行可能である。
【0037】
制御部31のMCUは、1または複数の大規模集積回路(LSI)を含む。複数のLSIを含むMCUでは、複数のLSIが協働して当該MCUの機能を実現する。
【0038】
制御部31のMCUが実行するコンピュータプログラムは、CD−ROMやDVD−ROMなどの記録媒体に記録した状態で譲渡することもできるし、サーバコンピュータなどのコンピュータ装置からのダウンロードによって譲渡することもできる。
【0039】
記憶部32は、フラッシュメモリ若しくはEEPROMなどの不揮発性のメモリ素子よりなる。
記憶部32は、制御部31のMCUが実行するプログラムおよび実行に必要なデータなどを記憶する記憶領域を有する。詳しくは、記憶部32は、制御部31のMCUが実行するコンピュータプログラムを記憶する領域として第1ファームウェア(FW)記憶領域321および第2FW記憶領域322と、MCUが実行する制御プログラムを記憶している記憶領域を記憶する領域として起動バージョン(Ver)記憶領域323と、を含む。
【0040】
車内通信部33には車内通信線16が接続されている。車内通信部33は、CANなどの所定の通信規格に則って、中継装置10および他のECU30と通信する通信装置よりなる。
車内通信部33は、制御部31のMCUから与えられた情報を所定のECUまたは中継装置10宛てに送信し、所定のECUまたは中継装置10が送信元の情報を制御部31のMCUに与える。
【0041】
[更新処理]
図4A〜
図4Cは、ECU30における制御プログラムの更新処理を、各記憶領域321,322,323の状態の遷移を用いて説明するための図である。第1FW記憶領域321および第2FW記憶領域322は制御プログラムを記憶する記憶領域であり、起動Ver記憶領域323は制御部31が実行する制御プログラムを読み出す記憶領域を特定する情報(以下、起動情報とも称する)を記憶する記憶領域である。
図4A〜
図4Cの例では、起動情報は、第1FW記憶領域321または第2FW記憶領域322を示す情報(記憶領域情報(<1>または<2>))、および、制御プログラムのバージョン情報である。起動情報は、記憶領域情報とバージョン情報とのいずれか一方であってもよい。
【0042】
更新処理は、記憶部32に含まれる第1FW記憶領域321と第2FW記憶領域322とのうちの、更新前(現バージョン)の制御プログラムが書き込まれている記憶領域ではない方の記憶領域に更新後(新バージョン)の制御プログラムを書き込む処理(書込処理)と、制御部31が実行する制御プログラムの読出対象(第1FW記憶領域321または第2FW記憶領域322)を示す情報を新バージョンが書き込まれた記憶領域を示す情報に書き換える処理(書換処理)と、第1FW記憶領域321と第2FW記憶領域322との間で読出対象を切り替える処理(切替処理)と、を含む。切替処理の際にはECU30がリセットされる。
【0043】
図4A〜
図4Cは更新処理の流れに沿って各記憶領域321,322,323の状態の遷移を示しており、
図4Aは書込処理および書換処理の前、
図4Bは書込処理および書換処理の後、かつ、切替処理の前、ならびに、
図4Cは切替処理の後を示している。
【0044】
本例において、書込処理および書換処理の前は、
図4Aを参照して、制御プログラムの現バージョンはバージョン2(V2)であり、当該制御プログラムは第1FW記憶領域321に書き込まれている。この場合、起動Ver記憶領域323には、起動情報として、第1FW記憶領域321を特定する情報<1>と制御プログラムの現バージョンV2とが記憶されている。第1FW記憶領域321および第2FW記憶領域322のうち、第1FW記憶領域321が現バージョンの制御プログラムを記憶する記憶領域(第1の記憶領域)であり、第2FW記憶領域322が新バージョンに書換可能な記憶領域(第2の記憶領域)である。
【0045】
制御部31は、起動Ver記憶領域323に記憶されている起動情報に従って第1FW記憶領域321から制御プログラムを読み出して実行する。そのため、当該ECU30ではバージョン2(V2)の制御プログラムが実行されている。
【0046】
書込処理および書換処理の後、かつ、切替処理の前は、
図4Bを参照して、第2FW記憶領域322に新バージョンであるバージョン3(V3)の制御プログラムが書き込まれるとともに、起動Ver記憶領域323の起動情報が、第2FW記憶領域322を特定する情報<2>および制御プログラムの新バージョンV3に書き換えられる。書込処理は、書換処理前の制御部31が現バージョンの制御プログラムの実行中に行われるため、
図4Bの段階では、制御部31は、起動Ver記憶領域323に記憶されていた起動情報に従って第1FW記憶領域321から制御プログラムを読み出して実行している。そのため、当該ECU30ではバージョン2(V2)の制御プログラムが実行されている。
【0047】
切替処理では、書込処理の後の書換処理によって起動Ver記憶領域323が書き換えられたことに従ってECU30がリセットし、再起動後に上記第1の記憶領域と第2の記憶領域とが切り替わる。すなわち、第2FW記憶領域322が第1の記憶領域となり、第1FW記憶領域321が第2の記憶領域となる。
【0048】
切替処理の後、
図4Cを参照して、制御部31は、書換処理によって書き換えられた起動Ver記憶領域323に記憶されている起動情報に従って第2FW記憶領域322から制御プログラムを読み出して実行する。そのため、当該ECU30ではバージョン3(V3)の制御プログラムが実行されている。
【0049】
[更新制御処理]
本実施の形態にかかるプログラム更新システムでは、広域通信網2を介してサーバ5から更新用プログラムが中継装置10にダウンロードされ、中継装置10からの指示に従ってECU30で更新処理が実行される。以降の説明において、複数のECU30のうち、制御プログラムの更新を行うECUを対象ECUという。
【0050】
複数のECU30の中には各制御プログラムのバージョンが規定の組合せであることが要求される複数のECUが含まれる。これら複数のECUを、以降の説明ではECUグループとも称する。ECUグループは、たとえば、ある1つの機能を実現するための複数の機構それぞれを制御するECU群である。
【0051】
ECUグループでは、各制御プログラムのバージョンを上記規定の組合せである状態を維持するために、制御プログラムの更新処理を同時に実行する必要がある。更新処理は、切替処理によって各対象ECUが新バージョンの制御プログラムで起動すると完了する。同時に更新処理を実行することは、同時に切替処理を実行することを指す。同時に切替処理が完了することで、ECUグループ内で制御プログラムのバージョンが上記の規定の組合せに維持される。
【0052】
しかしながら、ECU30では予期しないタイミングで制御部11のCPUがリセットすることがある。リセットされたタイミングにECUグループ内で更新処理が完了していない場合、ECUグループ内で制御プログラムのバージョンが上記規定の組合せと一致しない場合が生じる。
【0053】
そこで、本実施の形態にかかる中継装置10は更新制御装置として機能して、ECUグループで更新処理を実行する際に更新制御処理を実行する。更新制御処理は、書換処理の開始を所定の同期タイミングに同期(一致)させるように、各対象ECUでの更新処理の開始を指示する処理である。なお、ここでの同期(一致)は、各対象ECUでの更新処理の開始時を完全に一致させることの他、一致しないまでも極めて短い期間に属することを含む。つまり、同期タイミングは完全な一点の時刻のみならず、極めて短い期間に属する時刻も含む。
【0054】
更新処理の制御は、複数の対象ECUで更新処理を同時に開始するタイミング(以下、同期タイミングとも言う)とするための各対象ECUの後述する待機時間を決定する処理(決定処理)、および、各対象ECUでの書換処理の開始を同期タイミングに同期させる指示(書換指示)を生成し、各対象ECUに更新用プログラムとともに更新処理の実行を指示する処理(指示処理)を含む。更新制御処理を実行するための機能として、制御部11は、決定処理を実行する決定部111と、指示処理を実行する指示部112とを含む。指示部112は、書換指示を生成する生成部113と、書換指示を車内通信部13に出力させる出力部114と、を含む。これらの機能は、制御部11のCPUが記憶部12に記憶されているプログラムを読み出して実行することによって実現される。
【0055】
待機時間は、中継装置10からの書換指示の受信時から書換処理の開始時までの期間を指し、中継装置10と各対象ECUとの間の通信遅延時間を用いて決定される。決定部111は、遅延時間情報Dに基づいて、各対象ECUの待機時間を決定する。遅延時間情報Dは、各ECU30の通信遅延時間DLを記憶した情報である。決定部111は、遅延時間情報Dを予め記憶しておく。
【0056】
ECU30までの通信遅延時間DLは、一例として、当該ECU30への計測用メッセージ(リクエスト)送信時刻P1、当該ECU30での受信時刻P2、中継装置10へのレスポンスの送信時刻P3、および、当該ECU30からのレスポンスの受信時刻P4から、下の式によって算出される。
DL=((P2−P1)+(P4−P3))/2
【0057】
決定部111は、予め各ECU30の通信遅延時間を測定して記憶しておいてもよいし、通信状況が変化するたびに測定して遅延時間情報Dを更新してもよい。また、決定部111は、各ECU30の通信遅延時間を複数回測定し、その平均値や中央値などの統計値を遅延時間情報Dとして用いてもよい。
【0058】
指示部112は、各対象ECUに更新用プログラムを渡して書換処理の開始を指示(書換指示)するとともに、当該対象ECUについて決定された待機時間、書換処理の開始の待機を指示する。そのために、生成部112は、対象ECUの更新用プログラムと、当該対象ECUに対する書換命令と、当該対象ECUの待機時間と、を含む通信フレーム(制御フレーム)を生成する。更新用プログラムと書換命令および待機時間とは、異なる通信フレームであってもよい。
【0059】
出力部114は、通信フレームを車内通信部13に渡して送信を指示する。また、指示部112は、各対象ECUに対して切替処理の実行を指示(切替指示)する。
【0060】
ECU30の制御部31は、更新処理を実行する機能である更新処理部311を有する(
図3)。更新処理部311は、中継装置10から更新用プログラムとともに書換指示を受信すると、当該指示に従って書換処理を実行する。このとき、書換指示である通信フレームに待機時間が含まれる場合、更新処理部311は、書換指示を受信すると所定のタイミングで書込処理を実行しておき、その後、待機時間経過するまで書換処理を開始せず待機する。待機時間経過すると書換処理を開始する。また、更新処理部311は、中継装置10から切替指示を受信すると当該指示に従って切替処理を実行する。
【0061】
図5は、決定部111での待機時間の決定方法の一例を説明するための図である。
図5は、中継装置10が、ECU30A,30B,30Cの順で書換指示を送信する場合の、ECU30A,30B,30Cそれぞれの待機時間dA,dB,dCの決定方法を説明するための図である。通信プロトコルによっては、すべての対象ECUに対して書換指示をブロードキャストで送信することができない場合がある。この場合、中継装置10は、時刻T1にECU30Aに対する書換指示を送信し、時刻T1から時間間隔t1の経過後にECU30Bに対する書換指示を送信し、さらに、時間間隔t2の経過後にECU30Cに対する書換指示を送信するものとする。
【0062】
なお、最後に書換指示を送信するECU30Cでの待機時間dCは任意に決定される。待機時間dCは0であってもよい。この場合、中継装置10はECU30Cに対して待機時間dC=0での待機を指示する。中継装置10から待機時間dCが指示されたECU30Cでは、中継装置10からの書換指示を受信すると直ちに書込処理を実行し、書換指示を受信した時刻から待機時間dC経過後の時刻T2に書換処理が開始される。
【0063】
ECU30C以外の対象ECU30A,30Bに対しては、書換処理の開始時刻がECU30Cでの書換処理の開始時刻と同一の時刻T2となるように、それぞれの待機時間dA,dBが決定される。すなわち、時刻T2が同期タイミングとして、各対象ECUの書換処理の開始を同期するように、待機時間dA,dBが決定される。
【0064】
図5を参照して、各ECUの待機時間を用いて時刻T2を表すと、下の式(1)〜(3)となる。
T2=T1+da+dA …(1)
T2=T1+t1+db+dB …(2)
T2=T1+t1+t2+dc+dC …(3)
【0065】
dCは任意に決定される定数であるため、式(1),(2)に式(3)を代入することで、ECU30A,30Bの待機時間dA,dBは、下の式(4),(5)で表される。
dA=t1+t2+dc+dC−da …(4)
dB=t2+dc+dC−db …(5)
【0066】
中継装置10から待機時間dAが指示されたECU30Aは、中継装置10からの書換指示を受信すると直ちに書込処理を実行し、書換指示を受信した時刻から待機時間dA経過後である時刻T2に書換処理を開始する。また、中継装置10から待機時間dBが指示されたECU30Bは中継装置10からの書換指示を受信すると直ちに書込処理を実行し、書換指示を受信した時刻から待機時間dB経過後である時刻T2に書換処理を開始する。
【0067】
図6は、第1の実施の形態にかかるプログラム更新システムにおける制御プログラムの更新処理において中継装置10で実行される更新制御処理の流れを示すシーケンス図である。
図6を参照して、中継装置10は、サーバ5から新バージョンの制御プログラムの更新用プログラム(ファームウェア)を受信すると(ステップS1)、更新制御処理を開始する。そして、中継装置10の制御部11は、待機時間を決定する決定処理を実行する(ステップS2)。
【0068】
一例として、複数の対象ECUはECU30A,30B,30Cであり、制御部11は、その順で書換指示を出力する。この場合、ステップS2で中継装置10の制御部11は、
図5に示された方法でECU30A,30B,30Cの待機時間dA,dB,dCを決定する。
【0069】
ステップS2で待機時間dA,dB,dCを決定すると、中継装置10の制御部11は、書換指示を生成し、予め規定している時間間隔t1,t2でECU30A,30B,30Cに順に、車内通信部13に書換指示を送信させる(ステップS3A,S3B,S3C)。このとき、制御部11は、車内通信部13に、各対象ECUに対して、該当する更新用プログラムおよび書換命令とともに、該当する待機時間dA,dB,dCを含む通信フレームを送信させる。
【0070】
中継装置10からステップS3Aで送信された書換指示を受け取ったECU30Aは所定のタイミングで書込処理を実行し、当該書換指示の受信時刻から待機時間dAの経過後に書換処理を実行する(ステップS4A)。中継装置10からステップS3Bで送信された書換指示を受け取ったECU30Bは所定のタイミングで書込処理を実行し、当該書換指示の受信時刻から待機時間dBの経過後に書換処理を実行する(ステップS4B)。中継装置10からステップS3Cで送信された書換指示を受け取ったECU30Cは所定のタイミングで書込処理を実行し、当該書換指示の受信時刻から待機時間dCの経過後に書換処理を実行する(ステップS4C)。各対象ECUは、書換処理が完了すると中継装置10に完了を通知する。
【0071】
各対象ECUでの書換処理が完了すると、中継装置10は、各対象ECUに対して切替指示を送信し、切替処理の開始を指示する(ステップS5)。中継装置10からステップS5で切替指示を受け取った各ECU30A,30B,30Cは、一斉に切替処理を実行する(ステップS6A,S6B,S6)。これにより、複数のECU30A,30B,30CからなるECUグループは、同時に新バージョンの制御プログラムで起動する。
【0072】
[第1の実施の形態の効果]
本実施の形態では、上記の更新制御処理が実行されることによって、ECUグループの各ECUは中継装置10から指示された待機時間の後に書換処理を実行する。そのため、ECUグループの各ECUでの書換処理が、所定の同期タイミングで開始する。書換処理は起動Ver記憶領域323に記憶されている読出対象を示す情報を書き換える処理であって、極めて短時間の処理であるため、ECUグループで概ね同期したタイミングで書換処理が完了する。そのため、本実施の形態にかかるプログラム更新システムでは、ECUグループ内で記憶領域に書き込まれた読出対象の記憶領域に書き込まれている制御プログラムのバージョンが一致していない期間を抑えることができる。
【0073】
これに対して、
図7は、上記の更新制御処理を実行しない比較例にかかるプログラム更新システムでの制御プログラムの更新処理の流れを表わしたシーケンス図である。本実施の形態での更新制御処理の効果を、
図7の更新処理の流れと比較して説明する。
図7を参照して、比較例にかかるプログラム更新システムでは、中継装置10がステップS1でサーバ5から新バージョンの制御プログラムの更新用プログラム(ファームウェア)を受信すると、各対象ECU30A,30B,30Cに対して更新用プログラムを渡すとともに書換指示を送信する(ステップS31,S31B,S31C)。中継装置10から書換指示を受け取った対象ECUは、直ちに書込処理および書換処理を実行する(ステップS41A,S41B,S41C)。
【0074】
中継装置10から各対象ECUまでには通信遅延時間が発生するため、書換指示はすべての対象ECUにおいて同時には受信されない。また、上記のように、通信プロトコルによっては書換指示をブロードキャストで送信せずに、所定の時間間隔で順次対象ECUに送信する。そのため、比較例にかかるプログラム更新システムでは、書換処理の実行を開始するタイミングが対象ECUごとに異なる。
【0075】
図7の例では、ECU30Aで最初に書換処理が実行され(ステップS41A)、ECU30Cで最後に書換処理が実行される(ステップS41C)。そのため、ECU30Aで書換処理が完了してからECU30Cで書換処理が完了するまでの期間Pにおいては、各対象ECU30A,30B,30Cの記憶領域に書き込まれた読出対象の記憶領域に書き込まれている制御プログラムのバージョンが異なる。
【0076】
対象ECUでは、ステップS5での中継装置10からの切替指示に従って切替処理が実行され、新バージョンの制御プログラムで各対象ECUが起動する。しかしながら、中継装置10からの切替指示と関わらず、意図しないタイミングでECU30がリセットする場合がある。
図7に示された比較例にかかるプログラム更新システムにおいて、上記の期間Pでいずれかの対象ECUが意図せずリセットしてしまった場合、ECUグループ内で読出対象の記憶領域に書き込まれている制御プログラムのバージョンの不一致が生じる。この不一致は、期間Pが長いほど生じる可能性が高くなる。
【0077】
一方、
図6に示された本実施の形態にかかるプログラム更新システムでは、中継装置10が更新制御処理を実行することによって、各ECUの記憶領域に書き込まれた読出対象の記憶領域に書き込まれている制御プログラムのバージョンが一致していない期間を抑えることができる。そのため、いずれかのECU30が意図しないタイミングでリセットすることによってECUグループ内で制御プログラムのバージョンの不一致が生じる可能性が大幅に抑えられる。
【0078】
<第2の実施の形態>
他の例として、中継装置10は、決定処理を実行して対象ECUごとに待機時間を決定すると、対象ECUごとに、送信の時間間隔t1またはt2に加えて当該待機時間を待機してから書換指示を送信してもよい。つまり、中継装置10側で、決定した待機時間、書換指示の送信を待機してもよい。この場合、書換指示には待機時間が含まれず、対象ECUは中継装置10から書換指示を受信すると直ちに書換処理を開始する。なお、この例では、好ましくは、中継装置10は書換指示に先だって書込処理の実行を各対象ECUに指示しておく。そのため、中継装置10からの書換指示を受信した対象ECUでは、直ちに書換処理が開始される。
【0079】
図8は、第2の実施の形態にかかるプログラム更新システムにおける制御プログラムの更新処理において中継装置10で実行される更新制御処理の流れを示すシーケンス図である。第2の実施の形態にかかるプログラム更新システムでは、各対象ECUが中継装置10から書換指示を所定の同期タイミングに受信させる。
【0080】
図8を参照して、第2の実施の形態にかかるプログラム更新システムでも、中継装置10の制御部11は
図5に示された方法で待機時間を決定する決定処理を実行して(ステップS2)、ECU30A,30B,30Cの待機時間dA,dB,dCを決定する。
【0081】
ステップS2で待機時間dA,dB,dCが決定されると、中継装置10の制御部11は、更新用プログラムを含む書換指示を生成し、車内通信部13にECU30A,30B,30Cに書換指示を送信する(ステップS32A,S32B,S32C)。第2の実施の形態において制御部11は、待機時間dA,dB,dCを含まない通信フレーム(制御フレーム)を生成する。第2の実施の形態において制御部11は、予め規定している時間間隔t1,t2に待機時間dA,dB,dCを加えた送信タイミングで、車内通信部13にECU30A,30B,30Cに対して書換指示を送信させる。
【0082】
詳しくは、中継装置10は、対象ECU30Aに対しては、書換指示を送信する予定時刻T1(
図5参照)に対して待機時間dA経過後に書換指示を送信する。ECU30Aは、中継装置10の送信時から遅延時間da分、遅れた時刻T2に書換指示を受信し(
図5参照)、時刻T2に書換処理を開始する(ステップS4A)。
【0083】
対象ECU30Bに対しては、書換指示を送信する予定時刻(ECU30Aに書換指示を送信する予定時刻T1から間隔t1後(=時刻(T1+t1)))に対して待機時間dB経過後に書換指示を送信する。ECU30Bは、中継装置10の送信時から遅延時間db分、遅れた時刻T2に書換指示を受信し(
図5参照)、時刻T2に書換処理を開始する(ステップS4B)。
【0084】
対象ECU30Cに対しては、書換指示を送信する予定時刻(ECU30Bに書換指示を送信する予定時刻(T1+t1)から間隔t2後(=時刻(T1+t1+t2)))に対して待機時間dC経過後に書換指示を送信する。ECU30Cは、中継装置10の送信時から遅延時間dc分、遅れた時刻T2に書換指示を受信し(
図5参照)、時刻T2に書換処理を開始する(ステップS4C)。
【0085】
これにより、複数の対象ECUでの書換処理は同期タイミングである時刻T2に開始する。それにより、第1の実施の形態にかかるプログラム更新システムと同様にECUグループ内で、記憶領域に書き込まれている制御プログラムのバージョンが一致していない期間を抑えることができる。
【0086】
第2の実施の形態では、中継装置10側で待機時間を待機してから書換指示を送信する構成とすることによって、各ECUは、待機時間の経過を計時する必要がなく、待機時間の経過を計時するためのタイマを不要とすることができる。
【0087】
<第3の実施の形態>
更新制御装置は中継装置10に限定されず、他の車載装置であってもよい。たとえば、いずれかのECUであってもよい。
【0088】
開示された特徴は、1つ以上のモジュールによって実現される。たとえば、当該特徴は、回路素子その他のハードウェアモジュールによって、当該特徴を実現する処理を規定したソフトウェアモジュールによって、または、ハードウェアモジュールとソフトウェアモジュールとの組み合わせによって実現され得る。
【0089】
上述の動作をコンピュータに実行させるための、1つ以上のソフトウェアモジュールの組み合わせであるプログラムとして提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk-Read Only Memory)、ROM、RAMおよびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【0090】
なお、本開示にかかるプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本開示にかかるプログラムに含まれ得る。
【0091】
また、本開示にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本開示にかかるプログラムに含まれ得る。提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【0092】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
制御装置は、複数の車載装置それぞれに対して、プログラムの更新処理の開始を指示する制御装置であって、前記車載装置は、以下の第1の記憶領域と第2の記憶領域とを有し、前記更新処理は、前記第2の記憶領域において新バージョンのプログラムが書き込まれた後に、実行するプログラムの読出対象を示す情報を、前記第1の記憶領域を示す情報から前記第2の記憶領域を示す情報へ書き換える書換処理と、前記読出対象を、前記第1の記憶領域から前記第2の記憶領域へ切り替える切替処理と、を含み、前記制御装置は、前記複数の車載装置と通信する車内通信部を備え、前記車内通信部は、前記複数の車載装置における前記書換処理を所定の同期タイミングに開始させる開始指示を送信する。