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

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

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

<>
  • 特許-電子制御装置 図1
  • 特許-電子制御装置 図2
  • 特許-電子制御装置 図3
  • 特許-電子制御装置 図4
  • 特許-電子制御装置 図5
  • 特許-電子制御装置 図6
  • 特許-電子制御装置 図7
  • 特許-電子制御装置 図8
  • 特許-電子制御装置 図9
  • 特許-電子制御装置 図10
  • 特許-電子制御装置 図11
  • 特許-電子制御装置 図12
  • 特許-電子制御装置 図13
  • 特許-電子制御装置 図14
  • 特許-電子制御装置 図15
  • 特許-電子制御装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-10
(45)【発行日】2024-12-18
(54)【発明の名称】電子制御装置
(51)【国際特許分類】
   G06F 8/65 20180101AFI20241211BHJP
   B60R 16/02 20060101ALI20241211BHJP
【FI】
G06F8/65
B60R16/02 660U
【請求項の数】 7
(21)【出願番号】P 2022532271
(86)(22)【出願日】2021-02-05
(86)【国際出願番号】 JP2021004264
(87)【国際公開番号】W WO2021255984
(87)【国際公開日】2021-12-23
【審査請求日】2022-10-28
(31)【優先権主張番号】P 2020104293
(32)【優先日】2020-06-17
(33)【優先権主張国・地域又は機関】JP
【前置審査】
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】衣笠 駿
(72)【発明者】
【氏名】安藤 健治
(72)【発明者】
【氏名】阿部 雄介
【審査官】今川 悟
(56)【参考文献】
【文献】特開2019-061520(JP,A)
【文献】特開2007-257473(JP,A)
【文献】特開2014-179047(JP,A)
【文献】特開2003-196097(JP,A)
【文献】特開2019-109745(JP,A)
【文献】国際公開第2020/075303(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
CPUと、不揮発性メモリと、を含むマイクロコンピュータを含み、
前記不揮発性メモリは、
起動用ソフトウェアと、
制御用ソフトウェアと、
前記制御用ソフトウェアの正当性を確認する為の正当性確認情報と、を含み、
前記不揮発性メモリにおける前記正当性確認情報の格納領域は、前記起動用ソフトウェアの格納領域と異なり、
前記マイクロコンピュータは、さらに、外部との通信を行うための通信部を含み、
前記起動用ソフトウェアは、前記制御用ソフトウェアのリプログラミング機能を有し、
前記リプログラミング機能において、
前記制御用ソフトウェアと前記正当性確認情報とを前記不揮発性メモリから消去し、
前記通信部からの新規な制御用ソフトウェアと新規な正当性確認情報とを前記不揮発性メモリへ書き込み、
前記不揮発性メモリに書き込まれた前記正当性確認情報に基づいて、前記不揮発性メモリに書き込まれた前記制御用ソフトウェアの正当性を検証し、
前記不揮発性メモリは、
主にソフトウェアが格納される第1格納領域と、
主にデータが格納される第2格納領域と、を含み、
前記起動用ソフトウェアおよび前記制御用ソフトウェアは前記第1格納領域に格納され、
前記正当性確認情報は、前記第1格納領域、または、前記第2格納領域に格納され、
前記制御用ソフトウェアは、前記第1格納領域に、複数の分割単位に分割されて格納され、
前記複数の分割単位のおのおのは、期待値を含み、
前記正当性確認情報は、
前記複数の分割単位の分割単位数と、
前記複数の分割単位のおのおのの始点アドレスと、
前記複数の分割単位のおのおのの終点アドレスまたはサイズ情報と、を含み、
前記制御用ソフトウェアの正当性の検証は、前記複数の分割単位のそれぞれに対して実施され、前記複数の分割単位ごとに、対応する始点アドレスと対応する終点アドレスまたは対応するサイズ情報に基づいて、サム値、Cyclic Redundancy Check(CRC)値または、ハッシュ値を計算することによりバリデーション値を計算し、前記バリデーション値と対応する期待値とを比較することで行われる、電子制御装置。
【請求項2】
請求項1の電子制御装置であって、
前記起動用ソフトウェアは、前記正当性確認情報に基づいて前記制御用ソフトウェアの正当性を検証し、
前記制御用ソフトウェアの正当性が確認された後、前記CPUは前記制御用ソフトウェアへジャンプする、電子制御装置。
【請求項3】
請求項1の電子制御装置であって、
前記マイクロコンピュータは、さらに、揮発性メモリを含み、
前記正当性確認情報が前記第2格納領域に格納された場合において、
前記第2格納領域に格納された前記正当性確認情報は、前記揮発性メモリに展開され、
前記揮発性メモリに展開された前記正当性確認情報を参照することにより、前記不揮発性メモリに書き込まれた前記正当性確認情報に基づいた前記制御用ソフトウェアの正当性の検証を行う、電子制御装置。
【請求項4】
請求項1の電子制御装置であって、
前記不揮発性メモリは、消去ブロックと、前記消去ブロックに対応して設けられた複数の書込みブロックと、を含み、
前記消去ブロックの単位でデータの消去が可能であり、
前記書込みブロックの単位でデータの書き込みが可能である、電子制御装置。
【請求項5】
請求項1の電子制御装置であって、
前記正当性確認情報は、さらに、前記分割単位数の反転値と、前記始点アドレスの反転値または前記サイズ情報の反転値と、を含む、電子制御装置。
【請求項6】
請求項5の電子制御装置であって、
前記正当性確認情報は、さらに、
前記複数の分割単位のおのおのの対応する期待値の始点アドレスと、
前記複数の分割単位のおのおのの対応する期待値の終点アドレスまたはサイズ情報と、を含む、電子制御装置。
【請求項7】
請求項6の電子制御装置であって、
前記正当性確認情報は、さらに、前記正当性確認情報のバリデーション値を含む、電子制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子制御装置に関し、特に、自動車に搭載される車載用電子制御装置における制御用ソフトウェアの更新技術に関する。
【背景技術】
【0002】
自動車に搭載される電子制御装置(ECU:Electrical Control Unit)では、マイクロコンピュータに内蔵されたフラッシュROM(Read Only Memory)などの不揮発性メモリに制御用プログラム(制御用ソフトウェア)や制御データが書き込まれている。フラッシュROMに書込まれた制御用プログラムや制御データを書換えて更新する場合がある。
【0003】
電子制御装置における制御用プログラムの書換え技術の提案として、特開2019-109745号公報、特開2017-199120号公報、特開2016-167113号公報等がある。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2019-109745号公報
【文献】特開2017-199120号公報
【文献】特開2016-167113号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
以下に説明する技術は公知とされた技術ではなく、本発明前に本発明者らによって検討された技術である。
【0006】
本発明者らは、フラッシュROMに、起動用ソフトウェア(ブートローダー)と制御用ソフトウェアと格納し、ブートローダーに、以下の機能を割り当てた。
【0007】
1)マイクロコンピュータに内蔵されたレジスタ、RAM(Random Access Memory)および周辺機器などの初期化機能 2)制御用ソフトウェアの書き換え(更新またはリプログラミング)機能 3)制御用ソフトウェアの正当性を確認する機能ここで、制御用ソフトウェアはその役割や保持するデータによって複数の領域(分割単位)に分けることができる。
【0008】
制御用ソフトウェアや制御用ソフトウェアの各分割単位に対する正当性確認を行う場合は、サム値やCRC値やハッシュ値などの算出を行う対象となるアドレス範囲、すなわち各分割単位の始点アドレスおよび終点アドレスと、期待値の格納アドレスといった正当性を確認するための正当性確認情報が必要であり、それらの正当性確認情報はブートローダー中に固定値として格納されている。
【0009】
したがって、制御用ソフトウェアのリプログラミングにおいて、メモリマップの変更を伴う場合、すなわち制御用ソフトウェアの分割の様態に対する変更を伴う場合、ブートローダーも同時に書き換える必要がある。しかし、リプログラミング機能をブートローダーが担う場合、ブートローダーが自身を書き換えることは不可能である。
【0010】
本開示の課題は、制御用ソフトウェアのリプログラミングにおいて、メモリマップが異なるソフトウェアを電子制御装置の不揮発性メモリに書き込むことを可能とする技術を提供することにある。
【0011】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0013】
一実施の形態に従う電子制御装置は、CPUと、不揮発性メモリと、を含むマイクロコンピュータを含み。前記不揮発性メモリは、起動用ソフトウェアと、制御用ソフトウェアと、前記制御用ソフトウェアの正当性を確認する為の正当性確認情報と、を含む。前記不揮発性メモリにおける前記正当性確認情報の格納領域は、前記起動用ソフトウェアの格納領域と異なる。
【発明の効果】
【0014】
上記一実施の形態に係る電子制御装置によれば、制御用ソフトウェアの更新(リプログラミング)において、制御用ソフトウェアと正当性確認情報とを書き替えることができるので、メモリマップが異なるソフトウェアを不揮発性メモリに書き込むことが可能となる。
【図面の簡単な説明】
【0015】
図1図1は、実施の形態に係る電子制御装置の構成例を示す図である。
図2図2は、図1のフラッシュROMに格納されたソフトウェアの第1の構成例を示す図である。
図3図3は、図1のフラッシュROMに格納されたソフトウェアの第2の構成例を示す図である。
図4図4は、比較例に係るフラッシュROMに格納されたソフトウェアの構成例を示す図である。
図5図5は、アドレスヘッダの第1構成例を示す図である。
図6図6は、アドレスヘッダの第2構成例を示す図である。
図7図7は、アドレスヘッダの第3構成例を示す図である。
図8図8は、アドレスヘッダの第4構成例を示す図である。
図9図9は、アドレスヘッダの第5構成例を示す図である。
図10図10は、電子制御装置の起動時の動作を説明するフローチャート図である。
図11図11は、アドレスヘッダを用いた制御用ソフトウェアの正当性確認を行う際のフローチャートである。
図12図12は、アドレスヘッダをデータフラッシュのフリーアドレスに格納する場合の構成例である。
図13図13は、図12のアドレスヘッダの構成例を示す図である。
図14図14は、データフラッシュに格納されたアドレスヘッダを用いた制御用ソフトウェアの正当性確認を行う際のフローチャートである。
図15図15は、図12のアドレスヘッダの他の構成例を示す図である。
図16図16は、ソフトウェア、アドレスヘッダ、メタデータからなるリプログラミングデータパッケージを示す図である。
【発明を実施するための形態】
【0016】
以下、実施形態、および、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。なお、図面は説明をより明確にするため、実際の態様に比べ、模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
【0017】
(実施の形態)
(電子制御装置の全体構成)
図1は、実施の形態に係る電子制御装置の構成例を示す図である。自動車に搭載される車載用電子制御装置(ECU:Electrical Control Unit)1は、マイクロコンピュータ(MC)2を含む。マイクロコンピュータ2は、ソフトウェアに基づいて演算処理を実施する少なくとも1つの中央処理装置(CPU:Central Processor Unit)3と、少なくとも1つの揮発性RAM(Random Access Memory)4と、プログラムやデータを保持する少なくとも1つのフラッシュROM6と、少なくとも1つの外部と通信を行うための通信モジュール5と、各回路(3、4、5、6)を相互に接続するバスBUS等を搭載している。ECU1に電源が投入されると、マイクロコンピュータ2が起動してフラッシュROM6に書き込まれたソフトウェアがCPU3によって実行される。マイクロコンピュータ2は様々な機能が割り当てられた複数の外部端子を含み、それらの複数の外部端子には対応した外部装置が設けられている。不揮発性メモリであるフラッシュROM6に記憶されている制御用ソフトウェアによって対象の外部装置の制御を行う。自動車においては、車載用電子制御装1は、例えば、エンジンの燃料噴射・点火を制御する。
【0018】
揮発性RAM4は、揮発性メモリであり、CPU3の演算途中のデータが一時的に格納される。揮発性RAM4は、一例では、スタチック型ランダムアクセスメモリ(SRAM)とすることができる。
【0019】
フラッシュROM6は、電気的に消去および書き込み可能な不揮発性メモリである。図1では、不揮発性メモリをフラッシュROM6として説明するが、フラッシュROM6はEEPROM(Electrically Erasable Programmable Read-Only Memory)とされても良い。フラッシュROM6のアドレス空間は、ソフトウェアが主に格納される第1格納領域61と、データが主に格納される第2格納領域62とを含む。なお、以下の説明では、第1格納領域61はコードフラッシュ61として説明し、第2格納領域62はデータフラッシュ62として説明する。図1に示す様に、コードフラッシュ61およびデータフラッシュ62のおのおのは複数の消去ブロックEBを有しており、また、コードフラッシュ61およびデータフラッシュ62のおのおのは複数の書込みブロックWBを有している。消去ブロックEBのおのおのはデータの消去単位を示し、書込みブロックWBはデータの書き込み単位を示している。1つの消去ブロックEBには、複数の書込みブロックWBが含まれる。つまり、フラッシュROM6は、ある大きさの消去ブロックEB単位でデータの消去が可能であり、消去ブロックEBよりも小さい大きさの書込みブロックWB単位でデータの書き込みが可能である。図1には、コードフラッシュ61およびデータフラッシュ62のおのおのが2つの消去ブロックEBを含み、各消去ブロックEBが4つの書込みブロックWBを含む構成例が例示的に示されているが、これに限定されるわけではなく、消去ブロックEBのブロック数や書込みブロックWBのブロック数は変更可能である。
【0020】
通信モジュール5は、通信部であり、たとえば、電子制御装置1のソフトウェア書き換え時において、診断ツール7を接続することができる。
【0021】
(フラッシュROMに格納されたソフトウェアの第1の構成例) 図2は、図1のフラッシュROMに格納されたソフトウェアの第1の構成例を示す図である。図2に示す様に、フラッシュROM6のコードフラッシュ61には、起動用ソフトウェア(以下、ブートローダーと言う)10、アドレスヘッダ20と、制御用ソフトウェアSFTが格納されている。フラッシュROM6のデータフラッシュ62には、制御データや制御テーブル等を構成するデータフラッシュ格納物30が格納されている。データフラッシュ格納物30は、制御用ソフトウェアSFTを実行するCPU3により参照され、電子制御装置1が所望の制御を実行する。
【0022】
ブートローダー10は、マイクロコンピュータ2に内蔵されたレジスタ、RAM4および周辺機器(不図示)などの初期化機能、制御用ソフトウェアSFTの書き換え(更新またはリプログラミング)機能、および、制御用ソフトウェアSFTの正当性を確認する機能を有する。
【0023】
制御ソフトウェアSFTは、役割や保持するデータによって論理的に複数の領域に分けることができる。制御ソフトウェアSFTは、一体の場合もある。図2には、この複数の領域が、分割単位11、分割単位12、・・、分割単位1Nとして示されている。
【0024】
アドレスヘッダ20は、フラッシュROM6において、ブートローダー10の格納領域とは異なる格納領域に格納されている。アドレスヘッダ20は、制御用ソフトウェアSFTの正当性を確認する為の正当性確認情報(正当性検証情報ともいう)を含む。正当性確認情報は、分割情報と言うことも可能である。正当性確認情報は、たとえば、制御用ソフトウェアSFTの分割単位の個数と、それぞれの分割単位に対する始点アドレスと終点アドレスまたはサイズ情報と、それぞれの分割単位に対するバリデーション値(期待値EV)が埋め込まれている領域の始点アドレスと終点アドレス等が保持されている。アドレスヘッダ20の詳細な構成例は、後述される図5図9を参照することができる。それぞれの分割単位11-1Nに対するバリデーション値は、図2に示す様に、たとえば、それぞれの分割単位11-1Nの格納領域の先頭アドレスの近傍付近の領域、または、それぞれの分割単位の格納領域の終点アドレスの近傍付近の領域に格納するのが好ましい。本明細書では、制御用ソフトウェアSFTの正当性を検証するための値を、バリデーション値と呼ぶこととする。バリデーション値は、サム値やCRC(Cyclic Redundancy Check)値、ハッシュ値などを計算により求めた場合においては、それらの計算結果に対する期待値EVと言うこともできる。
【0025】
ブートローダー10は、マイクロコンピュータ2の起動直後に起動するプログラムとされ、マイクロコンピュータ2の内蔵レジスタやRAM4、周辺機器(不図示)などの初期化を行った後、制御ソフトウェアSFTの正当性確認を行う。この正当性確認は、アドレスヘッダ20に格納された正当性確認情報に基づいて制御用ソフトウェアSFTの分割単位11-1Nそれぞれに対して実施され、分割単位11-1Nごとに、例えば、サム値やCRC(Cyclic Redundancy Check)値、ハッシュ値などを計算し、それをあらかじめフラッシュROM6に埋め込まれた値(期待値EV)や、既知の値と比較することで行われる。
【0026】
また、ブートローダー10は制御用ソフトウェアSFTの書き換え(リプログラミング)機能を有しており、例えば、ECU1では、外部から接続された診断ツール7より送信されるソフトウェア書き換え要求に応じてソフトウェア書き換え機能が有効化される。続けて診断ツール7から送信されてくる要求にしたがいフラッシュROM6に書き込まれている制御用ソフトウェアSFTおよびアドレスヘッダ20の両方を消去し、さらに送信されてきた新規な制御用ソフトウェア(SFT)および新規なアドレスヘッダ(20)をフラッシュROM6に書き込む。つまり、制御用ソフトウェアSFTを構成する分割単位11-1Nとアドレスヘッダ20とがリプログラミングの対象とされている。この消去・書き込みの一連の操作は、制御用ソフトウェアSFTの分割単位11-1Nごとに行われる。また、ブートローダー10は、診断ツール7から受領した新規な制御用ソフトウェア(SFT)に対しても正当性確認を実施する。この正当性確認も、ハッシュ値やデジタル署名、サム値やCRCなどを利用して行われる。
【0027】
(フラッシュROMに格納されたソフトウェアの第2の構成例)
図3は、図1のフラッシュROMに格納されたソフトウェアの第2の構成例を示す図である。図3図2と異なる点は、図3において、アドレスヘッダ20が、制御データ等を構成するデータフラッシュ格納物30と共に、フラッシュROM6のデータフラッシュ62に格納ないし書き込まれている点である。つまり、ブートローダー10はフラッシュROM6のコードフラッシュ61の所望の格納領域に格納され、アドレスヘッダ20は、ブートローダー10の格納領域と異なる、フラッシュROM6のデータフラッシュ62の所望の格納領域に格納されている。図3の他の構成は、図2の他の構成と同じであるので、重複する説明は省略する。なお、アドレスヘッダ20の詳細な構成例は、後述される図13図15を参照することができる。
【0028】
実施の形態では、車載用電子制御装置1のソフトウェア書き換え時およびソフトウェア起動時における制御用ソフトウェア6の正当性確認において、ブートローダー10とは別の格納領域に、制御用ソフトウェアSFTの分割単位11-1Nの個数および分割情報であるアドレスヘッダ20に保持し、ブートローダー10は分割単位11-1Nの正当性確認においてドレスヘッダ20の格納領域を参照する構成とする。
【0029】
実施の形態によれば、アドレスヘッダ20は制御用ソフトウェアSFTと対になっており、制御用ソフトウェアSFTのリプログラミング時にはアドレスヘッダ20も制御用ソフトウェアSFTと同時に書き換えられる。ブートローダー10は書き替える必要はない。これにより、制御用ソフトウェアSFTの分割単位11-1NのフラッシュROM6のコードフラッシュ61におけるメモリマップがリプログラミング前後で異なっても、同一のブートローダー10で制御用ソフトウェアSFTの正当性確認が可能となる。
【0030】
(比較例)
図4は比較例に係るフラッシュROMに格納されたソフトウェアの構成例を示す図である。図4では、ブートローダー10RはフラッシュROM6のコードフラッシュ61に格納され、アドレスヘッダ20Rは、ブートローダー10Rの内部の領域に格納されている。
【0031】
図4のように、制御用ソフトウェアSFTや制御用ソフトウェアSFTの分割単位(11-1N)に対する正当性確認を行う場合は、サム値やCRC値やハッシュ値などの算出を行う対象となるアドレス範囲、すなわち分割単位の始点アドレスや終点と期待値の格納アドレスといった正当性確認情報が必要であり、それらの正当性確認情報はブートローダー中に、アドレスヘッダ20Rとして格納されている。
【0032】
したがって、制御用ソフトウェアSFTのリプログラミングにおいて、メモリマップの変更を伴う場合、すなわち制御用ソフトウェアSFTの分割の様態に対する変更を伴う場合、ブートローダー10Rおよびアドレスヘッダ20Rも同時に書き換える必要がある。しかし、リプログラミング機能をブートローダー10Rが担う場合、ブートローダー10Rがブートローダー10R自身を書き換えることは不可能である。
【0033】
上記の議論から、ブートローダー10Rを書き換えるためにはブートローダー10Rが備えるリプログラミング機能は利用できない。ブートローダー10Rに依らないリプログラミング手段としては、マイクロコンピュータ2が有するデバッグポート(不図示)を利用するか、リプログラミング用ソフトウェアをRAM4上に展開して制御用ソフトウェアSFTのリプログラミングを実施する、といった方法がある。
【0034】
しかし、電子制御装置1が封止されていたり、デバッグポートが無効化されていたりすると、リプログラミングの実施が困難である。また、あらかじめRAM4に展開するためのリプログラミング用ソフトウェアを通信モジュール5経由で受領するための仕組みをブートローダー10Rに組み込む必要があるうえ、RAM4に展開するリプログラミング用ソフトウェアそのものを用意する必要もあるため、計画的な準備なしには実施が困難である。また、リプログラミングを実施する場合も、RAM4にリプログラミング用ソフトウェアを転送するための時間が余分にかかるため、リプログラミングにかかる時間が増大する。
【0035】
さらに、デバッグポートを用いない方法でブートローダー10Rを書き換える際、例えば、書き換えの途中で診断ツール7と電子制御装置1との接続が失われるなどといった要因で、ブートローダー10Rの消去後の書き込みが失敗する場合もある。この場合、電子制御装置1を復帰させる方法がなくなるというリスクがある。この状態に陥ってしまうと、デバッグポートを用いる方法以外に、電子制御装置1を復帰する方法がなくなってしまう。こうしたリスクを回避するためには、ブートローダーは書き換えないことが望ましい。
【0036】
本実施の形態によれば、デバッグポート経由またはRAMに展開するリプログラミング用ソフトウェアの利用といった特殊なリプログラミング手段を用いずに、フラッシュROM6のコードフラッシュ61における制御用ソフトウェアSFTの分割単位11-1Nのメモリマップがリプログラミング前後で異なる場合であっても、制御用ソフトウェアSFTを電子制御装置1に書き込むことが可能となる。
【実施例1】
【0037】
実施例1は、図2に示したアドレスヘッダ20をコードフラッシュ61に格納した構成例である。以下、実施例1について図5図11を用いて説明する。
【0038】
図5は、アドレスヘッダの第1構成例を示す図である。図5に示す様に、アドレスヘッダ20に格納された正当性確認情報は、制御用ソフトウェアSFTの分割単位の個数201と、それぞれの分割単位11-1Nに対する始点アドレス211-21Nと終点アドレス311-31Nとを含む。正当性確認情報は、さらに、分割単位の個数201の反転値201’と、始点アドレス211-21Nのそれぞれの反転値211’-21N’と、終点アドレス311-31Nのそれぞれの反転値311’-31N’と、を含む。反転値201’、211’-21N’および311’-31N’のおのおのは、分割単位の個数201、始点アドレス211-21Nおよび終点アドレス311-31Nのおのおののデータ自体の正当性を検証するための値とされている。つまり、アドレスヘッダ20は、アドレスヘッダ20の正当性確認情報自体(分割情報自体)の正当性を検証するための反転値(201’、211’-21N’、311’-31N’)を、正当性確認情報(分割情報)の一部として保持している。
【0039】
なお、図5に示すアドレスヘッダ20は、それぞれの分割単位11-1Nに対するバリデーション値(期待値EV)の格納アドレス情報やサイズ情報に関する情報を含んでいない。つまり、この例では、図2で説明した様に、分割単位11-1Nに対するバリデーション値(期待値EV)は、それぞれの分割単位11-1Nの格納領域の先頭アドレスの近傍付近の領域(または、それぞれの分割単位の格納領域の終点アドレスの近傍付近の領域)に格納されていることがルールとして決められているので、アドレスヘッダ20には、バリデーション値(期待値EV)の格納アドレス情報やサイズ情報に関する情報を含ませなくてもよい。
【0040】
図6は、アドレスヘッダの第2構成例を示す図である。図5において、各始点アドレス211-21Nまたは終点アドレス311-31Nのいずれか一方は、サイズ情報に置き換えてもよい。例として図6に終点アドレスをサイズ情報に置き換えた構成例を示す。図6に示すアドレスヘッダ20が図5と異なる点は、図6において、分割単位11-1Nのサイズ411-41Nと、分割単位11-1Nのサイズの反転値411’-41N’が設けられている点である。つまり、図6では、図5の分割単位11-1Nに対する終点アドレス311-31Nの代わりに、分割単位11-1Nのサイズ411-41Nがアドレスヘッダ20の正当性確認情報に格納される。図6の他の構成は、図5の他の構成と同じであるので、重複する説明は省略する。なお、図6は、図5の各終点アドレス311-31Nをサイズ情報(411-41N)に置き換えた構成例を示したが、図5の各終点アドレス311-31Nは変更せずに、各始点アドレス211-21Nをサイズ情報(411-41N)に置き換えてもよい。
【0041】
図7は、アドレスヘッダの第3構成例を示す図である。図7に示すアドレスヘッダ20が図5と異なる点は、図7において、分割単位11-1Nのおのおののバリデーション値(期待値EV)の格納領域の始点アドレス511-51Nと終点アドレス611-61Nがアドレスヘッダ20に追加されている点である。また、始点アドレス511-51Nのおのおの反転値511’-51N’と、終点アドレス611-61Nのおのおの終反転値611’-61N’とがアドレスヘッダ20に追加されている。図7の他の構成は、図5の他の構成と同じであるので、重複する説明は省略する。
【0042】
図8は、アドレスヘッダの第4構成例を示す図である。図8に示すアドレスヘッダ20が図7と異なる点は、図8において、分割単位11-1Nのおのおののサイズ411-41Nと分割単位11-1Nのおのおのサイズの反転値411’-41N’とが設けられている点と、分割単位11-1Nのおのおののバリデーション値(期待値EV)のサイズ711-71Nと分割単位11-1Nのおのおののバリデーション値(期待値EV)のサイズの反転値711’-71N’とが設けられている点とである。図8の他の構成は、図7の他の構成と同じであるので、重複する説明は省略する。
【0043】
図9は、アドレスヘッダの第5構成例を示す図である。図9に示すアドレスヘッダ20が図7と異なる点は、図9において、アドレスヘッダ20に、アドレスヘッダ20のバリデーション値700が設けられている点である。これにより、アドレスヘッダ20の正当性を確認することが可能である。バリデーション値700は、例えば、アドレスヘッダ20のチェックサム,CRC、また、ハッシュ値とすることができる。これにより、アドレスヘッダ20の中の情報に対する読み出しの前、あるいは、電子制御装置1の起動時の処理として、アドレスヘッダ20の正当性確認を行うことで、アドレスヘッダ20の改ざんを検知することができる。これによって、アドレスヘッダ20の改ざんによる悪意のある制御用ソフトウェアの実行を回避することができる。図9の他の構成は、図7の他の構成と同じであるので、重複する説明は省略する。なお、アドレスヘッダ20のバリデーション値700は、図5図8のアドレスヘッダ20に設けても良い。
【0044】
(電子制御装置の起動時の動作)
図10は、電子制御装置の起動時の動作を説明するフローチャート図である。電子制御装置1の起動時にマイクロコンピュータ2のCPU3により最初に実行されるのはブートローダー10である。以下、電子制御装置1の起動時の動作をステップごとに説明する。
【0045】
(ステップS1)
ブートローダー10の実行では、最初にマイクロコンピュータ2の内蔵レジスタ、RAM、周辺機器などの初期化を実行する。その後、フラッシュROM6に書き込まれている制御用ソフトウェアSFTの正当性を検証する(ステップS2~S5)。
【0046】
(ステップS2)
CPU3は、アドレスヘッダ20に保存されている正当性確認情報(分割情報)を読み出す。
【0047】
(ステップS3)
次に、CPU3は、アドレスヘッダ20の分割単位数201、分割単位11-1Nの始点アドレス211-21N、および、分割単位11-1Nの終点アドレス311-31Nあるいは分割単位11-1Nのサイズ411-41Nなどに基づいて、バリデーション値の計算範囲を確定する。
【0048】
(ステップS4)
次に、CPU3は、アドレスヘッダ20の分割単位数201に基づいてバリデーション値を計算するループ(LOOP)の回数nを決定する。この例では、ループ回数nは、1~Nまでとされる。そして、CPU3は、分割単位1nのバリデーション値を計算し(ステップS41)、バリデーション値の計算結果を期待値EVと比較し(ステップS42)、比較結果を、たとえば、RAM4や内蔵レジスタに保存する(ステップS43)。
【0049】
(ステップS5)
次に、CPU3は、比較結果の評価を実施する。比較結果の評価において、制御用ソフトウェアSFTが正当であると判定されれば(OK)、ステップS6へ移行する。比較結果の評価において、制御用ソフトウェアSFTが正当ではないと判定されれば(NG)、ステップS7へ移行する。
【0050】
(ステップS6)
CPU3は、ブートローダー10の実行を完了し、制御用ソフトウェアSFTへジャンプする。これにより、CPU3は、制御用ソフトウェアSFTの実行へ移行する。
【0051】
(ステップS7)
CPU3は、制御用ソフトウェアSFTへジャンプせず、ブートローダー10内に留まる。この場合は、追加で必要な初期化処理があればそれを実行し、制御用ソフトウェアSFTの書き換え(リプログラミング)を待つ状態となる。
【0052】
ステップS4において、制御用ソフトウェアSFTの正当性検証の方法としては、チェックサム、CRC(Cyclic Redundancy Check)、ハッシュ値、デジタル署名のうち1つまたは2つ以上を利用する方法がある。例えば、チェックサムを利用する方法では、対象とするアドレス範囲に対してチェックサムを計算し、それをあらかじめフラッシュROM6に埋め込まれた正解値である期待値EVまたは既知の正解値と比較することで、制御用ソフトウェアSFTの正当性を検証する。上記のような正当性を検証するための値を、本明細書では、バリデーション値と呼んでいる。
【0053】
デジタル署名の場合は、フラッシュROM6に保持しているデジタル署名を、あらかじめフラッシュROM6に保持した公開鍵または外部との通信によって入手した公開鍵によって復号し、ハッシュ値を取り出す。その後、取り出したハッシュ値を、電子制御装置1自身が、対象とするアドレス範囲に対して計算した値と比較することで正当性を検証する。
【0054】
この正当性検証は、制御用ソフトウェアSFTが論理的に分割される場合、その分割単位11-1Nそれぞれに対して行われる。そして、分割単位11-1Nのうちひとつでも正当性が確認できなかった場合は制御用ソフトウェアSFTへのジャンプは行われない。
【0055】
上述のように、正当性検証のためには、制御用ソフトウェアSFTの分割単位11-1Nそれぞれに対する分割情報と、場合によっては正当性確認値の正解値(期待値EV)が埋め込まれている場所の情報が必要となる。それらの情報が、図4の比較例で示した様に、ブートローダー10の内部に保持されており、リプログラミング機能をブートローダー10が担っている場合、リプログラミング時にはブートローダー10は書き換わらない。したがって、制御用ソフトウェアSFTの分割の様態がリプログラミング前後で異なる場合、ブートローダー10は制御用ソフトウェアSFTの正当性確認を正しく行えなくなる。
【0056】
実施例1では、上述したような正当性検証のために必要な情報群を、外部からの書き換えが可能であって、かつ固定もしくは追跡可能な領域へ配置する。そして、正当性検証の際はその領域を参照することで前述した課題を解決する。正当性検証のために必要な情報群を、本明細書では、アドレスヘッダ20と呼んでいる。アドレスヘッダ20を配置する場所は、例えば、制御用ソフトウェアSFTを格納するフラッシュROM6のコードフラッシュ61の中の固定領域または任意領域でもよいし、データを格納するフラッシュROM6のデータフラッシュ62(実施例2参照)の中の固定領域または任意領域やEEPROMの中の固定領域または任意領域でもよい。
【0057】
アドレスヘッダ20をデータフラッシュ62やEEPROMの中の任意領域、つまり、フリーアドレスの格納領域に配置してもよい。この場合には、格納されているアドレスヘッダ20の内容をRAM4に随時展開するソフトウェアを利用して追跡可能性を確保するのが好ましい。
【0058】
(制御用ソフトウェアの正当性確認)
図11は、アドレスヘッダを用いた制御用ソフトウェアの正当性確認を行う際のフローチャートである。以下、制御用ソフトウェアの正当性確認の動作をステップごとに説明する。
【0059】
(ステップS10)
まず初めに、コードフラッシュ61に格納されるアドレスヘッダ20中の分割単位の個数情報201を参照する。
【0060】
(ステップS11)
次に、バリデーション値を計算するループ(LOOP)の回数Nを決定する。この例では、ループ回数nは、1~Nである。
【0061】
(ステップS12)
その後、各分割単位11-1Nについて、各始点アドレス211-21Nまたは各終点アドレス311-31Nまたは各サイズ情報411-41Nを、アドレスヘッダ20を参照して取得し、それをもとにバリデーション値の計算範囲を確定する。
【0062】
(ステップS13)
そして、バリデーション値の計算を行う。
【0063】
(ステップS14)
コードフラッシュ61に格納されるアドレスヘッダ20によって指定される領域(たとえば、図7の511-51N、611-61N、図8の511-51N,711-71N)に埋め込まれているバリデーション値の期待値EVが参照される。
【0064】
(ステップS15)
計算されたバリデーション値と期待値EVとが比較し、両者が一致する場合はステップS16へ移行し、両者が不一致の場合はステップS17へ移行する。
【0065】
(ステップS16)
コードフラッシュ61に書き込まれている制御用ソフトウェアSFTが正当であると判断される。
【0066】
(ステップS17)
コードフラッシュ61に書き込まれている制御用ソフトウェアSFTが正当ではないと判断される。
【0067】
なお、バリデーション値の期待値EVが格納される場所が、アドレスヘッダ20に格納される始点アドレス211-21Nまたは終点アドレス311-31Nの相対値から決定できる場合(図5図6参照)は、期待値EVの格納場所に関する情報をアドレスヘッダ20に含める必要はない。
【0068】
なお、図9に示すアドレスヘッダ20自身のバリデーション値700を付加した構成の場合、図10図11に示されるアドレスヘッダ20中の情報に対する読み出しの前、あるいは、ECU1の起動時の処理として、バリデーション値700を用いてアドレスヘッダ20の正当性確認を行うのが良い。これにより、アドレスヘッダ20の改ざんを検知することができるので、アドレスヘッダ20の改ざんによる悪意のあるソフトウェアの実行を回避することができる。
【0069】
制御用ソフトウェアSFTに関するバリデーション値の検証は、ECU1の起動時のほか、リプログラミング直後にも行われる。これは、意図した制御用ソフトウェアが正しく書き込まれたかどうかを検証するための操作であり、リプログラミングを行うためのツール(診断装置)からのリクエストをトリガーとして行われる場合や、データ通信の終了リクエストの後処理として行われる場合が考えられる。
【0070】
リプログラミング前後で分割単位の構成、つまり分割単位の個数やアドレス配置が変化しない場合はアドレスヘッダ20を書き換える必要はないが、分割単位の構成が変わる場合は、その構成に合わせてアドレスヘッダ20も書き換わっていることが必要となる。バリデーション値の検証処理は、図11のように、アドレスヘッダ20の内容によって動的に行われるため、アドレスヘッダ20が適切に書き換わっていれば、リプログラミング前後で制御用ソフトウェアSFTの分割単位の構成が異なっていても、問題なく制御用ソフトウェアSFTに係るバリデーション値を検証することができる。
【実施例2】
【0071】
実施例1では、アドレスヘッダ20をコードフラッシュ61の所望のアドレス領域に格納する構成例を説明した。実施例2は、図3に示したアドレスヘッダ20をデータフラッシュ62の所望のアドレス領域に格納する構成例である。以下、実施例2について図12図16を用いて説明する。
【0072】
図12は、アドレスヘッダをデータフラッシュのフリーアドレスに格納する場合の構成例である。図13は、図12のアドレスヘッダ20の構成例を示す図である。図14は、データフラッシュに格納されたアドレスヘッダを用いた制御用ソフトウェアの正当性確認を行う際のフローチャートである。
【0073】
図12には、RAM4のアドレス空間と、フラッシュROM6のコードフラッシュ61およびデータフラッシュ62のアドレス空間が示されている。コードフラッシュ61には、ブートローダー10と、制御用ソフトウェアSFTの分割単位11-1Nとが格納される。データフラッシュ62には、アドレスヘッダ20と、データフラッシュ格納物30とが格納される。RAM4には、データフラッシュ62の内容(20、30)をRAM4に随時展開する展開ソフトウェアによって、アドレスヘッダ20のコピー20’およびデータフラッシュ格納物30のコピー30’が格納されている。
【0074】
図13に示す様に、アドレスヘッダ20およびアドレスヘッダ20のコピー20’は、制御用ソフトウェアSFTの分割単位の個数201と、それぞれの分割単位11-1Nに対する始点アドレス211-21Nと終点アドレス311-31Nと、それぞれの分割単位11-1Nに対するバリデーション値が埋め込まれている領域の始点アドレス511-51Nおよび終点アドレス611-61Nが保持されている。なお、図6図8の関係と同様に、各始点アドレスまたは終点アドレスのいずれかは、サイズ情報(各分割単位11-1Nのサイズ411-41N,各分割単位11-1Nのバリデーション値のサイズ711-71N)に置き換えてもよい。
【0075】
アドレスヘッダ20の値を参照する場合は、RAM4上のアドレスヘッダ20のコピー20’の値を参照する。アドレスヘッダ20を、データフラッシュ62のフリーアドレスではなく、データフラッシュ62の固定領域に配置する場合、同様の展開ソフトウェアを利用してRAM4上の値を参照してもいいし、データフラッシュ62のアドレスヘッダ20を直接参照してもよい。
【0076】
図14は、データフラッシュに格納されたアドレスヘッダを用いた制御用ソフトウェアの正当性確認を行う際のフローチャートである。図14のフローチャートが図11のフローチャートと異なる点は、図14において、ステップS10Aに示す様に、RAM4に展開されたアドレスヘッダ20(厳密には、アドレスヘッダ20のコピー20’)が参照されることである。この場合、ステップS12、S14に記載のアドレスヘッダも、アドレスヘッダ20のコピー20’に対応する。図14の他のステップは、図11の他のステップと同じであるので、重複する説明は省略するが、以下に簡単に説明する。
【0077】
まず初めに、データフラッシュ62に格納されるアドレスヘッダ20はRAM4に展開されている。アドレスヘッダ20中の分割単位の個数情報201をRAM4に展開されたアドレスヘッダ20コピー20’を経由して参照し(ステップS10A)、バリデーション値を計算するループの回数Nを決定する(ステップS11)。その後、各分割単位について、アドレスまたはアドレス・サイズ情報を参照し(ステップS12)、それをもとにバリデーション値の計算範囲を確定し、バリデーション値の計算を行う(ステップS13)。
【0078】
計算したバリデーション値は、データフラッシュ62に格納されるアドレスヘッダ20(厳密には、アドレスヘッダ20のコピー20’)によって指定される領域に埋め込まれている期待値EVと比較され(ステップS14、S15)、両者が一致すれば書き込まれている制御用ソフトウェアSFTが正当であると判断される(ステップS16)。なお、バリデーション値の期待値EVが格納される場所が、アドレスヘッダ20に格納されるアドレス(始点アドレス211-21N、終点アドレス311-31N)の相対値から決定できる場合は、その情報(511-51N,611-61N)をアドレスヘッダ20に含める必要はない。
【0079】
図15は、図12のアドレスヘッダ20の他の構成例を示す図である。図15に示すアドレスヘッダ20が図13に示すアドレスヘッダ20と異なる点は、図15において、アドレスヘッダ20自身のバリデーション値700を付加した点である。図15の他の構成は、図13の他の構成と同じであるので、重複する説明は省略する。
【0080】
アドレスヘッダ20中の情報に対する読み出しの前、あるいはECU1の起動時の処理、あるいはRAM4への展開処理の一環として、図15のアドレスヘッダ20自身のバリデーション値700を用い、アドレスヘッダ20の正当性確認を行うのが良い。これにより、アドレスヘッダ20の改ざんを検知することができので、アドレスヘッダ20の改ざんによる悪意のある制御用ソフトウェアの実行を回避することができる。
【0081】
制御用ソフトウェアSFTに関するバリデーション値の検証は、ECU1の起動時のほか、リプログラミング直後にも行われる。これは、意図した制御用ソフトウェアSFTが正しく書き込まれたかどうかを検証するための操作であり、リプログラミングを行うためのツール(診断器)からのリクエストをトリガーとして行われる場合や、データ通信の終了リクエストの後処理として行われる場合が考えられる。
【0082】
リプログラミング前後で分割単位11-1Nの構成、つまり分割単位11-1Nの個数やアドレス配置が変化しない場合はアドレスヘッダ20を書き換える必要はないが、分割単位11-1Nの構成が変わる場合は、その構成に合わせてアドレスヘッダ20も書き換わっていることが必要となる。バリデーション値の検証処理は、図14のように、アドレスヘッダ20の内容によって動的に行われるため、アドレスヘッダ20が適切に書き換わっていれば、リプログラミング前後で分割単位11-1Nの構成が異なっていても問題なくバリデーション値を検証することができる。
【0083】
アドレスヘッダ20の書き換え方法について以下説明する。
【0084】
実施例1においては、制御用ソフトウェアSFTのリプログラミングと同様に書き換える方法がある。この場合、アドレスヘッダ20はソフトウェアとして扱うことができる。アドレスヘッダ20はひとつのソフトウェアの分割単位として扱ってもよいし、分割単位に内包されるものとして扱ってもよい。
【0085】
実施例2では、アドレスヘッダ20をソフトウェアではなくデータとして扱っているため、リプログラミングの手続きではアドレスヘッダ20が更新されない。そのため、アドレスヘッダ20を更新する場合、データ書き込み用のサービスを用いてアドレスヘッダ20を更新する。この場合、アドレスヘッダ20にデータ識別子を付与して、当該識別子を利用することで更新するデータをアドレスヘッダ20として指定し、その識別子に続いてデータを送付することで、アドレスヘッダ20を更新する。あるいは、固定領域にアドレスヘッダ20が配置されている場合、アドレスを直接指定することで、更新するデータを指定する方法もある。データ識別子を利用する方法でも、アドレスを直接指定する方法でも、アドレスヘッダ20をデータとして扱う場合は実施例2に適用することが可能である。
【0086】
図16は、制御用ソフトウェア、アドレスヘッダ、メタデータからなるリプログラミングデータパッケージを示す図である。アドレスヘッダ20をデータとして扱う場合、制御用ソフトウェアSFTとの組として管理するのが好ましい。例えば、図16のように、制御用ソフトウェアのROMファイルと、アドレスヘッダ20のROMファイルと、メタデータ40の組をひとつのリプログラミングデータ50として管理すれば、制御用ソフトウェアSFTのメモリマップとアドレスヘッダ20の不一致によって制御用ソフトウェアSFTの正当性検証が正しく行えないという事態は回避することができる。
【0087】
メタデータ40には、例えば、制御用ソフトウェアSFTの分割単位の個数やアドレス・サイズ情報、アドレスヘッダ20のアドレス・サイズ情報やデータ識別子、リプログラミングやデータ書き込み時に使用する情報転送方式を指定するオプション情報、ROMファイルのデータ形式を示す情報などを含めることができる。ただし、制御用ソフトウェアSFTの分割単位の個数やアドレスヘッダ20のアドレス・サイズ情報はROMファイルそのものが保持することも可能であるため、その場合はメタデータ40には当該情報を記載しなくてもよい。
【0088】
さらに、アドレスヘッダ20をデータとして扱う場合、かつ制御用ソフトウェアSFTが正当であると判断された場合のジャンプ先がアドレスヘッダ20の内容をもとに決定される場合、アドレスヘッダ20のみを書き換えることでコードフラッシュ61に格納される制御用ソフトウェアSFTの分割単位11-1Nのうち、ECU1の起動時に実行される分割単位を制御することができる。それを利用すると、例えば、通常制御モードと工場検査モードとの切り替えなどが可能となる。
【0089】
例えば、コードフラッシュ61上には分割単位11、12、13、14が存在して、かつ分割単位11、12の組、および、分割単位13、14の組でそれぞれ1つの制御用ソフトウェアSFTとして成立するような構成となっていた場合を仮定する。そして、ブートローダー10は正当性検証によって制御用ソフトウェアSFTが正当であると判断した後にジャンプする先を、アドレスヘッダ20に含まれている分割単位11-14の情報のうち、最初に発見した分割単位の始点アドレスとする場合を仮定する。
【0090】
上記2つの仮定のもと、いま、アドレスヘッダ20には分割単位11、12のアドレス・サイズ情報と分割単位の個数は2個であるという情報が含まれているとする。この状態でECU1が起動すると、図11または図14のフローに従い制御用ソフトウェアSFTの正当性が検証される。書き込まれている制御用ソフトウェアSFTが正当であると判断され、かつブートローダー10が最初に発見する分割単位の始点アドレスが分割単位11のものであるとすると、ブートローダー10から分割単位11へのジャンプが発生する。
分割単位11、12からなる制御用ソフトウェアSFTが、分割単位13、14からなる制御用ソフトウェアSFTに依存しない独立なものであれば、分割単位13、14は実行されず、分割単位11、12からなる制御用ソフトウェアSFTのみが実行される状態となる。
【0091】
ここで、データ書き込みサービスによってアドレスヘッダ20が書き換えられ、アドレスヘッダ20に含まれる情報が分割単位13、14のアドレス・サイズ情報と分割単位の個数は2個であるというものに変わったとする。この状態でECU1が再起動すると、ブートローダー10は分割単位13、14の正当性検証を開始する。正当性検証により分割単位13、14それぞれが正当であると判断され、かつブートローダー10が最初に発見する分割単位の始点アドレスが分割単位13のものであるとすると、ブートローダー10から分割単位13へのジャンプが発生する。先ほどと同様に、分割単位13、14からなる制御用ソフトウェアSFTが、分割単位11、12からなる制御用ソフトウェアSFTに依存しない独立なものであれば、分割単位11、12は実行されず、分割単位13、14からなる制御用ソフトウェアSFTのみが実行される状態になる。
【0092】
以上のように、アドレスヘッダ20をデータとして扱う場合、かつ制御用ソフトウェアSFTが正当であると判断された場合のジャンプ先がアドレスヘッダ20の内容をもとに決定される場合、アドレスヘッダ20のみを書き換えることで、コードフラッシュ61に格納される制御用ソフトウェアSFTの分割単位のうち、起動時に実行される分割単位を制御することができる。これを利用すると、例えば、通常制御モードと工場検査モードとの切り替えなどが可能となる。
【0093】
以上、本発明者によってなされた発明を実施形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【0094】
1:ECU、2:マイコン、3:CPU、4:RAM、5:通信モジュール、6:フラッシュROM、10:ブートローダー、11~1N:制御ソフトウェアの分割単位、20:アドレスヘッダ、20´:RAM上に展開したアドレスヘッダ、30:データフラッシュ格納物、30´:RAM上に展開したデータフラッシュ格納物、40:メタデータ、50:リプログラミングデータパッケージ、201:分割単位数、201´:分割単位数の反転値、211~21N:分割単位1Nの始点アドレス、211´~21N´:分割単位1Nの始点アドレスの反転値、311~31N:分割単位1Nの終点アドレス、311´~31N´:分割単位1Nの終点アドレスの反転値、411~41N:分割単位1Nのサイズ、411´~41N´:分割単位1Nのサイズの反転値、511~51N:分割単位1Nのバリデーション値始点アドレス、511´~51N´:分割単位1Nのバリデーション値始点アドレスの反転値、611~61N:分割単位1Nのバリデーション値終点アドレス、611´~61N´:分割単位1Nのバリデーション値終点アドレスの反転値、700:アドレスヘッダのバリデーション値
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16