以下、本発明の実施形態を添付図面に基づいて説明する。
本発明の実施例1におけるオンライン更新機能を利用する車両制御装置について、図1~5を用いて説明する。
図1は車両制御装置1の構成の一例を示すブロック図である。車両制御装置1は、電子制御装置(ECU:Electronic Control Unit)で構成され、電源2と、演算部3と、通信部4と、ハードウェア設定部5と、不揮発性メモリ6と、揮発性メモリ14を含む。
前記揮発性メモリ14は、プログラム一時格納領域15を含む。前記不揮発性メモリ6は、非書き換え部20と書き換え部30を含む。揮発性メモリ14は、DRAM(Dynammic Random Aaccess Memory)等で構成することができ、不揮発性メモリ6はフラッシュメモリ等で構成することができる。
不揮発性メモリ6の非書き換え部20は、ソフトウェア(プログラム又はキャリブレーションデータ)の書き換えを実行する判定部13を格納する。また、判定部13には、予めデータを設定した固定データ領域130が含まれる。
不揮発性メモリ6の書き換え部30は、車両制御装置1の機能を提供するプログラムを格納するプログラム部A(8)とプログラム部B(9)と、車両制御装置1の機能を提供するプログラムの出力を調整するキャリブレーションデータを格納するキャリブレーション部A(11)とキャリブレーション部B(12)と、データ格納領域10と、復号部7を含む。
プログラム部A(8)とプログラム部B(9)の一方には、起動用のプログラムが格納され、他方が待機用の領域として利用される。キャリブレーション部A(11)とキャリブレーション部(12)の一方には、起動用のプログラムが使用するキャリブレーションデータが格納され、他方が待機用の領域として利用される。
データ格納領域10には、車両制御装置1を含む制御システムの構成情報などが格納される。復号部7は、暗号化された更新プログラムを復号するためのプログラムと鍵などが格納される。なお、受信した更新プログラムが圧縮されている場合には、復号部7で展開するようにしてもよい。
揮発性メモリ14には、受信した更新プログラムを格納するプログラム一時格納領域15が含まれる。通信部4が受信した更新プログラムは、一旦揮発性メモリ14のプログラム一時格納領域15に格納された後に書き換え部30の待機用の領域に書き込まれる。
電源2は、バッテリー電源やアクセサリ(ACC)電源などの給電装置16から電力の供給を受けて、車両制御装置1の各部に電力を供給する。演算部3は、プロセッサを含んで、不揮発性メモリ6や揮発性メモリ14に格納されたプログラムを実行する。
通信部4は、CAN(Controller Area Network)やLAN(Local Area network)を介して接続された外部装置17や制御対象(図2参照)と通信を行う。更新プログラムは、外部装置17から通信部4を経由して受信する。また、プログラム更新処理に必要な制御信号は、通信部4経由で車両制御装置1が送受信する。
ハードウェア設定部5は起動するプログラムとキャリブレーションデータを、プログラム部A、B、キャリブレーション部A、Bの一方に設定する。なお、ハードウェア設定部5は、プログラム部A(8)とキャリブレーション部A(11)のうち起動用の設定を保持し、また、プログラム部B(9)とキャリブレーション部B(12)のうち起動用の設定を保持すればよいので、ハードウェアで実装してもよいし、ソフトウェアで実装してもよい。
判定部13と、復号部7の各機能部はプログラムとして演算部3で実行される。演算部3は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、演算部3は、判定プログラムに従って処理を実行することで判定部13として機能する。他のプログラムについても同様である。さらに、演算部3は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
また、車両制御装置1は、プログラム部A(8)又はプログラム部B(9)で実行するプログラムに応じて所定の機能を実現し、例えば、自動運転プログラムを起動することで、車両制御装置1は自動運転制御部として機能する。
外部装置17の形態の一例を図2で説明する。図2は、車両の制御システムの構成の一例を示すブロック図である。
図中201は無線通信により更新プログラムを配信するプログラム配信センタである。
プログラム配信センタ201には、サービスの対象である車両制御装置1(ECU)の全機種の更新プログラムとサービス対象車と、各車のプログラム搭載情報と、その他サービスに関する必要なデータが保管され、指令を受け付けた更新プログラムを配信する。
ある車両について、車両の性能改良等の目的でプログラムの最新版への更新が決定されると、プログラム配信センタ201は該当車両に向けて必要な更新プログラムを無線通信で配信する。配信された情報は該当車両のアンテナECU(無線通信部)202において、自車に対する通信として受信する。
なお、図中アンテナECU202と、セントラルゲートウェイ(中継装置)203と、車両制御装置1と制御対象装置50は車両に搭載されている。また、制御対象装置50は、コントローラやアクチュエータあるいは他の車両制御装置を含む。
該受信された更新プログラムは、CAN等のネットワークを介してセントラルゲートウェイ203に転送される。セントラルゲートウェイ203は、該情報に付帯している情報(ヘッダ等)により、セントラルゲートウェイ203と通信可能である複数の車両制御装置1のうち、該当更新プログラムの書き換え対象である車両制御装置1を特定する。
セントラルゲートウェイ203は、該車両制御装置1に対し更新プログラムをCANを使用して配信する。更新対象である車両制御装置1が、更新プログラムを受信して実行待機用の領域に格納することでプログラムを更新する。
プログラム配信センタ201から車両制御装置1までの情報通信は、外部からの監視や操作が否定できない、無線通信や車内優先通信の1種であるCANを介して行うため、制御システムの安全性に対し完全ではない部分もある。
そこで、周知又は公知の技術では、通信内容を暗号化し、外部からの介入を防止するようにしている。かつ、情報の暗号化及び暗号からの復号は、暗号化装置と復号装置のみが共有する固有情報、いわゆる暗号鍵により行い、外部に対する秘匿性を向上させるようにしている。
セントラルゲートウェイ203と更新対象の車両制御装置1で行われる処理の一例を図3によって説明する。
セントラルゲートウェイ203には、車両制御装置1用の更新プログラムとして受信した暗号文302が格納されている。更新プログラムのサイズは、車両制御装置1内の不揮発性メモリ6の大半を占める大容量の場合もある。
ここで暗号文302はさらに細分化(分割)された暗号文303の集合体として構成されている。すなわち、暗号文302は、例えば、パケットやブロックなどの所定のサイズに分割された複数の暗号文303で構成されている。セントラルゲートウェイ203は、細分化された暗号文303を通信により送信して車両制御装置1のプログラム一時格納領域15に格納される。
車両制御装置1の復号部7は受信した暗号文303を、自身が保有する暗号復号の固有情報(暗号鍵)を用いて平文312に復号する。次に車両制御装置1は、復号した平文312を不揮発性メモリ6の待機用の領域(例えば、プログラム部A(8))に書き込む。
車両制御装置1は、かかる一連の処理を、セントラルゲートウェイ203が保持する細分化された暗号文303の全てを受信し、書き込みが完了するまで繰り返す。
ここで、1回で不揮発性メモリ6に書き込む平文312のサイズは、少なくとも細分化された暗号文303の1個分であり、細分化された暗号文303の1個を受領し、復号する処理が単位時間で処理できる情報量と、平文312を不揮発性メモリ6に書き込む処理が単位時間で処理できる情報量、との割合に応じて設定すればよい。
例えば、復号までの処理が不揮発性メモリ6に平文312を書き込む処理の4倍速いとすると、細分化された暗号文303の4個を平文に復号処理し、不揮発性メモリ6に書き込みを実施すると、車両制御装置1は、平文への復号までの処理と不揮発性メモリ6への書き込み処理を並行して行うことができ、必要時間を短縮できる。
この方法でプログラムの更新処理を行うとプログラム一時格納領域15の中の細分化された暗号文303を記憶しておく領域及び平文312を記憶しておく領域は繰り返し異なる内容を記憶する。
このため、車両制御装置1では、更新プログラムの全体を一度に記憶する必要がなく、よってプログラム全体の必要容量より十分小さい容量で書き換えを実施できる。これにより、車両制御装置1に搭載する記憶媒体の容量を削減して、製造コストを低減することが可能となる。
セントラルゲートウェイ203から細分化された暗号文303のひとつであるブロックデータが車両制御装置1に送信される。車両制御装置1は、ブロックデータのうち、暗号の復号に適切な量の一部を分割し、暗号文303の復号処理要求とともに復号部7に要求する。
復号部7は暗号文303の復号処理を行って、ブロックデータに対する復号処理を完了する。ここで、本実施例では1つのブロックデータに対応する復号処理が複数回である例を示したが、復号を実施する回数は更新の処理速度とメモリの容量を勘案して最適値を選定すればよい。
図3の説明において、セントラルゲートウェイ203には細分化されたプログラムの一群がプログラム全体にわたって分割されて記憶されていることを説明したが、それを実現する実施例を図4で説明する。図4は、更新プログラムの配信の一例を示す図である。
更新プログラムは図2で説明したように、プログラム配信センタ201で保管されている。更新プログラムは、ソフトウェアハウス510で設計及び製作される。ソフトウェアハウス510では、車両制御装置1での更新処理までを含んで更新プログラムの全体を最適化設計する。
したがって、ソフトウェアハウス510は、一連の更新処理の前提である車両制御装置1のメモリ空間仕様や、一連の処理ごとの所要時間等を勘案し、適切な暗号化の単位を設計する。ソフトウェアハウス510は、設計に従い更新プログラムを分割したうえで暗号化する。通称鍵と呼ばれる暗号の固有情報は、車両制御装置1の非書き換え部20に配置して秘匿性を確保する。
かかる方法によりソフトウェアハウス510が製造した更新プログラムは、更新対象の車両制御装置1を示す情報と、書き換えられるべき書き換え前のプログラムの情報とともにプログラム配信センタ201に提供される。
プログラム配信センタ201では、別途判定するプログラムの更新対象車に対し、暗号化されたままの該更新プログラムと、対象の車両制御装置1の情報とを配信する。上記一連の処理で、プログラム配信センタ201は暗号化した更新プログラムに対して暗号鍵を持たないため、内容を観察することも変更することもできず、また行わない。
同様にセントラルゲートウェイ203でも、暗号化された更新プログラムに対して暗号鍵を持たないため、内容を観察することも変更することもできず、また行わない。
以上の処理により、ソフトウェアハウス510で製造された暗号化済みの更新プログラムは、変更を加えられることなくセントラルゲートウェイ203に配信され、格納される。
次に本発明の制御システムにおける実施例を時間の流れにより記述した図5A、図5Bを用いて説明する。図5Aは、制御システムで行われる処理の一例を示すタイムチャートの前半部で、非書き換え部20に格納された情報の照合結果が正当(又は一致)な場合を示す。図5Bは、制御システムで行われる処理の一例を示すタイムチャートの後半部を示す。
図示の例では、プログラム部B(9)を起動用としてハードウェア設定部5に予め設定し、工場から車両制御装置1が出荷されるタイミングで非書き換え部20に制御対象情報を書き込んでおく場合を示す。なお、制御対象情報は、車両制御装置1で実行するプログラムの正当性を判定するための照合情報であり、実施例11で詳述する。
まず、車両制御装置1は外部装置(給電装置12)からの電源供給(電源ON)を受け、非書き換え部20の判定部13を起動する。
判定部13は、ハードウェア設定部5に設定した起動用のプログラム部A(8)又はプログラム部B(9)の情報を取得する(621)。判定部13は、設定されたプログラム部A(8)又はプログラム部B(9)に応じた書き換え部30のプログラムを起動する(622)。図示の例はプログラム部B(9)を起動用とする例を示す。
プログラム部B(9)は、当該プログラム部B(9)に対応するキャリブレーション部B(12)のキャリブレーションデータを参照し、所定の処理を実行する(623)。このプログラム部B(9)は電源2への供給が遮断される(電源OFF)まで通常制御を続行する。
上記処理によって、判定部13はハードウェア設定部5に設定された起動用のプログラム部からプログラムを起動して、キャリブレーションデータで調整を行って起動が完了する。
プログラム配信センタ201から更新プログラムが配信されると(624)、セントラルゲートウェイ203は、更新の開始要求を通信部4を介して、現在起動しているプログラム部B(9)に通知する(625、626)。
プログラム部B(9)は、プログラムの更新開始要求を受け付けて、リプログラミング(プログラムの更新)モードに遷移し、前記通信部4を介して、前記セントラルゲートウェイ203にデータの送信を要求する(627、628)。
送信要求を受け付けたセントラルゲートウェイ203は、図3で示したように、プログラム配信センタ201から受信した更新プログラムを、所定のサイズに分割された暗号文303として、更新対象の車両制御装置1に送信する(629)。
以下、ステップ629~636の処理は、セントラルゲートウェイ203からの暗号文303を車両制御装置1が受信する度に繰り返して実行されるループ処理となる。
その後、ステップ626、630の更新プログラムの送信では、前記セントラルゲートウェイ203から前記通信部4を介して、揮発性メモリ14のプログラム一時格納領域15に暗号文303が一時的に格納される。
ステップ629、630の更新プログラムの送信処理では、更新プログラムは暗号化されたまま送信される。ステップ631では、予め暗号鍵を保持している復号部7が前記プログラム一時格納領域15にアクセスし、暗号文303を復号し、平文312に変換する。
更新プログラムを構成する複数の暗号文303のうち、先頭の暗号文303には、更新プログラムの制御対象情報が含まれる。なお、更新プログラムの制御対象情報は、平文で更新プログラムの先頭(ヘッダ)に付与されてもよい。
前記復号後は、復号部7が前記プログラム部B(9)に書き込みを要求する(632)。プログラム部B(9)は、前記プログラム一時格納領域15にアクセスし(633)、待機用として設定されたプログラム部A(8)に復号された更新プログラムを書き込む(634)。プログラム部B(9)は、書き込みが終了した後は書き込み完了通知を、前記通信部4を介して前記セントラルゲートウェイ602に通知する(635、636)。
上記ステップ629から書き込み完了通知のステップ636までは、プログラム配信センタ201から配信された更新プログラムの書き込みが完了するまでループする。更新プログラムの書き込みが全て完了すると、図5Bのステップ637に進んで、前記セントラルゲートウェイ203から前記通信部4を介して起動用のプログラムの切り換え要求が前記プログラム部B(9)に通知される(637、638)。
プログラム部B(9)は、起動用のプログラムの切り換え要求を受け付けると、前記ハードウェア設定部5に設定されている起動用のプログラムを切り換えておく(639)。
ハードウェア設定部5の起動用プログラムの切り換え設定により、車両制御装置1は次回の電源ONになった際、まず、判定部13が起動してからステップ641で、ハードウェア設定部5から起動用プログラムを取得し、図示の例では更新プログラムが書き込まれた、前記プログラム部A(8)に切り換える。
更新プログラムが書き込まれた前記プログラム部A(8)を起動させる際には、判定部13が工場出荷時に非書き換え部20に書き込まれている制御対象情報を取得し(642)、更新処理で書き換えられた前記プログラム部A(8)に記載されている制御対象情報を読み出す(643)。
そして、ステップ644では判定部13が、上記ステップ642で取得した、前記非書き換え部20に書き込まれている前記制御対象情報と、ステップ643で読み出したプログラム部A(8)に記載されている制御対象情報を比較する(644)。
判定部13は、2つの制御対象情報が一致していることが検証できた場合には、前記プログラム部A(8)の更新プログラムを起動させる(645)。プログラムの起動後は、プログラム部A(8)がキャリブレーション部A(11)のキャリブレーションデータを参照し、所定の調整を行ってから制御対象装置50の制御を開始する。
上記処理によって判定部13は、ハードウェア設定部5に設定された起動用のプログラム部A(8)に記載された制御対象情報と、非書き換え部20に設定された工場出荷時の制御対象情報が一致することを検証することで、起動するプログラムが正当なソフトウェアであるか否かを判定することができる。
判定部13が実行するプログラムの正当性を判定することにより、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
実施例2は実施例1と同様に、工場から車両制御装置1が出荷されるタイミングで非書き換え部20に制御対象情報を書き込んでおく場合の実施例を図6を用いて説明する。図6は、制御システムで行われる処理の一例を示すタイムチャートの後半部で、非書き換え部20に格納された制御対象情報の照合結果が不正(又は不一致)の場合を示す。
実施例1との相違点は、前記図5Bのステップ644の制御対象情報の照合処理において、照合結果が一致しなかった場合を示す。図中ステップ644までの処理は前記実施例1の図5Bに示した処理と同様である。また、ステップ637以前の処理は図5Aと同様であるので図示を省略した。その他の構成については、前記実施例1と同様である。
給電装置16からの電源供給(電源ON)を受けて、車両制御装置1は非書き換え部20の判定部13を起動し、前記起動用プログラムの確認処理(621)から、前記制御対象情報読み出し(643)までは実施例1に記載の処理と同様である。
ステップ644では、前記実施例1と同様に判定部13が、ハードウェア設定部5に設定された起動用のプログラム部A(8)に記載された制御対象情報と、非書き換え部20に設定された工場出荷時の制御対象情報が一致するかを照合する。
判定部13は、照合結果が、一致しなかった場合、前記ハードウェア設定部5にアクセスして、起動用プログラムの切り換え設定を行う(741)。本実施例では、判定部13が、ハードウェア設定部5に設定されていたプログラム部A(8)をプログラム部B(9)に切り換える。
判定部13が起動用のプログラムを切り換えることにより、前記プログラム部A(8)に書き込まれた更新プログラムの起動を禁止して、間違ったプログラムによって車両の制御が実施されて誤作動が発生するのを防ぐことが可能となる。
判定部13は、2つの制御対象情報が一致していない場合には、ハードウェア設定部5で書き換えた起動用のプログラム部B(9)を起動させる(742)。プログラム部B(9)は起動すると、キャリブレーション部B(12)のキャリブレーションデータを参照し、制御対象装置50の制御を開始する。
起動が完了したプログラム部B(9)は、更新プログラム(プログラム部A)が起動不可であることを通信部4に通知し(744)、通信部4は、セントラルゲートウェイ203に対して新しい更新プログラムを要求する(745)。以降、プログラム部B(9)による制御が継続される。
上記処理によって判定部13は、車両制御装置1の電源2がONとなる度に、ハードウェア設定部5に設定された起動用のプログラム部に記載された制御対象情報と、非書き換え部20に設定された工場出荷時の制御対象情報が一致しない場合、更新プログラムが書き込まれた待機用の領域を起動せず、電源OFFの前に起動していた更新プログラムが書き込まれていない前記プログラム部を起動させる。
制御対象情報の照合結果が不一致(不正)となった場合には、更新プログラムでの起動を禁止することで、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。換言すれば、照合結果が不正な場合には起動用と待機用のプログラム部A、Bの切り換えを禁止することで、正当ではないプログラムによって車両の制御が行われることを確実に防ぐことが可能となる。
また、車両制御装置1は、照合結果が一致しない更新プログラムに代わって新たな更新プログラムをセントラルゲートウェイ203に要求し、プログラムの更新を再開することができる。
実施例1、2において、プログラム配信センタ201から配信されるデータは更新プログラムであるが、配信されるデータはプログラムに限定されない。実施例3ではキャリブレーションデータがプログラム配信センタ201から配信された場合の書き込み処理を図7を用いて説明する。図7は、制御システムで行われる処理の一例を示すタイムチャートで、キャリブレーションデータが配信された場合を示す。その他の構成については、前記実施例1と同様である。
まず、車両制御装置(ECU)1は外部装置(給電装置12)からの電源供給(電源ON)を受け、非書き換え部20の判定部13を起動する。ステップ621の起動用のプログラムの取得からステップ628のデータ送信要求までは前記実施例1の図5Aの処理と同様である。
なお、本実施例のステップ624では、プログラム配信センタ201はセントラルゲートウェイ203にキャリブレーションデータを送信する。
ステップ821では、前記セントラルゲートウェイ602は前記通信部4にキャリブレーションデータを送信する(821)。なお、セントラルゲートウェイ203は、図3で示したように、キャリブレーションデータを所定のサイズに分割した暗号文303として送信する。
次に、通信部4は、受信した暗号文303を揮発性メモリ14のプログラム一時格納領域15に格納する。ここで、ステップ821、822では前記実施例1の更新プログラムと同様に、暗号化されたまま送信される。
ステップ631では暗号鍵を保持している復号部7が、前記プログラム一時格納領域15にアクセスして、暗号文303を復号する。
前記復号後は、復号部7が前記プログラム部B(9)にキャリブレーションデータの書き込みを要求する(632)。プログラム部B(9)は、前記プログラム一時格納領域15にアクセスし(633)、キャリブレーション部A(11)に復号されたキャリブレーションデータを書き込む(6341)。プログラム部B(9)は、書き込みが終了した後は書き込み完了通知を、前記通信部4を介して前記セントラルゲートウェイ602に通知する(6351、636)。
上記ステップ821からステップ636の書き込み完了通知まではプログラム配信センタ201から配信されたキャリブレーションデータの書き込みが完了するまでループする。
キャリブレーションデータの書き込み完了後の処理は、図5Bで説明した前記実施例1の照合結果が正常の場合の処理と同様である。なお、更新するキャリブレーションデータには制御対象情報(照合情報)を含んで、前記更新プログラムと同様に照合を実施してもよい。
以上のように、本実施例の車両制御装置1は、書き換え部30に設定されたプログラム部A(8)とキャリブレーション部A(11)は、それぞれ独立して内容を書き換えることができ、プログラムの更新と、データの更新を柔軟に実施することができる。
また、更新プログラムとキャリブレーションデータに制御対象情報を含めることで、更新処理の信頼性を向上させることが可能となる。
また、キャリブレーションデータの値の変更がある場合、キャリブレーションデータの値のみ更新することが可能なため、プログラムとキャリブレーションデータを一緒に送付する必要はない。この結果、リプログラミング時の処理負荷の低減や、リプログラミング時間の短縮が可能となる。
実施例4は、前記実施例3と同様、キャリブレーションデータが配信された場合の書き込み処理について説明する。前記実施例3との違いは、制御対象情報の照合結果が一致しなかった場合の処理である。その他の構成については前記実施例3と同様である。図8は、制御システムで行われる処理の一例を示すタイムチャートで、キャリブレーションデータの照合結果が不正(又は不一致)の場合を示す。
まず、車両制御装置(ECU)1は外部装置(給電装置12)からの電源供給(電源ON)を受け、非書き換え部20の判定部13を起動する。ステップ621の起動用のプログラムの取得からステップ636の書き込み完了通知までは前記実施例3の図7の処理と同様であり、キャリブレーション部A(11)には、更新されたキャリブレーションデータが格納される。また、更新されたキャリブレーションデータには、制御対象情報(照合情報)が含まれている。
次に、処理の後半部は、図8に示すとおりで、ステップ637~642までは、前記実施例2に示した処理と同様である。外部の給電装置12からの電源供給(電源ON)を受け、車両制御装置1は、非書き換え部20の判定部13を起動する。
判定部13は、ステップ641の前記起動プログラムの取得でハードウェア設定部5に設定された情報からプログラム部A(8)を選択し、ステップ642で、非書き換え部20から工場出荷時に設定された制御対象情報(照合情報)を読み込む。
次に、ステップ800で、判定部13は、キャリブレーション部A(11)の更新されたキャリブレーションデータから制御対象情報を取得する。ステップ801では、判定部13が、非書き換え部20の制御対象情報と、キャリブレーションデータの制御対象情報を照合する。
ステップ801の照合結果が一致しなかった場合、判定部13は、前記ハードウェア設定部5にアクセスし、起動プログラムの切り換え設定を行う(741)。この処理は前記実施例2で説明した更新プログラムの書き込みが行われた際、照合結果が不正となった場合の処理と同様である。
車両制御装置1は、起動するプログラムを切り換ることにより、キャリブレーション部A(11)に書き込まれた更新キャリブレーションデータは参照せず、間違ったキャリブレーションデータを参照したプログラムによって車両が誤作動することを防ぐ。
判定部13は、2つの制御対象情報が一致していない場合には、ハードウェア設定部5で書き換えた起動用のプログラム部B(9)を起動させる(742)。プログラム部B(9)が起動すると、キャリブレーション部B(12)のキャリブレーションデータを参照し、制御対象装置50の制御を開始する。
起動が完了したプログラム部B(9)は、更新されたキャリブレーションデータ(キャリブレーション部A)が起動不可(不正)であることを通信部4に通知し(802)、通信部4は、セントラルゲートウェイ203に対して新しいキャリブレーションデータを要求する(803)。以降、プログラム部B(9)による制御が継続される。
上記処理によって判定部13は、車両制御装置1の電源2がONとなる度に、ハードウェア設定部5に設定された起動用のプログラムが使用するキャリブレーションデータに記載された制御対象情報と、非書き換え部20に設定された工場出荷時の制御対象情報が一致しない場合、更新キャリブレーションが書き込まれた待機用の領域を起動せず、電源OFFの前に起動していた更新プログラムが書き込まれていない前記プログラム部を起動させる。
このように、車両制御装置1は、更新キャリブレーションデータの照合結果が不正な場合には、待機用のプログラムの起動を禁止することで、リプログラミングの信頼性を向上させることが可能となる。
実施例1から実施例4までは、工場から車両制御装置1が出荷されるタイミングで前記非書き換え部20に制御対象情報を書き込み、前記制御対象情報と、書き込み後のデータに格納されている制御対象情報を照合している例を示した。
実施例5では前記制御対象情報で更新プログラムの正当性を照合するのではなく、車両ごとのシステム構成情報を書き換え部30のデータ格納領域10に格納しておき、プログラムを書き換える場合にシステム構成情報で照合する例を図9を用いて説明する。図9では、制御システムで行われる処理の一例を示すタイムチャートで、データ格納領域に格納されたデータの照合結果が正当な場合を示す。なお、システム構成情報については、実施例12で詳述する。
実施例1との相違点は、データ格納領域10に格納されたシステム構成情報とプログラムに含まれるシステム構成情報(システム情報又は制御システムの識別子)で照合する点である。また、図9のステップ637以前の処理は図5Aと同様であるので図示を省略した。その他の構成については、前記実施例1と同様である。
給電装置16からの電源供給(電源ON)を受けて、車両制御装置1は非書き換え部20の判定部13を起動し、ハードウェア設定部5から起動用プログラムを取得する(641)。本実施例では、ハードウェア設定部5にプログラム部Aが設定されている。
判定部13は、ステップ1041のシステム構成情報の読み出しでは、書き換え部30のデータ格納領域10にアクセスし、システム構成情報を読み出す。
その後、判定部13は、ステップ1042でプログラム部A(8)の更新プログラムに格納されているシステム構成情報を読み出す。ステップ1043のシステム構成情報の照合処理では、判定部13が前記データ格納領域10から読み出したシステム構成情報と、前記プログラム部A(8)から読み出したシステム構成情報を照合する。
判定部13は、データ格納領域10から読み出したシステム構成情報と、前記プログラム部A(8)に書き込まれているシステム構成情報が一致していたら前記プログラム部A(8)のプログラムを起動する(645)。
プログラム部A(8)の起動後は前記実施例1の処理と同様であり、前記プログラム部A(8)に対応するキャリブレーション部A(11)に格納されているキャリブレーションデータを参照して制御対象装置50の制御を開始し、電源がOFFになるまで制御を行う。
本実施例では、判定部13が、更新プログラムの正当性を不揮発性メモリ6のデータ格納領域10に格納されたシステム構成情報で照合する。システム構成情報は工場出荷時に非書き換え部20に格納する必要はなく、また、非書き換え部20に格納している制御対象情報では照合不可能となってしまった場合にも、照合が可能となる。
実施例6は実施例5と同様であり、データ格納領域10に格納されている車両のシステム構成情報を読み出して、書き込まれた更新プログラムに格納されているシステム構成情報と照合する処理を図10を用いて説明する。
図10は、制御システムで行われる処理の一例を示すタイムチャートで、データ格納領域に格納されたデータの照合結果が不正な場合を示す。実施例5との違いは、ステップ1043のシステム構成情報の照合結果が一致しなかった場合の処理である。また、図10のステップ637以前の処理は図5Aと同様であるので図示を省略した。なお、その他の構成については、前記実施例5と同様である。
給電装置16からの電源供給(電源ON)を受けて、車両制御装置1は非書き換え部20の判定部13を起動し、ハードウェア設定部5から起動用プログラムを取得するステップ641の処理からステップ1043のシステム構成情報の照合処理までは実施例5に記載の処理と同様である。
判定部13は、ステップ1043で照合結果が不正となった場合は、プログラム部A(8)を起動させないため、ステップ1141の起動プログラム切り換え設定で、ハードウェア設定部5に格納されている起動プログラムを切り換える。本実施例では、ハードウェア設定部5の起動プログラムをプログラム部Aからプログラム部Bに切り換える。
その後は実施例2の図6の処理と同様で、プログラム部B(9)を起動させて(1142)、プログラム部B(9)は、キャリブレーション部B(12)を参照して制御を開始する(1143)。プログラム部B(9)は、照合結果が不正で、更新プログラムの起動が不可であったことを通信部4へ通知し(1144)、通信部4はセントラルゲートウェイ203に新たな更新プログラムを要求する(1145)。
本実施例では、判定部13が更新プログラムの正当性を不揮発性メモリ6のデータ格納領域10に格納されたシステム構成情報で照合し、照合結果が不正な場合には、プログラムの切り換えを中止する。システム構成情報は工場出荷時に非書き換え部20に格納する必要はなく、また、非書き換え部20に格納している制御対象情報では照合不可能となってしまった場合にも、照合が可能となる。
実施例5、6ではプログラムの書き換え処理についての説明であるが、実施例3、4と同様にキャリブレーションデータの書き込みの際に、システム構成情報による照合を実施することができる。
実施例5、6ではデータ格納領域10に格納しておいた車両のシステム構成情報を読み出して、更新プログラムに含まれるシステム構成情報と照合する例を示したが、前記システム構成情報は、外部装置17である診断装置(コンサルト)1201から書き換えることが可能である。車両に接続された診断装置1201がシステム構成情報を書き換えた後、車両制御装置1が書き込まれたプログラムに格納されているシステム構成情報を照合する処理を図11を用いて説明する。図11は、制御システムで行われる処理の一例を示すタイムチャートで、システム構成情報の書き換え後に、システム情報の照合結果が正当な場合を示す。
給電装置16からの電源供給(電源ON)を受けて、前記実施例1と同様に車両制御装置1は非書き換え部20の判定部13を起動し、ハードウェア設定部5から起動用プログラムを取得し(621)、プログラム部B(9)を起動させ(622)、プログラム部B(9)はキャリブレーション部B(12)を参照して制御を開始する。
プログラム部B(9)の制御開始後、診断装置1201は、車両制御装置1のシステム構成情報を書き換えるため、ステップ1221でシステム構成情報の書き換え要求を送信する。通信部4は、受信した書き換え要求をプログラム部B(9)に通知する。
プログラム部B(9)は、診断装置1201からの書き換え要求に応じて、データ格納領域10に格納されているシステム構成情報を書き換える。
この後、ステップ624でプログラム配信センタ201から更新プログラムが配信された後の処理は請求項1と同様である。
以上のように、車両制御装置1に格納されたシステム構成情報は、外部の診断装置1201からも書き換え可能である。前記外部の診断装置1201からシステム構成情報の書き換えが可能なため、車両のユーザがオプションでセンサやカメラ等の制御システムの構成要素を変更したり、工場出荷時に書き込みした制御対象情報では照合できなくなってしまった場合にも、同様の照合が可能となる。
実施例1から実施例7までは、車両制御装置1の照合はリプログラミング後、再度電源がONとなった際に行っていた。本実施例では電源がOFFになる前に車両制御装置1が制御対象情報の照合を行う例を図12、図13を用いて説明する。図12は、制御システムで行われる処理の一例を示すタイムチャートの前半部で固定データ領域に格納した制御対象情報の照合結果が正当な場合を示す。図13は、制御システムで行われる処理の一例を示すタイムチャートの後半部である。
実施例1との相違点は、車両制御装置1の制御対象情報を非書き換え部20の固定データ領域130に格納する点と、電源の遮断前に照合を実行する点である。その他の構成については、前記実施例1と同様である。
給電装置16からの電源供給(電源ON)を受けて、非書き換え部20の判定部13が起動し、起動プログラムの取得(621)からデータ送信要求(627)までは、前記実施例1と同様の処理である。
ステップ628Aでは、通信部4が、更新プログラムの複数の暗号文303のうち先頭の暗号文303をセントラルゲートウェイ203に対して要求する。ステップ629Aでは、セントラルゲートウェイ203が、先頭の暗号文303を通信部4へ送信する。通信部4は、先頭の暗号文303をプログラム一時格納領域15に格納する(630A)。
次に、復号部7は、プログラム一時格納領域15の先頭の暗号文303を復号する(631A)。先頭の暗号文303には、更新プログラムの制御対象情報(照合情報)が含まれ、プログラム一時格納領域15には、更新プログラムの部分と制御対象情報が復号される。
前記復号後、実施例1では、通信部4が前記プログラム部B(9)に更新プログラムの書き込み要求をし、プログラム部A(8)に更新プログラムの書き込みをしていたが、実施例8のステップ1321では、通信部4がプログラム一時格納領域15から復号後の更新プログラム(平文312)の制御対象情報を取得する。
ステップ1322では、通信部4が、非書き換え部20の固定データ領域130に格納されている制御対象情報を取得する。次に、通信部4は、更新プログラムの制御対象情報と固定データ領域130の制御対象情報を照合する(1323)。
通信部4は、制御対象情報の照合結果が正当な場合には、更新プログラムの書き込み処理を開始する。
照合結果が正当な場合、通信部4は、復号された先頭の更新プログラムをプログラム一時格納領域15からプログラム部A(8)に書き込む(634A)。そして、通信部4は、セントラルゲートウェイ203に対して2番目以降の暗号文303の送信を要求する(628B)。
次に、ステップ629B~636のループ処理が行われ、2番目以降の暗号文303が順次復号されて、プログラム部A(8)へ格納される。
ステップ629Bでは、セントラルゲートウェイ203が2番目以降の暗号文303を通信部4へ順次送信し、ステップ630Bでは、通信部4が2番目以降の暗号文303を順次プログラム一時格納領域15へ格納する。そして、ステップ631Bでは復号部7がプログラム一時格納領域15へ格納された暗号文303を復号する。
通信部4は、プログラム一時格納領域15で復号された2番目以降の更新プログラムの書き込み要求をプログラム部B(9)に送信する。プログラム部B(9)は、書き込み要求を受け付けてプログラム一時格納領域15にアクセスし(633)、復号された更新プログラムの部分をプログラム部A(8)に書き込む(634B)。
書き込みが完了すると、プログラム部B(9)は通信部4に書き込みの完了を通知し(635)、通信部4は、セントラルゲートウェイ203に書き込みの完了を通知する(636)。
配信された更新プログラムのプログラム部A(8)への書き込みが終了した後は、図13で示すステップ637で、通信部4は、起動プログラムの切り換え要求をセントラルゲートウェイ602から受け付ける。
通信部4は、前記プログラム部B(9)に起動プログラムの切り換えを要求し(638)、プログラム部B(9)はハードウェア設定部5に格納されている起動プログラムの情報をセントラルゲートウェイ203から指定されたプログラムA(8)に切り換える(639)。
車両制御装置1の次回の起動の際には、図13のステップ641で判定部13がハードウェア設定部5から起動プログラムの設定を取得し、ステップ645でプログラム部A(8)を起動させ、ステップ646でプログラム部A(8)がキャリブレーションデータA(11)の参照を行う。
前記実施例1では上記ステップ645のプログラム部A(8)の起動前に、図5Bで示したステップ642の制御対象情報の取得からステップ644の照合までの処理を判定部13が行っていた。これに対して、本実施例では、前記復号(631A)の直後に制御対象情報の照合を行っているため、再起動後の照合は行わなくてもよい。
図14は、制御システムで行われる処理の一例を示すタイムチャートで、固定データ領域に格納した制御対象情報の照合結果が不正な場合を示す。ステップ621~1322までは、図12と同様の処理である。
ステップS1323では、通信部4が、プログラム一時格納領域15から取得した制御対象情報と、固定データ領域130から取得した制御対象情報を比較した結果が不正となった場合である。
この場合、通信部4は、上記図12のステップ632~636のループ処理を実施せず、セントラルゲートウェイ203に照合結果が不正であるため更新プログラムの書き込みが不可であったことを通知して、更新処理を終了する。
車両制御装置1の次回の起動の際には、図14のステップ1441で判定部13が起動プログラムの設定を取得し、ステップ1442でプログラム部B(9)を起動させ、ステップ1443でプログラム部B(9)がキャリブレーションデータの参照を行う。
本実施例では、復号(631A)の直後に照合を行っているため、照合結果が不正な場合には、更新プログラムをプログラム部へ書き込む処理を中止するため、無駄な処理を低減することが可能となる。
このように実施例8では、車両制御装置1は、複数に分割された前記暗号文303を受信し、前記判定部(13)は、前記分割された暗号文303のうち、最初に受信した暗号文303に含まれる制御対象情報218を取得して、制御対象情報211と照合する。
これにより、復号後の更新プログラムを書き換え部30に書き込む前の段階で制御対象情報(211、218)の照合を実施するため、前記実施例1と同様に、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
前記実施例8では、車両制御装置1が制御対象情報で照合を行う例を示したが、本実施例では電源がOFFとなる前にシステム構成情報で更新プログラムを照合する例を図15A,図15Bを用いて説明する。図15Aは、制御システムで行われる処理の一例を示すタイムチャートの前半部で、システム構成情報の照合結果が正当な場合を示す。図15Bは、タイムチャートの後半部である。
給電装置16からの電源供給(電源ON)を受けて、車両制御装置1は非書き換え部20の判定部13を起動する。起動プログラムの取得(621)から復号(630A)までは前記実施例8と同様の処理である。
通信部4は、複数の暗号文303で構成された更新プログラムのうち、先頭の暗号文303を受信してプログラム一時格納領域15に格納し、平文へ復号する(631A)。プログラム一時格納領域15には、更新プログラムの先頭部分とシステム構成情報が復号される。
ステップ1324では、通信部4が復号されたシステム構成情報をプログラム一時格納領域15から取得する。ステップ1521では、通信部4が、センサ1502と通信し、センサの構成情報を取得する。ステップ1522では通信部4が、カメラ1501と通信し、カメラの構成情報を取得する。
通信部4は、前記プログラム一時格納領域15から取得したシステム構成情報と、センサ及びカメラの構成情報を照合する。この照合は、図18で後述するように、制御システムの構成を示す情報を更新プログラムのヘッダに付与し、通信部4が取得したセンサ及びカメラの構成情報(数)と一致するか否かを判定する。センサ及びカメラの数が、更新プログラムに付与されたシステム構成情報と一致していれば、照合結果は正当となる。
通信部4は、ステップ1325の照合結果が正当な場合は書き込み処理を開始する。照合結果が正当な場合、通信部4は、復号された先頭の更新プログラムをプログラム一時格納領域15からプログラム部A(8)に書き込む(634A)。そして、通信部4は、セントラルゲートウェイ203に対して2番目以降の暗号文303の送信を要求する(628B)。
次に、図15Bに示すステップ629B~636のループ処理が前記実施例8と同様に行われる。配信された更新プログラムの書き込みが終了した後は、ステップ637の起動プログラム部の切り換え要求がセントラルゲートウェイ203から前記通信部4を介して前記プログラム部B(9)に送信される(638)。
プログラム部B(9)は、ハードウェア設定部5に設定されている起動用のプログラム部の情報を切り換える。本実施例では、起動用のプログラム部は、プログラム部A(8)に切り換えられる。
次回の起動時は、ステップ641で判定部13が起動用のプログラム部を取得し、ステップ645で判定部13がプログラム部A(8)のプログラムを起動させ、ステップ646でプログラム部A(8)がキャリブレーション部A(11)のデータを参照し、制御対象装置50の制御を開始する。
前記実施例1では上記ステップ645のプログラム部A(8)の起動前に、図5Bで示したステップ642の制御対象情報の取得からステップ644の照合までの処理を判定部13が行っていた。これに対して、本実施例では、前記復号(631A)の直後にシステム構成情報の照合を行っているため、再起動後の照合は行わなくてもよい。
以上のように、実施例9の車両制御装置1は、先頭の暗号文303を復号した直後でプログラム部A(8)へ書き込む前の段階で照合を実施するため。これにより、車両制御装置1は誤りを含む更新プログラムを不揮発性メモリ6へ書き込むのを防止して、プログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
実施例10では実施例9と同様、車両制御装置1の電源OFFになる前にシステム構成情報の照合を実施して、照合結果が不正となった際の処理について図16を用いて説明する。
車両制御装置1は、給電装置16からの電源供給(電源ON)を受けて、非書き換え部20の判定部13を起動する。ステップ621の起動用のプログラムの取得からステップ1325のシステム構成情報の照合までは前記実施例9と同様の処理である。
通信部4は、ステップ1325の前記照合で不正となった場合は、通信部4からデータ書き込み不可通知をセントラルゲートウェイ602に通知する。車両制御装置1は照合結果が不正な場合は、送信された更新プログラムをプログラム部A(8)に書き込まない。
また、車両制御装置1は、ハードウェア設定部5の設定も変更しないので、次回の起動時には、前回同様のプログラム部B(9)で起動する。
これにより、車両制御装置1は誤りを含む更新プログラムを不揮発性メモリ6へ書き込むのを防止して、プログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
実施例1から実施例5と、実施例8、9までの照合対象は制御対象情報を用いた例である。制御対象情報は、工場から車両制御装置1を出荷するタイミングで、非書き換え部20に設定される。前記制御対象情報とプログラムに格納された制御対象情報の一例について図17を用いて説明する。
図17は、ECU管理テーブル210の一例を示す図である。なお、本実施例ではECU管理テーブル210を、プログラム配信センタ201で管理する例を示す。ECU管理テーブル210は、制御対象情報211と、ECU型番212と、仕向地213と、エンジン214と、搭載機能の有無を示すフィールド群(215~217)と、プログラムに記載された制御対象情報218をひとつのエントリに含む。
制御対象情報211には、車両制御装置1の識別子が格納される。ECU型番212には、車両制御装置1の種別が格納される。仕向地213には、車両制御装置1を搭載した車両の販売地域が格納される。エンジン214には、車両の動力源の種類が格納される。
搭載機能には車両制御装置1に付与された機能の有無が設定され、図示の例ではACC(Adaptive Cruise Control)215、TJP(Traffic Jam Pilot)216、LKA(Lane Keeping Assist)217の機能の有無を示す。
制御対象情報218には、プログラム配信センタ201から配信されるプログラムやキャリブレーションデータに記載される車両制御装置1の識別子が格納される。
ECU型番212が「A1」、仕向地213が「日本」、エンジン214が「ガソリン」、搭載機能のうちACC215が「あり」、TJP216が「あり」、LKA217が「あり」である車両制御装置1を出荷する際は、前記非書き換え部20に制御対象情報211=「001」を格納しておく。
制御対象情報211=「001」の車両制御装置1に対して、プログラム又はキャリブレーションデータに変更がある場合は、プログラムの先頭データに「001」を格納し、プログラム配信センタ201からプログラムを配信する。
実施例1で記載した図5Bのステップ644の照合の際には、判定部13が、前記非書き換え部20に格納した制御対象情報「001」と、更新プログラムの先頭データに格納した制御対象情報「001」を照合する。
判定部13は、制御対象情報が一致している場合は、プログラム部A(8)を起動し(649)、一致していない場合は、更新プログラムを書き込んだプログラム部A(8)は起動させず、電源遮断前に起動していたプログラム部B(9)を起動する。プログラム部A(8)の起動は、次のプログラムがセントラルゲートウェイ203から送信され、正しく書き込まれるまで待つ。
以上のように、車両制御装置1を識別する制御対象情報を更新プログラムに記載することで、車両制御装置1の非書き換え部20の制御対象情報と照合することができ、更新プログラムの正当性を判定することができる。
実施例6、7、9、10の照合対象は、システム構成情報である。システム構成情報は、車両制御装置1を工場から出荷するタイミングで、書き換え部30のデータ格納領域10に格納される。前記システム構成情報とプログラムに格納されたシステム情報の一例を図18を用いて説明する。
図18は、構成管理テーブル220の一例を示す図である。なお、本実施例では構成管理テーブル220を、プログラム配信センタ201で管理する例を示す。構成管理テーブル220は、システム情報221と、車両の制御システムを構成するデバイスの種類と数を格納するシステム構成(222~224)をひとつのエントリに含む。
システム情報221には、車両の制御システムの構成要素を特定するための識別子が格納される。システム構成は、図示の例では、車両の前方を監視するフロントカメラ数222と、後方を監視するバックカメラ数223と、側方を監視するサイドレーダ数224で構成される。
図示のシステム情報221=「001」の車両では、フロントカメラを3個、バックカメラを1個、サイドレーダを3個搭載した車両の制御システムである。
車両制御装置1を出荷する際は、前記データ格納領域10にシステム情報=「001」を格納しておく。このシステム情報221=「001」に対して、プログラム又はキャリブレーションデータに変更がある場合は、プログラムの先頭データに「001」を格納し、プログラム配信センタ201から更新プログラムを配信する。
前記実施例6の図10でステップ1043の照合処理では、判定部13が前記データ格納領域10に格納したシステム情報=「001」と、前記プログラムの先頭データに格納したシステム情報=「001」を照合する。
判定部13は、システム情報が一致している場合は、ハードウェア設定部5で指定されたプログラム部A(8)を起動し、一致していない場合は、ハードウェア設定部5で指定されたプログラムは起動せず、前回起動したプログラム部B(9)を起動する。プログラム部A(8)の起動は、次の更新プログラムがセントラルゲートウェイ203から送信されて、書き換え部30に正しく書き込まれるまで待機する。
本実施例では、判定部13が、書き換え可能なデータ格納領域10に格納されているシステム情報を読み出して、更新プログラムに記載されたシステム情報と照合することで、更新プログラムの正当性を判定することができる。
書き換え可能なデータ格納領域10にシステム情報を設定することにより、工場出荷時に非書き換え部20に情報を格納する必要がなく、また、非書き換え部20に格納している制御対象情報では照合不可能となってしまった場合にも、照合が可能となる。
実施例13では、照合処理の一例を図19を用いて説明する。図19は、データ格納領域10に格納されたシステム情報の照合処理の一例を示す図である。
図19の1901は暗号化された更新プログラムであり、車両制御装置1は復号した後にプログラム一時格納領域15に格納する。プログラム1901の先頭データには更新プログラムの識別子(バージョン情報)1902が格納され、図示の例は「ID3」とする。
図中1903の照合処理では、判定部13がデータ格納領域10に格納されている更新プログラムの識別子の値の最大値(ID2)よりも、復号された更新プログラムに格納されている識別子(ID2)1902のIDの値が大きければ書き込みを許可する。
この場合、データ格納領域10の更新プログラムの識別子は更新の度、更新されるものとする。すなわち。判定部13は前記更新プログラムの識別子1902(ID3)を前記データ格納領域10に格納する。この処理によって、配信された更新プログラムのデータが古いバージョンでの場合、書き込みが実施されることはない。
以上のように、プログラム配信センタ201は、更新プログラムを配信する際に更新プログラムの識別子の値を増大させて付与し、車両制御装置1は、受信した更新プログラムの識別子の値が、データ格納領域10の識別子の値以下の場合には、更新プログラムの書き込みを禁止することで、古いバージョンの更新プログラムが書き込まれるのを防ぐことができる。
<結び>
以上のように、上記実施例の車両制御装置1は、以下のような構成とすることができる。
(1)演算部(3)とメモリ(不揮発性メモリ6、揮発性メモリ14)を含み、前記メモリ(6)に格納されたソフトウェア(暗号文303)を更新する車両制御装置(1)であって、暗号化されたソフトウェア(303)を受信する通信部(4)と、前記暗号化されたソフトウェア(303)を平文(312)へ復号する復号部(7)と、前記メモリ(6)に設定されて前記復号されたソフトウェアを格納する書き換え部(20)と、前記メモリ(6)に予め設定された第1の照合情報(制御対象情報211)と、前記ソフトウェア(303)に付与された第2の照合情報(識別子1902、制御対象情報218)と、前記第1の照合情報(211)を照合し、照合結果に基づいて前記復号されたソフトウェア(平文312)を格納するか否かを判定し、前記復号されたソフトウェア(312)を格納する場合には、前記復号されたソフトウェア(312)を次回の起動用として選択する判定部(13)と、を有することを特徴とする車両制御装置。
上記構成により、判定部13は、起動用のプログラム部A(8)に記載された制御対象情報(218)と、非書き換え部20に設定された工場出荷時の制御対象情報(211)が一致することを検証することで、起動するプログラムが正当なソフトウェアであるか否かを判定することができる。判定部13が実行するプログラム(ソフトウェア)の正当性を判定することにより、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
(2)上記(1)に記載の車両制御装置であって、前記ソフトウェア(303)は、プログラムと前記プログラムの出力を調整するキャリブレーションデータの少なくとも一方を含み、前記書き換え部(20)は、起動用の前記プログラムを格納する第1のプログラム部(プログラム部B9)と、前記起動用のキャリブレーションデータを格納する第1のキャリブレーション部(キャリブレーション部B12)と、更新用の前記プログラムを格納する第2のプログラム部(プログラム部A8)と、前記更新用のキャリブレーションデータを格納する第2のキャリブレーション部(キャリブレーション部A11)とを独立して有し、前記判定部(13)は、前記復号された前記プログラム(312)を前記第2のプログラム部(8)に格納し、前記復号された前記キャリブレーションデータ(312)を前記第2のキャリブレーション部(11)に格納することを特徴とする車両制御装置。
上記構成により、判定部13は、制御対象情報(211、218)の照合結果が不一致(不正)となった場合には、更新プログラムでの起動を禁止することで、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。換言すれば、照合結果が不正な場合には起動用と待機用のプログラム部A(8)、プログラム部B(9)の切り換えを禁止することで、正当ではないプログラムによって車両の制御が行われることを確実に防ぐことが可能となる。
(3)上記(1)に記載の車両制御装置であって、前記メモリ(6、14)は、不揮発性メモリ(6)を含み、前記不揮発性メモリ(6)は、前記第1の照合情報(211)を格納する非書き換え部(20)を有することを特徴とする車両制御装置。
上記構成により、非書き換え部(20)が、照合情報(制御対象情報211)を保持することで、照合情報の改竄を防止することができる。
(4)上記(1)に記載の車両制御装置であって、前記メモリ(6、14)は、不揮発性メモリ(6)を含み、前記不揮発性メモリ(6)は、前記書き換え部(20)が設定され、前記書き換え部(20)は、前記第1の照合情報として車両のシステム構成情報(システム情報221)を格納するデータ格納領域(10)を有し、前記第2の照合情報は、車両のシステム構成情報(222~224)が設定され、前記判定部(13)は、前記データ格納領域(10)の前記システム構成情報(221)と、前記ソフトウェア(303)に付与された前記システム構成情報(222)を照合することを特徴とする車両制御装置。
上記構成により、判定部13が、更新プログラムの正当性を不揮発性メモリ6のデータ格納領域10に格納されたシステム構成情報で照合する。システム構成情報は工場出荷時に非書き換え部20に格納する必要はなく、また、非書き換え部20に格納している制御対象情報では照合不可能となってしまった場合にも、照合が可能となる。また、判定部13は照合結果が不正な場合には、起動用のプログラムの切り換えを禁止することで、正当ではないプログラムによって車両の制御が行われることを確実に防ぐことが可能となる。
(5)上記(4)に記載の車両制御装置であって、前記データ格納領域(10)は、当該車両制御装置(1)に接続された診断装置(1201)から書き換え可能なことを特徴とする車両制御装置。
上記構成により、以上のように、車両制御装置1に格納されたシステム構成情報は、外部の診断装置1201からも書き換え可能である。前記外部の診断装置1201からシステム構成情報の書き換えが可能なため、車両のユーザがオプションでセンサやカメラ等の制御システムの構成要素を変更したり、工場出荷時に書き込みした制御対象情報では照合できなくなってしまった場合にも、同様の照合が可能となる。
(6)上記(2)に記載の車両制御装置であって、前記判定部(13)は、前記照合結果が正当な場合には、前記第2のプログラム部(8)を起動用に切り換え、前記第1のプログラム部(プログラム部B9)を更新用に切り換えて、前記照合結果が不正な場合には、前記起動用と更新用の切り換えを禁止することを特徴とする車両制御装置。
上記構成により、判定部13は照合結果が不正な場合には、起動用のプログラムの切り換えを禁止することで、正当ではないプログラムによって車両の制御が行われることを確実に防ぐことが可能となる。
(7)上記(1)に記載の車両制御装置であって、前記通信部(4)は、複数に分割された前記ソフトウェア(303)を受信し、前記判定部(13)は、前記分割されたソフトウェア(303)のうち、最初に受信した部分に含まれる第2の照合情報(218)を取得して、前記第1の照合情報(211)と照合することを特徴とする車両制御装置。
上記構成により、判定部13は、復号後の更新プログラムを書き換え部30に書き込む前の段階で制御対象情報(211、218)の照合を実施するため、前記実施例1と同様に、車両制御装置1におけるプログラムの更新処理(リプログラミング)の信頼性を向上させることが可能となる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。
例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。