IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立オートモティブシステムズ株式会社の特許一覧

<>
  • 特開-車両電子制御装置 図1
  • 特開-車両電子制御装置 図2
  • 特開-車両電子制御装置 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090874
(43)【公開日】2024-07-04
(54)【発明の名称】車両電子制御装置
(51)【国際特許分類】
   G06F 21/64 20130101AFI20240627BHJP
【FI】
G06F21/64
【審査請求】未請求
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2022207054
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】100145023
【弁理士】
【氏名又は名称】川本 学
(74)【代理人】
【識別番号】100105887
【弁理士】
【氏名又は名称】来山 幹雄
(74)【代理人】
【識別番号】100182028
【弁理士】
【氏名又は名称】多原 伸宜
(72)【発明者】
【氏名】堀口 寛道
(72)【発明者】
【氏名】深川 晴美
(72)【発明者】
【氏名】小森 淳矢
(72)【発明者】
【氏名】木村 啓己
(72)【発明者】
【氏名】設楽 浩祐
(57)【要約】      (修正有)
【課題】プログラムを2値化したデータの書き込み中等に、電源の供給が停止された場合であっても、その停止による不要な影響を受けることを抑制して、そのデータの完全性を検証する車両電子制御装置を提供する。
【解決手段】車両電子制御装置において、コード生成部は、を生成するブロック対応コードのうち最後に生成されるブロック対応コードHC4が生成されるまでに、電源供給が停止され、かつ、その後電源供給が再開された場合には、電源供給が停止されたタイミングに対して最後にメモリに書き込まれたブロック対応データMB1に基づき、ブロック対応コードHC1を生成する。積算値算出部は、ブロック対応コードHC1からHC3の各々のデータの長さを積算することにより、積算値L2を算出する。コード生成部は、ブロック対応コードHC1からHC3の各々のデータの長さを積算することにより算出された積算値L2を用いてHC4を生成する。
【選択図】図2
【特許請求の範囲】
【請求項1】
電源供給がされている状態で車両の搭載機器を制御する車両電子制御装置であって、
前記車両を制御するプログラムが2値化されたデータが書き込まれるメモリと、
前記プログラムの前記データを複数のブロックに区画して前記複数のブロックに各々対応するブロック対応データとし、前記ブロック対応データを前記メモリに順次書き込む書き込み制御部と、
前記書き込み制御部が、前記ブロック対応データを前記メモリに書き込み、書きまれた前記ブロック対応データに基づき、かつそれらに対してユニークなブロック対応コードを各々生成するコード生成部と、
前記コード生成部により最後に生成される前記ブロック対応コードである第1のコードを除いた前記ブロック対応コードの各々のデータの長さを積算して積算値を算出する積算値算出部と、
を備える車両電子制御装置であって、
前記コード生成部は、前記積算値を用いて、前記第1のコードを生成し、
前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、
前記コード生成部は、前記電源供給が停止されたタイミングに対して最後に前記メモリに書き込まれた前記ブロック対応データに基づき、前記ブロック対応コードである第2のコードを生成し、
前記積算値算出部は、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより、前記積算値を算出し、
前記コード生成部は、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより算出された前記積算値を用いて、前記第1のコードを生成することを特徴とする車両電子制御装置。
【請求項2】
前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、前記コード生成部は、前記複数のブロックの内の最後のブロックに対応し、かつ前記電源供給が再開された後に前記メモリに書き込まれた前記ブロック対応データと、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより算出された前記積算値と、を用いて前記第1のコードを生成することを特徴とする請求項1に記載の車両電子制御装置。
【請求項3】
前記書き込み制御部は、前記ブロック対応データを前記メモリに順次書き込む度に、書き込まれた前記ブロック対応データのアドレスを、前記メモリとは別に備えられた別のメモリに書き込み、
前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、
前記コード生成部は、前記別のメモリに書き込まれた前記アドレスを参照して、前記電源供給が停止されたタイミングに対して最後に前記メモリに書き込まれた前記ブロック対応データを判別することを特徴とする請求項1又は2に記載の車両電子制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両電子制御装置に関し、特にプログラムを2値化したデータの書き込み中等に、電源の供給が停止された場合であっても、その停止による不要な影響を受けることを抑制してそのデータの完全性を検証する車両電子制御装置に関する。
【背景技術】
【0002】
近年、自動車等の車両に搭載されたECU(Electronic Control Unit:電子制御装置)に適用されて、車両の搭載機器の動作等を制御するためのソフトウエアは多種多様となっており、かかるソフトウエア中のプログラムが車両の製造後に更新等される機会も増加している。かかる場合、更新等されるプログラムは外部端末や外部サーバ等の外部機器から有線通信又は無線通信で提供されるものであるが、ECUに更新等されたプログラムは、外部機器から提供されたプログラムと完全に一致していることが必要とされる。
【0003】
かかる状況下で、特許文献1は、センター装置、車両情報通信システム、配信パッケージ送信方法及び配信パッケージの送信プログラムに関し、ロールバック用の差分データとして、新プログラムをベースとして旧プログラムへ更新する際の差分データファイル及び差分データの完全性検証データを生成することを開示し、例えば、完全性検証データは、ハッシュ関数を適用して生成されるハッシュ値であり、差分データのデータ値を所定バイト毎にメッセージブロックに区切って、初期ハッシュ値に対して最初のメッセージブロックのデータ値を適用して所定バイト長のハッシュ値を得ると、そのハッシュ値に次のメッセージブロックの差分データのデータ値を適用し、所定バイト長のハッシュ値を得ることを順次繰り返すもので、このように生成したハッシュ値と、差分データを受信した際のハッシュ値と、を比較して差分データの完全性を検証することを開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-27625号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、本発明者の検討によれば、特許文献1の構成においては、全ての完全性検証データ(ハッシュ値であるユニークなコード)が生成されたとき、電源の供給が開始されてから生成されたコードであって、かつ最後のコードを除いたコードの各々のデータの長さの積算値を算出して、かかる積算値をも反映させて最後のコードを生成して、差分データ等の検証対象データの完全性を検証することも考えられる。
【0006】
しかしながら、かかる構成においては、更新プログラム等のプログラムを2値化したデータを電子制御装置のメモリに書き込んでいる途中で、車両のユーザ等によってイグニッションスイッチのオフ等がなされて電源の供給が停止され、その後イグニッションスイッチのオン等がなされて電源の供給が再開された場合には、プログラムの2値化データの全てがメモリに書き込まれるまで電源の供給が継続されていた場合に比較して、生成されるコードが不適切なものとなって、コードのデータの各々の長さの積算値も不適切なものとなってしまうため、本来生成すべき適切な最後のコードを生成することができなくなることが考えられて、メモリに書き込まれたプログラムの2値化データの完全性を検証する際に、不要な影響を受ける事態も考えられる。かかる事情は、コードを生成中に電源の供給が停止され、その後電源の供給が再開される場合でも同様に考えられるものである。
【0007】
本発明は、以上の検討を経てなされたものであり、プログラムを2値化したデータの書き込み中等に、電源の供給が停止された場合であっても、その停止による不要な影響を受けることを抑制した態様で、そのデータの完全性を検証することができる車両電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
以上の目的を達成するべく、本発明は、電源供給がされている状態で車両の搭載機器を制御する車両電子制御装置であって、前記車両を制御するプログラムが2値化されたデータが書き込まれるメモリと、前記プログラムの前記データを複数のブロックに区画して前記複数のブロックに各々対応するブロック対応データとし、前記ブロック対応データを前記メモリに順次書き込む書き込み制御部と、前記書き込み制御部が、前記ブロック対応データを前記メモリに書き込み、書きまれた前記ブロック対応データに基づき、かつそれらに対してユニークなブロック対応コードを各々生成するコード生成部と、前記コード生成部により最後に生成される前記ブロック対応コードである第1のコードを除いた前記ブロック対応コードの各々のデータの長さを積算して積算値を算出する積算値算出部と、を備える車両電子制御装置であって、前記コード生成部は、前記積算値を用いて、前記第1のコードを生成し、前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、前記コード生成部は、前記電源供給が停止されたタイミングに対して最後に前記メモリに書き込まれた前記ブロック対応データに基づき、前記ブロック対応コードである第2のコードを生成し、前記積算値算出部は、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより、前記積算値を算出し、前記コード生成部は、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより算出された前記積算値を用いて、前記第1のコードを生成することを第1の局面とする。
【0009】
また、本発明は、第1の局面に加えて、前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、前記コード生成部は、前記複数のブロックの内の最後のブロックに対応し、かつ前記電源供給が再開された後に前記メモリに書き込まれた前記ブロック対応データと、前記第2のコードを含む前記ブロック対応コードの各々のデータの長さを積算することにより算出された前記積算値と、を用いて前記第1のコードを生成することを第2の局面とする。
【0010】
また、本発明は、第1又は第2の局面に加えて、前記書き込み制御部は、前記ブロック対応データを前記メモリに順次書き込む度に、書き込まれた前記ブロック対応データのアドレスを、前記メモリとは別に備えられた別のメモリに書き込み、前記第1のコードが生成されるまでに、前記電源供給が停止され、かつその後前記電源供給が再開された場合には、前記コード生成部は、前記別のメモリに書き込まれた前記アドレスを参照して、前記電源供給が停止されたタイミングに対して最後に前記メモリに書き込まれた前記ブロック対応データを判別することを第3の局面とする。
【発明の効果】
【0011】
以上の本発明の第1の局面にかかる車両電子制御装置によれば、最後に生成されるブロック対応コードである第1のコードが生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部が、電源供給が停止されたタイミングに対して最後にメモリに書き込まれたブロック対応データに基づき、ブロック対応コードである第2のコードを生成し、積算値算出部が、第2のコードを含むブロック対応コードの各々のデータの長さを積算することにより、積算値を算出し、コード生成部が、第2のコードを含むブロック対応コードの各々のデータの長さを積算することにより算出された積算値を用いて、第1のコードを生成するものであるため、書き込み制御部がブロックのデータの一部までをメモリに書き込んだ状態で電源供給が一旦停止された場合や、コード生成部がそのデータに対してユニークなコードの一部までを生成している状態で電源供給が一旦停止された場合であっても、書き込み制御部が全てのブロックのデータをメモリに書き込むまで電源の供給が継続して行われた場合や、コード生成部がそのデータに対してユニークなコードを全て生成し終るまで電源の供給が継続して行われた場合と同一の最後のコードを生成することができる。よって、電源供給が一旦停止された場合であっても、その停止された際に本来生成すべきであったコードを適切に生成することができ、かかる適切なコードを用いて積算値を算出することができるため、かかる積算値を用いて、電源供給の停止による不要な影響を受けることを抑制した態様で、メモリに書き込まれたプログラムの2値化データの完全性を検証することができる。
【0012】
また、本発明の第2の局面にかかる車両電子制御装置によれば、第1のコードが生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部が、複数のブロックの内の最後のブロックに対応し、かつ電源供給が再開された後にメモリに書き込まれたブロック対応データと、第2のコードを含むブロック対応コードの各々のデータの長さを積算することにより算出された積算値と、を用いて第1のコードを生成するものであるため、電源供給が一旦停止された場合であっても、適切に生成された最後のコードを用いて、プログラムの2値化データの完全性を確実に検証することができる。
【0013】
また、本発明の第3の局面にかかる車両電子制御装置によれば、書き込み制御部が、ブロック対応データをメモリに順次書き込む度に、書き込まれたブロック対応データのアドレスを、メモリとは別に備えられた別のメモリに書き込み、第1のコードが生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部が、別のメモリに書き込まれたアドレスを参照して、電源供給が停止されたタイミングに対して最後にメモリに書き込まれたブロック対応データを判別するものであるため、電源供給が一旦停止された場合であっても、電源供給が停止されたタイミングに対して最後にメモリに書き込みが完了しているブロック対応データに基づきコードの生成を実行することにより、又は電源供給が停止されたタイミングに対して最後にメモリに途中までの書き込みがなされたブロック対応データの不足分の書き込みを待って、そのブロック対応データに基づきコードの生成を実行することにより、電源供給が停止された際に生成すべきであったコードを確実に生成することができ、そのデータ長を用いて、プログラムの2値化データの完全性をより確実に検証することができる。
【図面の簡単な説明】
【0014】
図1図1は、本発明の実施形態における車両電子制御装置の構成を示すブロック図である。
図2図2(a)は、電源の供給が停止されない場合において、本実施形態における比較例の車両電子制御装置の動作を時系列的に示す模式図であり、図2(b)は、電源の供給が停止される場合において、本実施形態における比較例の車両電子制御装置の動作を時系列的に示す模式図である。
図3図3(a)は、電源の供給が停止されない場合において、本実施形態における車両電子制御装置の動作を時系列的に示す模式図であり、図3(b)は、電源の供給が停止される場合において、本実施形態における車両電子制御装置の動作を時系列的に示す模式図である。
【発明を実施するための形態】
【0015】
以下、図面を適宜参照して、本発明の実施形態における車両電子制御装置につき、詳細に説明する。
【0016】
〔車両電子制御装置の構成〕
まず、図1を参照して、本実施形態における車両電子制御装置(以下、単に電子制御装置ということがある)の構成について説明する。
【0017】
図1は、本実施形態における車両電子制御装置の構成を示すブロック図である。
【0018】
図1に示すように、本実施形態における車両電子制御装置(ECU)1は、典型的には、自動車等の車両に搭載される駆動源等の搭載機器を制御対象とする演算処理装置であり、CPU(Central Processing Unit:中央処理ユニット)10と、ROM(Read Only Memory)20と、不揮発性メモリ50と、内部通信線60と、通信回路70と、電源回路80と、を備え、車両に搭載された電源であるバッテリBから電力の供給を受けて動作するものである。
【0019】
CPU10は、電源供給停止検知部11と、書き込み制御部12と、コード生成部13と、積算値算出部14と、検証部15と、を備えている。なお、図中では、電源供給停止検知部11、書き込み制御部12、コード生成部13、積算値算出部14及び検証部15を、電子制御装置1が制御対象の動作の制御を実行する際に用いる制御・処理プログラムを実行する際の機能ブロックとして示す。
【0020】
具体的には、電源供給停止検知部11は、バッテリBからの電力が、イグニッションスイッチ82を介し、電源回路80を含む電子制御装置1に供給されているか否かを検知する。詳しくは、電源供給停止検知部11は、典型的には車両の運転者等によりイグニッションスイッチ82がオフ状態からオン状態にされることにより、バッテリBからの電流が電源回路80に流れると、例えば電源回路80内の所定回路に電流が流れるときの電流値を算出して、バッテリBからの電力が電子制御装置1に供給されていることを検知する一方で、典型的には車両の運転者等によりイグニッションスイッチ82がオン状態からオフ状態にされることにより、バッテリBからの電流が電源回路80に流れなくなると、例えば電源回路80内の所定回路に電流が流れなくなったときの電流値を算出して、バッテリBからの電力が電子制御装置1に供給されていないことを検知する。なお、電源回路80は、バッテリBからの電力を受けて、その電源電圧をCPU10で必要とされる電圧に変換する等の機能を有する。
【0021】
書き込み制御部12は、電子制御装置1に適用されるソフトウエアにおける典型的には制御・処理プログラムの更新プログラム等を2値化したデータを、各々が実質同一の長さ(容量)を有する複数のブロックに区画して、かかる複数のブロックに各々対応するブロック対応データとし、かかるブロック対応データをROM20に順次書き込む。詳しくは、書き込み制御部12は、内部通信線60を介して、ブロック対応データを、ROM20に送って、ROM20内の記憶領域である第1バンク30にまず書き込んで書き込み済みデータ32とし、それに引き続いて、第1バンク30に書き込んだブロック対応データと同じデータをROM20内の記憶領域である第2バンク40に書き込んで書き込み済みデータ42とする。また、かかる書き込み対象の制御・処理プログラムの更新プログラム等は、典型的には、その2値化データとして、外部端末や外部サーバ等の外部送信元機器72から、外部通信線74を経て、又は所定のプロトコルの無線通信を経て、通信回路70で受信されるもので、電子制御装置1に初期状態で実装される制御・処理プログラムに対する更新プログラム等が含まれるものである。更に、ブロック対応データをROM20に順次書き込むときに、ブロック対応データがROM20に最後に書き込まれるのは第2バンク40であるので、書き込み制御部12は、ブロック対応データを第1バンク30の後に引き続いて第2バンク40に書き込む度に、第2バンク40に書き込まれたブロック対応データの書き込み済みデータ42のアドレス(典型的には書き込み済み領域の最終アドレス)を、不揮発性メモリ50に、書き込み済みアドレス52として書き込む。なお、ROM20内の第2バンク40が省略される場合には、書き込み制御部12は、ブロック対応データを第1バンク30に書き込む度に、第1バンク30に書き込まれたブロック対応データの書き込み済みデータ42のアドレス(典型的には書き込み済みの領域を示すアドレス)を、不揮発性メモリ50に、書き込み済みアドレス52として書き込むことが好ましい。かかる書き込み制御部12は、一旦電源供給が停止され、その後電源供給が再開された場合には、その電源供給が停止された際に書き込みの途中であったデータ等の値を、その続きから書き込みを再開することが可能である。また、ROM20及び不揮発性メモリ50共に、それらメモリの種類としては、典型的には、いわゆるフラッシュメモリが適用されている。また、通信回路70は、外部送信元機器72との間で送受信機能を有する。
【0022】
コード生成部13は、書き込み制御部12が、ブロック対応データを、ROM20の第1バンク30に引き続いて第2バンク40に書き込むと、書きまれたブロック対応データである書き込み済みデータ42に基づいて、かつそれに対してユニークなブロック対応コードを生成する。かかるユニークなブロック対応コードは、典型的には、このように書きまれたブロック対応データである書き込み済みデータ42の値にいわゆるハッシュ関数(例えばSHA-256に相当するもの)を適用して算出されるハッシュコード(ハッシュ値)である。また、コード生成部13は、典型的には、書き込み対象の制御・処理プログラムの更新プログラム等の最後のブロック対応データに基づいて最後のブロック対応コードを生成する際には、かかる最後のブロック対応データの値と、積算値算出部14が算出した積算値と、に基づいて、最後のブロック対応コード(第1のコード)を生成する。なお、コード生成部13は、このように書きまれたブロック対応データである書き込み済みデータ42の値のみならず、その1つ前に書きまれたブロック対応データである書き込み済みデータ42の値又はそのハッシュコード(1つ前に書きまれたブロック対応データがない最初の生成の場合にはハッシュコードの初期値)に対してもハッシュ関数を適用して、ハッシュコードを算出してもよい。
【0023】
ここで、コード生成部13は、かかる最後のブロック対応コードである第1のコードが生成されるまでに、電源供給停止検知部11が、バッテリBからの電力が電子制御装置1に供給されていないことを検知し、かつその後に、バッテリBからの電力が電子制御装置1に供給されていることを検知したとき、つまり一旦電源供給が停止され、その後電源供給が再開された場合には、その電源供給が停止されたタイミングに対してROM20の第2バンク40に最後に書き込まれていたブロック対応データである書き込み済みデータ42に基づき、ブロック対応コード(第2のコード)を生成する。この際、コード生成部13は、不揮発性メモリ50に書き込まれていた第2バンク40における書き込み済みデータ42のアドレスを参照して、電源供給が停止されたタイミングに対して最後に第2バンク40に書き込まれていたブロック対応データである書き込み済みデータ42を判別する。そして、このような第2バンク40に最後に書き込まれていたブロック対応データである書き込み済みデータ42において、そのブロック対応データの全データの書き込みが完了していると判別する場合には、電源供給が停止された際には典型的にはブロック対応コードの生成の途中であったはずであるが、そのブロック対応データの全データに基づいて、又はそのブロック対応データの一部のみのデータの書き込みが完了していると判別する場合には、電源供給が停止された際には典型的にはブロック対応コードの生成は開始されていなかったものであるが、書き込み制御部12によるその不足分のデータの書き込みを待って、そのブロック対応データの全データに基づいて、第2のコードを算出する。かかる第2のコードは、電源供給の停止がない場合に同じブロック対応データに相当する書き込み済みデータ42に基づいて生成されたブロック対応コードと一致する。なお、ユニークなブロック対応コードとしては、ハッシュコードの他に、所定の暗号化アルゴリズムを用いて暗号化されたコード等を用いてもよい。
【0024】
積算値算出部14は、コード生成部13により最後に生成される第1のコードを除外しながら、第1のコード以前に生成された複数のブロック対応コードの各々のデータの長さを算出し、それらを積算することにより積算値を算出する。また、コード生成部13が最後に生成するブロック対応コードである第1のコードが生成されるまでに、一旦電源供給が停止され、その後電源供給が再開された場合には、コード生成部13により最後に生成される第1のコードを除いた、つまり電源供給の停止を挟んで、コード生成部13により最後の第1のコードが生成されるまでに生成される複数のブロック対応コードの各々データの長さを算出して、それらを積算する積算値を算出する。この際、コード生成部13により最後の第1のコードが生成されるまでに生成される複数のブロック対応コードには、第2のコードが含まれる。このように第2のコードを含むブロック対応コードの各々のデータの長さやそれらを積算した積算値は、電源供給の停止がない場合に算出した各々のデータの長さやそれらを積算した積算値と一致する。なお、ブロック対応コードのデータの長さとしては、そのデータのビット数を用いてもよいし、そのブロック対応コードを生成するための演算回数や演算時間等を用いてもよい。また、積算値算出部14では、コード生成部13が第1のコードを生成するまでに、第1のコード以外のブロック対応コードの各々のデータの長さを算出して、それらの積算値を算出することが必要とされる。
【0025】
また、コード生成部13が第1のコード以外のブロック対応コードを生成するタイミングは、書き込み制御部12がブロック対応データをROM20の第1バンク30に引き続いて第2バンク40に書き込む度にその都度であってもよいし、積算値算出部14が積算値を算出する直前であってもよい。前者の場合には、典型的には、コード生成部13は、第1のコード以外のブロック対応コードを生成する度にその都度、かかるブロック対応コードを不揮発性メモリ50に書き込む、又はコード生成部13が第1のコード以外のブロック対応コードを生成する度にその都度、積算値算出部14が各々のブロック対応コードの長さを算出してそれらの値を不揮発性メモリ50に書き込んでおくことが必要となる。また、後者の場合には、典型的には、積算値算出部14は、コード生成部13により第1のコード以外のブロック対応コードが生成されるタイミングに合わせて、それらのコードの値を用いて、各々のデータの長さを算出して、それらの積算値を算出すれば足りることになる。
【0026】
検証部15は、書きみ対象の制御・処理プログラムの更新プログラム等の2値化データが通信回路70で受信された際に、第1のコードに相当する受信時コードを算出しており、かかる受信コードと、コード生成部13が生成した第1のコードと、を比較することにより、ROM20の第2バンク40に最後に書き込まれたブロック対応データである書き込み済みデータ42の完全性を検証する。具体的には、検証部15は、検証部15が算出した受信時コードと、コード生成部13が生成した第1のコードと、が一致すれば、書き込み済みデータ42には完全性があると判別し、これらが一致しなければ、書き込み済みデータ42には完全性がないと判別する。かかる検証においては、電源供給の停止がある場合であっても、第1のコードを除くブロック対応データの生成、それらのデータの長さの算出、それらのデータの長さの積算値の算出、及び第1のコードの生成に対し、不要な影響が生じることが抑制されているため、電源供給の停止に起因する不要な影響が生じることが抑制されている。
【0027】
以上説明してきた構成を有する電子制御装置1は、電子制御装置1に適用される制御・処理プログラムの更新プログラム等を2値化したデータの書き込み中に、電源の供給が停止された場合であっても、その停止による不要な影響を受けることを抑制して、書き込まれたデータの完全性を検証する検証処理を実行することになる。以下、更に図2及び図3をも参照して、かかる検証処理を実行する際に第1コードを算出する電子制御装置1の動作について説明する。
【0028】
〔車両電子制御装置の動作〕
図2(a)は、電源の供給が停止されない場合において、本実施形態における比較例の車両電子制御装置の動作を時系列的に示す模式図であり、図2(b)は、電源の供給が停止される場合において、本実施形態における比較例の車両電子制御装置の動作を時系列的に示す模式図である。また、図3(a)は、電源の供給が停止されない場合において、本実施形態における車両電子制御装置1の動作を時系列的に示す模式図であり、図3(b)は、電源の供給が停止される場合において、本実施形態における車両電子制御装置1の動作を時系列的に示す模式図である。なお、以下では、便宜上、本実施形態における比較例の車両電子制御装置の構成要素に対して、本実施形態における車両電子制御装置1の同等の構成要素の符号と同じ符号を用いて説明する。
【0029】
まず、図2(a)に示すように、本実施形態における比較例の車両電子制御装置では、電源供給停止検知部11が電源供給の停止を検知することがない例において、書き込み制御部12は、通信回路70が書き込み対象の制御・処理プログラムの更新プログラム等の2値化データDを受信すると、書き込み制御部12は、2値化データDを複数のブロックに区画したブロック対応データMB1からMB4として、ROM20内の第1バンク30にまず書き込み、それに引き続いて第2バンク40に書き込む。このように書き込み制御部12がROM20内の第2バンク40にブロック対応データMB1からMB4を書き込むと、コード生成部13は、書きまれたブロック対応データMB1からMB4に基づいて、かつそれに対してユニークなブロック対応コードであるハッシュコードHC1からHC4を生成する。詳しくは、一例として、コード生成部13は、ハッシュコードの所定の初期値及び書きまれたブロック対応データMB1に基づいて、ハッシュコードHC1を生成し、ハッシュコードHC1及び書きまれたブロック対応データMB2に基づいて、ハッシュコードHC2を生成し、ハッシュコードHC2及び書きまれたブロック対応データMB3に基づいて、ハッシュコードHC3を生成する。この際、積算値算出部14は、コード生成部13により最後に生成されるハッシュコードH4を除外し、ハッシュコードH4以前に生成されたハッシュコードHC1からHC3の各々のデータの長さを算出し、それらを積算することにより積算値L1を算出する。そして、コード生成部13は、ハッシュコードHC4を生成する際には、ハッシュコードHC3及び書き込み済みのブロック対応データMB4に加えて積算値L1にも基づいて、ハッシュコードHC4を生成する。
【0030】
次に、図2(b)に示す本実施形態における比較例の車両電子制御装置では、図2(a)に示す本実施形態における比較例の車両電子制御装置に対して、ブロック対応データMB1がROM20の第2バンク40に書き込まれている途中、又はハッシュコードHC1が生成されている途中の期間TSの始期で、電源供給が停止され、かつ期間TSの終期で電源供給が再開されていることを、電源供給停止検知部11が検知した点が相違している。つまり、ブロック対応データMB1がROM20の第2バンク40に書き混まれている途中で電源供給の停止があった場合には、ブロック対応データMB1は、その全てが書き込み制御部12により第2バンク40に書き込まれていない可能性が高く、仮にブロック対応データMB1の全てが第2バンク40に書き込まれていないとすれば、このような不完全なブロック対応データMB1に基づいてコード生成部13により生成されたハッシュコードHC1も不完全なものとなってしまう。かかる事情は、ハッシュコードHC1が生成されている途中で 電源供給の停止があった場合にも、ハッシュコードHC1も不完全なものとなってしまう点では同様である。また、かかる電源供給の停止が発生した場合には、積算値算出部14は、一般的には、その電源供給が再開した後のハッシュコードHC2及びHC3を積算して積算値L2を算出することになるため、このように算出された積算値L2は、図2(a)に示す本来呈すべき値を呈する積算値L1とは異なった値を呈することになる。この結果、図2(b)においてコード生成部13により生成されたハッシュコードHC4は、図2(a)においてコード生成部13により生成されたハッシュコードHC4とは異なった値を呈してしまい、検証部15が算出した受信時コードと、コード生成部13が生成したハッシュコードHC4と、が一致しない結果となるため、検証部15により、第2バンク40に書きまれたブロック対応データMB1からMB4には完全性がないと判別されることになる。なお、電源供給の停止が発生したときに、コード生成部13で生成されるハッシュコードHC1が不揮発性メモリ50に書き込まれていた場合も想定し得るが、このような不揮発性メモリ50に書き込まれたハッシュコードHC1は不完全なものであるため、かかる不完全なハッシュコードHC1を含むハッシュコードHC1からHC3の各々のデータ長さを積算値算出部14が積算して積算値を算出したとしても、図2(a)に示す本来呈すべき値を呈する積算値L1とは異なった値を呈することになる。
【0031】
一方で、本実施形態における車両電子制御装置1では、電源供給の停止がない場合である図3(a)に示す状況は、図2(a)に示す比較例のものと同様になるが、図3(b)に示すように電源供給停止検知部11が期間TSで電源供給の停止が発生したことを検知した場合には、図2(b)に示す比較例のものとは相違して、コード生成部13は、不揮発性メモリ50に書き込まれていたROM20の第2バンク40における書き込み済みデータ42であるブロック対応データのアドレスを参照して、電源供給が停止されたタイミングに対してROM20の第2バンク40に最後に書き込み完了していたデータがブロック対応データMB1であることを判別し、又は第2バンク40にブロック対応データMB1の書き込みが完了していないと判別したときには書き込み制御部12によるその書き込みの完了を待って、ハッシュコードの所定の及び書き込みが完了しているブロック対応データMB1に基づいて、かつブロック対応データMB1に対してユニークなブロック対応コードであるハッシュコードHC1を改めて生成すると共に、その後ハッシュコードHC1及びブロック対応データMB2に基づいて、かつブロック対応データMB2に対して各々ユニークなブロック対応コードであるハッシュコードHC2生成し、更にハッシュコードHC2及びブロック対応データMB3に基づいて、かつブロック対応データMB3に対して各々ユニークなブロック対応コードであるハッシュコードHC3生成する。この際、積算値算出部14は、コード生成部13により最後に生成されるハッシュコードH4を除外し、ハッシュコードH4以前に生成されたハッシュコードHC1からHC3の各々のデータの長さを算出し、それらを積算することにより積算値L2を算出する。かかる積算値L2は、電源供給の停止後にコード生成部13が改めて生成したハッシュコードHC1が、図3(a)に示す本来呈すべき値を呈するHC1と一致する値を呈するものであるため、図3(a)に示す本来呈すべき値を呈する積算値L1と一致する値を呈するものである。そして、コード生成部13は、ハッシュコードHC4を生成する際には、ブロック対応データMB4に加えて積算値L2にも基づいて、ハッシュコードHC4を生成するため、このように電源供給が停止した後に生成されるハッシュコードHC4は、図3(a)に示す本来呈すべき値を呈するハッシュコードHC4と一致する値を呈することになる。この結果、検証部15は、検証部15が算出した受信時コードと、コード生成部13が生成したハッシュコードHC4と、が一致するため、電源供給の停止に不要な影響を受けることなく、第2バンク40に書きまれたブロック対応データMB1からMB4には完全性があると判別することが可能となる。
【0032】
以上の説明から明らかなように、本実施形態における車両電子制御装置1では、最後に生成されるブロック対応コードである第1のコードHC4が生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部13が、電源供給が停止されたタイミングTSに対して最後にメモリに書き込まれたブロック対応データMB1に基づき、ブロック対応コードである第2のコードHC1を生成し、積算値算出部14が、第2のコードHC1を含むブロック対応コードHC1からHC3の各々のデータの長さを積算することにより、積算値L2を算出し、コード生成部13が、第2のコードHC1を含むブロック対応コードHC1からHC3の各々のデータの長さを積算することにより算出された積算値L2を用いて、第1のコードHC4を生成するものであるため、書き込み制御部12がブロックのデータMB1の一部までをメモリ20に書き込んだ状態で電源供給が一旦停止された場合や、コード生成部13がそのデータMB1に対してユニークなコードHC1の一部までを生成している状態で電源供給が一旦停止された場合であっても、書き込み制御部12が全てのブロックのデータMB1からMB4をメモリに書き込むまで電源の供給が継続して行われた場合や、コード生成部13がそのデータMB1からMB3に対してユニークなコードHC1からHC3を全て生成し終るまで電源の供給が継続して行われた場合と同一の最後のコードHC4を生成することができる。よって、電源供給が一旦停止された場合であっても、その停止された際に本来生成すべきであったコードHC1からHC3を適切に生成することができ、かかる適切なコードHC1からHC3を用いて積算値L2を算出することができるため、かかる積算値L2を用いて、電源供給の停止による不要な影響を受けることを抑制した態様で、メモリに書き込まれたプログラムの2値化データMB1からMB4の完全性を検証することができる。
【0033】
また、本実施形態における車両電子制御装置1では、第1のコードHC4が生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部13が、複数のブロックの内の最後のブロックに対応し、かつ電源供給が再開された後にメモリ20に書き込まれたブロック対応データMB4と、第2のコードHC1を含むブロック対応コードHC1からHC3の各々のデータの長さを積算することにより算出された積算値L2と、を用いて第1のコードHC4を生成するものであるため、電源供給が一旦停止された場合であっても、適切に生成された最後のコードHC4を用いて、プログラムの2値化データMB1からMB4の完全性を確実に検証することができる。
【0034】
また、本実施形態における車両電子制御装置1では、書き込み制御部12が、ブロック対応データMB1からMB4をメモリ20に順次書き込む度に、書き込まれたブロック対応データMB1からMB4のアドレス52を、メモリ20とは別に備えられた別のメモリ50に書き込み、第1のコードHC4が生成されるまでに、電源供給が停止され、かつその後電源供給が再開された場合には、コード生成部13が、別のメモリ50に書き込まれたアドレス52を参照して、電源供給が停止されたタイミングに対して最後にメモリに書き込まれたブロック対応データMB1を判別するものであるため、電源供給が一旦停止された場合であっても、電源供給が停止されたタイミングに対して最後にメモリに書き込みが完了しているブロック対応データMB1に基づきコードHC1の生成を実行することにより、又は電源供給が停止されたタイミングに対して最後にメモリに途中までの書き込みがなされたブロック対応データMB1の不足分の書き込みを待って、そのブロック対応データMB1に基づきコードHC1の生成を実行することにより、電源供給が停止された際に生成すべきであったコードHC1を確実に生成することができ、そのデータ長を用いて、プログラムの2値化データMB1からMB4の完全性をより確実に検証することができる。
【0035】
なお、本発明は、部材の種類、形状、配置、個数等は前述の実施形態に限定されるものではなく、その構成要素を同等の作用効果を奏するものに適宜置換する等、発明の要旨を逸脱しない範囲で適宜変更可能であることはもちろんである。
【産業上の利用可能性】
【0036】
以上のように、本発明は、プログラムを2値化したデータの書き込み中等に、電源の供給が停止された場合であっても、その停止による不要な影響を受けることを抑制した態様で、そのデータの完全性を検証することができる車両電子制御装置を提供することができるものであり、その汎用普遍的な性格から車両等の電子制御装置に広く適用され得るものと期待される。
【符号の説明】
【0037】
1…車両電子制御装置
10…CPU
11…電源供給停止検知部
12…書き込み制御部
13…コード生成部
14…積算値算出部
15…検証部
20…ROM
30…第1バンク
32…書き込み済みデータ
40…第2バンク
42…書き込み済みデータ
50…不揮発性メモリ
52…書き込み済みアドレス
60…内部通信線
70…通信回路
72…外部送信元機器
74…外部通信線
80…電源回路
82…イグニッションスイッチ
B…バッテリ
図1
図2
図3