(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023152495
(43)【公開日】2023-10-17
(54)【発明の名称】車載装置、コンピュータプログラム及びプログラム更新方法
(51)【国際特許分類】
G06F 8/65 20180101AFI20231010BHJP
B60R 16/02 20060101ALI20231010BHJP
【FI】
G06F8/65
B60R16/02 660U
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022062541
(22)【出願日】2022-04-04
(71)【出願人】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(71)【出願人】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(71)【出願人】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】古戸 健
(72)【発明者】
【氏名】立石 博志
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB06
5B376AB43
5B376CA05
5B376CA07
5B376CA40
5B376CA52
5B376CA64
5B376CA76
5B376FA11
5B376GA07
5B376GA08
(57)【要約】
【課題】プログラムの更新処理後、中継装置によって接続されたバス間の通信ができなくなることを防止できる車載装置、コンピュータプログラム及びプログラム更新方法を提供する。
【解決手段】バス間通信の中継を行う第1GWに接続された第1バスに接続され、車外から更新用プログラムを取得し、前記第1GW及び車載ECUのプログラムの更新を行う車載装置であって、更新対象が前記第1GW及び前記第1GWに接続された第2バスの車載ECUを含む場合、前記第1GWの更新を優先して行う制御部を備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置であって、
更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う制御部を備える
車載装置。
【請求項2】
更新対象が、前記中継装置及び前記第2バスの車載ECUと、前記第1バスの車載ECUとを含む場合、前記制御部は前記中継装置及び前記第1バスの車載ECUの更新を優先して行う
請求項1に記載の車載装置。
【請求項3】
前記中継装置にて前記更新用プログラムを適用させるアクティベート処理が実行された後、前記中継装置の異常検出を行う異常検出部を備える
請求項2に記載の車載装置。
【請求項4】
異常が検出されなかった場合、前記制御部は前記第2バスの車載ECUの更新を行う
請求項3に記載の車載装置。
【請求項5】
前記第2バスに接続された他の中継装置と、前記他の中継装置に接続された第3バスの車載ECUとが更新対象に更に含まれる場合、
前記制御部は、
前記第2バスの車載ECUと前記他の中継装置との更新を共に行い、
前記他の中継装置の更新後、前記第3バスの車載ECUの更新処理を行う
請求項2から4のいずれか一項に記載の車載装置。
【請求項6】
異常が検出された場合、前記制御部は、更新後のプログラムを更新前のプログラムに戻すロールバック処理を、前記中継装置及び前記第1バスの車載ECUに対し優先して行う
請求項3に記載の車載装置。
【請求項7】
前記制御部は、
前記中継装置に対する前記ロールバック処理の実施後、前記第2バスの車載ECUに対し前記ロールバック処理を行う
請求項6に記載の車載装置。
【請求項8】
前記第2バスに接続された他の中継装置と、前記他の中継装置に接続された第3バスの車載ECUとで更に更新が行われた場合、
前記制御部は、
前記第2バスの車載ECUと前記他の中継装置に対するロールバック処理を共に行い、
前記他の中継装置のロールバック処理後、前記第3バスの車載ECUに対するロールバック処理を行う
請求項7に記載の車載装置。
【請求項9】
バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置のコンピュータに、
更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う
処理を実行させるコンピュータプログラム。
【請求項10】
バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置に、
更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う
処理を実行させるプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載装置、コンピュータプログラム及びプログラム更新方法に関する。
【背景技術】
【0002】
車両には、エンジン制御等の駆動制御系、エアコン制御等のボディ系等の車載機器を制御するためのECU(Electronic Control Unit)が搭載されている。ECUは、MPU等の演算処理部、例えばEEPROM等の書き換え可能な不揮発性の記憶部、及び他のECUと通信するための通信部を含み、記憶部に記憶した制御プログラムを読み込んで実行することにより、車載機器の制御を行う。更に車両には、無線通信の機能を備えた通信機が実装されており、通信機を介して、車外のネットワークに接続されているプログラム提供装置と通信し、当該プログラム提供装置からECUの制御プログラムをダウンロード(受信)し、当該ECUの制御プログラムを更新することができる(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
2つのバスが中継装置に接続されており、制御プログラムの更新対象に、前記中継装置と、前記2つのバスに接続された装置が含まれる場合が想定される。斯かる場合、中継装置の更新が正しく行われていない等の異常が発生した場合は、更新後、2つのバス間の通信ができなくなるおそれがある。
【0005】
しかしながら、特許文献1の通信機は、上述のような問題に対して何ら検討されておらず、解決できない。
【0006】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、プログラムの更新処理後、中継装置によって接続されたバス間の通信ができなくなることを防止できる車載装置、コンピュータプログラム及びプログラム更新方法を提供することにある。
【課題を解決するための手段】
【0007】
本開示の実施形態に係る車載装置は、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置であって、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う制御部を備える。
【0008】
本開示の実施形態に係るコンピュータプログラムは、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置のコンピュータに、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う処理を実行させる。
【0009】
本開示の実施形態に係るプログラム更新方法は、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置に、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う処理を実行させる。
【発明の効果】
【0010】
本開示によれば、プログラムの更新処理後、中継装置によって接続されたバス間の通信ができなくなることを防止できる。
【図面の簡単な説明】
【0011】
【
図1】実施形態1に係る車載更新システムの構成を示す模式図である。
【
図3】車載装置、更新対象の装置(第1GW及び車載ECU)等による処理の流れ(シーケンス)の一例を例示する説明図である。
【
図4】プログラムの更新処理における車載装置、第1GW及び更新対象の車載ECUの状態遷移を例示する説明図である。
【
図5】ロールバック処理における車載装置、第1GW及び更新対象の車載ECUの状態遷移を例示する説明図である。
【
図6】車載装置の制御部の処理の一例を例示するフローチャートである。
【
図7】車載装置、更新対象の装置(第1GW及び車載ECU)等による処理の流れ(シーケンス)の他例を例示する説明図である。
【
図8】プログラムの更新処理における車載装置、第1GW及び更新対象の車載ECUの状態遷移を例示する説明図である。
【
図9】ロールバック処理における車載装置、第1GW及び更新対象の車載ECUの状態遷移を例示する説明図である。
【
図10】車載装置の制御部の処理の他例を例示するフローチャートである。
【
図11】変形例1にてプログラムの更新処理における各装置の状態遷移を例示する説明図である。
【
図12】変形例1にてロールバック処理における各装置の状態遷移を例示する説明図である。
【
図13】変形例2に係る車載更新システムが仮想ネットワークを含む場合の構成を例示する例示図である。
【発明を実施するための形態】
【0012】
[本発明の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0013】
(1)本開示の実施形態に係る車載装置は、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置であって、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う制御部を備える。
【0014】
本実施形態にあっては、更新対象が前記中継装置及び前記第2バスの車載ECUを含む場合、前記制御部が前記中継装置の更新を優先して行い、前記中継装置の正常状態を担保したうえ更新の処理を継続する。従って、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0015】
(2)本開示の実施形態に係る車載装置は、更新対象が、前記中継装置及び前記第2バスの車載ECUと、前記第1バスの車載ECUとを含む場合、前記制御部は前記中継装置及び前記第1バスの車載ECUの更新を優先して行う。
【0016】
本実施形態にあっては、更新対象が、前記中継装置及び前記第2バスの車載ECUに加え、前記第1バスの車載ECUを含む場合、前記制御部が前記中継装置及び前記第1バスの車載ECUの更新を優先して行い、前記中継装置の正常状態を担保したうえ更新の処理を継続する。従って、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0017】
(3)本開示の実施形態に係る車載装置は、前記中継装置にて前記更新用プログラムを適用させるアクティベート処理が実行された後、前記中継装置の異常検出を行う異常検出部を備える。
【0018】
本実施形態にあっては、前記中継装置にてアクティベート処理が実行された後、前記異常検出部が前記中継装置の異常検出を行い、正常であることを確認する。このように、前記中継装置の正常状態を担保したうえ処理が継続されるので、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0019】
(4)本開示の実施形態に係る車載装置は、異常が検出されなかった場合、前記制御部は前記第2バスの車載ECUの更新を行う。
【0020】
本実施形態にあっては、前記中継装置にてアクティベート処理が実行された後、前記異常検出部が前記中継装置の異常検出を行い、異常が検出されなかったことを確認したうえ、前記第2バスの車載ECUに対する更新を続ける。このように、前記中継装置の正常状態を担保したうえ実行されるので、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0021】
(5)本開示の実施形態に係る車載装置は、前記第2バスに接続された他の中継装置と、前記他の中継装置に接続された第3バスの車載ECUとが更新対象に更に含まれる場合、前記制御部は、前記第2バスの車載ECUと前記他の中継装置との更新を共に行い、前記他の中継装置の更新後、前記第3バスの車載ECUの更新処理を行う。
【0022】
本実施形態にあっては、更新対象が、前記中継装置と、前記第1バスの車載ECUと、前記第2バスの車載ECUと、前記他の中継装置と、前記第3バスの車載ECUとを含む場合、前記制御部は前記第2バスの車載ECUと前記他の中継装置との更新を共に行って前記他の中継装置の正常状態を担保したうえで前記第3バスの車載ECUの更新の処理を継続する。従って、前記第3バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0023】
(6)本開示の実施形態に係る車載装置は、異常が検出された場合、前記制御部は、更新後のプログラムを更新前のプログラムに戻すロールバック処理を、前記中継装置及び前記第1バスの車載ECUに対し優先して行う。
【0024】
本実施形態にあっては、更新後に異常が検出された場合、前記制御部は、前記中継装置及び前記第1バスの車載ECUに対し優先的にロールバック処理を実行させる。これによって、元プログラムの実行環境での前記中継装置の正常状態が確保された後、ロールバック処理が継続される。このように、前記中継装置の正常状態を担保したうえ実行されるので、前記第2バスの車載ECUに対するロールバック処理を的確に実行できる。
【0025】
(7)本開示の実施形態に係る車載装置は、前記制御部は、前記中継装置に対する前記ロールバック処理の実施後、前記第2バスの車載ECUに対し前記ロールバック処理を行う。
【0026】
本実施形態にあっては、前記制御部は、前記中継装置に対してロールバック処理を実行させて、元プログラムの実行環境での前記中継装置の正常状態が確保された後、前記第2バスの車載ECUに対してロールバック処理を実行させる。このように、前記中継装置の正常状態を担保したうえ実行されるので、前記第2バスの車載ECUに対するロールバック処理を的確に実行できる。
【0027】
(8)本開示の実施形態に係る車載装置は、前記第2バスに接続された他の中継装置と、前記他の中継装置に接続された第3バスの車載ECUとで更に更新が行われた場合、前記制御部は、前記第2バスの車載ECUと前記他の中継装置に対するロールバック処理を共に行い、前記他の中継装置のロールバック処理後、前記第3バスの車載ECUに対するロールバック処理を行う。
【0028】
本実施形態にあっては、前記中継装置、前記第1バスの車載ECU、及び、前記第2バスの車載ECUに加え、前記他の中継装置と、前記第3バスの車載ECUとが更新された場合、前記制御部は前記第2バスの車載ECUと前記他の中継装置とのロールバック処理を共に行って前記他の中継装置の正常状態を担保したうえで前記第3バスの車載ECUのロールバック処理を継続する。従って、前記第3バスの車載ECUに対するロールバック処理を的確に実行できる。
【0029】
(9)本開示の実施形態に係るコンピュータプログラムは、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置のコンピュータに、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う処理を実行させる。
【0030】
本実施形態にあっては、更新対象が前記中継装置及び前記第2バスの車載ECUを含む場合、前記車載装置のコンピュータが、前記中継装置の更新を優先して行い、前記中継装置の正常状態を担保したうえ更新の処理を継続する。従って、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0031】
(10)本開示の実施形態に係るプログラム更新方法は、バス間通信の中継を行う中継装置に接続された第1バスに接続され、車外から更新用プログラムを取得し、前記中継装置及び車載ECUのプログラムの更新を行う車載装置に、更新対象が前記中継装置及び前記中継装置に接続された第2バスの車載ECUを含む場合、前記中継装置の更新を優先して行う処理を実行させる。
【0032】
本実施形態にあっては、更新対象が前記中継装置及び前記第2バスの車載ECUを含む場合、前記車載装置が、前記中継装置の更新を優先して行い、前記中継装置の正常状態を担保したうえ更新の処理を継続する。従って、前記第2バスの車載ECUに対するプログラムの更新を的確に実行できる。
【0033】
[本発明の実施形態の詳細]
本開示の実施形態に係る車載装置、コンピュータプログラム及びプログラム更新方法を、以下に図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0034】
以下、実施形態について図面に基づいて説明する。
図1は、実施形態1に係る車載更新システムSの構成を示す模式図である。車載更新システムSは、車両Cに搭載された車外通信装置1及び車載装置2を含み、車外ネットワークNを介して接続された外部サーバS1(OTAサーバ)から取得した更新用プログラムを、車両Cに搭載されている車載ECU3(Electronic Control Unit)に送信する。
【0035】
外部サーバS1は、例えばインターネット又は公衆回線網等の車外ネットワークNに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部S11を備えている。外部サーバS1の記憶部S11には、車載ECU3の製造メーカ等によって作成された当該車載ECU3を制御するためのプログラム又はデータが保存されている。当該プログラム又はデータは、更新用プログラムとして、後述のごとく車両Cに送信され、車両Cに搭載されている車載ECU3のプログラム又はデータを更新するために用いられる。このように構成された外部サーバS1は、OTA(Over The Air)サーバとも称される。
【0036】
車載装置2は、車外通信装置1を介して外部サーバS1から取得した更新用プログラムを更新対象の車載ECU3へ送信し、また、送信した更新用プログラムを当該車載ECU3に適用させるためのアクティベート指示を送信するいわゆるOTAマスタとして機能する。
【0037】
車両Cに搭載される車載ECU3は、車載装置2を介して、外部サーバS1から無線通信により送信された更新用プログラムを取得し、車載装置2からのアクティベート指示に応じて当該更新用プログラムを適用(アクティベート処理)することにより、自ECUが実行するプログラムを更新(リプロ)する。
【0038】
例えば、プログラムは、車載ECU3が処理を行うための制御構文等を含むプログラムコード及び、当該プログラムコードを実行するにあたり参照するデータが記載される外部ファイルを含む。更新用プログラムの送信時において、これらプログラムコード及びデータが記載される外部ファイルは、例えば暗号化されたアーカイブファイルとして、外部サーバS1から送信される。外部サーバS1は、更新用プログラムを送信する際、当該更新用プログラムを含むパッケージを生成し、生成したパッケージを車両Cに送信する。パッケージは、例えば、プログラム更新に関する情報であるパッケージ情報(キャンペーン情報)、更新対象を表す情報(ターゲット情報)、更新対象に対し適用される更新用プログラムを含む。
【0039】
車両Cは、車外通信装置1、車載装置2及び第1GW(ゲートウェイ)8を備えており、第1GW8には複数のバス4が接続されており、各バス4には、種々の車載機器を制御するための複数の車載ECU3が接続されている。また、車両Cは、表示装置5(
図2参照)及びIGスイッチ6(
図2参照)を備える。
以下では、第1GW8に2本のバス4A,バス4Bが接続されており、バス4Aには車載ECU3Aa,3Abが接続され、バス4Bには車載ECU3Ba,3Bb,3Bcが接続されている場合を例に挙げて説明する。これに限定されるものではなく、バス4は3本以上であってもよく、各バス4に4つ以上の車載ECU3が接続されても良い。
【0040】
車外通信装置1と車載装置2とは、例えばシリアルケーブル等のハーネスにより通信可能に接続されている。第1GW8は、バス4A及びバス4B間の通信データを選択的に中継し、バス4A及びバス4B間の通信プロトコルを中継時に変換できる。第1GW8、車載装置2及び車載ECU3は、CAN(Control Area Network)、CAN-FD(CAN with Flexible Data Rate)又はEthernet(登録商標)等の通信プロトコルに対応したバス4によって通信可能に接続されている。
【0041】
車外通信装置1は、車外通信部(図示せず)及び、車載装置2と通信するための入出力I/F(インターフェイス)(図示せず)を有する。前記車外通信部は、LTE(登録商標)、4G、5G、WiFi(登録商標)等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、前記車外通信部に接続されたアンテナを介して外部サーバS1とデータの送受信を行う。車外通信装置1と外部サーバS1との通信は、例えば公衆回線網又はインターネット等の外部ネットワークNを介して行われる。
【0042】
車外通信装置1の前記入出力I/Fは、車載装置2と、例えばシリアル通信するための通信インターフェイスである。車外通信装置1と車載装置2とはシリアルケーブル等のハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載装置2と別装置とし、入出力I/F等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載装置2の一構成部として、車載装置2に内蔵されるものであってもよい。又は、車外通信装置1と車載装置2は、CAN等のバスにより接続されていてもよい。
【0043】
第1GW8は、例えば、制御系の車載ECU3、安全系の車載ECU3及び、ボディ系の車載ECU3等の複数の系統のバス4(セグメント)を統括し、これらバス(セグメント)間での車載ECU3同士の通信を中継する車載中継装置である。第1GW8は、CANプロトコルの中継においてはCANゲートウェイとして機能し、TCP/IPプロトコルの中継においてはレイヤー2スイッチ又はレイヤー3スイッチとして機能する。第1GW8は、通信に関する中継に加え、二次電池等の電源装置から出力された電力を分配及び中継し、自装置に接続されるアクチュエータ等の車載器に電力を供給する電力分配装置としても機能するPLB(Power Lan Box)であってもよい。
【0044】
第1GW8は記憶部81を有している。記憶部81は、現バージョン及び旧バージョンの2つのプログラム夫々のバージョンに関する情報、及び現在実行(適用)しているプログラムが記憶されている領域(動作面)に関する情報が記憶されている。すなわち、現状において第1領域に記憶されているプログラム(制御プログラム)を実行している場合、動作面は第1領域であると記憶される。この場合、非動作面は第2領域であると記憶される。動作面である第1領域には現バージョンの制御プログラムが記憶されている。非動作面である第2領域には旧バージョンの制御プログラムが記憶されている。又は、非動作面である第2領域には、旧バージョンの制御プログラム等が記憶されておらず、空き容量となる記憶領域であってもよい。このように非動作面が空き容量の記憶領域又は旧バージョンの制御プログラム等が記憶されている状態となっていることにより、更新時に、当該非動作面に新バージョンの制御プログラムを書き込むことで、旧バージョンに戻せる状態を担保することができる。
【0045】
図2は、車載装置2の構成を示すブロック図である。
車載装置2は、制御部20、記憶部23、入出力I/F21、及び車内通信部22を有する。車載装置2は、車外通信装置1が無線通信によって外部サーバS1から受信した更新用プログラム(パッケージ)を、車外通信装置1から取得し、バス4を介して更新対象の装置に送信するように構成されている。すなわち、車載装置2は、更新対象の装置におけるプログラム更新を制御するOTAマスタ(更新制御装置)として機能する。
【0046】
また、車載装置2は、車両C全体をコントロールするボディECUの一機能部として構成されるものであってもよい。又は、車載装置2は、例えばヴィークルコンピュータ等の中央制御装置にて構成され、車両Cの全体的な制御を行う統合ECUであってもよい。
【0047】
制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部23に予め記憶された制御プログラムP及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。
【0048】
記憶部23は、第1記憶部231及び第2記憶部232による2つの記憶領域により構成され、第1記憶部231及び第2記憶部232それぞれは、RAM(Random Access Memory)等の揮発性のメモリ素子、又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成される。第1記憶部231及び第2記憶部232には、制御プログラムP及び処理時に参照するデータが予め記憶してある。記憶部23(第1記憶部231、第2記憶部232)に記憶された制御プログラムPは、車載装置2が読み取り可能な記録媒体24から読み出された制御プログラムPを記憶したものであってもよい。また、図示しない通信網に接続されている図示しない外部コンピュータから制御プログラムPをダウンロードし、記憶部23に記憶させたものであってもよい。
【0049】
入出力I/F21は、車外通信装置1の前記入出力I/Fと同様に、例えばシリアル通信するための通信インターフェイスである。入出力I/F21を介して、車載装置2は、車外通信装置1、表示装置5及びIGスイッチ6と通信可能に接続される。また、IG信号は車内LANを通じて取得しても良い。
【0050】
車内通信部22は、例えばCAN又はイーサネット(Ethernet/登録商標)等の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部22を介してバス4Aの車載ECU3又は第1GW8等の車載機器と相互に通信し、また、第1GW8を介してバス4Bの車載ECU3と通信する。車内通信部22は、複数個(本実施形態では2個)設けられている。
【0051】
車載装置2は、車載ECU3及び第1GW8に対する更新用プログラムの適用に関する処理を実行する。詳細は後述するが、車載装置2は、車載ECU3及び第1GW8への更新用プログラムの送信、アクティベート指示、アクティベート処理後の異常確認、異常を検出した際のロールバック指示を行う。
【0052】
車載装置2は、外部サーバS1からの更新用プログラムに基づいて、アクティベート後の異常確認に用いられる更新情報を生成して記憶している。前記更新情報は少なくとも各車載ECU3のIDと、現在のプログラムのバージョンと、更新用プログラムのバージョンとが関連付けて記憶されたものである。
【0053】
詳しくは、車載装置2は、定期的、周期的又は定常的に車両C(自車)に搭載されている全ての車載ECU3及び第1GW8と通信し、全ての車載ECU3及び第1GW8に関するプログラムのバージョン情報を取得しておく。車載装置2は、送信されたプログラムのバージョン情報を装置毎に対応付けて記憶する。又は、車載装置2が各車載ECU3及び第1GW8に現在のプログラムのバージョンを送信することを要求することなく、各車載ECU3及び第1GW8が定期的又は周期的に車載装置2へ送信するように構成してもよい。
【0054】
また、車載装置2は外部サーバS1から前記パッケージを取得した場合、前記キャンペーン情報、前記ターゲット情報及び更新用プログラムに基づいて、更新対象の装置毎に更新用プログラムのバージョンを取得する。又は、更新対象の装置が、更新用プログラムのアクティベートが完了した都度、自装置に適用された更新用プログラムのバージョンを車載装置2へ送信するように構成してもよい。
【0055】
車載装置2は、各車載ECU3及び第1GW8から取得した現在のプログラムのバージョン、及び、更新用プログラムのバージョンを集約することにより、前記更新情報を生成し記憶部23に記憶する。前記更新情報は、第1記憶部231又は第2記憶部232に記憶され、又は、第1記憶部231及び第2記憶部232の双方に重複して記憶されてもよい。
【0056】
車載ECU3は、車載装置2と同様に制御部、記憶部及び車内通信部(図示せず)を含む。記憶部は、RAM(Random Access Memory)等の揮発性のメモリ素子、又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、車載ECU3のプログラム又はデータが記憶されている。このプログラム又はデータが、外部サーバS1から送信され、車載装置2(第1GW8)によって中継される更新用プログラムによって、更新される対象である。車載ECU3の車内通信部は、車載装置2と同様に、例えば、CANトランシーバ又はイーサネットPHY部等により構成され、車載装置2との通信を行う。
【0057】
各車載ECU3の記憶部には、第1GW8の記憶部81と同様に、第1領域及び第2領域が設けられている。現状において第1領域に記憶されているプログラム(制御プログラム)を実行している場合、動作面は第1領域であると記憶され、非動作面は第2領域であると記憶される。動作面である第1領域には現バージョンの制御プログラムが記憶されている。非動作面である第2領域には旧バージョンの制御プログラムが記憶されている。又は、非動作面である第2領域には、旧バージョンの制御プログラム等が記憶されておらず、空き容量となる記憶領域であってもよい。
【0058】
図3は、車載装置2、更新対象の装置(第1GW8及び車載ECU3)等による処理の流れ(シーケンス)の一例を例示する説明図である。即ち、
図3は、車載装置2及び更新対象の装置(第1GW8及び車載ECU3)におけるプログラム更新に関する処理を行うにあたり、外部サーバS1、車載装置2、第1GW8及び更新対象の車載ECU3それぞれの処理シーケンスを示す。
以下では、便宜上、バス4Aの車載ECU3Aaと、第1GW8と、バス4Bの車載ECU3Ba,3Bbとが更新対象である場合を例に挙げて説明する。
【0059】
また、
図4は、プログラムの更新処理における車載装置2、第1GW8及び更新対象の車載ECU3の状態遷移を例示する説明図であり、
図5は、ロールバック処理における車載装置2、第1GW8及び更新対象の車載ECU3の状態遷移を例示する説明図である。
図4~
図5においては、更新対象の装置である第1GW8及び車載ECU3について、更新用プログラムが適用される前の状態と、適用された後の状態とは、表示形態を反転して示している。なお、
図4においては、更新対象に黒丸をつけて表している。
【0060】
車載装置2は、更新用プログラムを外部サーバS1から取得する(S01)。車載装置2は、例えば、自装置が搭載されている車両C(自車)の識別番号(VIN:Vehicle Identification Number)を用いて、外部サーバS1にアクセスし、外部サーバS1から自車に対して適用される更新用プログラムを含むパッケージを取得する。当該パッケージには、例えば、プログラム更新に関する情報であるパッケージ情報(キャンペーン情報)、更新対象となる第1GW8及び車載ECU3に関する情報(ターゲット情報)、プログラムの更新対象である第1GW8及び車載ECU3に適用される更新用プログラムが含まれている。
【0061】
車載装置2は、取得したパッケージに含まれている更新用プログラムを記憶部23に記憶する(S02)。取得された更新用プログラムは、第1記憶部231又は第2記憶部232に記憶される。また、車載装置2は、取得したパッケージに基づいて、前記更新情報を更新する。
【0062】
まず、車載装置2は、更新対象のうち、自装置が接続されたバス4A(以下、自バス4Aと称する)に接続された第1GW8及び車載ECU3Aa(
図4A参照)へ、第1GW8及び車載ECU3Aa用の更新用プログラムを出力(送信)する(S03)。車載装置2は、外部サーバS1から取得したターゲット情報に基づき更新対象に第1GW8が含まれることを把握し、自バス4Aの第1GW8及び車載ECU3Aaに更新用プログラムを送信する。
【0063】
第1GW8は車載装置2から取得(受信)した更新用プログラムを記憶部81に記憶し、車載ECU3Aaは車載装置2から取得した更新用プログラムを前記記憶部にインストールする(S04)。
【0064】
例えば、現在実行しているプログラムが記憶部81の第1領域に記憶されている場合、当該第1領域が動作面に相当する。この場合、非動作面である記憶部81の第2領域には、現在実行しているプログラムよりも前のバージョン(旧バージョン)のプログラムが、バックアップとして保存されている。第1GW8は、非動作面である第2領域に、取得した自装置用の更新用プログラムを記憶する。これにより、現時点にて実行しているプログラムは、上書きされることなく、現在の動作状態を安定的に維持することができる。
【0065】
車載ECU3Aaは、第1GW8と同様に、取得した更新プログラムを非動作面に記憶することにより、現時点にて実行しているプログラム(動作面に記憶)が、上書きされることを回避することができる。
【0066】
車載装置2は、自バス4Aの第1GW8及び車載ECU3Aaに対し、アクティベート指示を出力(送信)する(S05)。第1GW8及び車載ECU3Aaは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う(S06)。車載装置2からのアクティベート指示を取得(受信)した第1GW8及び車載ECU3Aaは、更新用プログラムが記憶された記憶領域(非動作面)を動作面として再起動することにより、当該更新用プログラムを適用するアクティベート処理を行う。
【0067】
以上の処理によって、更新対象のうち、第1GW8及び車載ECU3Aaでのみ更新用プログラムのアクティベート処理が完了している(
図4B参照)。
【0068】
車載装置2は、アクティベート処理が完了した第1GW8及び車載ECU3Aaに対し、動作確認(異常検出)の処理を行う(S07)。例えば、車載装置2は、更新後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる車載装置2の要求に応じて第1GW8及び車載ECU3Aaから送られるバージョン情報を前記更新情報と対比して、一致すれば正常であると判定し、不一致であれば異常であると判定する。
また、車載装置2は、例えば、アクティベート処理後の第1GW8及び車載ECU3Aaから送信される定期的な自発送信フレームの有無を監視し、当該自発送信フレームを受信したか否かに応じて異常検出の処理を行ってもよい。
【0069】
車載装置2は、異常検出の結果に応じて、自装置が接続されていない他のバス4B(以下、他バス4Bと称する)に接続された更新対象の車載ECU3(車載ECU3Ba,3Bb)へ、当該車載ECU3用の更新用プログラムを出力(送信)する(S08)。車載装置2は、外部サーバS1から取得したターゲット情報に基づき、他バス4Bの更新対象の車載ECU3を特定し、特定した車載ECU3に対し、第1GW8を介してバス4Bの車載ECU3Ba,3Bbに更新用プログラムを送信する。
【0070】
更新対象の車載ECU3(車載ECU3Ba,3Bb)は、第1GW8を介して車載装置2から取得(受信)した更新用プログラムをインストールする(S09)。更新対象の車載ECU3Ba,3Bbは、第1GW8と同様に、取得した更新用のプログラムを非動作面に記憶することにより、現時点にて実行している動作面のプログラムが上書きされることを回避することができる。
【0071】
車載装置2は、第1GW8を介して、他バス4Bの更新対象の車載ECU3(車載ECU3Ba,3Bb)へ、アクティベート指示を出力(送信)する(S10)。車載装置2は、車載ECU3Ba,3Bbそれぞれにアクティベート指示を出力し、車載ECU3Ba,3Bbにアクティベート処理を実行させる。
【0072】
他バス4Bの車載ECU3Ba,3Bbは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う(S11)。車載装置2からのアクティベート指示を取得(受信)した車載ECU3Ba,3Bbは、更新用プログラムが記憶された記憶領域(非動作面)を動作面として再起動することにより、当該更新用プログラムを適用するアクティベート処理を行う。
【0073】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいて更新用プログラムのアクティベート処理が完了している(
図4C及び
図5A参照)。
【0074】
車載装置2は、アクティベート処理が完了した車載ECU3Ba,3Bbに対し、動作確認(異常検出)の処理を行う(S12)。例えば、車載装置2は、更新後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる車載装置2の要求に応じて車載ECU3Ba,3Bbから第1GW8を介して送られるバージョン情報を前記更新情報と対比して、一致すれば正常であると判定し、不一致であれば異常であると判定する。
また、車載装置2は、例えば、アクティベート処理後の車載ECU3Ba,3Bbから送信される定期的な自発送信フレームの有無を監視し、当該自発送信フレームを受信したか否かに応じて異常検出の処理を行ってもよい。
【0075】
異常検出の結果、正常である場合、車載装置2は更新の処理が正常に完了した旨を外部サーバS1に出力(送信)し、更新の処理を終了する(S16参照)。
一方、異常であると判定された場合、車載装置2は、自バス4Aに接続された第1GW8、車載ECU3Aa及び他バス4Bに接続された車載ECU3Ba,3Bbに対して同時的にロールバック指示を出力(送信)する(S13)。即ち、何らかの理由により、車載ECU3Ba,3Bbにおけるプログラムの更新が正常に完了していない場合、車載装置2は、自バス4Aの第1GW8及び車載ECU3Aaと、他バス4Bの車載ECU3Ba,3Bbとにロールバック指示を出力(送信)する。
【0076】
自バス4Aの第1GW8及び車載ECU3Aaは、車載装置2から出力されたロールバック指示に応じて、ロールバック処理を行う(S14)。他バス4Bの車載ECU3Ba,3Bbは、車載装置2から出力されたロールバック指示に基づき、ロールバック処理を行う(S15)。
【0077】
詳しくは、車載装置2から出力されたロールバック指示を受信した第1GW8、車載ECU3Aa及び車載ECU3Ba,3Bbは、更新用プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。当該元プログラムは、更新用プログラムが記憶されている記憶領域(動作面)とは異なる記憶領域(非動作面)にバックアップとして記憶(保存)されている。第1GW8、車載ECU3Aa及び車載ECU3Ba,3Bbは、当該元プログラムが記憶されている記憶領域(非動作面)を動作面とし、更新プログラムが記憶されている記憶領域を非動作面として再起動することによってロールバック処理を行う。
【0078】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいてロールバック処理が行われ、元プログラムの実行環境に戻される。(
図5B参照)。
【0079】
車載装置2は、更新用プログラムに関する処理結果を外部サーバS1に出力(送信)する(S16)。車載装置2は、更新用プログラムに関する処理の結果として、更新対象である第1GW8及び車載ECU3Aa,3Ba,3Bbへの更新用プログラムの適用が成功した旨を示す更新成功通知、又は更新用プログラムの適用が失敗してロールバック処理を行った旨を示す更新失敗通知を外部サーバS1に出力(送信)する。車載装置2は、更新用プログラムに関する処理結果を表示装置5に出力し、当該処理結果を表示装置5に表示させてもよい。車載装置2は、当該更新用プログラムの処理結果に基づき、更新対象である第1GW8及び車載ECU3Aa,3Ba,3Bbに関する更新情報を修正してもよい。
【0080】
以上のようなプログラムの更新に関する一連の処理(S01~S16)は、エンジン始動又はトラクションモータ駆動が禁止される期間等、車両Cが起動状態となることを禁止される期間にて行われる。当該禁止期間に行うことにより、適用されたプログラム間での一時的な不整合(バージョン違い)が発生した状態にて、エンジン始動等が行われることを防止することができる。車載装置2は、プログラムの更新に関する一連の処理を、車両Cが起動状態となることが禁止される期間にて行うにあたり、入出力I/F21等を介してIGスイッチ6から出力されるオン信号を、例えばマスク処理等行うことにより一時的に無効化するものであってもよい。
【0081】
図6は、車載装置2の制御部20の処理の一例を例示するフローチャートである。車載装置2の制御部20は、例えば車両Cが停止状態において、定常的に以下の処理を行う。以下では、
図4~
図5の如く、バス4Aの車載ECU3Aaと、第1GW8と、バス4Bの車載ECU3Ba,3Bbとが更新対象である場合を例に挙げて説明する。
【0082】
制御部20は、車外通信装置1を介して外部サーバS1から更新用プログラム(パッケージ)を取得する(S101)。制御部20は、取得したパッケージに含まれている更新用プログラムを記憶部23に記憶する(S102)。また、制御部20は、取得したパッケージに基づいて、前記更新情報を更新する。
【0083】
先ず、制御部20は、更新対象である第1GW8及び自バス4Aの車載ECU3へ、更新用プログラムを出力(送信)する(S103)。制御部20は、外部サーバS1から取得したパッケージに含まれている前記ターゲット情報に基づき、第1GW8及び更新対象の車載ECU3(車載ECU3Aa)を特定し、特定した第1GW8及び車載ECU3Aaに対して更新用プログラムを送信する。
【0084】
この際、第1GW8は制御部20によって送信された更新用プログラムを記憶部81に記憶し、車載ECU3Aaは制御部20によって送信された更新用プログラムを前記記憶部にインストールする。斯かる更新用プログラムのインストール処理については既に説明しており、詳しい説明を省略する。
【0085】
次いで、制御部20は、更新対象である第1GW8及び自バス4Aの車載ECU3Aaへ、アクティベート指示を出力(送信)する(S104)。制御部20は、第1GW8及び車載ECU3Aaそれぞれにアクティベート指示を出力し、第1GW8及び車載ECU3Aaにアクティベート処理を実行させる。
【0086】
この際、第1GW8及び車載ECU3Aaは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う。斯かるアクティベート処理については既に説明しており、詳しい説明を省略する。
【0087】
制御部20は、アクティベート処理が完了した第1GW8及び車載ECU3Aaに対し、異常検出の処理(動作確認)を行い、異常が検出されたか否かを判定する(S105)。例えば、制御部20は、更新後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる制御部20の要求に応じて第1GW8及び車載ECU3Aaから送られるバージョン情報を記憶部23の前記更新情報と対比する。制御部20は、一致すれば正常(異常なし)であると判定し、不一致であれば異常であると判定する。
【0088】
異常が検出された場合、即ち、異常であると判定された場合(S105:YES)、制御部20は、更新用プログラムのインストール済である第1GW8及び自バス4Aの車載ECU3Aaに対してロールバック指示を出力(送信)する(S110)。
【0089】
車載装置2から出力されたロールバック指示に応じて、第1GW8及び車載ECU3Aaはロールバック処理を行う。第1GW8及び車載ECU3Aaは、更新用プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。ロールバック処理については既に説明しており、詳しい説明を省略する。
以降処理はS109に進む。
【0090】
異常が検出されなかった場合、即ち、正常であると判定された場合(S105:NO)、制御部20は更新対象のうち残りの他バス4Bの車載ECU3へ、更新用プログラムを出力(送信)する(S106)。制御部20は、外部サーバS1から取得したパッケージに含まれている前記ターゲット情報に基づき、更新対象である他バス4Bの車載ECU3(車載ECU3Ba,3Bb)を特定し、第1GW8を介して、特定した車載ECU3Ba,3Bbに対して更新用プログラムを送信する。
【0091】
この際、車載ECU3Ba,3Bbは制御部20によって送信された更新用プログラムを前記記憶部にインストールする。斯かる更新用プログラムのインストール処理については既に説明しており、詳しい説明を省略する。
【0092】
次いで、制御部20は、更新対象である他バス4Bの車載ECU3Ba,3Bbへ、アクティベート指示を出力(送信)する(S107)。制御部20は、第1GW8を介して車載ECU3Ba,3Bbそれぞれにアクティベート指示を出力し、車載ECU3Ba,3Bbにアクティベート処理を実行させる。
【0093】
この際、車載ECU3Ba,3Bbは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う。斯かるアクティベート処理については既に説明しており、詳しい説明を省略する。
【0094】
制御部20は、アクティベート処理が完了した車載ECU3Ba,3Bbに対し、異常検出の処理(動作確認)を行い、異常が検出されたか否かを判定する(S108)。例えば、制御部20は、更新後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる制御部20の要求に応じて車載ECU3Ba,3Bbから送られるバージョン情報を記憶部23の前記更新情報と対比する。制御部20は、一致すれば正常(異常なし)であると判定し、不一致であれば異常であると判定する。
【0095】
異常が検出された場合、即ち、異常であると判定された場合(S108:YES)、制御部20は、更新用プログラムのインストールが完了している第1GW8、自バス4Aの車載ECU3Aa、及び他バス4Bの車載ECU3Ba,3Bbに対してロールバック指示を出力(送信)する(S111)。ステップS105にて、第1GW8が正常であることが確認されているので、第1GW8、自バス4Aの車載ECU3Aa、及び他バス4Bの車載ECU3Ba,3Bbに対して同時的にロールバック指示を行うことができる。
【0096】
車載装置2から出力されたロールバック指示に応じて、第1GW8、車載ECU3Aa及び車載ECU3Ba,3Bbはロールバック処理を行う。ロールバック処理については既に説明しており、詳しい説明を省略する。
【0097】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいてロールバック処理が行われ、元プログラムの実行環境に戻される。従って、車載ECU3Ba,3Bbと第1GW8及び車載ECU3Aaとの間におけるプログラムのバージョンの差異等による不整合が発生することを未然に防止する。
【0098】
一方、異常が検出されなかった場合、即ち、正常であると判定された場合(S108:NO)、制御部20は、更新用プログラムに関する処理結果を外部サーバS1に出力(送信)する(S109)。制御部20は、更新用プログラムに関する処理結果として、更新対象である第1GW8及び車載ECU3Aa,3Ba,3Bbへの更新用プログラムの適用が成功した旨を示す更新成功通知、又は更新用プログラムの適用が失敗してロールバック処理を行った旨を示す更新失敗通知を、車外通信装置1を介して、外部サーバS1に出力(送信)する。
【0099】
本実施形態の車載装置2においては、プログラムの更新の際、更新対象に第1GW8が含まれる場合、第1GW8の更新を優先的に行う。即ち、以上の如く、更新対象に、第1GW8及び自バス4の車載ECU3と、他バス4Bの車載ECU3とが含まれる場合、車載装置2は、先ず、第1GW8及び自バス4Aの車載ECU3に対するアクティベート処理までを完了した後、第1GW8が正常であることを確認したうえ、他バス4Bの車載ECU3に対する処理を続ける。このように、第1GW8の正常状態を担保したうえ実行されるので、他バス4Bの車載ECU3に対するプログラムの更新を的確に実行できる。よって、プログラムの更新処理後に、自バス4Aと他バス4Bとの間に通信ができなくなることを未然防止できる。
【0100】
なお、本実施形態の車載装置2においては、更新対象に、第1GW8と、他バス4Bの車載ECU3とが含まれる場合、即ち、自バス4Aの車載ECU3を含まない場合、車載装置2は、先ず、第1GW8に対するアクティベート処理までを完了した後、第1GW8が正常であることを確認したうえ、他バス4Bの車載ECU3に対する処理を続ければ良い。
【0101】
図7は、車載装置2、更新対象の装置(第1GW8及び車載ECU3)等による処理の流れ(シーケンス)の他例を例示する説明図である。
以下では、便宜上、バス4Aの車載ECU3Aaと、第1GW8と、バス4Bの車載ECU3Ba,3Bbとが更新対象である場合を例に挙げて説明する。
【0102】
また、
図8は、プログラムの更新処理における車載装置2、第1GW8及び更新対象の車載ECU3の状態遷移を例示する説明図であり、
図9は、ロールバック処理における車載装置2、第1GW8及び更新対象の車載ECU3の状態遷移を例示する説明図である。
図8~
図9においては、更新対象の装置である第1GW8及び車載ECU3について、更新用プログラムが適用される前の状態と、適用された後の状態とは、表示形態を反転して示している。なお、
図8においては、更新対象に黒丸をつけて表している。
【0103】
車載装置2は、更新用プログラムを外部サーバS1から取得する(S21)。車載装置2は、例えば、自装置が搭載されている車両C(自車)の識別番号(VIN)を用いて、外部サーバS1にアクセスし、外部サーバS1から自車に対して適用される更新用プログラムを含むパッケージを取得する。当該パッケージには、例えば、プログラム更新に関する情報であるパッケージ情報(キャンペーン情報)、更新対象となる第1GW8及び車載ECU3に関する情報(ターゲット情報)、プログラムの更新対象である第1GW8及び車載ECU3に適用される更新用プログラムが含まれている。
【0104】
車載装置2は、取得したパッケージに含まれている更新用プログラムを記憶部23に記憶する(S22)。取得された更新用プログラムは、第1記憶部231又は第2記憶部232に記憶される。また、車載装置2は、取得したパッケージに基づいて、前記更新情報を更新する。
【0105】
車載装置2は、外部サーバS1から取得したターゲット情報に基づき、更新対象である、自バス4Aに接続された第1GW8及び車載ECU3Aaと、他バス4Bに接続された車載ECU3Ba,3Bb(
図8A参照)へ、第1GW8及び各車載ECU用の更新用プログラムを出力(送信)する(S23)。
【0106】
第1GW8は車載装置2から取得(受信)した更新用プログラムを記憶部81に記憶し、車載ECU3Aaは車載装置2から取得した更新用プログラムを前記記憶部にインストールする(S24)。
【0107】
例えば、現在実行しているプログラムが記憶部81の第1領域に記憶されている場合、当該第1領域が動作面に相当する。この場合、非動作面である記憶部81の第2領域には、現在実行しているプログラムよりも前のバージョン(旧バージョン)のプログラムが、バックアップとして保存されている。第1GW8は、非動作面である第2領域に、取得した自装置用の更新用プログラムを記憶する。これにより、現時点にて実行しているプログラムは、上書きされることなく、現在の動作状態を安定的に維持することができる。
【0108】
車載ECU3Aaは、第1GW8と同様に、取得した更新プログラムを非動作面に記憶することにより、現時点にて実行しているプログラム(動作面に記憶)が、上書きされることを回避することができる。
【0109】
この際、更新対象の車載ECU3Ba,3Bbも、第1GW8を介して車載装置2から取得(受信)した更新用プログラムをインストールする(S25)。車載ECU3Ba,3Bbは、第1GW8と同様に、取得した更新用のプログラムを非動作面に記憶することにより、現時点にて実行している動作面のプログラムが上書きされることを回避することができる。
【0110】
車載装置2は、自バス4Aの第1GW8及び車載ECU3Aaと、他バス4Bの車載ECU3Ba,3Bbに対し、アクティベート指示を出力(送信)し(S26)、第1GW8及び車載ECU3Aa,3Ba,3Bbにアクティベート処理を実行させる。
【0111】
自バス4の第1GW8及び車載ECU3Aaは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う(S27)。車載装置2からのアクティベート指示を取得(受信)した第1GW8及び車載ECU3Aaは、更新用プログラムが記憶された記憶領域(非動作面)を動作面として再起動することにより、当該更新用プログラムを適用するアクティベート処理を行う。
【0112】
この際、他バス4Bの車載ECU3Ba,3Bbも、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う(S28)。車載装置2からのアクティベート指示を取得(受信)した車載ECU3Ba,3Bbは、更新用プログラムが記憶された記憶領域(非動作面)を動作面として再起動することにより、当該更新用プログラムを適用するアクティベート処理を行う。
【0113】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいて更新用プログラムのアクティベート処理が完了している(
図8B及び
図9A参照)。
【0114】
車載装置2は、アクティベート処理が完了した、自バス4Aの第1GW8及び車載ECU3Aaと、他バス4Bの車載ECU3Ba,3Bbに対し、動作確認(異常検出)の処理を行う(S29)。斯かる異常検出の手法については既に説明しており、詳しい説明を省略する。
【0115】
異常検出の結果、正常である場合、車載装置2は更新の処理が正常に完了した旨を外部サーバS1に出力(送信)し、更新の処理を終了する(S35参照)。
一方、異常であると判定された場合、車載装置2は、まず、自バス4Aに接続された第1GW8及び車載ECU3Aaに対してロールバック指示を出力(送信)する(S30)。即ち、何らかの理由により、車載ECU3Ba,3Bbにおけるプログラムの更新が正常に完了していない場合、又は、第1GW8に異常が発生した場合、車載装置2は、先ず、自バス4Aの第1GW8及び車載ECU3Aaにロールバック指示を出力(送信)する。
【0116】
自バス4Aの第1GW8及び車載ECU3Aaは、車載装置2から出力されたロールバック指示に応じて、ロールバック処理を行う(S31)。車載装置2から出力されたロールバック指示を受信した第1GW8及び車載ECU3Aaは、更新用プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。当該元プログラムは、更新用プログラムが記憶されている記憶領域(動作面)とは、異なる記憶領域(非動作面)にバックアップとして記憶(保存)されている。第1GW8及び車載ECU3Aaは、当該元プログラムが記憶されている記憶領域(非動作面)を動作面とし、更新プログラムが記憶されている記憶領域を非動作面として再起動することによってロールバック処理を行う。
【0117】
以上の処理によって、第1GW8及び車載ECU3Aaのみにてロールバック処理が行われ、元プログラムの実行環境に戻される(
図9B参照)。この際、車載装置2は前記更新情報を元プロブラムの情報に更新する。
【0118】
次に、車載装置2は、ロールバック処理後の第1GW8のプロブラムのバージョンが元プロブラムのバージョンであるかを確認する(S32)。例えば、車載装置2は、ロールバック処理後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる車載装置2の要求に応じて第1GW8から送られるバージョン情報を前記更新情報と対比する。
【0119】
第1GW8のプロブラムのバージョンが元プロブラムのバージョンである場合、車載装置2は、他バス4Bに接続された車載ECU3Ba,3Bbに対してロールバック指示を出力(送信)する(S33)。即ち、更新対象の装置のうち、第1GW8及び車載ECU3Aaのロールバック処理を行った場合、車載装置2は、車載ECU3Ba,3Bbに対してもロールバック指示を出力することにより、車載ECU3Ba,3Bbと第1GW8及び車載ECU3Aaとの間におけるプログラムのバージョンの差異等による不整合が発生することを未然に防止する。
【0120】
他バス4Bの車載ECU3Ba,3Bbは、車載装置2から出力されたロールバック指示に基づき、ロールバック処理を行う(S34)。車載装置2から出力されたロールバック指示を受信した車載ECU3Ba,3Bbは、元プログラムを実行すべく再起動を行うことにより、ロールバック処理を行う。当該元プログラムは、非動作面にバックアップとして記憶(保存)されている。車載ECU3Ba,3Bbは、当該元プログラムが記憶されている非動作面を動作面とし、更新プログラムが記憶されている記憶領域を非動作面に切り替えて再起動することによってロールバック処理を行う。
【0121】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいてロールバック処理が行われ、元プログラムの実行環境に戻される。(
図10C参照)。
【0122】
車載装置2は、更新用プログラムに関する処理結果を外部サーバS1に出力(送信)する(S35)。車載装置2は、更新用プログラムに関する処理の結果として、更新対象である第1GW8及び車載ECU3Aa,3Ba,3Bbへの更新用プログラムの適用が成功した旨を示す更新成功通知、又は更新用プログラムの適用が失敗してロールバック処理を行った旨を示す更新失敗通知を外部サーバS1に出力(送信)する。
【0123】
以上のようなプログラムの更新に関する一連の処理(S21~S35)は、エンジン始動又はトラクションモータ駆動が禁止される期間等、車両Cが起動状態となることを禁止される期間にて行われる。当該禁止期間に行うことにより、適用されたプログラム間での一時的な不整合(バージョン違い)が発生した状態にて、エンジン始動等が行われることを防止することができる。
【0124】
図10は、車載装置2の制御部20の処理の他例を例示するフローチャートである。車載装置2の制御部20は、例えば車両Cが停止状態において、定常的に以下の処理を行う。以下では、
図8~
図9の如く、バス4Aの車載ECU3Aaと、第1GW8と、バス4Bの車載ECU3Ba,3Bbとが更新対象である場合を例に挙げて説明する。
【0125】
制御部20は、車外通信装置1を介して外部サーバS1から更新用プログラム(パッケージ)を取得する(S201)。制御部20は、取得したパッケージに含まれている更新用プログラムを記憶部23に記憶する(S202)。また、制御部20は、取得したパッケージに基づいて、前記更新情報を更新する。
【0126】
次に、制御部20は、更新対象である、第1GW8、自バス4Aの車載ECU3Aa及び他バス4Bの車載ECU3Ba,3Bbへ、更新用プログラムを出力(送信)する(S203)。制御部20は、外部サーバS1から取得したパッケージに含まれている前記ターゲット情報に基づき、第1GW8及び更新対象の車載ECU3(車載ECU3Aa,3Ba,3Bb)を特定し、特定した第1GW8及び車載ECU3Aa,3Ba,3Bbに対して更新用プログラムを送信する。
【0127】
この際、第1GW8は制御部20によって送信された更新用プログラムを記憶部81に記憶し、車載ECU3Aa,3Ba,3Bbは制御部20によって送信された更新用プログラムを前記記憶部にインストールする。斯かる更新用プログラムのインストール処理については既に説明しており、詳しい説明を省略する。
【0128】
次いで、制御部20は、更新対象である第1GW8、自バス4Aの車載ECU3Aa及び他バス4Bの車載ECU3Ba,3Bbへ、アクティベート指示を出力(送信)する(S204)。制御部20は、第1GW8及び車載ECU3Aa,3Ba,3Bbのそれぞれにアクティベート指示を出力し、第1GW8及び車載ECU3Aa,3Ba,3Bbにアクティベート処理を実行させる。
【0129】
この際、第1GW8及び車載ECU3Aa,3Ba,3Bbは、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う。斯かるアクティベート処理については既に説明しており、詳しい説明を省略する。
【0130】
制御部20は、アクティベート処理が完了した第1GW8及び車載ECU3Aa,3Ba,3Bbに対し、異常検出の処理(動作確認)を行い、異常が検出されたか否かを判定する(S205)。例えば、制御部20は、更新後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる制御部20の要求に応じて第1GW8及び車載ECU3Aa,3Ba,3Bbから送られるバージョン情報を記憶部23の前記更新情報と対比する。制御部20は、一致すれば正常(異常なし)であると判定し、不一致であれば異常であると判定する。
【0131】
異常が検出された場合、即ち、第1GW8又は車載ECUAa,3Ba,3Bbの何れかが異常であると判定された場合(S205:YES)、制御部20は、先ず、第1GW8及び自バス4Aの車載ECU3Aaに対してロールバック指示を出力(送信)する(S207)。この際、制御部20は第1GW8及び自バス4Aの車載ECU3Aaに係る前記更新情報を元プロブラムの情報に更新する。
【0132】
車載装置2から出力されたロールバック指示に応じて、第1GW8及び車載ECU3Aaはロールバック処理を行う。第1GW8及び車載ECU3Aaは、更新用プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。ロールバック処理については既に説明しており、詳しい説明を省略する。
【0133】
次いで、制御部20は、ロールバック処理後の第1GW8のプロブラムのバージョンが更新前の元プロブラムのバージョンであるかを判定する(S208)。例えば、制御部20は、ロールバック処理後のプログラムのバージョンを表すバージョン情報を送信することを要求し、斯かる制御部20の要求に応じて第1GW8から送られるバージョン情報を前記更新情報と対比する。
【0134】
制御部20は、ロールバック処理後の第1GW8のプロブラムのバージョンが更新前の元プロブラムのバージョンでないと判定した場合(S208:NO)、斯かる判定を繰り返して行う。斯かる判定が、所定回数以上繰り返された場合、処理がS207に戻るように構成しても良い。
【0135】
制御部20は、ロールバック処理後の第1GW8のプロブラムのバージョンが更新前の元プロブラムのバージョンであると判定した場合(S208:YES)、第1GW8が正常であることが確認されたので、他バス4Bの車載ECU3Ba,3Bbに対してロールバック指示を出力(送信)する(S209)。この際、制御部20は他バス4Bの車載ECU3Ba,3Bbに係る前記更新情報を元プロブラムの情報に更新する。
【0136】
車載装置2から出力されたロールバック指示に応じて、車載ECU3Ba,3Bbはロールバック処理を行う。ロールバック処理については既に説明しており、詳しい説明を省略する。
【0137】
以上の処理によって、更新対象である、第1GW8及び車載ECU3Aa,3Ba,3Bbの全てにおいてロールバック処理が行われ、元プログラムの実行環境に戻される。
【0138】
一方、S205にて、異常が検出されなかった場合、即ち、正常であると判定された場合(S205:NO)、制御部20は、更新用プログラムに関する処理結果を外部サーバS1に出力(送信)する(S206)。制御部20は、更新用プログラムに関する処理結果として、更新対象である第1GW8及び車載ECU3Aa,3Ba,3Bbへの更新用プログラムの適用が成功した旨を示す更新成功通知、又は更新用プログラムの適用が失敗してロールバック処理を行った旨を示す更新失敗通知を、車外通信装置1を介して、外部サーバS1に出力(送信)する。
【0139】
以上のように、本実施形態の車載装置2においては、プログラムの更新後において、他バス4Bの車載ECU3、又は、第1GW8に異常が発生した場合、第1GW8のロールバック処理を優先的に行う。即ち、更新対象の装置の全て(第1GW8及び車載ECU3Aa,3Ba,3Bb)に対するアクティベート処理の完了後に、他バス4の車載ECU3、又は、第1GW8に異常が発生した場合、車載装置2は、先ず、第1GW8及び自バス4Aの車載ECU3に対してロールバック処理を実行させる。これによって、元プログラムの実行環境での第1GW8の正常状態を確保した後、車載装置2は他バス4Bの車載ECU3に対してロールバック処理を実行させる。このように、第1GW8の正常状態を担保したうえ実行されるので、他バス4Bの車載ECU3に対するロールバック処理を的確に実行できる。よって、プログラムの更新処理後の異常発生によって、自バス4Aと他バス4Bとの間に通信ができなくなることを未然防止できる。
【0140】
(変形例1)
以上においては、他バス4Bに車載ECU3のみが接続された場合を例に挙げて説明したが、本発明はこれに限定されるものではない。
図11は、変形例1にてプログラムの更新処理における各装置の状態遷移を例示する説明図であり、
図12は、変形例1にてロールバック処理における各装置の状態遷移を例示する説明図である。
図11~
図12において、更新対象の装置である第1GW8及び車載ECU3において、更新用プログラムが適用される前の状態と、適用された後の状態とは、表示形態を反転して示している。なお、
図11においては、更新対象に黒丸をつけて表している。
【0141】
本変形例においては、第1GW8に自バス4A及び他バス4Bが接続されており、他バス4Bの他端に第2GW9が更に接続され、第2GW9にはバス4Cが接続されている。自バス4Aには車載装置2、車載ECU3Aa,3Abが接続され、他バス4Bには車載ECU3Ba,3Bb,3Bcが接続されており、バス4Cには車載ECU3Ca,3Cbが接続されている。
【0142】
本変形例の車載装置2においても、プログラムの更新の際、更新対象に第1GW8と他の装置が含まれる場合、第1GW8の更新を優先的に行う。以下、便宜上、自バス4Aの車載ECU3Aaと、第1GW8と、バス4Bの車載ECU3Ba,3Bbと、第2GW9と、車載ECU3Caとが更新対象である場合を例に挙げて説明する(
図11A参照)。
【0143】
先ず、車載装置2は、第1GW8及び自バス4Aの車載ECU3(車載ECU3Aa)に対してアクティベート処理まで行う(
図11B参照)。第1GW8及び車載ECU3Aaのアクティベート処理が完了した後、車載装置2は、第1GW8が正常に動作しているか否かの確認(異常検出)を行う。第1GW8が正常に動作している場合、車載装置2は、第1GW8を介して他バス4Bの車載ECU3(車載ECU3Ba,3Bb)及び第2GW9に対しアクティベート処理まで行う(
図11C参照)。第2GW9及び車載ECU3Ba,3Bbのアクティベート処理が完了した後、車載装置2は、第2GW9が正常に動作しているか否かの確認(異常検出)を行う。第2GW9が正常に動作している場合、車載装置2は、第1GW8及び第2GW9を介してバス4Cの車載ECU3(車載ECU3Ca)に対しアクティベート処理を続ける(
図11D参照)。
【0144】
このように、第1GW8及び第2GW9が更新対象に含まれる場合、車載装置2がホップ数が少ない第1GW8の更新を優先して行った後に第2GW9の更新を行うことにより、第1GW8及び第2GW9の正常状態を担保したうえプログラムの更新が実行される。よって、他バス4Bの車載ECU3及びバス4Cの車載ECU3に対するプログラムの更新を的確に実行できる。
【0145】
また、本変形例の車載装置2においては、プログラムの更新後において、第1GW8、他バス4の車載ECU3、第2GW9又は、バス4Cの車載ECU3に異常が発生した場合、第1GW8のロールバック処理を優先的に行う。
【0146】
更新対象の装置の全て(第1GW8,第2GW9及び車載ECU3Aa,3Ba,3Bb,3Ca)に対するアクティベート処理の完了後(
図12A参照)に、第1GW8,第2GW9及び車載ECU3Aa,3Ba,3Bb,3Caの何れかに異常が発生した場合が想定できる。
【0147】
この場合、車載装置2は、先ず、第1GW8及び自バス4Aの車載ECU3(車載ECU3Aa)に対してロールバック処理を実行させる(
図12B参照)。これによって、元プログラムの実行環境での第1GW8の正常状態が確保される。この後、車載装置2は、第1GW8を介して他バス4Bの車載ECU3(車載ECU3Ba,3Bb)及び第2GW9に対しロールバック処理を実行させる(
図12C参照)。これによって、元プログラムの実行環境での第2GW9の正常状態が確保される。この後、車載装置2は、第1GW8及び第2GW9を介して、バス4Cの車載ECU3(車載ECU3Ca)に対しロールバック処理を実行させる(
図12D参照)。
【0148】
このように、第1GW8及び第2GW9がロールバック処理の対象に含まれる場合、車載装置2がホップ数が少ない第1GW8のロールバック処理を優先して行った後に第2GW9のロールバック処理を行うことにより、第1GW8及び第2GW9の正常状態を担保したうえロールバック処理が実行される。よって、他バス4Bの車載ECU3及びバス4Cの車載ECU3に対するロールバック処理を的確に実行できる。
【0149】
(変形例2)
本発明は車載更新システムSが仮想ネットワークを含む場合においても適用可能である。例えば、車両C(
図1参照)の記憶部(図示せず)には、Hypervisor、VMware又はXen等の仮想化オペレーティングシステムが記憶されている。車両Cの制御部(図示せず)は、仮想化オペレーティングシステムを用いて起動することにより、仮想化オペレーティングシステム上にて複数の仮想装置を構築することができる。各仮想装置上にて所定プログラムが実行されることによって、当該プログラムの処理内容に応じて単一又は複数のタスクが生成される。
【0150】
本実施形態においては、仮想化の方式が、仮想化オペレーティングシステムによって直接的に前記制御部等のハードウェアリソースにアクセスするハイパーバイザ方式である例を説明するが、仮想化の方式はハイパーバイザ方式に限定されない。例えば仮想化の方式は、仮想化オペレーティングシステムとハードウェアリソースとの間にLinux(登録商標)等のオペレーティングシステムが介在するホストOS方式であってもよい。また仮想化の方式は、コンテナ方式の仮想化オペレーティングシステムを用いるものであってもよい。
【0151】
図13は、変形例2に係る車載更新システムSが仮想ネットワークを含む場合の構成を例示する例示図である。
仮想化オペレーティングシステムを用いて起動した車両Cは、仮想化オペレーティングシステムの機能により、仮想車載装置200、仮想GW800、仮想車載ECU30Ba、仮想車載ECU30Bb、仮想バスI40A、仮想バスII40Bを構築することができる。仮想バスI40Aには仮想車載装置200及び仮想GW800が論理的に接続され、仮想バスII40Bに仮想GW800、仮想車載ECU30Ba、仮想車載ECU30Bbが論理的に接続されている。また、仮想バスI40Aは第1通信部50を介して車外通信装置1に接続されており、仮想GW800は第2通信部60を介してバス4Dに接続されている。バス4Dには車載ECU3Da,3Db,3Dcが接続されている。
【0152】
例えば、仮想車載装置200、仮想GW800及び仮想車載ECU30Ba,30Bbには、車両Cの制御部のハードウェアリソースが割り当てられ、仮想バスI40A及び仮想バスII40Bには車両Cの前記記憶部のハードウェアリソースが割り当てられる。
【0153】
変形例2に係る車載更新システムSにおいても、プログラムの更新の際、更新対象に仮想GW800が含まれる場合、仮想GW800の更新を優先的に行う。以下、便宜上、仮想バスII40Bの仮想車載ECU30Baと、仮想GW800と、バス4Dの車載ECU3Da,3Dbとが更新対象である場合を例に挙げて説明する(
図13A参照)。
【0154】
先ず、仮想車載装置200は、仮想GW800に対してアクティベート処理まで行う(
図13B参照)。仮想GW800のアクティベート処理が完了した後、仮想車載装置200は、仮想GW800が正常に動作しているか否かの確認(異常検出)を行う。仮想GW800が正常に動作している場合、仮想車載装置200は、仮想GW800を介して仮想バスII40Bの仮想車載ECU30Baに対しアクティベート処理まで行い、第2通信部60を介してバス4Dの車載ECU3Da,3Dbに対しアクティベート処理まで行う(
図13C参照)。
【0155】
また、変形例2に係る車載更新システムSにおいても、プログラムの更新後において、仮想GW800、仮想車載ECU30Ba又は車載ECU3Da,3Dbに異常が発生した場合、仮想GW800のロールバック処理を優先的に行う。即ち、先ず、仮想GW800に対するロールバック処理が行われ、その後、仮想車載ECU30Ba又は車載ECU3Da,3Dbに対するロールバック処理が行われる。ロールバック処理については既に説明しており、詳しい説明を省略する。
【0156】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0157】
1 車外通信装置
2 車載装置
3,3Aa,3Ab,3Ba,3Bb,3Bc,3Ca,3Cb,3Da,3Db,3Dc 車載ECU
4,4A,4B,4C,4D バス
5 表示装置
6 IGスイッチ
8 第1GW
9 第2GW
20 制御部
21 入出力I/F
22 車内通信部
23 記憶部
24 記録媒体
30Ba,30Bb 仮想車載ECU
40A 仮想バスI
40B 仮想バスII
50 第1通信部
60 第2通信部
81 記憶部
200 仮想車載装置
800 仮想GW
231 第1記憶部
232 第2記憶部
C 車両
N 車外ネットワーク
P 制御プログラム
S 車載更新システム
S1 外部サーバ
S11 記憶部