(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022163546
(43)【公開日】2022-10-26
(54)【発明の名称】制御装置及び制御システム
(51)【国際特許分類】
G06F 8/654 20180101AFI20221019BHJP
G06F 21/64 20130101ALI20221019BHJP
【FI】
G06F8/654
G06F21/64
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021068551
(22)【出願日】2021-04-14
(71)【出願人】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】野村 晃啓
(72)【発明者】
【氏名】森田 伸義
(72)【発明者】
【氏名】矢野 正
(72)【発明者】
【氏名】片岡 幹雄
(72)【発明者】
【氏名】藤井 康広
(72)【発明者】
【氏名】金子 周平
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA81
5B376FA11
5B376GA08
(57)【要約】
【課題】シングルバンクマイコンを備える制御装置のリプログラミングに要する時間を短縮することを目的とする。
【解決手段】ECU901は、メモリバンクがシングルバンクとして構成された書換領域13に格納されたプログラムを実行する第1マイコン1と、第2マイコン2とを備える制御装置である。第2マイコン2は、書換領域13に格納されたプログラムを書換プログラム5に書き換えるリプログラミング処理において書換プログラム5に対して前処理を行う前処理部214と、前処理が行われた書換プログラム5を第1マイコン1に送信する送信部213と、を有する。第1マイコン1は、第2マイコン2から送信された書換プログラム5を受信する受信部121と、受信された書換プログラム5を書換領域13に書込部122と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
メモリバンクがシングルバンクとして構成された所定領域に格納されたプログラムを実行する第1演算処理装置と、第2演算処理装置とを備える制御装置であって、
前記第2演算処理装置は、
前記所定領域に格納された前記プログラムを書換プログラムに書き換えるリプログラミング処理において前記書換プログラムに対して前処理を行う前処理部と、
前記前処理が行われた前記書換プログラムを前記第1演算処理装置に送信する送信部と、を有し、
前記第1演算処理装置は、
前記第2演算処理装置から送信された前記書換プログラムを受信する受信部と、
受信された前記書換プログラムを前記所定領域に書き込む書込部と、を有する
ことを特徴とする制御装置。
【請求項2】
前記第1演算処理装置は、
前記リプログラミング処理の開始要求を前記第2演算処理装置に通知する通知部と、
前記通知部が前記開始要求を通知した後、前記所定領域に格納された前記プログラムを消去する消去部と、を更に有し、
前記第2演算処理装置は、前記第1演算処理装置から前記開始要求が通知された場合、前記書換プログラムを取得する取得部を更に有し、
前記前処理部は、前記取得部により取得された前記書換プログラムに対して前記前処理を行う
ことを特徴とする請求項1に記載の制御装置。
【請求項3】
前記第1演算処理装置は、受信された前記書換プログラムを前記所定領域に書き込む前に一時的に格納するバッファ領域を有し、
前記通知部は、前記バッファ領域の空き状況に応じて前記書換プログラムの送信許可を前記第2演算処理装置に通知し、
前記送信部は、前記第1演算処理装置から前記送信許可が通知された場合、前記前処理が行われた前記書換プログラムを前記第1演算処理装置に送信する
ことを特徴とする請求項2に記載の制御装置。
【請求項4】
前記通知部は、前記制御装置が制御動作を停止する停止状態に移行する際に、前記リプログラミング処理の要否を判定し、判定結果に基づいて前記開始要求を前記第2演算処理装置に通知する
ことを特徴とする請求項2に記載の制御装置。
【請求項5】
前記前処理部は、
予め前記書換プログラムに付与された電子署名を検証する署名検証部、及び、予め暗号化された前記書換プログラムを復号化する復号化部を含む暗号処理部と、
予め圧縮された前記書換プログラムを伸張する伸張処理部と、を有する
ことを特徴とする請求項2に記載の制御装置。
【請求項6】
前記制御装置は、車両に搭載され前記車両を制御する装置であり、
前記通知部は、前記車両のイグニッションスイッチがオフ状態に移行することに伴って前記制御装置が制御動作を停止する停止状態に移行することを契機として、前記開始要求を前記第2演算処理装置に通知する
ことを特徴とする請求項2に記載の制御装置。
【請求項7】
メモリバンクがシングルバンクとして構成された所定領域に格納されたプログラムを実行する第1制御装置と、第2制御装置とを備える制御システムであって、
前記第2制御装置は、
前記所定領域に格納された前記プログラムを書換プログラムに書き換えるリプログラミング処理において前記書換プログラムに対して前処理を行い、
前記前処理が行われた前記書換プログラムを前記第1制御装置に送信し、
前記第1制御装置は、
前記第2制御装置から送信された前記書換プログラムを受信し、
受信された前記書換プログラムを前記所定領域に書き込む
ことを特徴とする制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置及び制御システムに関する。
【背景技術】
【0002】
車両に搭載される電子制御装置(Electronic Control Unit、以下「ECU」とも称する)には、マイクロコントローラ(以下「マイコン」とも称する)が用いられている。ECUでは、マイコンに備えられたフラッシュメモリ等の不揮発性の記憶装置に格納されるソフトウェアへの機能追加やバグフィックス等を行うため、市場においてソフトウェアのリプログラミングが行われる。
【0003】
リプログラミングの1つの手法として、診断機等のソフトウェア書換装置から、有線通信によって、リプログラミング用のソフトウェアを配信する手法がある(例えば、特許文献1)。リプログラミングの他の1つの手法として、OTA(Over The Air)と呼ばれる無線通信によって、リプログラミング用のソフトウェアを配信する手法がある(例えば、特許文献2)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11-96082号公報
【特許文献2】特開2004-326689号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
OTAによるリプログラミングでは、マイコンに備えられた記憶装置のメモリバンクの構成によって、プログラムを書き換えるタイミングが制約される。メモリバンクの構成は、デュアルバンクとシングルバンクとに分けられる。デュアルバンクの記憶装置を備えるマイコン(以下「デュアルバンクマイコン」とも称する)では、プログラムの動作面と書換面とが独立している。これにより、デュアルバンクマイコンでは、走行中(イグニッションスイッチがオン状態の際)であっても、車両の制御機能を提供しながら、リプログラミングを行うことが可能である。一方、シングルバンクの記憶装置を備えるマイコン(以下「シングルバンクマイコン」とも称する)では、プログラムの動作面と書換面とが同一である。これにより、シングルバンクマイコンでは、走行中に車両の制御機能を提供しながら、リプログラミングを行うことは難しい。
【0006】
したがって、シングルバンクマイコンでは、車両の制御機能を提供する必要がない駐車中(イグニッションスイッチがオフ状態の際)等にリプログラミングを行う必要がある。すなわち、駐車中等にリプログラミングを行う場合、リプログラミングが完了するまでの間は、走行すること(イグニッションスイッチをオン状態に移行すること)ができないので、ユーザのダウンタイムが発生してしまう。
【0007】
近年、CASE(Connected, Autonomous/Automated, Shared, Electric)等の技術分野において技術革新が進む中、ECUに求められる機能の高度化により、ソフトウェアのプログラムサイズが増加しているので、必然的にリプログラミングに要する時間は長くなる傾向にある。また、セキュリティの強化を図るべく、ソフトウェアの機密性や完全性を担保するため、ソフトウェアを暗号化したり電子署名を付与したりすることが行われている。したがって、ECUでは、リプログラミング時に復号化や電子署名の検証といった暗号処理が必要になり、リプログラミングに要する時間が更に長くなる傾向にある。このようなことから、シングルバンクマイコンを備えるECUでは、上記のような制約があるので、ユーザのダウンタイムが長くなってしまう。このような問題は、ECU以外の制御装置でも同様に発生する。
【0008】
本発明は、上記に鑑みてなされたものであり、シングルバンクマイコンを備える制御装置のリプログラミングに要する時間を短縮することを目的としている。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明の制御装置は、メモリバンクがシングルバンクとして構成された所定領域に格納されたプログラムを実行する第1演算処理装置と、第2演算処理装置とを備える制御装置であって、前記第2演算処理装置は、前記所定領域に格納された前記プログラムを書換プログラムに書き換えるリプログラミング処理において前記書換プログラムに対して前処理を行う前処理部と、前記前処理が行われた前記書換プログラムを前記第1演算処理装置に送信する送信部と、を有し、前記第1演算処理装置は、前記第2演算処理装置から送信された前記書換プログラムを受信する受信部と、受信された前記書換プログラムを前記所定領域に書き込む書込部と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、シングルバンクマイコンを備える制御装置のリプログラミングに要する時間を短縮することができる。
上記以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0011】
【
図1】実施形態1のECUの機能的構成を示すブロック図。
【
図2】
図1に示す書換ソフトウェアの生成過程を説明する図。
【
図3】
図1に示すECUにおいて行われるリプログラミング処理のシーケンス図。
【
図4】
図3に示すリプログラミング処理を説明する図。
【
図5】実施形態2の制御システムの機能的構成を示すブロック図。
【
図6】第1ECUと協働してリプログラミング処理を行う第2ECUを決定する処理を説明する図。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について図面を用いて説明する。なお、各実施形態において同一の符号を付された構成は、特に言及しない限り、各実施形態において同様の機能を有し、その説明を省略する。
【0013】
[実施形態1]
本実施形態では、シングルバンクマイコンを備え、リプログラミング処理を行う制御装置の一例として、車両に搭載され車両を制御する装置であるECU901について説明する。しかしながら、本発明の制御装置は、車両以外の機械又は機器に搭載され、車両以外の機械又は機器を制御する装置であってもよい。ECU901は、特許請求の範囲に記載された「制御装置」の一例である。
【0014】
本実施形態において、リプログラミング処理は、制御装置の機能を実現するプログラムを含むソフトウェアを、新たなソフトウェアに書き換える処理のことである。本実施形態では、リプログラミング処理によって書き換えられる新たなソフトウェアを、「書換ソフトウェア221」とも称する。書換ソフトウェア221は、制御装置の機能を実現する新たなプログラムである「書換プログラム5」を複数含んで構成される。
【0015】
図1は、実施形態1のECU901の機能的構成を示すブロック図である。
【0016】
ECU901は、第1マイコン1と、第2マイコン2とを備える。第1マイコン1は、特許請求の範囲に記載された「第1演算処理装置」の一例である。第2マイコン2は、特許請求の範囲に記載された「第2演算処理装置」の一例である。
【0017】
第1マイコン1と第2マイコン2とは、通信バス3によって互いに接続される。通信バス3は、後述する通知部120、受信部121及び送信部213によるデータ通信に用いられる。通信バス3の通信規格は、SPI、MII、CAN又はEthernet等であってもよく、特に限定されない。
【0018】
第1マイコン1は、メモリバンクがシングルバンクとして構成された所定領域(後述する書換領域13)に格納されたプログラムを実行する。このプログラムは、ECU901の機能を実現するためのプログラムである。第1マイコン1は、シングルバンクマイコンによって構成される。
【0019】
第1マイコン1は、このプログラムの実行が停止された停止状態に移行することを契機として、リプログラミング処理を行う。具体的には、第1マイコン1は、ECU901が制御動作を停止する停止状態に移行することを契機として、リプログラミング処理を行う。例えば、第1マイコン1は、車両のイグニッションスイッチがオフ状態に移行することに伴ってECU901が停止状態に移行すること契機として、リプログラミング処理を行う。第1マイコン1は、ECU901に複数備えられていてもよい。
【0020】
第1マイコン1は、制御部10と、バッファ領域11と、リプロ処理プログラム記憶部12と、書換領域13とを備える。
【0021】
制御部10は、CPU、MPU又はDSP等のプロセッサを有しており、リプロ処理プログラム記憶部12に格納されたプログラム、又は、書換領域13に格納されたプログラムを実行する。これにより、制御部10は、リプログラミング機能又はECU901の機能を実現するための第1マイコン1に係る処理を行う。
【0022】
バッファ領域11は、受信部121により受信された書換プログラム5を書換領域13に書き込む前に、当該書換プログラム5を一時的に格納するバッファ領域である。バッファ領域11への書き込み回数や書き込み速度の観点から、バッファ領域11は、DRAM、SRAMのような揮発性の記憶装置によって構成されることが好ましい。但し、バッファ領域11は、EEPROM、フラッシュメモリ又はSSDのような不揮発性の記憶装置によって構成されてもよい。
【0023】
リプロ処理プログラム記憶部12(以下「プログラム記憶部12」とも称する)は、ECU901のリプログラミング機能を実現するために制御部10によって実行されるプログラム(以下「リプロ処理プログラム」とも称する)を格納する。プログラム記憶部12は、EEPROM、フラッシュメモリ又はSSDのような不揮発性の記憶装置によって構成されてもよい。
【0024】
プログラム記憶部12は、リプロ処理プログラムとして、通知部120と、受信部121と、書込部122と、消去部123とを格納する。
【0025】
通知部120は、リプログラミング処理の開始要求を第2マイコン2に通知する。通知部120は、ECU901が停止状態に移行することを契機として、リプログラミング処理の開始要求を第2マイコン2に通知してもよい。また、通知部120は、ECU901が停止状態に移行する際に、リプログラミング処理の要否を判定し、判定結果に基づいて、リプログラミング処理の開始要求を第2マイコン2に通知してもよい。通知部120は、リプログラミング処理が必要であることを示す情報が外部装置からECU901に通知されたか否かに基づいて、リプログラミング処理の要否を判定してもよい。或いは、通知部120は、外部装置からOTA等によって配信された書換ソフトウェア221のダウンロードが完了して、書換ソフトウェア221が書換ソフトウェア記憶部22に格納されたか否かに基づいて、リプログラミング処理の要否を判定してもよい。また、通知部120は、バッファ領域11の空き状況に応じて書換プログラム5の送信許可を第2マイコン2に通知する。
【0026】
受信部121は、第2マイコン2から通信バス3を介して送信された書換プログラム5を受信する。受信部121は、受信された書換プログラム5をバッファ領域11に一時的に格納する。
【0027】
書込部122は、バッファ領域11に格納された書換プログラム5を読み出し、書換領域13に書き込む。すなわち、書込部122は、受信部121により受信された書換プログラム5を書換領域13に書き込む。書込部122は、書換領域13への書き込みが完了した場合、書き込み対象の書換プログラム5をバッファ領域11から消去する。これにより、受信部121は、新たな書換プログラム5を受信してバッファ領域11に格納することができる。
【0028】
消去部123は、通知部120がリプログラミング処理の開始要求を通知した後、書換領域13に格納されたプログラムを消去する。消去部123によるプログラムの消去によって書換領域13に空きが有ると、書込部122は、バッファ領域11に格納された書換プログラム5を、書換領域13に書き込むことができると共に、当該書換プログラム5をバッファ領域11から消去することができる。
【0029】
書換領域13は、ECU901の機能を実現するためのプログラムを格納する領域である。ECU901の機能を実現するためのプログラムとしては、例えば、車両の制御機能を実現するプログラムの他、第1マイコン1を起動させるブートプログラム等を含む。書換領域13は、EEPROM、フラッシュメモリ又はSSDのような不揮発性の記憶装置によって構成されてもよい。
【0030】
第2マイコン2は、第1マイコン1よりもリソースに余裕があるマイコンである。第2マイコン2は、ECU901が停止状態に移行する際にリソースに空きが生じるマイコンであってもよい。具体的には、第2マイコン2は、或るドライビングサイクルにおいて、イグニッションスイッチがオフ状態に移行する際に、第1マイコン1に対するリプログラミングを行うための処理を行い得る程度にリソースに空きが生じるマイコンであってもよい。例えば、第2マイコン2は、イグニッションスイッチがオフ状態に移行する際に第2マイコン2に対するリプログラミングを行う必要が無いデュアルバンクマイコンによって構成される。デュアルバンクマイコンは、イグニッションスイッチがオン状態でもリプログラミングを行うことが可能であるからである。或いは、第2マイコン2は、OTAのリプログラミング対象でないシングルバンクマイコンによって構成されてもよい。第2マイコン2は、ECU901に複数備えられていてもよい。
【0031】
なお、ドライビングサイクルとは、イグニッションスイッチがオン状態に移行してエンジン等の動力源が始動した状態(アイドリングストップ対応車両におけるエンジンの自動停止に続く始動を除く)から、イグニッションスイッチがオフ状態に移行して動力源が停止した状態(アイドリングストップ対応車両におけるエンジンの自動停止を除く)までの期間のことであってもよい。
【0032】
第2マイコン2は、制御部20と、リプロ処理プログラム記憶部21と、書換ソフトウェア記憶部22とを備える。
【0033】
制御部20は、CPU、MPU又はDSP等のプロセッサを有しており、リプロ処理プログラム記憶部21に格納されたプログラム、又は、第2マイコン2に係るECU901の機能を実現するためのプログラム(不図示)を実行する。これにより、制御部20は、リプログラミング機能又はECU901の機能を実現するための第2マイコン2に係る処理を行う。
【0034】
リプロ処理プログラム記憶部21(以下「プログラム記憶部21」とも称する)は、ECU901のリプログラミング機能を実現するために制御部20によって実行されるプログラム(以下「リプロ処理プログラム」とも称する)を格納する。プログラム記憶部21は、EEPROM、フラッシュメモリ又はSSDのような不揮発性の記憶装置によって構成されてもよい。
【0035】
プログラム記憶部21は、リプロ処理プログラムとして、取得部210と、暗号処理部211と、伸張処理部212とを格納する。
【0036】
取得部210は、第1マイコン1の通知部120からリプログラミング処理の開始要求が通知された場合、書換ソフトウェア記憶部22に格納された書換ソフトウェア221(書換プログラム5)を取得する。
【0037】
暗号処理部211は、取得部210により取得された書換ソフトウェア221(書換プログラム5)に対して暗号処理を行う。暗号処理部211は、プログラム記憶部21に備えられたリプロ処理プログラムとして構成されるのではなく、耐タンパ性を有するHSM、SHE、TPM、又は、その他のセキュアマイコン(セキュアコアとも称する)によって構成されてもよい。暗号処理部211は、耐タンパ性を有するセキュアマイコン等によって構成されることにより、プログラムの改竄を防止することができるので、リプログラミング処理に関するECU901のセキュリティの強化を図ることができる。
【0038】
暗号処理部211は、復号化部2111と署名検証部2112とを含む。復号化部2111は、予め暗号化された書換ソフトウェア221(書換プログラム5)を、予め定められた暗号アルゴリズムによって復号化する。復号化に利用される共通鍵又は秘密鍵の鍵情報は、プログラム記憶部21のような不揮発性の記憶装置に予め格納されていてよいし、耐タンパ性を有する記憶装置に予め格納されていてもよい。署名検証部2112は、予め書換ソフトウェア221(書換プログラム5)に付与された電子署名を、予め定められた暗号アルゴリズムによって検証する。この電子署名が検証されることにより、書換ソフトウェア221(書換プログラム5)の完全性が検証される。署名検証に利用される公開鍵又は共通鍵の鍵情報は、プログラム記憶部21のような不揮発性の記憶装置に予め格納されていてよいし、耐タンパ性を有する記憶装置に予め格納されていてもよい。
【0039】
伸張処理部212は、取得部210により取得された書換ソフトウェア221(書換プログラム5)に対して伸張処理を行う。すなわち、伸張処理部212は、予め圧縮された書換ソフトウェア221(書換プログラム5)を伸張する。伸張処理部212は、プログラム記憶部21に備えられたリプロ処理プログラムとして構成されるのではなく、第2マイコン2に備えられたハードウェアアクセラレータによって構成されてもよい。
【0040】
本実施形態では、書換ソフトウェア221(書換プログラム5)に対して行われる、暗号処理部211の暗号処理(署名検証及び復号化)、及び、伸張処理部212の伸張処理を、「暗号・伸張処理」とも称する。暗号・伸張処理は、リプログラミング処理において第1マイコン1の書換領域13に格納されたプログラムを書換ソフトウェア221(書換プログラム5)に書き換える前に、書換ソフトウェア221(書換プログラム5)に対して行われる処理である「前処理」の一例である。本実施形態では、暗号処理部211及び伸張処理部212を、「前処理部214」とも称する。
【0041】
送信部213は、暗号処理部211及び伸張処理部212により暗号・伸張処理が行われた書換プログラム5を、通信バス3を介して第1マイコン1に送信する。具体的には、送信部213は、第1マイコン1の通知部120から書換プログラム5の送信許可が通知された場合、暗号処理部211及び伸張処理部212により暗号・伸張処理が行われた書換プログラム5を、第1マイコン1に送信する。すなわち、送信部213は、第1マイコン1から書換プログラム5の送信許可が通知された場合、前処理部214により前処理が行われた書換プログラム5を第1マイコン1に送信する。
【0042】
書換ソフトウェア記憶部22は、第1マイコン1の書換領域13に格納されたプログラムを書き換えるための書換プログラム5を含む書換ソフトウェア221を格納する。書換ソフトウェア記憶部22は、第2マイコン2に備えられた不揮発性の記憶装置によって構成されてもよい。書換ソフトウェア記憶部22は、外部フラッシュのような、ECU901に外付けされる不揮発性の記憶装置によって構成されてもよい。書換ソフトウェア記憶部22が外付けの記憶装置である場合、書換ソフトウェア記憶部22と第2マイコン2とのデータ通信は、SPIのような通信規格を用いて行われてもよい。
【0043】
第2マイコン2は、イグニッションスイッチがオン状態の際、すなわちECU901が停止状態に移行する前に、外部装置からOTA等によって配信された書換ソフトウェア221をダウンロードすることによって書換ソフトウェア221を受信し、書換ソフトウェア記憶部22に格納してもよい。或いは、第2マイコン2は、CAN又はEthernet等の通信ネットワークを介してECU901に接続された他のECUから書換ソフトウェア221を受信し、書換ソフトウェア記憶部22に格納してもよい。第2マイコン2が書換ソフトウェア221を受信する手法については、特に限定されない。
【0044】
図2は、
図1に示す書換ソフトウェア221の生成過程を説明する図である。なお、
図2に記載された矢印は、概念的なコマンド又はデータの流れを示したものであり、通信方向又は指示方向を限定するものではない。また、矢印で図示されていないコマンド又はデータの流れが存在してもよい。
図3以降の図面についても同様である。
【0045】
書換プログラム5は、任意のプログラミング言語によって作成されたソースコードが、コンパイラ又はインタプリタ等のソフトウェアによって変換されたオブジェクトコード又は実行ファイルとして表現される。
【0046】
書換ソフトウェア生成装置4は、1又は複数の書換プログラム5を入力として、予め定められたフォーマットに基づいて、書換ソフトウェア221を出力するソフトウェアである。書換ソフトウェア生成装置4は、予め定められたアルゴリズムによって書換プログラム5の圧縮、暗号化及び署名付与をそれぞれ行う圧縮部41、暗号化部42及び署名付与部43を含む。
【0047】
圧縮部41、暗号化部42及び署名付与部43の各処理の実行順序は、書換ソフトウェア221のフォーマットに応じて自由に設定され得る。
図2に示す各処理の実行順序の例によって書換ソフトウェア221が生成された場合、第2マイコン2におけるリプログラミング処理では、書換ソフトウェア生成装置4とは逆の順序(署名検証→復号化→伸張)にて、署名検証、復号化及び伸張の各処理が実行される。
【0048】
なお、書換ソフトウェア生成装置4は、圧縮部41、暗号化部42及び署名付与部43の全てが必須であるとは限らない。また、書換ソフトウェア221のフォーマットによっては、書換ソフトウェア生成装置4において、圧縮、暗号化及び署名付与の各処理を、書換プログラム5の任意のサイズ毎に行うことも可能である。この際、例えば、書換ソフトウェア生成装置4において、書換プログラム5に対して2つの電子署名を付与した場合には、第2マイコン2におけるリプログラミング処理では、2回の署名付与に対応して2回の署名検証を行うことになる。
【0049】
図3は、
図1に示すECU901において行われるリプログラミング処理のシーケンス図である。
【0050】
図3に示すリプログラミング処理は、イグニッションスイッチがオフ状態に移行することを契機として開始される(ステップS101)。
【0051】
第1マイコン1は、リプログラミング処理の要否を判定する(ステップS102)。第1マイコン1は、例えば、書換ソフトウェア221が書換ソフトウェア記憶部22に格納されていない場合(ステップS102がNO)、リプログラミング処理が不要と判定する。そして、第1マイコン1は、リプログラミング処理を終了する。一方、第1マイコン1は、書換ソフトウェア221が書換ソフトウェア記憶部22に格納されている場合(ステップS102がYES)、リプログラミング処理が必要と判定する。そして、第1マイコン1は、リプログラミング処理の開始要求を第2マイコン2に通知する(ステップS103)。
【0052】
第2マイコン2は、リプログラミング処理の開始要求が第1マイコン1から通知された場合、書換ソフトウェア記憶部22に格納された書換ソフトウェア221を取得する(ステップS104)。そして、第2マイコン2は、取得された書換ソフトウェア221に付与された電子署名を検証し(ステップS105)、検証結果を第1マイコン1に通知する(ステップS106)。
【0053】
第1マイコン1は、電子署名の検証結果が第2マイコン2から通知された場合、検証結果が検証成功を示しているか否かを判定する(ステップS107)。第1マイコン1は、検証結果が検証失敗を示している場合(ステップS107がNO)、所定の例外処理を行う(ステップS108)。この例外処理としては、例えば、ステップS109以降のリプログラミング処理を中止し、ECU901を電源シャットダウン状態に移行させてもよい。一方、第1マイコン1は、検証結果が検証成功を示している場合(ステップS107がYES)、書換領域13に格納されたプログラムの消去を開始する(ステップS109)。
【0054】
第2マイコン2は、ステップS109に並行して、書換ソフトウェア記憶部22に格納された書換ソフトウェア221から、予め定められたデータブロック単位で、書換プログラム5を取得する(ステップS110)。そして、第2マイコン2は、取得された書換プログラム5に対して暗号・伸張処理を行い(ステップS111)、当該書換プログラム5を復号化及び伸張する。第1マイコン1によるプログラムの消去(ステップS109)に並行して、第2マイコン2が暗号・伸張処理を行うことによって、ECU901は、リプログラミングに要する時間を短縮することができる。
【0055】
第1マイコン1は、ステップS109の後、書換プログラム5を格納可能な程度の空きがバッファ領域11に有るか否かを判定する(ステップS112)。第1マイコン1は、バッファ領域11に空きが無い場合(ステップS112がNO)、所定の周期毎にバッファ領域11に空きが生じたか否かをポーリングする。一方、第1マイコン1は、バッファ領域11に空きが有る場合(ステップS112がYES)、書換プログラム5の送信許可を第2マイコン2に通知する(ステップS113)。すなわち、第1マイコン1は、バッファ領域11の空き状況に応じて書換プログラム5の送信許可を第2マイコン2に通知する。
【0056】
第2マイコン2は、書換プログラム5の送信許可が第1マイコン1から通知された場合、予め定められたデータブロック単位で、書換プログラム5を第1マイコン1に送信する(ステップS114)。第1マイコン1は、第2マイコン2から送信された書換プログラム5を受信し(ステップS115)、バッファ領域11に格納する。そして、第1マイコン1は、予め定められたデータブロック単位で、バッファ領域11に格納された書換プログラム5を読み出し、書換領域13に書き込む(ステップS116)。ここで、バッファ領域11に格納された書換プログラム5は、書換領域13への書き込みが完了した後、新たな書換プログラム5が受信されるまでに、第1マイコン1によって消去される。
【0057】
第2マイコン2は、ステップS114の後、書換プログラム5の第1マイコン1への送信が、書換ソフトウェア221を構成する最終のデータブロックまで完了したか否かを判定する(ステップS117)。すなわち、第2マイコン2は、書換プログラム5を全て第1マイコン1に送信したか否かを判定する。第2マイコン2は、書換プログラム5の送信が最終のデータブロックまで完了していない場合(ステップS117がNO)、ステップS110に移行する。一方、第2マイコン2は、書換プログラム5の送信が最終のデータブロックまで完了した場合(ステップS117がYES)、第2マイコン2に係るリプログラミング処理を終了する。
【0058】
第1マイコン1は、ステップS116の後、書換プログラム5の書換領域13への書き込みが、書換ソフトウェア221を構成する最終のデータブロックまで完了したか否かを判定する(ステップS118)。すなわち、第1マイコン1は、書換プログラム5を全て書換領域13に書き込んだか否かを判定する。第1マイコン1は、書換プログラム5の書き込みが最終のデータブロックまで完了していない場合(ステップS118がNO)、ステップS112に移行する。一方、第2マイコン2は、書換プログラム5の書き込みが最終のデータブロックまで完了した場合(ステップS118がYES)、第1マイコン1に係るリプログラミング処理を終了する。
【0059】
第1マイコン1及び第2マイコン2は、書換プログラム5の書き込み及び送信が最終のデータブロックまで完了した場合、リプログラミング処理が完了したと判定する。その後、第1マイコン1及び第2マイコン2は、ECU901を電源シャットダウン状態に移行させてもよい。
【0060】
なお、第2マイコン2は、暗号・伸張処理を行った後、第1マイコン1から書換プログラム5の送信許可を通知されるまでの間(ステップS111とステップS113との間)に、先行して、新たな書換プログラム5を取得し、暗号・伸張処理を行ってもよい。
【0061】
図4は、
図3に示すリプログラミング処理を説明する図である。なお、
図4において、紙面の右方向は、時間軸の正方向を示す。
【0062】
図4では、第2マイコン2において書換ソフトウェア221に付与された電子署名の検証が行われ、第1マイコン1において署名の検証が成功したことが確認された後に、期間T1が開始する。
【0063】
期間T1において、第1マイコン1では、書換領域13に格納されたプログラムを消去している。これに並行して、第2マイコン2では、書換プログラム5の暗号・伸張処理を行う。また、第2マイコン2では、バッファ領域11の空き状況に応じて、予め定められたデータブロック単位で、書換プログラム5を第1マイコン1に送信することができる。書換領域13に格納されたプログラムの消去中、第1マイコン1は、書換プログラム5を書換領域13に書き込むことができないので、書換プログラム5(B1、B2)は、バッファ領域11に格納したままとなる。
【0064】
期間T2において、第1マイコン1では、期間T1においてバッファ領域11に格納された書換プログラム5(B1、B2)を書換領域13に書き込む。この書き込みが完了すると、第1マイコン1は、バッファ領域11に格納された書換プログラム5(B1、B2)を消去する。バッファ領域11に空きが生じるまでの間、第2マイコン2では、先行して、書換プログラム5の暗号・伸張処理を行うことができる。バッファ領域11に空きが生じたタイミングにおいて、第1マイコン1は書換プログラム5の送信許可を第2マイコン2に通知する。すると、第2マイコン2は、先行して暗号・伸張処理が行われた書換プログラム5(B3、B4)を第1マイコン1に送信することができる。第1マイコン1では、書換プログラム5(B3、B4)をまとめて書換領域13に書き込むことができる。
【0065】
期間T3以降においても、第1マイコン1及び第2マイコン2の基本的な処理手順は期間T1及びT2と同様である。すなわち、第2マイコン2では、暗号・伸張処理を先行して行い、バッファ領域11に空きが生じた分だけ、書換プログラム5を第1マイコン1に送信する。第1マイコン1では、バッファ領域11に格納された書換プログラム5を書換領域13に書き込み、書き込みが完了したらバッファ領域11に格納された書換プログラム5を消去する。
【0066】
以上のように、実施形態1のECU901は、メモリバンクがシングルバンクとして構成された書換領域13に格納されたプログラムを実行する第1マイコン1と、第2マイコン2とを備える制御装置である。第2マイコン2は、リプログラミング処理において暗号・伸張処理等の前処理を書換プログラム5に行う前処理部214と、前処理が行われた書換プログラム5を第1マイコン1に送信する送信部213とを有する。第1マイコン1は、第2マイコン2から送信された書換プログラム5を受信する受信部121と、受信された書換プログラム5を書換領域13に書き込む書込部122とを有する。
【0067】
このような構成により、実施形態1のECU901は、第1マイコン1のプログラムを書換プログラム5に書き換える前に書換プログラム5に対して行われる前処理を、第1マイコン1にて行うのではなく、第2マイコン2にて行うことができる。すなわち、実施形態1のECU901では、第1マイコン1と第2マイコン2とが協働してリプログラミング処理を行うことによって、第1マイコン1のプログラムを書換プログラム5に書き換えることができる。これにより、実施形態1のECU901は、第2マイコン2に比べてリソースが制限された第1マイコン1に係るリプログラミング処理の処理時間を短縮することができる。よって、実施形態1のECU901は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を短縮することができる。
【0068】
更に、実施形態1の第1マイコン1は、リプログラミング処理の開始要求を第2マイコン2に通知する通知部120と、通知部120が開始要求を通知した後、書換領域13に格納されたプログラムを消去する消去部123とを更に有する。実施形態1の第2マイコン2は、第1マイコン1からリプログラミング処理の開始要求が通知された場合、書換プログラム5を取得する取得部210を更に有する。第2マイコン2の前処理部214は、取得部210により取得された書換プログラム5に対して前処理を行う。
【0069】
このような構成により、実施形態1の第2マイコン2は、第1マイコン1が書換プログラム5を書き込むことができない書換領域13のプログラムの消去中に、先行して、新たな書換プログラム5に対する前処理を行うことができる。これにより、実施形態1のECU901は、第2マイコン2のリソースを有効活用して書換領域13のプログラムが消去されたら第1マイコン1が書換プログラム5を直ちに書換領域13に書き込むことができる。したがって、実施形態1のECU901は、第1マイコン1に係るリプログラミング処理を効率的に行うことができ、その処理時間を更に短縮することができる。よって、実施形態1のECU901は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を更に短縮することができる。
【0070】
更に、実施形態1の第1マイコン1は、受信された書換プログラム5を書換領域13に書き込む前に一時的に格納するバッファ領域11を有する。第1マイコン1の通知部120は、バッファ領域11の空き状況に応じて書換プログラム5の送信許可を第2マイコン2に通知する。第2マイコン2の送信部213は、第1マイコン1から送信許可が通知された場合、前処理が行われた書換プログラム5を第1マイコン1に送信する。
【0071】
このような構成により、実施形態1の第2マイコン2は、第1マイコン1が書換領域13に書換プログラム5を書き込み中、又は、書換領域13からプログラムを消去中であっても、前処理が行われた書換プログラム5を第1マイコン1に送信することができる。これにより、実施形態1のECU901は、書換領域13への書換プログラム5の書き込みが可能なタイミングになると、第1マイコン1が書換プログラム5を直ちに書換領域13に書き込むことができる。したがって、実施形態1のECU901は、第1マイコン1に係るリプログラミング処理を効率的に行うことができ、その処理時間を更に短縮することができる。よって、実施形態1のECU901は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を更に短縮することができる。
【0072】
更に、実施形態1の第1マイコン1の通知部120は、ECU901が停止状態に移行する際に、リプログラミング処理の要否を判定し、判定結果に基づいてリプログラミング処理の開始要求を第2マイコン2に通知する。
【0073】
このような構成により、実施形態1のECU901は、リプログラミング処理を行うことが適切でない時期にリプログラミング処理を行うこと抑制することができる。よって、実施形態1のECU901は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングを効率的に行うことができる。
【0074】
更に、実施形態1の第2マイコン2の前処理部214は、署名検証部2112及び復号化部2111を含む暗号処理部211と、伸張処理部212と、を有する。
【0075】
このような構成により、実施形態1のECU901は、書換プログラム5の機密性や完全性等を担保すると共に、書換プログラム5のデータ通信時間を抑制しながら、第1マイコン1に係るリプログラミング処理の処理時間を短縮することができる。よって、実施形態1のECU901は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を短縮することができると共に、リプログラミングに係るセキュリティの強化を図ることができる。
【0076】
更に、実施形態1のECU901は、車両に搭載され前記車両を制御する装置である。第1マイコン1の通知部120は、車両のイグニッションスイッチがオフ状態に移行することに伴ってECU901が停止状態に移行することを契機として、リプログラミング処理の開始要求を第2マイコン2に通知する。
【0077】
このような構成により、実施形態1のECU901は、車両の制御機能を提供する必要がない適切な時期にリプログラミング処理を行うことができる。よって、実施形態1のECU901は、OTAによるリプログラミング処理を効率的に行うことができる。
【0078】
[実施形態2]
図5及び
図6を用いて、実施形態2の制御システム991について説明する。実施形態2の制御システム991において、実施形態1と同様の構成及び動作については、説明を省略する。
【0079】
図5は、実施形態2の制御システム991の機能的構成を示すブロック図である。
【0080】
実施形態1のリプログラミング処理は、ECU901の内部において完結していた。これに対し、実施形態2のリプログラミング処理は、複数のECUによって構成される制御システム991において行われる処理であり、複数のECU間に跨って行われる処理である。
【0081】
具体的には、制御システム991は、メモリバンクがシングルバンクとして構成された所定領域(書換領域13)に格納されたプログラムを実行する第1ECU911と、第2ECU912とを備える。第1ECU911は、特許請求の範囲に記載された「第1制御装置」の一例である。第2ECU912は、特許請求の範囲に記載された「第2制御装置」の一例である。制御システム991は、特許請求の範囲に記載された「制御システム」の一例である。
【0082】
第1ECU911は、シングルバンクマイコンを含んで構成されるECUである。第2ECU912は、第1ECU911よりもリソースに余裕があるECUである。第2ECU912は、例えば、デュアルバンクマイコンを含んで構成されたECUや、OTAのリプログラミング対象でないシングルバンクマイコンを含んで構成されたECUであってもよい。
【0083】
第2ECU912は、第1ECU911の所定領域(書換領域13)に格納されたプログラムを書換プログラム5に書き換えるリプログラミング処理において書換プログラム5に対して前処理を行う。第2ECU912は、前処理が行われた書換プログラム5を第1ECU911に送信する。第1ECU911は、第2ECU912から送信された書換プログラム5を受信する。第1ECU911は、受信された書換プログラム5を所定領域(書換領域13)に書き込む。
【0084】
このような構成により、実施形態2の制御システム991は、第1ECU911のプログラムを書換プログラム5に書き換える前に書換プログラム5に対して行われる前処理を、第1ECU911にて行うのではなく、第2ECU912にて行うことができる。すなわち、実施形態2の制御システム991では、第1ECU911と第2ECU912とが協働してリプログラミング処理を行うことによって、第1ECU911のプログラムを書換プログラム5に書き換えることができる。これにより、実施形態2の制御システム991は、第2ECU912に比べてリソースが制限された第1ECU911に係るリプログラミング処理の処理時間を短縮することができる。よって、実施形態1の制御システム991は、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を短縮することができる。
【0085】
図5に示すように、制御システム991のリプログラミング処理に係る構成は、基本的に、
図1に示すECU901のリプログラミング処理に係る構成と同様である。但し、制御システム991では、第1ECU911の通知部120がリプログラミング処理の開始要求を第2ECU912に通知する場合、
図6に示すような手法を用いることが考えられる。第1ECU911と第2ECU912とは、CAN又はEthernet等の通信ネットワーク6を介して互いに接続される。
【0086】
図6は、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する処理を説明する図である。
図6(a)は、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する処理の第1段階を説明する図である。
図6(b)は、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する処理の第2段階を説明する図である。
図6(c)は、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する処理の第3段階を説明する図である。
【0087】
図6に示す例では、第2ECU912が複数の第2ECU912a~912cによって構成される。複数の第2ECU912a~912cのそれぞれは、通信ネットワーク6を介して第1ECU911に接続される。
図6に示す例では、第1ECU911と複数の第2ECU912a~912cとの間において、
図6(a)~
図6(c)の3段階のハンドシェイクを行うことによって、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する。
【0088】
図6(a)に示す第1段階として、第1ECU911は、ドライビングサイクル毎に、複数の第2ECU912a~912cに対して、リプログラミング処理の可否を問い合わせるクエリを送信する。第1ECU911は、クエリを送信するべき宛先が予め定められたテーブルを保持し、当該テーブルを参照することによって、特定の第2ECU912に対してクエリを送信してもよい(例えばユニキャスト方式)。或いは、第1ECU911は、ブロードキャスト方式によって不特定多数の第2ECU912に対してクエリを送信してもよい。
図6(a)には、第1ECU911が複数の第2ECU912a~912cのそれぞれにクエリを送信している例が示されている。
【0089】
図6(b)に示す第2段階として、複数の第2ECU912a~912cは、第1ECU911に対して、
図6(a)のクエリに対するレスポンスを送信する。複数の第2ECU912a~912cは、リプログラミング処理を行うことが可能な第2ECU912だけが、第1ECU911にレスポンスを送信してもよい。或いは、複数の第2ECU912a~912cは、クエリを受信した全ての第2ECU912が、第1ECU911にレスポンスを送信してもよい。
図6(b)には、クエリを受信した複数の第2ECU912a~912cのそれぞれが、第1ECU911にレスポンスを送信している例が示されている。
【0090】
図6(c)に示す第3段階として、第1ECU911は、
図6(b)に示すレスポンスに基づいて、リプログラミング処理の開始要求を送信する。複数の第2ECU912a~912cからレスポンスを受信する場合、第1ECU911は、レスポンスを受信した複数の第2ECU912a~912cのうちから、協働してリプログラミング処理を行う第2ECU912を決定する。この場合、第1ECU911は、決定するべき第2ECU912の優先度が予め定められた優先度テーブルを保持し、当該優先度テーブルを参照することによって、協働してリプログラミング処理を行う第2ECU912を決定してもよい。この優先度は、例えば、リプログラミング処理を行う際の複数の第2ECU912a~912cのそれぞれの処理速度等に基づいて、予め定められていてもよい。
図6(c)には、第1ECU911が、協働してリプログラミング処理を行う第2ECU912を、第2ECU912cに決定した例が示されている。
【0091】
なお、第1ECU911と協働してリプログラミング処理を行う第2ECU912を決定する処理では、複数の第2ECU912a~912cのそれぞれが、ドライビングサイクル毎に、リプログラミング処理の可否を第1ECU911に自発的に送信してもよい。この場合、第1ECU911は、
図6(a)に示すようなクエリを複数の第2ECU912a~912cに対して送信する必要がない。
【0092】
このように、制御システム991は、第2ECU912が複数の第2ECU912a~912cによって構成される場合でも、第1ECU911と協働してリプログラミング処理を行う第2ECU912を適宜決定することができる。これにより、制御システム991は、第2ECU912が複数の第2ECU912a~912cによって構成される場合でも、第1ECU911と第2ECU912とが協働してリプログラミング処理を行うことができる。よって、制御システム991は、第2ECU912が複数の第2ECU912a~912cによって構成される場合でも、シングルバンクマイコンを備える制御装置のOTAによるリプログラミングに要する時間を短縮することができる。
【0093】
[その他]
なお、本発明は上記の実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、或る実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、或る実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0094】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路にて設計する等によりハードウェアによって実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアによって実現してもよい。各機能を実現するプログラム、テープ、ファイル等の情報は、メモリや、ハードディスク、SSD(solid state drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0095】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0096】
1…第1マイコン(第1演算処理装置)、11…バッファ領域、120…通知部、121…受信部、122…書込部、123…消去部、13…書換領域(所定領域)、2…第2マイコン(第2演算処理装置)、210…取得部、211…暗号処理部、2111…復号化部、2112…署名検証部、212…伸張処理部、213…送信部、214…前処理部、5…書換プログラム、901…ECU(制御装置)、911…第1ECU(第1制御装置)、912…第2ECU(第2制御装置)、991…制御システム