(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023085002
(43)【公開日】2023-06-20
(54)【発明の名称】車載装置、プログラム、プログラムの更新方法、及び車載更新システム
(51)【国際特許分類】
G06F 8/65 20180101AFI20230613BHJP
B60R 16/02 20060101ALI20230613BHJP
【FI】
G06F8/65
B60R16/02 660T
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021199441
(22)【出願日】2021-12-08
(71)【出願人】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(71)【出願人】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(71)【出願人】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】古戸 健
(72)【発明者】
【氏名】立石 博志
(72)【発明者】
【氏名】塩澤 孝之
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB06
5B376AB43
5B376CA05
5B376CA13
5B376CA32
5B376CA40
5B376CA43
5B376CA53
5B376CA55
5B376CA76
5B376GA08
(57)【要約】
【課題】車載ECUのプログラムを更新する処理を行う車載装置が、当該車載装置自身に適用されているプログラムを更新する処理を行うにあたり、当該プログラムの更新処理を効率的に行うことができる車載装置等を提供する。
【解決手段】車載装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行う制御部を備える車載装置であって、前記制御部は、前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行う制御部を備える車載装置であって、
前記制御部は、
前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、
前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、
選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う
車載装置。
【請求項2】
前記制御部は、アクティベート処理を行った後、前記代理ECUからロールバック指示を取得した場合、更新プログラムを適用する前の元プログラムに戻すロールバック処理を行う
請求項1に記載の車載装置。
【請求項3】
前記制御部は、
前記外部サーバから、プログラムの更新対象の車載ECUに適用するための更新プログラムを取得し、
前記車載装置のアクティベート処理を行う前に、取得した車載ECU用の更新プログラムを、前記更新対象の車載ECUに出力し、
前記更新対象の車載ECUに対し、車載ECU用の更新プログラムを適用させるためのアクティベート指示を出力する
請求項1又は請求項2に記載の車載装置。
【請求項4】
前記制御部は、前記代理ECUからロールバック指示に応じてロールバック処理を行った後、前記更新対象の車載ECUに対し更新プログラムを適用する前の元プログラムに戻すロールバック指示を出力する
請求項3に記載の車載装置。
【請求項5】
前記制御部は、前記車両が起動状態となることが禁止される期間にて更新プログラムに関する処理を行う
請求項1から請求項4のいずれか1項に記載の車載装置。
【請求項6】
前記制御部は、
前記車両に搭載される複数の車載ECUのうち、前記代理ECUの機能を有する複数の候補ECUを特定し、
特定した前記候補ECUに対し送信した代理要求の送信結果に応じて、複数の前記候補ECUのいずれかを前記代理ECUとして選定する
請求項1から請求項5のいずれか1項に記載の車載装置。
【請求項7】
前記車両に搭載される車載ECUに関する情報を含む車両構成情報が記憶される記憶部を備え、
前記車両構成情報を参照することにより、前記候補ECUを特定する
請求項6に記載の車載装置。
【請求項8】
前記車両が備える車載ネットワークは、車載ECUが接続される複数のセグメントにより構成され、
前記制御部は、プログラムの更新対象の車載ECUと同じセグメントに接続されている車載ECUを、前記代理ECUとして選定する
請求項1から請求項7のいずれか1項に記載の車載装置。
【請求項9】
車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行うコンピュータに、
前記外部サーバから前記コンピュータに適用するための更新プログラムを取得し、
前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、
選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記コンピュータに適用するアクティベート処理を行う
処理を実行させるプログラム。
【請求項10】
車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行うコンピュータに、
前記外部サーバから前記コンピュータに適用するための更新プログラムを取得し、
前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、
選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記コンピュータに適用するアクティベート処理を行う
処理を実行させるプログラムの更新方法。
【請求項11】
車両に搭載される複数の車載ECUと、
前記車両外の外部サーバから送信される更新プログラムを取得し、前記車両に搭載される車載ECUのプログラムを更新するための処理を行う車載装置とを含む車載更新システムであって、
前記車載装置は、
前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、
前記複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、
選定された前記代理ECUは、前記車載装置にアクティベート指示を出力し、
前記車載装置は、前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う
車載更新システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車載装置、プログラム、プログラムの更新方法、及び車載更新システムに関する。
【背景技術】
【0002】
車両には、エンジン制御等の駆動制御系、エアコン制御等のボディ系等の車載機器を制御するためのECU(Electronic Control Unit)が搭載されている。ECUは、MPU等の演算処理部、例えばEEPROM等の書き換え可能な不揮発性の記憶部、及び他のECUと通信するための通信部を含み、記憶部に記憶した制御プログラムを読み込んで実行することにより、車載機器の制御を行う。更に車両には、無線通信の機能を備えた通信機が実装されており、通信機を介して、車外のネットワークに接続されているプログラム提供装置と通信し、当該プログラム提供装置からECUの制御プログラムをダウンロード(受信)し、当該ECUの制御プログラムを更新することができる(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の通信機(中継機)は、自機に適用されている制御プログラム自体を更新する際の処理に関し、何ら考慮されていないという問題点がある。
【0005】
本開示の目的は、車載ECUのプログラムを更新する処理を行う車載装置が、当該車載装置自身に適用されているプログラムを更新する処理を行うにあたり、当該プログラムの更新処理を効率的に行うことができる車載装置等を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様に係る車載装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行う制御部を備える車載装置であって、前記制御部は、前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う。
【発明の効果】
【0007】
本開示の一態様によれば、車載ECUのプログラムを更新する処理を行う車載装置が、当該車載装置自身に適用されているプログラムを更新する処理を行うにあたり、当該プログラムの更新処理を効率的に行う車載装置等を提供することができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態1に係る車載装置を含む車載更新システムの構成を例示する模式図である。
【
図2】車載装置の物理構成を例示するブロック図である。
【
図4】プログラムの更新処理における車載装置、代理ECU及び更新対象の車載ECU等の状態遷移を例示する説明図である。
【
図5】車載装置、代理ECU及び更新対象の車載ECU等による処理の流れ(シーケンス)を例示する説明図である。
【
図6】車載装置の制御部の処理を例示するフローチャートである。
【発明を実施するための形態】
【0009】
[本開示の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0010】
(1)本開示の一態様に係る車載装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行う制御部を備える車載装置であって、前記制御部は、前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う。
【0011】
本態様にあたっては、車載装置の制御部は、当該車載装置自身(自装置)に対し更新プログラムを適用する際、プログラムの更新対象外の車載ECUを、自装置に対しアクティベート指示を行う(送信する)代理ECUに選定するため、自装置に対するプログラムの更新に関する処理について、当該代理ECUからの指示に基づき行うことができる。すなわち、車載装置は、選定した代理ECUに対し、自装置におけるプログラム更新(更新プログラムの適用等)に関する制御を担わせることにより、車載装置におけるプログラム更新処理を円滑に行うことができる。
【0012】
(2)本開示の一態様に係る車載装置は、前記制御部は、アクティベート処理を行った後、前記代理ECUからロールバック指示を取得した場合、更新プログラムを適用する前の元プログラムに戻すロールバック処理を行う。
【0013】
本態様にあたっては、代理ECUからのアクティベート指示に応じて、車載装置の制御部がアクティベート処理を行った後、代理ECUは、アクティベート処理後(更新プログラムの適用後)の車載装置に対し動作確認等の処理(異常検出シーケンス)を行う。代理ECUは、アクティベート処理後の車載装置において、異常を検出した場合、ロールバック指示を当該車載装置に送信(出力)する。代理ECUからロールバック指示を取得した車載装置(制御部)は、更新プログラムを適用する前の元プログラムに戻すロールバック処理を行うため、アクティベート処理が失敗した場合であっても、車載装置(制御部)は元プログラムを実行することができ、車両に関する制御を継続することができる。
【0014】
(3)本開示の一態様に係る車載装置は、前記制御部は、前記外部サーバから、プログラムの更新対象の車載ECUに適用するための更新プログラムを取得し、前記車載装置のアクティベート処理を行う前に、取得した車載ECU用の更新プログラムを、前記更新対象の車載ECUに出力し、前記更新対象の車載ECUに対し、車載ECU用の更新プログラムを適用させるためのアクティベート指示を出力する。
【0015】
本態様にあたっては、更新プログラムの適用対象は、車載装置のみならず、当該車載装置及び、単一又は複数の車載ECUとなる場合が想定されるところ、車載装置は、自装置及び車載ECUに適用する更新プログラムそれぞれを、外部サーバから取得する。車載装置の制御部は、自装置のアクティベート処理を行う前に、プログラムの更新対象である車載ECUへの更新プログラム及びのアクティベート指示の出力(送信)を行うことにより、自装置よりも前に、当該車載ECUでの更新プログラムの適用を行うことができる。すなわち、更新プログラムの適用前の車載装置は、稼働状態が比較的に安定しているため、これら車載ECUへの更新プログラムの適用を円滑に行うことができる。
【0016】
(4)本開示の一態様に係る車載装置は、前記制御部は、前記代理ECUからロールバック指示に応じてロールバック処理を行った後、前記更新対象の車載ECUに対し更新プログラムを適用する前の元プログラムに戻すロールバック指示を出力する。
【0017】
本態様にあたっては、更新プログラムの適用対象が車載装置及び複数の車載ECUとなる場合、これら更新対象の全ての車載装置及び車載ECUに対し、更新プログラムの適用が行われることが必要となる。これに対し、車載装置の制御部は、代理ECUからロールバック指示に応じて、自装置におけるロールバック処理を行った場合、当該ロールバック処理後、更新対象の全ての車載ECUに対しロールバック指示を出力し、これら車載ECUにロールバック処理を実施させる。これにより、車載装置(制御部)は、自装置における更新プログラムの適用が失敗した場合、代替ECUからの指示に基づき自装置におけるロールバック処理を行うと共に、自装置と同様に更新対象である他の車載ECUに対しロールバック処理を実施させ、更新プログラムを適用する前の動作環境に戻すことができる。
【0018】
(5)本開示の一態様に係る車載装置は、前記制御部は、前記車両が起動状態となることが禁止される期間にて更新プログラムに関する処理を行う。
【0019】
本態様にあたっては、車載装置の制御部は、例えば、エンジン始動又はトラクションモータ駆動が禁止される期間等、車両が起動状態となることを禁止される期間にて、代理ECUの選定を含め、アクティベート処理及びロールバック処理等を含む更新プログラムに関する処理を行う。プログラム更新における全体的な処理内容において、車載装置(制御部)は、更新対象の車載ECUに対する更新プログラムの適用処理と、代理ECUからの指示に基づく自装置に対する更新プログラムの適用処理とを2段階で行うため、適用されたプログラム間での一時的な不整合(バージョン違い)の発生が懸念される。これに対し、当該プログラム更新の処理(更新プログラムに関する処理)は、車両が起動状態となることが禁止される期間にて行われるものとなるため、更新プログラムの適用処理を2段階で行うものであっても、適用されたプログラム間にて不整合が発生した状態にて、車両が起動することを確実に防止することができる。
【0020】
(6)本開示の一態様に係る車載装置は、前記制御部は、前記車両に搭載される複数の車載ECUのうち、前記代理ECUの機能を有する複数の候補ECUを特定し、特定した前記候補ECUに対し送信した代理要求の送信結果に応じて、複数の前記候補ECUのいずれかを前記代理ECUとして選定する。
【0021】
本態様にあたっては、車両には、代理ECUの機能を有する複数の候補ECUが搭載されているため、いずれかの候補ECU(代理ECUの機能を有する車載ECU)がプログラムの更新対象であっても、他の候補ECUを選定することができ、代理ECUの選定処理における冗長性を向上させることができる。車載装置の制御部は、代理ECUを選定するにあたり、これら複数の候補ECUに対し送信した代理要求の送信結果を鑑みるものであり、例えば、所定の優先順位に基づき、これら複数の候補ECUに対し順次に代理要求を送信し、最初に応答した候補ECUを代理ECUに選定する。このような代理要求の送信に対する応答した候補ECUを代理ECUに選定することにより、当該代理ECUの信頼性を効率的に担保することができる。
【0022】
(7)本開示の一態様に係る車載装置は、前記車両に搭載される車載ECUに関する情報を含む車両構成情報が記憶される記憶部を備え、前記車両構成情報を参照することにより、前記候補ECUを特定する。
【0023】
本態様にあたっては、車載装置(制御部)は、車両に搭載する全ての車載ECUに関する情報を集約し、集約したこれら情報を車両構成情報として、自装置が備える記憶部等、アクセス可能な記憶領域に記憶している。当該車両構成情報には、車載ECUそれぞれが、代理ECUの機能を有するか否か(候補ECUとしての適否)を示す情報(候補ECUフラグ)が含まれているため、車載装置の制御部は、当該車両構成情報を参照することにより、複数の候補ECUを効率的に特定することができる。
【0024】
(8)本開示の一態様に係る車載装置は、前記車両が備える車載ネットワークは、車載ECUが接続される複数のセグメントにより構成され、前記制御部は、プログラムの更新対象の車載ECUと同じセグメントに接続されている車載ECUを、前記代理ECUとして選定する。
【0025】
本態様にあたっては、車両に搭載される車載ネットワークは複数のセグメントにより構成され、これら複数のセグメントそれぞれには、単一又は複数の車載ECUが接続される。車載装置は、これら複数のセグメントそれぞれに対応したCANトランシーバ等の車内通信部を複数個、備える。車載装置の制御部は、更新対象の車載ECUと同じセグメントに接続されている車載ECUを代理ECUとして選定することにより、プログラムの更新処理を行う期間において、更新対象の車載ECUが接続されてないセグメントに対応(接続)する車内通信部への通電を停止する等、当該車内通信部を非活性化することができる。プログラムの更新処理は、エンジンの停止期間中に行うことを要するため、鉛バッテリー等の蓄電装置の電力を消費するものとなる。これに対し、更新対象の車載ECUと同じセグメントに接続されている代理ECUを選定することにより、更新対象の車載ECUが接続されてないセグメントの車内通信部への通電を停止することが可能となり、電力消費量を低減することができる。
【0026】
(9)本開示の一態様に係るプログラムは、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行うコンピュータに、前記外部サーバから前記コンピュータに適用するための更新プログラムを取得し、前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記コンピュータに適用するアクティベート処理を行う処理を実行させる。
【0027】
本態様にあたっては、コンピュータを、自機に適用されているプログラムを更新する処理を行うにあたり当該プログラムの更新処理を効率的に行う車載装置として機能させるプログラムを提供することができる。
【0028】
(10)本開示の一態様に係るプログラムの更新方法は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行うコンピュータに、前記外部サーバから前記コンピュータに適用するための更新プログラムを取得し、前記車両に搭載される複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定した前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記コンピュータに適用するアクティベート処理を行う処理を実行させる。
【0029】
本態様にあたっては、コンピュータを、自機に適用されているプログラムを更新する処理を行うにあたり当該プログラムの更新処理を効率的に行う車載装置として機能させる更新方法を提供することができる。
【0030】
(11)本開示の一態様に係る車載更新システムは、車両に搭載される複数の車載ECUと、前記車両外の外部サーバから送信される更新プログラムを取得し、前記車両に搭載される車載ECUのプログラムを更新するための処理を行う車載装置とを含む車載更新システムであって、前記車載装置は、前記外部サーバから前記車載装置に適用するための更新プログラムを取得し、前記複数の車載ECUのうち、プログラムの更新対象外であるいずれかの車載ECUを、代理ECUとして選定し、選定された前記代理ECUは、前記車載装置にアクティベート指示を出力し、前記車載装置は、前記代理ECUからのアクティベート指示に応じて、取得した更新プログラムを前記車載装置に適用するアクティベート処理を行う。
【0031】
本態様にあたっては、自機に適用されているプログラムを更新する処理を行うにあたり当該プログラムの更新処理を効率的に行う車載装置を含む車載更新システムを提供することができる。
【0032】
[本発明の実施形態の詳細]
本発明をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載装置2を、以下に図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【0033】
(実施形態1)
以下、実施の形態について図面に基づいて説明する。
図1は、実施形態1に係る車載更新システムSの構成を示す模式図である。
図2は、車載装置2の構成を示すブロック図である。車載更新システムSは、車両Cに搭載された車外通信装置1及び車載装置2を含み、車外ネットワークNを介して接続された外部サーバS1(プログラム提供装置、OTAサーバ)から取得した更新プログラムを、車両Cに搭載されている車載ECU3(Electronic Control Unit)に送信する。
【0034】
外部サーバS1は、例えばインターネット又は公衆回線網等の車外ネットワークNに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部S11を備え、車外のプログラム提供装置に相当する。外部サーバS1には、車載ECU3の製造メーカ等によって作成された当該車載ECU3を制御するためのプログラム又はデータが、記憶部S11に保存されている。当該プログラム又はデータは、更新プログラムとして、後述のごとく車両Cに送信され、車両Cに搭載されている車載ECU3のプログラム又はデータを更新するために用いられる。このように構成された外部サーバS1(プログラム提供装置)は、OTA(Over The Air)サーバとも称される。
【0035】
車載装置2は、外部サーバS1から取得した更新プログラムを、更新対象の車載ECU3への送信、及び送信した更新プログラムを、当該車載ECU3に適用させるためのアクティベート指示を送信するOTAマスタとして機能する。OTAマスタとして機能する車載装置2は、自装置に対し更新プログラムを適用(アクティベート処理)するにあたり、後述する代理ECU31を選定し、選定した代理ECU31からの指示に応じてアクティベート処理又はロールバック処理を行う。車両Cに搭載される車載ECU3は、車載装置2を介して、外部サーバS1から無線通信により送信された更新プログラムを取得し、アクティベート指示に応じて当該更新プログラムを適用(アクティベート処理)することにより、自ECUが実行するプログラムを更新(リプロ)する。
【0036】
以降、プログラムは、車載ECU3が処理を行うための制御構文等を含むプログラムコード及び、当該プログラムコードを実行するにあたり参照するデータが記載される外部ファイルを含むものとして説明する。更新プログラムの送信時において、これらプログラムコード及びデータが記載される外部ファイルは、例えば暗号化されたアーカイブファイルとして、外部サーバS1から送信される。外部サーバS1は、更新プログラムを送信する際、当該更新プログラムを含むパッケージを生成し、生成したパッケージを車両Cに送信する。パッケージは、例えば、プログラム更新に関する情報であるパッケージ情報(キャンペーン情報)、更新対象となる車載ECU3に関する情報(ターゲット情報)、更新対象の車載ECU3に対し適用される更新プログラムを含む。
【0037】
車両Cには、車外通信装置1、車載装置2、表示装置5、及び種々の車載機器を制御するための複数の車載ECU3が搭載されている。車外通信装置1と車載装置2とは、例えばシリアルケーブル等のハーネスにより通信可能に接続されている。車載装置2及び車載ECU3は、CAN(Control Area Network)又はEthernet(登録商標)等の通信プロトコルに対応した車載ネットワーク4によって通信可能に接続されている。
【0038】
車外通信装置1は、車外通信部(図示せず)及び、車載装置2と通信するための入出力I/F(図示せず)(インターフェイス)を含む。車外通信部は、LTE(登録商標)、4G、5G、WiFi(登録商標)等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、車外通信部に接続されたアンテナ11を介して外部サーバS1とデータの送受信を行う。車外通信装置1と外部サーバS1との通信は、例えば公衆回線網又はインターネット等の外部ネットワークNを介して行われる。
【0039】
車外通信装置1の入出力I/Fは、車載装置2と、例えばシリアル通信するための通信インターフェイスである。車外通信装置1と車載装置2とは、入出力I/F間に接続されたシリアルケーブル等のハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載装置2と別装置とし、入出力I/F等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載装置2の一構成部位として、車載装置2に内蔵されるものであってもよい。又は、車外通信装置1と車載装置2は、CAN等の車載ネットワーク4により接続されていてもよい。
【0040】
車載装置2は、制御部20、記憶部(第1記憶部231、第2記憶部232)、入出力I/F21、及び車内通信部22を含む。車載装置2は、車外通信装置1が無線通信によって外部サーバS1から受信した更新プログラム(パッケージ)を、車外通信装置1から取得し、車載ネットワーク4を介して当該更新プログラムを所定の車載ECU3(更新対象の車載ECU3)に送信するように構成されている。すなわち、車載装置2は、更新対象の車載ECU3におけるプログラム更新を制御するOTAマスタ(リプロマスタ)として機能する。
【0041】
車載装置2は、例えば、制御系の車載ECU3、安全系の車載ECU3及び、ボディ系の車載ECU3等の複数の系統のバス(セグメント)を統括し、これらバス(セグメント)間での車載ECU3同士の通信を中継するゲートウェイ(車載中継装置)である。すなわち、車載装置2には、これら複数のバス(セグメント)を構成する通信線41それぞれが接続され、当該車載装置2によって集約される複数の通信線41(セグメント)により車載ネットワーク4が構成される。車載装置2は、CANプロトコルの中継においてはCANゲートウェイとして機能し、TCP/IPプロトコルの中継においてはレイヤー2スイッチ又はレイヤー3スイッチとして機能する。車載装置2は、通信に関する中継に加え、二次電池等の電源装置から出力された電力を分配及び中継し、自装置に接続されるアクチュエータ等の車載器に電力を供給する電力分配装置としても機能するPLB(Power Lan Box)であってもよい。又は、車載装置2は、車両C全体をコントロールするボディECUの一機能部として構成されるものであってもよい。又は、車載装置2は、例えばヴィークルコンピュータ等の中央制御装置にて構成され、車両Cの全体的な制御を行う統合ECUであってもよい。
【0042】
制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部に予め記憶された制御プログラムP(プログラム製品)及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。
【0043】
記憶部は、第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及び処理時に参照するデータが予め記憶してある。当該制御プログラムPが、外部サーバS1から取得した更新プログラムによって、更新される対象である。記憶部(第1記憶部231、第2記憶部232)に記憶された制御プログラムP(プログラム製品)は、車載装置2が読み取り可能な記録媒体24から読み出された制御プログラムP(プログラム製品)を記憶したものであってもよい。また、図示しない通信網に接続されている図示しない外部コンピュータから制御プログラムPをダウンロードし、記憶部に記憶させたものであってもよい。
【0044】
記憶部(第1記憶部231、第2記憶部232)には、現バージョン及び旧バージョンの2つのプログラム(制御プログラムP)夫々のバージョンに関する情報、及び現在実行(適用)しているプログラムが記憶されている領域(動作面)に関する情報が記憶されている。すなわち、現状において第1記憶部231(第1面)に記憶されているプログラムを実行している場合、第1記憶部231には、動作面は第1記憶部231(第1面)であると記憶される。この場合、非動作面は、第2記憶部232(第2面)であると記憶される。動作面である第1記憶部231には、現バージョンの制御プログラムPが記憶されている。非動作面である第2記憶部232には、旧バージョンの制御プログラムPが記憶されている。又は、非動作面である第2記憶部232には、旧バージョンの制御プログラムP等が記憶されておらず、空き容量となる記憶領域であってもよい。このように非動作面が、空き容量の記憶領域又は旧バージョンの制御プログラムP等が記憶されている状態となっていることにより、更新時に、当該非運用面に新バージョンの制御プログラムPを書き込むことで、旧バージョンに戻せる状態を担保することができる。
【0045】
入出力I/F21は、車外通信装置1の入出力I/Fと同様に、例えばシリアル通信するための通信インターフェイスである。入出力I/Fを介して、車載装置2は、車外通信装置1、表示装置5及びIGスイッチ6と通信可能に接続される。
【0046】
車内通信部22は、例えばCAN又はイーサネット(Ethernet/登録商標)等の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部22を介して車載ネットワーク4に接続されている車載ECU3又は他の中継装置等の車載機器と相互に通信する。車内通信部22は、複数個(本実施形態では3個)設けられており、車内通信部22夫々に、車載ネットワーク4を構成する通信線41(セグメント)が接続されている。このように車内通信部22を複数個設けることにより車載ネットワーク4を複数個のセグメントに分け、例えば車載ECU3の機能(制御系機能、安全系機能、ボディ系機能)に応じて、個々の車載ECU3を各セグメントに接続する。
【0047】
車載ECU3は、車載装置2と同様に制御部、記憶部及び車内通信部(図示せず)を含む。記憶部は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、車載ECU3のプログラム又はデータが記憶されている。このプログラム又はデータが、プログラム提供装置から送信され、車載装置2によって中継される更新プログラムによって、更新される対象である。車載ECU3の車内通信部は、車載装置2と同様に、例えば、CANトランシーバ又はイーサネットPHY部等により構成され、当該車内通信部を介して車載装置2と通信する。
【0048】
車両Cに搭載される車載ECU3のうち、一部の車載ECU3は、車載装置2における更新プログラムの適用に関する処理を代理する機能(代理ECU31としての機能)を有する。詳細は後述するが、当該代理ECU31は、車載装置2から送信される代理要求に応じて、車載装置2へのアクティベート指示、アクティベート処理後の車載装置2における動作確認、動作不備を検出した際のロールバック指示を行う。
【0049】
図3は、車両構成情報を例示する説明図である。車載装置2は、定期的、周期的又は定常的に車両C(自車)に搭載されている全ての車載ECU3と通信し、これら車載ECU3に関する情報を取得する。車載装置2は、例えば、IGスイッチ6がオンにされた場合、オフにされた場合又は、所定のタイミングにて、定常的に車両Cに搭載されている全ての車載ECU3又は特定の車載ECU3に対し、自ECUの構成情報及び当該構成情報の更新履歴を送信することを要求する。車載装置2は、車載ECU3夫々から送信された構成情報及び更新履歴を取得してこれら構成情報等を集約し、集約した構成情報及び更新履歴を車両構成情報として記憶する。
【0050】
車載装置2は、車載ECU3に対し構成情報及び更新履歴を送信することを要求することなく、車載ECU3夫々が自発的に送信した構成情報夫々及び更新履歴夫々を取得し集約して、記憶部に記憶するものであってもよい。又は、車載装置2は、更新プログラムを車載ECU3に送信し、当該送信が完了した都度、送信した更新プログラムに基づいて構成情報(車両構成情報)を変更してもよい。車載装置2は、これら複数の車載ECU3から取得した個々の車載ECU3に関する情報を集約することにより、例えばテーブル形式にて車両構成情報を生成し、自装置の記憶部に記憶する。車両構成情報を記憶する記憶部は、第1記憶部231、第2記憶部232、又は、第1記憶部231及び第2記憶部232の双方に重複して記憶するものであってもよい。
【0051】
一例としてテーブル形式に保存される車両構成情報は、管理項目(フィールド)として、例えば車載ECU3の製造番号(シリアル番号)、ECU部番(型番)、Software部番、プログラムの現バージョン、旧バージョン、動作面、状態(リプロステータス)、セグメント番号、更新対象(キャンペーン番号)、代理ECU、及び優先順位を含み、個々の車載ECU3において重複しないように設定された連番等によるECU-IDに関連付けられて管理される。ECU-IDの管理項目には、車両Cに搭載される全ての車載ECU3において、これら車載ECU3を一意に識別するための連番等による識別番号が格納される。更に、車両構成情報は、管理項目(フィールド)として、車載ECU3のMAC(Media Access Control)アドレス、及びIPアドレスを含むものであってもよい。
【0052】
製造番号(シリアル番号)は、車載ECU3の製造時に付与される番号であり、生産拠点等を示すロット番号及び製造時の連番等により構成され、当該ECUを一意に特定することができるユニークな番号である。ECU部番(型番)は、車載ECU3の種類を特定する番号であり、例えば部品番号である。Software部番は、更新プログラム(更新対象となる制御プログラムP)のソフトウェアの種類を特定するための番号である。車載装置2は、外部サーバS1から取得したターゲット情報に含まれる製造番号又はECU部番と、車両構成情報に含まれる製造番号又はECU部番とを照らし合わせることにより、自車に搭載されている車載ECU3のうち、更新対象の車載ECU3を特定するものであってもよい。
【0053】
現バージョンは、現状において、車載ECU3が実行(適用)しているプログラムのバージョン番号であり、動作面に記憶されているプログラムのバージョン番号である。旧バージョンは、以前に車載ECU3が実行(適用)していたプログラムのバージョン番号であり、非動作面(動作面でない記憶領域)に記憶されているプログラムのバージョン番号である。動作面は、現状において、車載ECU3が実行(適用)しているプログラムが記憶されているいずれかの記憶領域(1面:第1記憶部231又は、2面:第2記憶部232)を特定する情報である。これら運用面とバージョン情報は、更新時に書き込まれた新バージョンのプログラムから、旧バージョンのプログラムにロールバックされる場合に用いられるように記憶されている。
【0054】
状態の管理項目には、対応する車載ECU3(同じレコードのECU-ID)における更新プログラムの適用に関する状態情報(リプロステータス)が格納される。車載装置2は、アクティベート指示の送信先となる車載ECU3と通信し、当該車載ECU3の状態情報(リプロステータス)を取得することにより、個々の車載ECU3の状態(状態の管理項目)を更新するものであってもよい。これにより、車載装置2は、アクティベート処理後の車載ECU3それぞれにおける状態情報(リプロステータス)を集約して、保存及び管理することができる。車載装置2は、更新時の新バージョンのプログラムのインストール時、アクティベート時、及びロールバック処理時に、これらのデータを参照又は更新を行うものであってもよい。
【0055】
セグメント番号の管理項目には、対応する車載ECU3が接続されている通信線41(セグメント)の番号が格納されている。当該通信線41(セグメント)の番号は、車載装置2が備える複数の車内通信部22それぞれの番号(通信ポート番号)に対応している。これにより、車載装置2は、通信線41(セグメント)を介して、自装置における車内通信部22それぞれに直接的に接続されている個々の車載ECU3を特定することができる。
【0056】
更新対象(キャンペーン番号)の管理項目には、今回の更新(キャンペーン)の対象となる車載ECU3に対し、例えば、キャンペーン番号が格納される。例えば、複数の車載ECU3が同時に更新されるグループ更新を行う際、当該更新対象(キャンペーン対象)となる複数の車載ECU3のバージョンのセットで整合性を判断することが必要である。これに対し、車両Cに搭載される全ての車載ECU3において、今回の更新(キャンペーン)の対象となる車載ECU3のフィールドには、当該キャンペーンの番号を格納することにより、更新対象となる車載ECU3を効率的に特定することができる。本実施形態における図示のとおり、更新対象外の車載ECU3フィールドには、例えば、空白(null値を格納)とするものであってもよい。更に、当該キャンペーンの番号が更新対象のフィールドに格納されている複数の車載ECU3に関する情報(ECU部番、ソフトウェアバージョン等)を抜き出し、別個のテーブルにてリスト管理等を行うものであってよい。
【0057】
代理ECU31の管理項目には、対応する車載ECU3が、代理ECU31としての機能を有するか否かを示す情報(可又は不可)が格納される。本実施形態においては、代理ECU31の管理項目が可である車載ECU3が、代理ECU31としての機能することができる車載ECU3であり、代理ECU31として選定されるにあたっての候補ECUに相当する。
【0058】
優先順位の管理項目には、対応する車載ECU3が候補ECUとして特定される場合、これら候補ECUから代理ECU31として選定されるにあたっての優先順位が格納される。車載装置2は、特定した複数の候補ECUにおいて、これら候補ECUそれぞれに設定されている優先順位に基づき、代理要求を順次にこれら候補ECUに送信するものであってもよい。
【0059】
図4は、プログラムの更新処理における車載装置2、代理ECU31及び更新対象の車載ECU3等の状態遷移を例示する説明図である。更新対象の車載装置2及び車載ECU3において、更新プログラムを記憶する前の状態と、記憶した後の状態とは、表示形態を反転して示している。
【0060】
更新プログラムを記憶する前(書換え前)の状態において、車載装置2及び車載ECU3は、動作面に記憶されている制御プログラムPを実行している。車載装置2が外部サーバS1から取得した自装置用の更新プログラムを自装置の非動作面に記憶すると共に、車載ECU3に車載ECU3用の更新プログラムを送信することにより、車載装置2及び車載ECU3の非動作面に更新プログラムが記憶される。
【0061】
車載装置2は、更新対象外であって、代理ECU31の機能を有する車載EUC(候補ECU)に代理要求を送信すると共に、更新対象の車載ECU3にアクティベート指示を送信する。代理要求に応答した車載EUC(候補ECU)は、代理ECU31として処理シーケンスを開始し、車載装置2にアクティベート指示を送信する。アクティベート指示の送信後、代理ECU31は、アクティベート処理を行った車載装置2における動作不備の有無を検出する。
【0062】
代理ECU31は、アクティベート処理後の車載装置2に動作不備を検出した場合(動作不備:有)、車載装置2にロールバック指示を送信する。代理ECU31からのロールバック指示を受信した車載装置2は、更新プログラムを適用する前の元プログラムを実行することにより、ロールバック処理を行う。ロールバック処理を行い、更新プログラムを適用する前の元プログラムを実行する車載装置2は、更新対象の車載ECU3に対し、ロールバック指示を送信する。
【0063】
車載装置2からのロールバック指示を受信した車載装置2は、更新プログラムを適用する前の元プログラムを実行することにより、ロールバック処理を行う。これにより、車載装置2及び車載ECU3は、更新プログラムが適用される前の元プログラムを実行するものなる。
【0064】
このように代理ECU31によって車載装置2におけるアクティベート処理及びロールバック処理を行うことにより、更新対象である車載装置2及び車載ECU3に対し、2段階でのアクティベート処理及びロールバック処理を行うものとなる。これに対し、これら車載装置2及び車載ECU3へのプログラムの更新に関する一連の処理を、エンジン始動又はトラクションモータ駆動が禁止される期間等、車両Cが起動状態となることを禁止される期間にて行う。当該禁止期間に行うことにより、適用されたプログラム間での一時的な不整合(バージョン違い)が発生した状態にて、エンジン始動等が行われることを防止することができる。車載装置2は、更新プログラムに関する一連の処理を、車両Cが起動状態となることを禁止される期間にて行うにあたり、入出力I/F21等を介してIGスイッチ6から出力されるオン信号を、例えばマスク処理等行うことにより一時的に無効化するものであってもよい。
【0065】
図5は、車載装置2、代理ECU31及び更新対象の車載ECU3等による処理の流れ(シーケンス)を例示する説明図である。更新プログラムを用いて、車載装置2(OTAマスタ)及び更新対象の車載ECU3におけるプログラム更新に関する処理を行うにあたり、外部サーバS1(OTAサーバ)、車載装置2(OTAマスタ)、更新対象の車載ECU3(ターゲットECU)、及び代理ECU31それぞれの処理シーケンスについて説明する。
【0066】
車載装置2は、更新プログラムを外部サーバS1から取得する(S01)。車載装置2は、例えば、自装置が搭載されている車両C(自車)の識別番号(VIN:Vehicle Identification Number)を用いて、外部サーバS1にアクセスし、当該外部サーバS1から自車に対して適用される更新プログラムを含むパッケージを取得する。当該パッケージには、例えば、プログラム更新に関する情報であるパッケージ情報(キャンペーン情報)、更新対象となる車載装置2及び車載ECU3に関する情報(ターゲット情報)、プログラムの更新対象である車載装置2及び車載ECU3に適用される更新プログラムが含まれている。
【0067】
車載装置2は、自装置用の更新プログラムを記憶する(S02)。車載装置2は、自装置用の更新プログラムを、非動作面である記憶領域(記憶部)に記憶する。車載装置2は、プログラムを記憶する記憶領域として、第1記憶部231及び第2記憶部232を備えており、例えば、現時点にて実行しているプログラムが第1記憶部231の場合、当該第1記憶部231が動作面に相当する。この場合、非動作面である第2記憶部232には、現時点にて実行しているプログラムよりも前のバージョン(旧バージョン)のプログラムが、バックアップとして保存されている。車載装置2は、非動作面である第2記憶部232に、外部サーバS1から取得した自装置用の更新プログラムを記憶する。これにより、現時点にて実行しているプログラムは、上書きされることなく、第1記憶部231にて記憶されている状態を維持することができる。
【0068】
車載装置2は、更新対象の車載ECU3へ、当該車載ECU3用の更新プログラムを出力(送信)する(S03)。車載装置2は、外部サーバS1から取得したターゲット情報に基づき更新対象の車載ECU3を特定し、特定した車載ECU3に対し、当該車載ECU3用の更新プログラムを送信する。
【0069】
更新対象の車載ECU3は、車載装置2から取得(受信)した更新プログラムを記憶する(S04)。更新対象の車載ECU3は、車載装置2と同様に、取得した更新プログラムを非動作面に記憶することにより、現時点にて実行しているプログラム(動作面に記憶)が、上書きされることを回避することができる。
【0070】
車載装置2は、代理要求を送信することにより、代理ECU31を選定する(S05)。車載装置2は、例えば、自装置の記憶部(第1記憶部231又は第2記憶部232)に記憶されている車両構成情報を参照することにより、代理ECU31として機能する複数の候補ECUを特定する。車載装置2は、特定した複数の候補ECUにおいて、今回のプログラム更新の対象外であるいずれかの候補ECUを代理ECU31として選定する。更新対象外となる候補ECUが複数個、存在する場合、車載装置2は、例えば、予め定められた優先順位にて、これら複数の候補ECUに対し、順次に代理要求(代理要求メッセージ)を送信し、当該代理要求に最先に応答した候補ECUを、代理ECU31として選定するものであってもよい。
【0071】
車載装置2からの代理要求に応答した候補ECUは、例えば、当該代理要求をトリガーとし、代理ECU31としての処理ルーチンを開始する。これにより、代理ECU31は、車載装置2にアクティベート指示を行うアクティベート指示部、アクティベート処理を行った車載装置2に対する異常検出部及び復旧制御部として機能を発揮する。
【0072】
順次に送信した代理要求(代理要求メッセージ)に対し、いずれの候補ECUも、応答しなかった場合、車載装置2は、代理ECU31を特定できなかったために、今回の更新プログラムの適用を行わなかった旨を示す通知を外部サーバS1に送信するものであってもよい。
【0073】
車載装置2は、更新対象の車載ECU3へ、アクティベート指示を出力(送信)する(S06)。車載装置2は、更新対象の車載ECU3それぞれにアクティベート指示を出力し、これら車載ECU3にアクティベート処理を実行させる。
【0074】
更新対象の車載ECU3は、車載装置2から出力されたアクティベート指示に応じて、アクティベート処理を行う(S07)。車載装置2から出力されたアクティベート指示を取得(受信)した車載ECU3は、更新プログラムが記憶された記憶領域を動作面として再起動することにより、当該更新プログラムを適用するアクティベート処理を行う。
【0075】
代理ECU31は、車載装置2に対し、アクティベート指示を出力(送信)する(S08)。車載装置2は、代理ECU31から出力されたアクティベート指示に応じて、アクティベート処理を行う(S09)。代理ECU31から出力されたアクティベート指示を取得(受信)した車載装置2は、更新プログラムが記憶された記憶領域を動作面として再起動することにより、当該更新プログラムを適用するアクティベート処理を行う。
【0076】
代理ECU31は、アクティベート処理を行った車載装置2に対し、動作確認(動作不備検出)の処理を行う(S10)。代理ECU31(異常検出部)は、例えば、アクティベート処理後の車載装置2から送信される定期的な自発送信フレームの有無を監視し、当該自発送信フレームを受信した場合はアクティベート処理後の車載装置2は正常であると判定し、受信できなかった場合は異常であると判定(動作不備検出)する。又は、代理ECU31は、動作不備検出を行うためのテスト用信号をアクティベート処理後の車載装置2に送出し、当該テスト用信号に対する応答信号を受信したか否かに基づき、当該車載装置2の動作確認(動作不備検出)を行うものであってもよい。すなわち、代理ECU31は、アクティベート処理後の車載装置2から、テスト用信号に対する応答信号を受信した場合は正常であると判定し、受信できなかった場合は異常であると判定(動作不備検出)するものであってもよい。
【0077】
代理ECU31は、動作確認結果に応じて、車載装置2に対し正常通知又はロールバック指示を出力(送信)する(S11)。代理ECU31は、動作確認結果が正常である場合、正常通知を車載装置2に出力(送信)する。代理ECU31(復旧制御部)は、動作確認結果が異常(動作不備を検出)である場合、ロールバック指示を車載装置2に出力(送信)する。当該ロールバック指示は、車載装置2におけるアクティベート処理(更新プログラムの適用)が失敗したことを示す異常通知に相当する。
【0078】
車載装置2は、代理ECU31から出力されたロールバック指示に基づき、ロールバック処理を行う(S12)。代理ECU31から出力されたロールバック指示を受信した車載装置2は、更新プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。当該元プログラムは、更新プログラムが記憶されている記憶領域(動作面)とは、異なる記憶領域(非動作面)にバックアップとして記憶(保存)されている。車載装置2は、当該元プログラムが記憶されている記憶領域を動作面として再起動することにより、更新プログラムが記憶されている記憶領域を非動作面とし、ロールバック処理を行うことができる。
【0079】
車載装置2は、更新対象の車載ECU3へ、ロールバック指示を出力(送信)する(S13)。車載装置2は、自装置のロールバック処理した場合、更新対象の車載ECU3に対してもロールバック指示を出力することにより、これら車載装置2及び車載ECU3においてプログラムのバージョンの差異等による不整合が発生することを解消する。
【0080】
車載装置2は、自装置のロールバック処理しなかった場合、すなわち自装置のアクティベート処理が正常終了した場合であっても、更新対象の車載ECU3のうち、いずれかの車載ECU3にてアクティベート処理が失敗した場合、更新対象の全ての車載ECU3へロールバック指示を出力(送信)する。この場合、車載装置2は、更に自装置のロールバック処理を行う。これにより、車載装置2及び車載ECU3においてプログラムのバージョンの差異等による不整合が発生することを解消することができる。
【0081】
更新対象の車載ECU3は、車載装置2から出力されたロールバック指示に応じて、ロールバック処理を行う(S14)。更新対象の車載ECU3は、車載装置2と同様に、更新プログラムが記憶されている記憶領域と、元プログラムが記憶されている記憶領域とにおける動作面及び非動作面の対応関係を切り替えて再起動することにより、元プログラムの実行環境に戻すロールバック処理を行う。
【0082】
車載装置2は、更新プログラムに関する処理結果を外部サーバS1に出力(送信)する(S15)。車載装置2は、更新プログラムに関する処理の結果として、更新対象である車載装置2及び車載ECU3への更新プログラムの適用が成功した旨を示す更新成功通知、又は更新プログラムの適用が失敗しロールバックした旨を示す更新失敗通知を外部サーバS1に出力(送信)する。車載装置2は、更新プログラムに関する処理の結果を表示装置5に出力し、当該処理結果を表示装置5に表示させるものであってもよい。車載装置2は、当該更新プログラムの処理結果に基づき、更新対象である車載装置2及び車載ECU3に関する車両構成情報を修正するものであってもよい。
【0083】
本実施形態において、代理ECU31は、車載装置2におけるプログラムの更新処理を代理するとしたが、これに限定されず、代理ECU31は、更新対象である車載装置2及び車載ECU3におけるプログラムの更新処理の全てを代理するものであってもよい。
【0084】
図6は、車載装置2の制御部20の処理を例示するフローチャートである。車載装置2の制御部20は、例えば車両Cが停止状態(IGスイッチ6がオフ)において、定常的に以下の処理を行う。
【0085】
車載装置2の制御部20は、外部サーバS1から更新プログラムを取得する(S101)。車載装置2の制御部20は、自装置用の更新プログラムを記憶する(S102)。車載装置2の制御部20は、外部サーバS1から、自装置及び車載ECU3に適用するための更新プログラムを含むパッケージを取得し、自装置用の更新プログラムを、非動作面の記憶領域に記憶する。例えば、第1記憶部231が動作面であり、現時点にて実行しているプログラムが記憶されている場合、車載装置2の制御部20は、非動作面である第2記憶部232に、自装置用の更新プログラムを記憶する。
【0086】
車載装置2の制御部20は、更新対象の車載ECU3へ、当該車載ECU3用の更新プログラムを出力(送信)する(S103)。車載装置2の制御部20は、外部サーバS1から取得したパッケージに含まれるターゲット情報に基づき、更新対象の車載ECU3を特定し、特定した車載ECU3に対し当該車載ECU3用の更新プログラムを送信する。
【0087】
車載装置2の制御部20は、代理要求を送信することにより、代理ECU31を選定する(S104)。車載装置2の制御部20は、車両構成情報を参照し、今回のプログラム更新の対象外の車載ECU3であって、代理ECU31として機能する複数の候補ECUを特定する。車載装置2の制御部20は、これら複数の候補ECUに対し、車両構成情報にて設定されている優先順位に基づき、代理要求を順次に送信し、当該代理要求に最先に応答した候補ECUを、代理ECU31として選定する。
【0088】
車載装置2の制御部20は、代理ECU31を選定するにあたり、更新対象外の車載ECU3であって、更新対象の車載ECU3と同じ通信線41(セグメント)に接続されている車載ECU3を代理ECU31として選定するものであってもよい。車載装置2の制御部20は、例えば、車両構成情報を参照することにより、更新対象外の車載ECU3であって、更新対象の車載ECU3と同じ通信線41(セグメント)に接続されている車載ECU3のうち、代理ECU31として機能する単一又は複数の候補ECUを特定する。車載装置2の制御部20は、当該特定した候補ECUに対し、代理要求を送信し、最先に応答した候補ECUを代理ECU31として選定するものであってもよい。
【0089】
その上で、車載装置2の制御部20は、更新対象の車載ECU3が接続されていない通信線41(セグメント)に接続されている車内通信部22への給電を停止し、当該車内通信部22による電力消費を削減するものであってもよい。車載装置2が備える車内通信部22それぞれに対し、当該車内通信部22への電力の供給及び遮断を制御するリレーが設けられており、車載装置2の制御部20は、当該リレーをオフにする。これにより、更新対象の車載ECU3が接続されていない通信線41(セグメント)に接続されている車内通信部22への給電を停止するものであってもよい。プログラムの更新処理は、エンジンの停止期間中に行うことを要するため、鉛バッテリー等の蓄電装置の電力を消費するものとなるところ、当該車内通信部22への通電を停止することにより、電力消費量を低減することができる。
【0090】
車載装置2の制御部20は、更新対象の車載ECU3へ、アクティベート指示を出力(送信)する(S105)。車載装置2の制御部20は、更新対象の車載ECU3それぞれにアクティベート指示を出力し、これら車載ECU3にアクティベート処理を実行させる。
【0091】
車載装置2の制御部20は、代理ECU31からのアクティベート指示を取得(受信)する(S106)。車載装置2の制御部20は、アクティベート指示に応じて、アクティベート処理を行う(S107)。車載装置2の制御部20は、アクティベート処理を行うことにより更新プログラムを実行(適用)し、自装置にて実行する制御プログラムPのバージョンアップを行う。車載装置2の制御部20は、当該更新プログラムを実行することにより、例えば、定期的又は周期的に所定のデータ(フレーム又はメッセージ)をブロードキャスト又はマルチキャストにて出力する。
【0092】
代理ECU31は、アクティベート処理を行った(更新プログラムを適用した)車載装置2から、定期的に送信される所定のデータを受信したか否かを判定し、当該判定結果に基づき、アクティベート処理後の車載装置2において、動作不備が発生したか否かを判定する。又は、代理ECU31は、アクティベート処理を行った(更新プログラムを適用した)車載装置2に対し、テスト用信号を送信し、当該車載装置2からの応答の有無に基づき、アクティベート処理後の車載装置2において、動作不備が発生したか否かを判定するものであってもよい。代理ECU31は、アクティベート処理後の車載装置2において動作不備が発生したと判定した場合、車載装置2にロールバック指示を出力(送信)する。代理ECU31は、アクティベート処理後の車載装置2において動作不備が発生しなかった判定した場合、車載装置2に正常通知を出力(送信)する。
【0093】
車載装置2の制御部20は、代理ECU31からロールバック指示を取得(受信)したか否かを判定する(S108)。代理ECU31からロールバック指示を取得した場合(S108:YES)、車載装置2の制御部20は、ロールバック処理を行う(S109)。車載装置2の制御部20は、代理ECU31からロールバック指示を取得した場合、更新プログラムを適用(アクティベート処理)する前に実行していたプログラム(元プログラム)を実行すべく再起動を行うことにより、ロールバック処理を行う。
【0094】
代理ECU31からロールバック指示を取得しなかった場合(S108:NO)、車載装置2の制御部20は、更新対象の全ての車載ECU3のアクティベート処理が正常に行われたか否かを判定する(S1081)。車載装置2の制御部20は、代理ECU31からロールバック指示を取得しなかった場合、自装置における更新プログラムの適用(アクティベート処理)は正常に完了したと判定する。又は、車載装置2の制御部20は、代理ECU31から正常通知を取得した場合、自装置における更新プログラムの適用(アクティベート処理)は正常に完了したと判定するものであってもよい。その上で、車載装置2の制御部20は、更新対象の全ての車載ECU3における更新プログラムの適用(アクティベート処理)が正常に完了したか否かを判定する。車載装置2の制御部20は、更新対象の全ての車載ECU3それぞれに対し、例えばテスト用の通信データを送信し、当該通信データに対する応答データを受信したか否かに基づき、これら車載ECU3それぞれのアクティベート処理が正常に完了したか否かを判定するものであってもよい。
【0095】
更新対象の全ての車載ECU3のアクティベート処理が正常に行われなかったと判定した場合、すなわち更新対象の車載ECU3のうち、いずれか1つの車載ECU3でもアクティベート処理が正常に行われなかったと判定した場合(S1081:NO)、又は、自装置のロールバック処理を行った(S109)後、更新対象の車載ECU3へ、ロールバック指示を出力(送信)する(S110)。更新対象の車載ECU3は、車載装置2から出力されたロールバック指示に応じて、ロールバック処理を行う。
【0096】
更新対象の全ての車載ECU3のアクティベート処理が正常に行われた判定した場合(S1081:YES)、又は、更新対象の車載ECU3へ、ロールバック指示を出力した(S110)後、車載装置2の制御部20は、更新プログラムに関する処理結果を外部サーバS1に出力(送信)する(S111)。車載装置2の制御部20は、更新プログラムに関する処理結果を外部サーバS1及び表示装置5に出力し、更に当該処理結果に基づき、更新対象である車載装置2及び車載ECU3に関する車両構成情報を修正するものであってもよい。
【0097】
今回開示された実施形態は全ての点で例示であって、制限的なものではないと考えられるべきである。本開示の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0098】
C 車両
S 車載更新システム
S1 外部サーバ(OTAサーバ)
S11 記憶部
N 車外ネットワーク
1 車外通信装置
11 アンテナ
2 車載装置(OTAマスタ)
20 制御部
21 入出力I/F
22 車内通信部
231 第1記憶部(記憶部)
232 第2記憶部(記憶部)
24 記録媒体
P 制御プログラム(プログラム製品)
3 車載ECU(候補ECU)
31 代理ECU
4 車載ネットワーク
41 通信線(セグメント)
5 表示装置
6 IGスイッチ