(第1の実施の形態)
以下、この発明にかかる車載制御装置の第1の実施の形態について、図1〜図9を参照して詳細に説明する。図1に、この実施の形態にかかる車載制御装置の全体構成をブロック図として示す。
同図1に示されるように、この車載制御装置100は、大きくは、各種の車載機器を分散制御する複数の電子制御装置、及びこれら各電子制御装置に関する情報(例えば制御プログラムのバージョン情報など)を総括管理するマスタ制御装置140を備えている。これら制御装置は、例えばCAN(Controller Area Network)などのバス型のネットワークシステムを構成する通信バス101によってそれぞれ電気的に接続され、該通信バス101を通じて各種データの授受を行う。
ここで、上記複数の電子制御装置は、その一部として以下に列記する電子制御装置110〜130を有してなる。
・車載エンジンの燃料噴射等の制御を行うエンジン制御装置110。
・トランスミッションの変速比の自動切替制御を行うトランスミッション制御装置120。
・車両のブレーキ制御を行うブレーキ制御装置130。
これら各電子制御装置110〜130の間では、上記通信バス101を通じて各々の制御状態や制御結果等の授受が行われる。そして通常は、こうして授受される情報や予め保持されている制御データに基づき、当該電子制御装置110〜130自身がそれぞれ内蔵する不揮発性メモリに格納されている制御プログラムを実行することにより、上述の各制御が協調して実行されるようになる。例えば、上記トランスミッション制御装置120では、トランスミッションの出力軸等に設けられている車速センサによる検出信号(2値化信号)が取り込まれると、この検出信号に基づいて車速情報を示すデータを作成してこれを上記通信バス101上に例えばシリアルデータとして送出する。そして、通信バス101上に送出されたシリアルデータが、例えば上記ブレーキ制御装置130に取り込まれ、該ブレーキ制御装置130において上述の車両のブレーキ制御に供されることとなる。
一方、上記マスタ制御装置140は、各車両のVINコード(車両識別コード)や制御プログラムのバージョン情報等を保持、管理している外部の管理センター200から書き換え用のデータを無線通信によって取得し(通信手段)、該取得したデータに基づき上記電子制御装置110〜130内のデータを書き換えるための部分でもある。
すなわち、上記電子制御装置110〜130内の制御プログラムや制御データ等のデータは、制御プログラムのバージョンアップや修正等に伴って、その内容の書き換えが必要となることがある。このような場合、同マスタ制御装置140では、それらデータ(プログラム)の書き換えに際してまず、上記データ(プログラム)の書き換えを実行するための書き換え用のデータと、書き換えの対象となる車両(装置)を指定する識別コード(ID)とを受信する。次いで、識別コード(ID)と当該車両(装置)を指定するコードとが一致するか否かを判断し、この結果、これら2つのコードが一致していることを条件に、上記受信した書き換え用のデータに基づき、上記電子制御装置110〜130内のデータを、その書き換え対象となる電子制御装置と協働して書き換える。このような制御装置100を車両に搭載するようにすることで、極めて容易に電子制御装置110〜130内の制御プログラムや制御データ等のデータを最新の状態に保つことができるようになる。
ただし前述の通り、上記書き換え用のデータを無線通信によって取得するこのような車載制御装置100では、それらデータが不正データや不正改造データであったとしても、その識別子(ID)と当該車両(装置)を指定するコードとが一致し、ひいてはこうしたデータに基づく書き換え(不正書き換え)が実行される懸念がある。そしてこの場合、法律基準を超えたNOx、HC、COの排出等、エミッションの悪化による環境への悪影響や車両性能の低下等を招きかねない。
そこで、この実施の形態では、上記制御プログラムや制御データの書き換えに際し、該車載制御装置100がまず、書き換えが要求されるデータとして同一の識別子が付された複数のデータを上記管理センター200から無線通信によって受信する。そして、それら受信した複数のデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出し(データ抽出手段)、該抽出したデータを上記書き換え用のデータとして用いて上記データ(プログラム)の書き換えを実行するようにしている。このような構成によれば、不正データや不正改造データの識別子(ID)と当該車両(装置)を指定するコードとが一致した場合であれ、
・同一の識別子が付された複数のデータが受信されたこと。
且つ、
・受信された複数のデータに、特定の法則が満たされるデータが含まれていること。
等々、といった条件がさらに満たされない限り、それらデータに基づく書き換えが実行されることは回避されるようになる。すなわち、このようにいわばデータのフィルタリングともいえる処理によって抽出されるデータのみを上記書き換え用のデータとして用いるため、それらデータの書き換えにかかるセキュリティレベルをより高く維持することができるようになる。
図2は、図1に示した車載制御装置100のうち、特にエンジン制御装置110及びマスタ制御装置140の内部構造をブロック図として示したものである。以下、同図2を併せ参照してそれら制御装置110、140の各内部構造及びそれらの電気的な動作についてさらに具体的に説明する。なおここでは、エンジン制御装置110内のデータが書き換えられる場合を想定している。
同図2に示されるように、上記マスタ制御装置140は、各種情報を演算処理する中央演算処理装置(CPU)141を中心に構成されている。この中央演算処理装置141では、無線通信部142やプログラムメモリ(ROM)143、データメモリ(RAM)144、通信装置145等との間での各種データの授受や、それらデータに基づく演算処理を行うこととなる。
ここで、上記無線通信部142は、同マスタ制御装置140と上記管理センター200との間での無線通信によるデータの授受を仲介する部分であり、具体的には、アンテナ142aや送受信器142b、変復調器142c、シフトレジスタ142d等々、を備えて構成されている。これら電子部品の各機能については、後述する。
また、上記プログラムメモリ143は、各種制御プログラムやそれら制御で用いられる制御データが格納されている読み出し専用のメモリであり、特にこの実施の形態では、各電子制御装置110〜130内のデータ(プログラム)の書き換えを実行するための処理手順などを規定する制御プログラムが併せて格納されている。
また、上記データメモリ144は、上記管理センター200や各電子制御装置110〜130から送信されるデータが格納される部分であり、例えばランダムアクセスメモリ(RAM)からなる。
また、上記通信装置145は、当該マスタ制御装置140と各電子制御装置110〜130との間での上記通信バス101を介したデータの授受を仲介する部分である。
このようなマスタ制御装置140において、上記エンジン制御装置110内のデータの書き換えに際しては、該マスタ制御装置140の中央演算処理装置141がまず、書き換えが要求されるデータとして同一の識別子(ID)が付された複数のデータを無線通信によって取得する。なお、この実施の形態では、これら複数のデータは、上記管理センター200から各々シリアルデータとしてパケット転送によって送信され、同マスタ制御装置140の無線通信部142において、まず、アンテナ142aを介して送受信器142bに取り込まれる。次いで、変復調器142cに取り込まれ、この変復調器142cを通じて適宜に復調される。そしてこの復調されたデータが、シフトレジスタ142dにさらに取り込まれ、このシフトレジスタ142dにおいてシリアル/パラレル変換されて後、上記中央演算処理装置141により取得される。
そして、こうして複数のデータが受信されると、該マスタ制御装置140の中央演算処理装置141は、上記プログラムメモリ143に格納されている制御プログラムを実行することによって、上記エンジン制御装置110内のデータ(プログラム)を書き換えるための制御の実行を開始する。具体的には、同中央演算処理装置141は、取得した各データの識別子(ID)と当該車両(装置)を指定するコード(例えばVINコード)とが一致するか否かをまずは判断する。そしてその結果、これら2つのコードが一致することを条件に、同取得した複数のデータを上記データメモリ144に格納するとともに上記通信装置145を通じてエンジン制御装置110に送信する。
一方、上記エンジン制御装置110では、通信装置112やプログラムメモリ(ROM)113、データメモリ(RAM)114、入出力インターフェース115等との間で授受される情報に基づき各種の演算処理を行う中央演算処理装置(CPU)111を中心に構成されている。
ここで、上記通信装置112は、当該エンジン制御装置110と上記マスタ制御装置140との間での上記通信バス101を介したデータの授受を仲介する部分である。
また、上記プログラムメモリ113は、エンジン制御に用いられるエンジン制御プログラムやエンジン制御データ等のデータが格納されている部分であり、例えばフラッシュメモリやEEPROMなど、電気的に書き換え可能な不揮発性メモリからなる。ただし、この実施の形態では、このプログラムメモリ113に格納されているこれらデータ(エンジン制御プログラムやエンジン制御データ等)が書き換え(リプログラミング)の対象となっている。したがって、このプログラムメモリ113には、それらデータの書き換えが実行されるときに用いられる書換制御プログラムや書換制御データ等のデータが、上記書き換えの対象となるデータとは別のメモリ領域に併せて格納されている。
また、上記データメモリ114は、電子制御装置120〜140から送信されるデータや後述する各種センサから取り込まれる信号などのデータが格納される部分であり、例えばランダムアクセスメモリ(RAM)からなる。
また、上記入出力インターフェース115は、車両の運転状況等を監視する各種センサからの信号や、車載機器を駆動するためのアクチュエータ(いずれも図示略)に対する駆動指令など、中央演算処理装置111とそれらセンサやアクチュエータとの間での情報の授受を仲介する部分である。
周知のように、このようなエンジン制御装置110では通常、中央演算処理装置111が上記センサから出力される温度情報や上記通信バス101上に送出されている車速情報などの情報を取り込み、上記プログラムメモリ113に格納されているエンジン制御プログラムを実行することにより、上述のエンジン制御を行う。
ただし、こうしたエンジン制御に用いられるデータの書き換えに際しては、同エンジン制御装置110の中央演算処理装置111がまず、上記マスタ制御装置140から送信される上記複数のデータを上記通信バス101及び通信装置112をそれぞれ介して取り込む。そして、該取得した複数のデータを上記データメモリ114に格納して後、それら複数のデータを照合し、該複数のデータに特定の法則が満たされるデータがあるか否かを判定(正否判定)する。この結果、上記複数のデータに特定の法則が満たされるデータがあれば、該データを妥当性のあるデータとして抽出するとともに、同データに基づいて上記プログラムメモリ113内の書換制御プログラムを実行する。これにより、同プログラムメモリ113内の書き換え対象となる上記データ(プログラム)が書き換えられるようになる。
なお、エンジン制御装置110内のこうした内部構造は、他の電子制御装置120、130においても概ね共通している。
次に、こうした内部構造を有するマスタ制御装置140及びエンジン制御装置110の協働の下に行われるデータの書換処理についてその具体態様を図4〜図9を参照しつつ説明する。
上述の通り、この書き換え処理に際してはまず、上記管理センター200から、上記書き換えが要求されるデータとして同一の識別子が付された複数のデータが送信される。なお、この実施の形態では、該複数のデータとして、上記プログラムメモリ113内のデータを書き換えるための書き換え用のデータ(特定のデータ)、及び該書き換え用のデータに対して補数の関係にあるミラーデータが送信される。
ここで、図3(a)〜(c)を参照して、管理センター200によるこれらデータの送信態様について説明する。図3(a)は、管理センター200と車載制御装置100との間で授受されるデータのデータ構造を示すものである。また、図3(b)は、該管理センター200において、上記書き換え用のデータ及びミラーデータが格納されているメモリのメモリ構造をブロック図として示すものである。また、図3(c)は、管理センター200による上記書き換え用のデータ及びミラーデータの送信態様をブロック図として示すものである。
まず、図3(a)に示されるように、この実施の形態において、上記管理センター200及び車載制御装置100の間では、上記書き換え用のデータ及びミラーデータは、以下に列記する各フィールドや、エラーチェックコードなどを有してなるデータフレームDFに格納され、パケット単位で送信される。ただしこの際、これら書き換え用のデータ及びミラーデータには、上記書き換えが要求されるデータとして同一の識別子(ID)が付与される。
・フレームの始まりを示すスタートオブフレーム(SOF)。
・格納データを特定するための識別子(ID)。
・実際のデータが格納されるデータフィールド(DATA)。
・フレームの終わりを示すエンドオブフレーム(EOF)。
一方、図3(b)に示されるように、上記管理センター200において、上記書き換え用のデータ及びミラーデータはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック[1]〜[a](ただし、「a」は所定の整数)として所定のメモリの第1及び第2のメモリ領域201a、201bにそれぞれ格納されている。ただし、例えば書き換え用のデータのデータブロック[1]の値「0x0123456・・・」に対する上記ミラーデータのデータブロック[1]の値「0xFEDCBA9・・・」から明らかなように、ミラーデータのデータブロック[1]〜[a]は、書き換え用のデータのデータブロック[1]〜[a]に対して各々補数の関係(ミラーデータ)となっている。
このようなメモリに対し、上記書き換え用のデータ及びミラーデータの送信に際しては、同管理センター200がまず、上記書き換え用のデータをデータブロック[1]からデータブロック[a]まで順次に読み出す。ただしこの際、同管理センター200は、上記書き換え用のデータの各データブロックを読み出す都度、該読み出されたデータブロックに対して補数の関係にあるミラーデータのデータブロックを併せて読み出す。これにより、これら2つのデータは、図3(c)に併せて示されるように、データブロックDB1〜DB2aとして上記所定のメモリから順次に取り出されるようになる。そして、同管理センター200は、こうして取り出された順序に基づき、上記書き換え用のデータ及びミラーデータのデータブロックDB1〜DB2aを上記データフレームDFに各別に格納することによって、上記複数のデータを、データブロック単位(パケット単位)にて、書き換え用のデータとミラーデータとが対となる態様で送信する。
一方、このような無線送信処理によって上記書き換え用のデータ及びミラーデータが上記管理センター200から送信されると、車載制御装置100では、上記マスタ制御装置140がこれら2つのデータを受信して同マスタ制御装置140内のデータメモリ144に格納するための受信処理を実行するようになる。
図4は、こうした受信処理についてその処理手順をフローチャートとして示したものであり、次に、同図4を参照して、該処理について説明する。なおこの受信処理は、所定期間毎に繰り返し実行される。
同図4に示されるように、この受信処理に際しては、まず、ステップS101の処理として、上記書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信するまで待機する。そして、このステップS101の処理において、データブロック単位で分割送信される上記複数のデータが受信されると、次にステップS102の処理に移行する。
このステップS102の処理では、それらデータに付されている各識別子(ID)と当該車両(装置)を指定するコード(例えばVINコード)とが一致するか否かを判断する。この結果、これら2つのコードが一致すれば、次にステップS103の処理として、例えばデータメモリ144などに記憶されている受信履歴に基づき、該受信された複数のデータが既に受信されている受信済みのデータと同一であるか否かの判断をさらに行う。そしてこの結果、これら複数のデータが未だ受信されていないデータであることを条件に、それら複数のデータを、データブロック単位で上記データメモリ144に格納する。より具体的には、ここでは、上記書き換え用のデータとミラーデータとが対となる上述の態様で格納する。
一方、上記ステップS102の処理において上記2つのコードが一致しなかった場合や、上記ステップS103の処理において上記複数のデータが受信済みのデータと同一であった場合には、同複数のデータを上記データメモリ144に格納することなく、この受信処理を一旦終了する。すなわちこの場合、上記管理センター200から新たなデータが送信されるまで再度待機することとなる(ステップS101)。
そして、こうした受信処理(図4)によって上記受信される複数のデータがデータメモリ144に格納されると、同マスタ制御装置140は次に、これら受信したデータを、上記通信バス101を介して書き換え対象となるエンジン制御装置110に送信するための送信処理を実行するようになる。
図5は、こうした送信処理についてその処理手順をフローチャートとして示したものであり、次に、同図5を参照して、該処理について説明する。なお、この送信処理は、上記データメモリ144に上記書き換え用のデータ及びミラーデータが格納されているとき、所定期間毎に繰り返し実行される。
同図5に示されるように、この送信処理に際しては、まず、ステップS111の処理として、上記エンジン制御装置110内のデータ(プログラム)が既に書き換えられたか否かを示す書換完了フラグのフラグ状態を確認する。なお後述するが、この書換完了フラグは、上記エンジン制御装置110内のデータの書き換え(リプログラミング)が完了したことに基づきセットされるフラグであり、例えば同マスタ制御装置140内のデータメモリ144に格納され、該マスタ制御装置140によって操作される。したがって、このステップS111の処理において、該書換完了フラグがリセット状態にある場合には、上記エンジン制御装置110内のデータの書き換えは未だ完了していないとして、同マスタ制御装置140は、次にステップS112及びS113の処理を行う。すなわち、まず、ステップS112の処理として、当該車両の状態が書き換えに適した状態にあるか否かを判断する。そしてこの結果、当該車両の状態が書き換えに適した状態にあることを条件に、次いでステップS113の処理として、上記通信バス101を介して上記データメモリ144に格納されている書き換え用のデータ及びミラーデータを上記エンジン制御装置110に送信する。なおここでも、上記複数のデータは、データブロック単位(パケット単位)にて、書き換え用のデータとミラーデータとが対となる上述の態様で送信される。
一方、上記ステップS111の処理において上記書換完了フラグがセットされている場合には、この送信処理を一旦終了する。なおこの際、同マスタ制御装置140は、上記データメモリ144に格納されている書き換え用のデータ及びミラーデータを消去するようにしてもよい。
他方、上記ステップS112の処理において当該車両が書き換えに適した状態にない場合も同様、この送信処理を一旦終了する。ただしこの場合、同マスタ制御装置140は、当該車両が書き換えに適した状態になるまで待機することとなる。
ちなみに、この送信処理にあって、上記ステップS112の処理は、例えば、エンジン回転数が「50rpm」未満(実質的に「0」)となった時刻から予め設定された時間が経過しているか否かの判断処理として行われる。すなわち、上記エンジン制御装置110の中央演算処理装置111では通常、車載エンジンの運転停止に伴ってその回転数が「0」となると、例えば次回の運転時まで保持すべき学習値等のデータを上記データメモリ114のバックアップ領域に保持するなどの後処理が行われる。したがって、このステップS112の処理では、エンジン回転数が「50rpm」未満(実質的に「0」)となった時刻から予め設定された時間が経過するまで待機するようにすることで、こうした後処理と並行して上記エンジン制御装置110内のデータの書き換えが実行されることを回避するようにしている。
そして、こうした送信処理によって上記複数のデータが上記エンジン制御装置110に対して送信されると、該エンジン制御装置110は上述の通り、それらデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出する。そして、該抽出したデータに基づき、同エンジン制御装置110内のデータ(プログラム)を書き換えるようになる。
ただし、上記照合の結果、上記複数のデータに特定の法則が満たされるデータが確認されない場合もある。このような場合、後述するが、上記エンジン制御装置110では、上記無線通信によって取得された複数のデータ(書き換え用のデータ及びミラーデータ)自体に適正性がないとして、当該装置140に対して同データ(書き換え用のデータ及びミラーデータ)の再送を要求するデータ再送要求を通知する。これに対し、マスタ制御装置140では、図6に示される処理手順に基づき、上記複数のデータの再送を要求するための送信処理を実行することとなる。
すなわち、いま、ステップS121の処理において、上記データ再送要求の通知があったとすると、同マスタ制御装置140は、ステップS122の処理として、上記管理センター200に対し、上記複数のデータ(書き換え用のデータ及びミラーデータ)の再送を要求する。なおこの際、前回の無線通信によって取得されたデータが上記データメモリ144に未だ格納されている場合には、該データを消去するようにすることが同データメモリ144の容量を適切に確保する上で望ましい。
一方、図7は、エンジン制御装置110によって実行される上記プログラムメモリ113内の書き換え対象となるデータ(プログラム)を書き換えるための処理についてその処理手順を示したフローチャートであり、次に、同図7を参照して、該処理について説明する。
同処理に際しては、エンジン制御装置110がまず、ステップS131の処理として、上記通信バス101を通じてデータが受信されるまで待機する。そしてこの結果、データが受信されると、同エンジン制御装置110は、次にステップS132の処理として、該受信されたデータの識別子(ID)に基づき、同受信されたデータの情報の種類を判断する。この結果、該受信されたデータが上記書き換えが要求されるデータとして同一の識別子が付された複数のデータ(書き換え用のデータ及びミラーデータ)であれば、上記データ(プログラム)を書き換えるべく、同エンジン制御装置110は次に、以下のステップS133〜S138の処理を実行する。
ここで、上記ステップS133の処理ではまず、同エンジン制御装置110は、上記通信バス101から取得されたデータ(書き換え用のデータ及びミラーデータ)を、上記データメモリ114(図2)にデータブロック単位で格納する。より具体的には、例えば図8(a)に例示されるように、書き換え用のデータ及びミラーデータを、それらデータの各対応するデータブロックが対となる上述の態様で上記データメモリ114の第1のメモリ領域114aに格納する。そして次に、ステップS134の処理として、これら2つのデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理を行う。
すなわち、このデータ抽出処理(ステップS134)ではまず、書き換え用のデータ及びミラーデータの照合として、それら2つのデータが互いに補数の関係にあるか否かを判断するいわゆるミラーチェックが行われる。ただし、この実施の形態では、図8(a)に示されるように、上記2つのデータの各対応するデータブロック毎にこうしたミラーチェック(照合)を実行する。そしてこの結果、図8(b)に示されるように、上記2つのデータの各対応するデータブロック毎に、ミラーチェックが成立した書き換え用のデータのデータブロックを妥当性のあるデータとしてそれぞれ抽出し、それらデータブロックを上記データメモリ114の第2のメモリ領域114bに格納する。すなわちこうした処理によって、該第2のメモリ領域114bにおいて、上記抽出されたデータブロック[1]〜[a](データブロックDB1、DB3、・・・、DB2a−1)を順次結合し、上記書き換え用のデータを復号するようにしている。
そして、このデータ抽出処理(ステップS134)の結果、上記第2のメモリ領域114bにおいて、データブロック[1]〜[a]からなる書き換え用のデータが復号された場合には(ステップS135)、同エンジン制御装置110は、次にステップS136及びS137の処理を行う。すなわち、まず、ステップS136の処理として、該復号された書き換え用のデータに基づいて上記プログラムメモリ113内の書き換え対象となるデータ(プログラム)の書き換えを実行する。そして、該書き換えの完了が確認されれば、次いでステップS137の処理として、上記マスタ制御装置140に対し、同エンジン制御装置110内のデータ(プログラム)の書き換えが完了した旨を示す書換完了信号を送信する。これにより、上記マスタ制御装置140では、この書換完了信号の受信に基づき、上述の書換完了フラグをセットするようになる。
一方、上記データ抽出処理(ステップS134)の結果、上記ミラーチェックが成立しないデータブロックが含まれていた場合には、上記データメモリ114の第2のメモリ領域114bにおいて、書き換えが要求されるデータ(書き換え用のデータ)が復号されない。したがってこの場合、同エンジン制御装置110は上述の通り、上記無線通信によって取得された複数のデータ(書き換え用のデータ及びミラーデータ)自体に適正性がないとして、上記マスタ制御装置140に対し、同データ(書き換え用のデータ及びミラーデータ)の再送を要求するデータ再送要求を通知することとなる(ステップS138)。これによって、上記マスタ制御装置140では、このデータ再送要求の通知に基づき、上記管理センター200に対して、上記複数のデータの再送を要求するための送信処理(図6)を実行するようになる。
図9は、上記データ抽出処理(ステップS134)についてその具体態様を示すフローチャートであり、次に同図9を参照して、該処理について説明する。
ちなみに、先の図8に示したように、上記書き換え用のデータ及びミラーデータは、予め複数のブロック[1]〜[2a]に分割されるとともに、該分割されたブロック毎にデータブロックDB1〜DB2aとして、上記データメモリ114の第1のメモリ領域114aに格納されている。
このデータ抽出処理に際しては、図9に示されるように、まず、ステップS1001の処理として、上記ブロック[1]〜[2a]の奇数ブロックをブロック「2n−1」(ただし、nは整数)、偶数ブロックをブロック[2n](ただし、nは整数)としてそれぞれ表したときの「n」に「1」を代入する。そしてこの上で、以下のステップS1002、S1003、S1011の処理を繰り返し実行する。これにより、上記書き換え用のデータ及びミラーデータの全ブロック(ブロック[1]〜[2a])に対し、それらデータの各対応するデータブロック毎に上述のミラーチェック(照合)が実行されるようになる。
・上記ブロック[2n]に対応するデータブロックDB[2n]が上記ブロック[2n−1]に対応するデータブロックDB[2n−1]のミラーデータであるか否かの判断を行う(ステップS1002)。
・全ブロック(ブロック[1]〜[2a])に対し、ミラーチェックが実行されたか否かの判断を行う(ステップS1003)。
・上記「n」に「1」を加算する(ステップS1011)。
すなわち、いま、上記ステップS1001の処理において、上記「n」に「1」が代入されたとすると、上記ステップS1002の処理では、上記データブロックDB1〜DB2aのうち、データブロックDB1及びDB2に関してのミラーチェックがまずは実行される。なおここでは、このミラーチェックは、例えば、上記データブロックDB1の値「0x0123456・・・」及び上記データブロックDB2の値「0xFEDCBA9・・・」の加算値と、該加算値として本来得られるべき値である期待値「0xFFFFFFF・・・」とが一致するか否かの判断として行われる。
そしてこの結果、これら2つの値(加算値及び期待値)が一致したと判断されると、上記データブロックDB1及びDB2に関してのミラーチェックが成立した(特定の法則が満たされた)として、次にデータブロックDB3及びDB4に関してのミラーチェックを実行するための処理を行う。すなわち、上記ステップS1011の処理において、上記「n」に「1」を加算した上で、上記ステップS1002及びS1003の処理を再度実行する。これにより、同ステップS1002の処理では、上記データブロックDB3及びDB4に関してのミラーチェックが、上述のデータブロックDB1及びDB2に関してのミラーチェックに準じたかたちで実行されるようになる。
そして、こうしたステップS1002、S1003、S1011の処理が繰り返し実行された結果、上記ステップS1003の処理において、上記全ブロック(ブロック[1]〜[2a])に対してミラーチェックが実行されたと判断されるようになると、同エンジン制御装置110は、次にステップS1004及びS1005の処理を行う。すなわち、まず、ステップS1004の処理として、上記第1のメモリ領域114aに格納されている書き換え用のデータ及びミラーデータ(データブロックDB1〜DB2a)のうち、書き換え用のデータのデータブロック[1]〜[a](データブロックDB1、DB3、・・・、DB2a−1)を妥当性のあるデータとしてそれぞれ抽出する。そして、こうして抽出されたデータブロック[1]〜[a]を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータブロック[1]〜[a]を上記第2のメモリ領域114bに格納する。そしてこの結果、上記第2のメモリ領域114bにおいて、上記書き換え用のデータが復号されれば、次いでステップS1005の処理として、上記ミラーチェックが成立したことを示すミラーフラグを例えば同データメモリ114においてセットする。これにより、上記ステップS135の処理(図7)において、該ミラーフラグに基づき、上記書き換え用のデータが復号されたか否かの判断が行われるようになる。
ただし、上記ステップS1002、S1003、S1011の処理が繰り返し実行された結果、上記ステップS1002の処理において、上記ミラーチェックが成立しない(特定の法則が満たされない)と判断されることもある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記ミラーチェックが成立しないと判断された時点で、上記ミラーフラグをセットすることなく、このデータ抽出処理を終了する。
以上説明したように、この実施の形態にかかる車載制御装置によれば、以下に記載するような優れた効果が得られるようになる。
(1)制御プログラムや制御データの書き換えに際し、書き換えが要求されるデータとして同一の識別子が付された複数のデータをまずは受信する。そして、それら受信した複数のデータを照合して特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとして妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出することとした。このため、それらデータ(プログラム)の書き換えにかかるセキュリティレベルをより高く維持することができるようになる。
(2)上記受信される複数のデータとして、書き換えが要求されるデータとしての妥当性のあるデータ(書き換え用のデータ)のほか、書き換えが要求されるデータとしての妥当性のないデータ(ミラーデータ)を採用することとした。このため、それら複数のデータから抽出されるデータ自体のセキュリティレベルがより高く維持されるようになる。
(第2の実施の形態)
次に、この発明にかかる車載制御装置についてその第2の実施の形態を示す。なお、この実施の形態の車載制御装置も、先の第1の実施の形態の車載制御装置(図1)とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置が備える各制御装置の内部構造も、先の第1の実施の形態(図2)とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信すること。
・上記受信される複数のデータを照合して特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第1の実施の形態とほぼ同様である。
ただし、この第2の実施の形態では、図10及び図11に、先の図3及び図8とそれぞれ比較して示すように、管理センター200による上記複数のデータの送信態様、及び車載制御装置100による上記データの抽出態様が異なっている。
まず、図10(a)〜(c)を参照して、管理センター200による上記複数のデータの送信態様について説明する。なお、図10(a)は、管理センター200と車載制御装置100との間で授受されるデータのデータ構造を示したものである。また、図10(b)は、同管理センター200において、上記複数のデータが格納されているメモリのメモリ構造をブロック図として示したものである。また、図10(c)は、同管理センター200による上記複数のデータの送信態様をブロック図として示したものである。
図10(a)に示されるように、この実施の形態においても、上記管理センター200及び車載制御装置100の間では、データフレームDFを用いたパケット転送によって上記複数のデータが送信される。またこれも同様、これら複数のデータには、上記書き換えが要求されるデータとして同一の識別子(ID)が付与される。
ただし、図10(b)に示されるように、この実施の形態では、同管理センター200においては、上記妥当性のないデータとして、上記データ(プログラム)の書き換えを実行するための書き換え用のデータ(妥当性のあるデータ)に対して不一致となるダミーデータが用意されている。そして、これら書き換え用のデータ及びダミーデータはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック[1]〜[b](ただし、「b」は所定の整数)として所定のメモリの第1及び第2のメモリ領域201c、201dにそれぞれ格納されている。
そして、同管理センター200は、上記車載制御装置100への送信に際しては、上記所定のメモリから2つの書き換え用のデータ及び1つのダミーデータをそれぞれ読み出し、これら3つのデータを上記複数のデータとして送信するようにしている。
具体的には、図10(c)に併せて示されるように、まず、1つのデータブロックにつき2つの書き換え用のデータのデータブロックと1つのダミーデータのデータブロックとが組となるように、上記書き換え用のデータ及びダミーデータを上記データブロック[1]からデータブロック[b]まで順次に読み出す。そして、こうして読み出されたデータブロックDB1〜DB3bの順序に従って、それらデータブロックDB1〜DB3bを上記データフレームDFに各別に格納することにより、上記3つのデータを、データブロック単位(パケット単位)で上記複数のデータとして送信する。
一方、こうして上記複数のデータが上記管理センター200から送信されると、車載制御装置100では、先の第1の実施の形態とほぼ同様、マスタ制御装置140がまず、同複数のデータを受信してデータメモリ144に格納するための受信処理(図4)を実行する。次いで、これも同様、同複数のデータを書き換えの対象となるエンジン制御装置110に送信するための送信処理(図5)を実行する。
また、こうして上記複数のデータが上記エンジン制御装置110に送信されると、該エンジン制御装置110では、上記プログラムメモリ113内の書き換え対象となるデータ(プログラム)を書き換えるための処理を実行する。なお、この実施の形態においても、同処理は、先の図7にて示したステップS131〜S138の処理手順に基づき実行される。
ただし前述の通り、この実施の形態では、当該処理(図7)にあって、該エンジン制御装置110による上記複数のデータからの上記データの抽出態様(ステップS134)が異なっている。
ちなみに、この実施の形態では、上記複数のデータは、管理センター200による上述の送信態様に対応して、図11(a)に例示されるように、ブロック[1]〜[3b]に分割されるとともに、該分割されたブロック毎にデータブロックDB1〜DB3bとして、上記データメモリ114の第1のメモリ領域114cに格納されている。より具体的には、データブロック[1]からデータブロック[b]までの各データブロックにつき2つの書き換え用のデータのデータブロックと1つのダミーデータのデータブロックとが組となる上述の態様で格納されている。
このような第1のメモリ領域114cに対し、上記データの抽出に際しては、同エンジン制御装置110がまず、上記複数のデータの照合として、これら3つのデータのうち、2つ以上のデータが一致するか否かを判断する一致チェック(照合)を実行する。ただし、この実施の形態でも、図11(a)に示されるように、上記複数のデータの各対応するデータブロック毎にこうした一致チェック(照合)を実行する。そして、図11(b)に示されるように、上記複数のデータの各対応するデータブロック毎に、一致チェックが成立した1つのデータブロックを妥当性のあるデータとしてそれぞれ抽出し、それら各データブロックを上記データメモリ114の第2のメモリ領域114dに格納する。これにより、該第2のメモリ領域114dにおいて、上記抽出されたデータブロック[1]〜[b](データブロックDB1、DB2、・・・、DB3b−2)が順次結合され、上記複数のデータから上記書き換え用のデータが復号(抽出)されるようになる。
図12は、この実施の形態にかかるこのようなデータ抽出処理(ステップS134)についてその具体態様を示すフローチャートであり、次に同図12を参照して、該処理について説明する。なおここでは、説明の便宜上、上記ブロック[1]〜[3b](図11)を、上記組とされる3つのデータブロック毎に、ブロック[3n−2]、あるいはブロック[3n−1]、あるいはブロック[3n](ただし、「n」は整数)としてそれぞれ表すこととする。
このデータ抽出処理に際しては、図12に示されるように、同エンジン制御装置110がまず、ステップS2100の処理として、上記「n」に「1」を代入する。そしてこの上で、以下のステップS2200〜S2400、及びS2700の処理を繰り返し実行する。これにより、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])を1単位としたときの該単位毎に上述の一致チェック(照合)が実行されるようになる。
・上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])の間で一致チェック(一致比較)を実行する(ステップS2200)。
・一致チェック(一致比較)の結果に基づき、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])からデータブロックの1つを抽出する(ステップS2300)。
・全ブロック(ブロック[1]〜[3b])に対し、一致チェックが実行されたか否かの判断を行う(ステップS2400)。
・上記「n」に「1」を加算する(ステップS2700)。
例えば、いま、上記ステップS2100の処理において、上記「n」に「1」が代入されたとすると、上記ステップS2200の処理では、上記ブロック[1]〜[3b]のうち、ブロック[1]〜[3]に対応するデータブロックDB1〜DB3に関しての一致比較がまずは実行される。
すなわち、このステップS2200の処理においては、まず、ステップS2201の処理として、上記データブロックDB1及びデータブロックDB2が互いに一致するか否かの判断を行う。また、このステップS2201の処理において、上記データブロックDB1及びデータブロックDB2が一致しなければ、同エンジン制御装置110は次に、ステップS2202の処理として、上記データブロックDB1及びデータブロックDB3が互いに一致するか否かの判断を行う。またさらに、このステップS2002の処理において、上記データブロックDB1及びデータブロックDB3が一致しなければ、次いで、ステップS2003の処理として、上記データブロックDB2及びデータブロックDB3が互いに一致するか否かの判断を行う。
ただし、上記ステップS2201〜S2203のいずれかの処理において、上記データブロックの一致が確認されれば、その時点で、上記組とされる3つのデータブロックのうちの2つ以上のデータブロックが一致した(一致チェックが成立した)として、次にステップS2300の処理に移行する。そして、このステップS2300の処理において、上記一致チェックが成立した(特定の法則が満たされた)2つのデータブロックの一方を抽出するようにしている。
例えば、このステップS2300の処理にあって、ステップS2301の処理では、上記ステップS2201またはS2202の処理において上記データブロックDB1が他のデータブロックと一致したとして、該データブロックDB1を上記データブロックDB1〜DB3から抽出する。一方、同ステップS2300の処理にあって、ステップS2302の処理では、上記ステップS2203の処理において上記データブロックDB2がデータブロックDB3と一致したとして、該データブロックDB2を上記データブロックDB1〜DB3から抽出する。
そして、こうしてブロック[1]〜[3]に関しての一致チェックが成立すると、同エンジン制御装置110は次に、ブロック[4]〜[6]に関しての一致チェックを実行するための処理として、上記ステップS2400及びS2700の処理を実行する。
そして上述の通り、こうしてステップS2700の処理が実行されて後は、上記一連の処理(ステップS2200〜S2400、及びS2700)が再度実行される。ただしここでは、先のステップS2700の処理において上記「n」に「1」が加算されたことにより、ブロック[4]〜[6]に対応するデータブロックDB4〜DB6に関しての一致チェックが行われる。すなわち、上記ステップS2700の処理において、上記「n」に「1」が加算される都度、上記一致チェックの対象がブロック[4]〜[6]、ブロック[7]〜[9]、・・・、ブロック[3b−2]〜[3b]に順次変更され、それらブロックの間での一致チェックが行われるようになる(ステップS2200)。
また、こうしてステップS2200〜S2400、及びS2700の処理が繰り返し実行されると、上記ステップS2400の処理において、上記全ブロック(ブロック[1]〜[3b])に対して一致チェックが実行されたと判断され、同エンジン制御装置110は、次にステップS2500及びS2600の処理を行うようになる。すなわち、まず、ステップS2500の処理として、先の図11(a)及び(b)に示したように、上記ステップS2300の処理において上記データブロック[1]〜[b]毎に上記妥当性のあるデータとして抽出されたデータ(データブロックDB1、DB4、・・・、DB3b−2)を読み出す。そして、これら読み出されたデータ(データブロックDB1、DB4、・・・、DB3b−2)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114dに格納する。そしてこの結果、上記第2のメモリ領域114dにおいて上記書き換え用のデータが復号されれば、次いでステップS2600の処理として、上記一致フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
ただし、上記ステップS2200〜S2400、及びS2700の処理が繰り返し実行された結果、上記ステップS2200(ステップS2203)の処理において、上記組とされる3つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる3つのデータブロックがいずれも一致しないと判断された時点で、上記一致フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップS135(図7)の処理では、前述の通り、該一致フラグのフラグ状態に基づき、上記書き換え用のデータが復号(抽出)されたか否かの判断を行うようになる。
以上説明したように、この第2の実施の形態にかかる車載制御装置によっても、基本的には先の第1の実施の形態の前記(1)及び(2)の効果と同等、あるいはそれに準じた効果を得ることができるようになる。
(第3の実施の形態)
次に、この発明にかかる車載制御装置についてその第3の実施の形態を示す。なお、この実施の形態の車載制御装置100も、先の第2の実施の形態の車載制御装置(図1)とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置140とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置100が備える各制御装置の内部構造も、先の第2の実施の形態(図2)とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置100がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ(書き換え用のデータ及びダミーデータ)を受信すること。
・上記受信される複数のデータ(書き換え用のデータ及びダミーデータ)を照合して特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第2の実施の形態とほぼ同様である。
ただし、この第3の実施の形態では、図13及び図14に、先の図10及び図11とそれぞれ比較して示すように、管理センター200による上記複数のデータの送信態様、及び車載制御装置100による上記データの抽出態様が異なっている。
まず、図13(a)〜(c)を参照して、管理センター200による上記複数のデータの送信態様について説明する。なお、図13(a)は、管理センター200と車載制御装置100との間で授受されるデータのデータ構造を示したものである。また、図13(b)は、同管理センター200において、上記複数のデータが格納されているメモリのメモリ構造をブロック図として示したものである。また、図13(c)は、同管理センター200による上記複数のデータの送信態様をブロック図として示したものである。
ちなみに、図13(a)に示されるように、この実施の形態においても、上記管理センター200及び車載制御装置100の間では、データフレームDFを用いたパケット転送によって上記複数のデータ(書き換え用のデータ及びダミーデータ)が送信される。またこれも同様、これら複数のデータ(書き換え用のデータ及びダミーデータ)には、上記書き換えが要求されるデータとして同一の識別子(ID)が付与される。
ただし、この実施の形態では、同管理センター200は、図13(b)に示されるように、上記データ(プログラム)の書き換えを実行するための書き換え用のデータ(妥当性のあるデータ)に対して不一致となる3種類のダミーデータ(第1〜第3のダミーデータ)を、上記妥当性のないデータとして用意している。なお、上記書き換え用のデータも含めて、これら各データはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック[1]〜[c](ただし、「c」は所定の整数)として所定のメモリの第1〜第4のメモリ領域201e〜201hにそれぞれ格納されている。
そして、図13(c)に併せて示されるように、上記複数のデータの送信に際しては、同管理センター200がまず、上記書き換え用のデータ及びダミーデータを、以下の条件(イ)〜(ハ)の下に上記データブロック[1]からデータブロック[c]まで順次に読み出す。
(イ)データブロック[1]からデータブロック[c]までの各データブロックにつき5つのデータブロックが組となるかたちで読み出されること。
且つ、
(ロ)組とされる上記5つのデータブロックには、上記第1〜第3のダミーデータのうち、少なくとも1つのダミーデータのデータブロックが含まれること。
且つ、
(ハ)組とされる上記5つのデータブロックにあって、一致数が多数を占めるデータブロックが上記書き換え用のデータのデータブロックであること。
そして、こうした条件の下で読み出されたデータブロックDB1〜DB5cの順序に基づき、それらデータブロックDB1〜DB5cを上記データフレームDFに各別に格納する。これによって、書き換え用のデータ及びダミーデータからなる複数(5つ)のデータが、データブロック単位(パケット単位)で順次送信されるようになる。
一方、車載制御装置100では、こうして送信される複数のデータを、図14(a)に例示されるように、ブロック[1]〜[5c]毎にデータブロックDB1〜DB5cとして上記エンジン制御装置110内のデータメモリ114の第1のメモリ領域114eに格納する。そして、このようなメモリ構造をもって上記複数のデータを保持する第1のメモリ領域114eに対し、同エンジン制御装置110が、ステップS134の処理(データ抽出処理)として、上記書き換えが要求されるデータとしての妥当性のあるデータを以下のように抽出するようにしている。
すなわち、この実施の形態では、図14(a)に示されるように、上記第1のメモリ領域114eに格納されている複数のデータに対し、まず、一致数が多数を占めるデータが存在するか否かを判断する多数決チェック(照合)を実行する。なお、この多数決チェックは、上記組とされる5つのデータブロック(データブロック[1]〜[c])毎に実行される。そして、この多数決チェック(照合)の結果、一致数が多数を占めるデータが存在すれば、多数決チェックが成立した(特定の法則が満たされた)として、該データを、上記書き換えが要求されるデータとしての妥当性のあるデータとして読み出す。そしてその後に、図14(b)に併せて示されるように、こうして読み出されたデータ(データブロックDB1、DB7、・・・、DB5c−4)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114fに格納するようにしている。これにより、該第2のメモリ領域114fにおいて上記書き換え用のデータが復号(抽出)されるようになる。
図15は、この実施の形態にかかるデータ抽出処理(ステップS134)についてその具体態様を示すフローチャートであり、次に同図15を参照して、該処理について説明する。なおここでは、説明の便宜上、上記ブロック[1]〜[5c](図14)を、上記組とされる5つのデータブロック毎に、ブロック[5n−4]、あるいはブロック[5n−3]、あるいはブロック[5n−2]、あるいはブロック[5n−1]、あるいはブロック[5n](ただし、「n」は整数)としてそれぞれ表すこととする。
このデータ抽出処理に際しては、図15に示されるように、同エンジン制御装置110がまず、ステップS3001の処理として、上記「n」に「1」を代入する。そしてこの上で、以下のステップS3100〜S3400、及びS3700の処理を繰り返し実行する。これにより、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])を1単位としたときの該単位毎に上記多数決チェック(照合)が実行されるようになる。
・上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間で一致比較をそれぞれ実施し、その比較結果を記憶するための一致比較処理を行う(ステップS3100)。
・上記一致比較処理の結果に基づき、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])に対して上記多数決チェックを実行するとともに、該多数決チェックが成立したことを条件に、多数決チェックが成立したか否かを示す多数決フラグをセットするための多数決チェック処理を行う(ステップS3200)。
・上記多数決フラグのフラグ状態を確認する(ステップS3300)。
・全ブロック(ブロック[1]〜[5c])に対し、多数決チェックが実行されたか否かの判断を行う(ステップS3400)。
・上記「n」に「1」を加算する(ステップS3700)。
すなわち、上記ステップS3100の処理(一致比較処理)においては、まず、図16(a)に示されるように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、ブロック[5n−4]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行う。そして、このブロック[5n−4]を基準とした一致比較が終了すれば、次いで、図16(b)に示されるように、上記ブロック[5n−3]に対応するデータブロックを基準とした一致比較を実行する。また、このブロック[5n−3]を基準とした一致比較が終了すれば、図16(c)及び(d)に示されるように、上記ブロック[5n−2]に対応するデータブロック、さらには上記ブロック[5n−1]に対応するデータブロックを基準とした一致比較を順次に実行する。
そして、同図16(a)〜(d)に示されるように、こうした一致比較処理の結果として、ブロック[5n−4]〜ブロック[5n−1]の一致数がそれぞれ、「2」、「1」、「0」、「1」であったとすると、次のステップS3200の処理では、ブロック[5n−4]の一致数が多数であると判断する。そしてこの場合、上記ブロック[5n−4]に対応するデータブロックを上記書き換えが要求されるデータとしての妥当性のあるデータとして上記組とされる5つのデータブロックから抽出するとともに、上記多数決チェックが成立したことを示す多数決フラグをセットすることとなる。
また、上記ステップS3400の処理では、上記多数決フラグがセット状態にあることを条件に(ステップS3300)、全ブロック(ブロック[1]〜[5c])に対して上記多数決チェック処理(ステップS3200)が実行されたか否かを判断する。そしてこの結果、全ブロック(ブロック[1]〜[5c])に対して上記多数決チェック処理が実行されていなければ、同エンジン制御装置110は、次にステップS3700の処理として、上記「n」に「1」を加算する。そしてこの上で、上記ステップS3100及びS3200の処理を再度実行することにより、上記組とされる5つのデータブロックの次の単位(組)を対象としての上記多数決チェックを行う。
そして、こうしたステップS3100〜S3400、及びS3700の処理が繰り返し実行された結果、上記ステップS3400の処理において、全ブロック(ブロック[1]〜[5c])に対して上記多数決チェック処理(ステップS3200)が実行されたと判断されるようになると、同エンジン制御装置110は、次にステップS3500及びS3600の処理を行う。すなわち、まず、ステップS3500の処理として、先の図14(a)及び(b)に示したように、上記ステップS3200の処理において上記データブロック[1]〜[c]毎に上記妥当性のあるデータとして抽出されたデータ(データブロックDB1、DB7、・・・、DB5c−4)を読み出す。そして、これら読み出されたデータ(データブロックDB1、DB7、・・・、DB5c−4)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114fに格納する。そしてこの結果、上記第2のメモリ領域114fにおいて上記書き換え用のデータが復号されれば、次いでステップS3600の処理として、上記多数決フラグのセット状態を確定した時点で、この制御を終了する。
ただし、上記ステップS3100〜S3400、及びS3700の処理が繰り返し実行された結果、上記ステップS3300の処理において、上記多数決フラグがリセット状態にある場合もある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記多数決フラグがリセット状態にあると確認された時点で、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップS135(図7)の処理では、前述の通り、該多数決フラグのフラグ状態に基づき、上記書き換え用のデータが復号(抽出)されたか否かの判断を行うようになる。
ここで、図17及び図18は、上記一致比較処理(ステップS3100)及び多数決チェック処理(ステップS3200)のアルゴリズムについてそれらの一例をそれぞれフローチャートとして示したものである。
まず、図17を参照して、上記一致比較処理(ステップS3100)を説明する。
上述の通り、この一致比較処理では、先の図16に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間で一致比較をそれぞれ実施するとともに、その比較結果をそれらデータブロック((ブロック[5n−4]〜[5n]))毎に記憶する。この点、この実施の形態では、図17に示されるように、適宜に操作可能な変数「j」、「k」、及び上記比較結果としての一致数を演算するための複数の一致数カウンタを以下のようにそれぞれ操作することで、このような一致比較処理を実現している。
すなわち、同図17に示されるように、この一致比較処理に際しては、上記エンジン制御装置110がまず、ステップS3101の処理として、上記複数の一致数カウンタの各カウンタ値をクリアする。次いで、ステップS3102の処理として、上記変数「j」を「0」に設定するとともに、上記変数「k」を「1」に設定する。そしてこの上で、以下のステップS3103〜S3108の処理を繰り返し実行する。これにより、先の図16(a)に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、ブロック[5n−4]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較が行われるようになる。
・上記変数「j」及び「k」を加算して、該加算値と上記組とされるデータブロックの数である基準値「5」との間での大小比較を行う(ステップS3103)。
・上記ステップS3103の処理において、上記変数「j」及び「k」の加算値が「5」未満であることを条件に、ブロック[5n−4+j]に対応するデータブロックと、ブロック[5n−4+j+k]に対応するデータブロックとの間で一致比較を行う(ステップS3104)。
・上記ステップS3104の処理において、上記2つのデータブロックが一致したことを条件に、上記ブロック[5n−4+j]に対応するデータブロックが、一致数が多数を占めるデータとして抽出されるべきデータの候補(候補データ[5n−4+j])として登録済みか否かを確認する(ステップS3105)。
・上記ステップS3105の処理において、上記抽出されるべきデータの候補として登録されていないことを条件に、上記ブロック[5n−4+j]に対応するデータブロックを候補データ[5n−4+j]として登録する(ステップS3106)。
・上記ステップS3104において、上記2つのデータが一致したことを条件に、ブロック[5n−4+j]に対応するデータブロックの一致数(比較結果)を示す一致数カウンタ[5n−4+j]をカウントアップする(ステップS3107)。
・上記変数「k」に「1」を加算する(ステップS3108)。
例えば、いま、上記ステップS3101及びS3102の処理において、上記複数の一致数カウンタ[5n−4+j]のカウンタ値がクリアされるとともに、上記変数「j」が「0」、変数「k」が「1」にそれぞれ設定されたとすると、上記ステップS3103の処理では、上記変数「j」及び「k」の加算値が基準値「5」未満であると判断される。次いで、上記ステップS3104の処理では、ブロック[5n−4]に対応するデータブロックを基準として、ブロック[5n−3]に対応するデータブロックとの間での一致比較が行われる。この結果、これら2つのデータブロックが一致したと判断されれば、次にステップS3105及びS3106の処理として、このブロック[5n−4]に対応するデータブロックが、一致数が多数を占めるデータとして抽出されるべき候補(候補データ[5n−4])として登録される。そして次に、ステップS3107の処理として、該ブロック[5n−4]に対応するデータブロックの一致数を示す一致数カウンタ[5n−4]がカウントアップされ、すなわち該一致数カウンタ[5n−4]についてカウンタ値「1」を得る。そしてその後、次のステップS3108の処理において、上記変数「k」に「1」が加算されることとなる。
ただし、上記ステップS3104の処理においては、上記2つのデータが一致しないと判断される場合もある。この場合には、上記候補データ[5n−4]として登録する処理(ステップS3106)や、上記一致数カウンタ[5n−4]をカウンタ操作する処理(ステップS3107)を実行することなく、上記ステップS3108の処理に移行する。すなわち、上記2つのデータが一致しないと判断した時点で、上記変数「k」に「1」を加算することとなる。
そして上述の通り、こうしてステップS3108の処理が実行されて後は、上記一連の処理(ステップS3103〜S3108)が再度実行される。ただしここでは、先のステップS3108の処理において上記変数「k」に「1」が加算されたことにより、ブロック[5n−4]に対応するデータブロックを基準として、上記ブロック[5n−2]との間での一致比較が行われる。すなわち、上記ステップS3108の処理において、上記変数「k」に「1」が加算される都度、上記ブロック[5n−4]の一致比較の対象がブロック[5n−3]、ブロック[5n−2]、ブロック[5n−1]、ブロック[5n]に順次変更され、それらブロックの間での一致比較が行われるようになる(ステップS3104)。そして、こうした処理を通じて操作される上記一致数カウンタ[5n−4]のカウンタ値が、最終的には、上記ブロック[5n−4]の一致比較の結果(図16(a)では、一致数「2」)として得られるようになる(ステップS3107)。
また、こうしてステップS3103〜S3108の処理が繰り返し実行されると、上記ステップS3103の処理において、上記変数「j」及び「k」の加算値が「5」となり、基準値「5」未満でないと判断され、次にステップS3111の処理に移行するようになる。すなわちこの場合、上記変数「k」が「5」となっており、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、ブロック[5n−4]を基準とした一致比較の実行が全て完了されている。したがって、次のステップS3111の処理では、先の図16(b)に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、一致比較の基準となるブロックを、上記ブロック[5n−4]からブロック[5n−3]に変更するための処理として、上記変数「j」に「1」を加算する。また併せて、該ブロック[5n−3]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行うための処理として、上記変数「k」を「1」に設定する(変数「k」をクリアする)。そして、こうして操作された変数「j」が、上記基準値「5」から「1」を減算された値「4」よりも小さいことを条件に(ステップS3112)、上記ステップS3103〜S3108の繰り返しの処理を再度実行し、これによって上記ブロック[5n−3]を基準とした一致比較が行われるようになる。
ただしここで、この実施の形態では、先の図16(b)にも示したように、ブロック[5n−3]を基準とした一致比較においては、上記ブロック[5n−4]との間での一致比較についてはこれを実行しないこととしている。すなわち、ブロック[5n−3]とブロック[5n−4]との間での一致比較は、先のブロック[5n−4]を基準とした一致比較において既に実行されており、ここでは該処理の割愛を通じて当該データ抽出処理(ステップS135)にかかる処理負荷の軽減を図るようにしている。なお、一致比較にかかるこうした処理態様は、先の図16(c)及び(d)に示したように、ブロック[5n−2]やブロック[5n−1]を基準とした一致比較においても同様に適用されている。このため、この実施の形態では、ブロック[5n]を基準とした一致比較は実行されない。
そして、上記ステップS3111及びS3112の処理を通じて、ブロック[5n−3]、[5n−2]、[5n−1]を基準とした上記一連の処理(ステップ3103〜S3108)が順次に繰り返し実行されると、最終的には、上記ステップS3112の処理において、上記変数「j」が「4」未満でないと判断されるようになる。すなわちこの場合、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間での一致比較は全て完了しており、上記変数「j」が「4」未満でないと判断された時点で、この制御が一旦終了される。
ただし上述の通り、その後に、上記ステップS3700の処理において、上記「n」に「1」が加算されれば、上記組とされる5つのデータブロックを1単位としたときの次の単位(組)を対象として当該一致比較処理(図17)が再実行されることとなる。
次に、図18を参照して、多数決チェック処理(ステップS3200)を説明する。
上述の通り、先の一致比較処理(ステップS3200)においては、図16(a)〜(d)に示されるように、上記ブロック[5n−4]〜[5n−1]に対応するデータブロックの一致数が、上記一致数カウンタ[5n−4]〜[5n−1]のカウンタ値としてそれぞれ算出される。
これに対し、この多数決チェック処理では、上述の通り、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])に一致数が多数を占めるデータが存在するか否かの判断を行うとともに、該データが存在することを条件に上記多数決フラグをセットする。この点、この実施の形態では、図18に示されるように、適宜に操作可能な上記変数「j」、及び一致数が多数を占めるブロックの一致数を示すMaxカウンタを以下のようにそれぞれ操作することにより、このような多数決チェック処理を実現している。
すなわち、同図18に示されるように、この多数決チェック処理に際しては、上記エンジン制御装置110がまず、ステップS3201の処理として、上記Maxカウンタのカウンタ値をクリアする。次いで、ステップS3202の処理として、上記変数「j」を「0」に設定するとともに、上記多数決フラグをリセットする。そしてこの上で、以下のステップS3203〜S3208、並びにS3211、S3212の処理を繰り返し実行する。これにより、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])に一致数が多数を占めるデータが存在するか否かの判断(多数決チェック処理)が行われるようになる。
・上記変数「j」と、上記基準値「5」から「1」を減算された値「4」との間での大小比較を行う(ステップS3203)。
・上記ステップS3203の処理において、上記変数「j」が「4」未満であることを条件に、ブロック[5n−4+j]に対応するデータブロックの一致数を示す上記一致数カウンタ[5n−4+j]のカウンタ値と、上記Maxカウンタのカウンタ値との間での大小比較を行う(ステップS3204)。
・上記ステップS3204の処理において、上記一致数カウンタ[5n−4+j]のカウンタ値が上記Maxカウンタよりも大きいことを条件に、これら2つのカウンタのカウンタ値が一致するように、同Maxカウンタのカウンタ値を操作(カウントアップ)する(ステップS3205)。
・同じく、上記ステップS3204の処理において、上記一致数カウンタ[5n−4+j]のカウンタ値が上記Maxカウンタよりも大きいことを条件に、ブロック[5n−4+j]の対応するデータブロック(候補データ[5n−4+j])を、一致数が多数を占める確定データ(妥当性のあるデータ)として登録する(ステップS3206)。
・同じく、上記ステップS3204の処理において、上記一致数カウンタ[5n−4+j]のカウンタ値が上記Maxカウンタよりも大きいことを条件に、上記多数決フラグをセットする(ステップS3207)。
・上記変数「j」に「1」を加算する(ステップS3208)。
・上記ステップS3203の処理において、上記変数「j」が「4」未満でないことを条件に、ブロック[5n−4+j]に対応するデータブロックの一致数を示す上記一致数カウンタ[5n−4+j]のカウンタ値と、上記Maxカウンタのカウンタ値との間での一致比較を行う(ステップS3211)。
・上記ステップS3211の処理において、上記一致数カウンタ[5n−4+j]のカウンタ値と、上記Maxカウンタのカウンタ値とが一致したことを条件に、上記多数決フラグをリセットする(ステップS3212)。
例えば、いま、上記ステップS3201及びS3202の処理において、Maxカウンタのカウンタ値がクリアされるとともに、上記変数「j」が「0」に設定されたとすると、上記ステップS3203の処理では、上記変数「j」が上記基準値「5」から「1」を減算された値「4」未満であると判断される。次いで、上記ステップS3204の処理では、上記候補データ[5n−4]の一致数を示す上記一致数カウンタ[5n−4]のカウンタ値と、上記Maxカウンタのカウンタ値との間での大小比較が行われる。この結果、上記一致数カウンタ[5n−4]のカウンタ値が上記Maxカウンタよりも大きい場合には、上記候補データ[5n−4]として登録された上記ブロック[5n−4]に対応するデータブロックが、一致数が多数を占めるデータとして判断される。したがって、次のステップS3206の処理においては、上記Maxカウンタのカウンタ値が、上記一致数カウンタ[5n−4]のカウンタ値と一致するように操作(カウントアップ)される。そして次に、ステップS3206及びS3207の処理として、候補データ[5n−4]が、一致数が多数を占める確定データ(妥当性のあるデータ)として登録されるとともに、上記多数決フラグがセットされる。そしてその後、次のステップS3208の処理において、上記変数「j」に「1」が加算されることとなる。
ただし、上記ステップS3204の処理においては、上記候補データ[5n−4]の一致数を示す上記一致数カウンタ[5n−4]のカウンタ値が、上記Maxカウンタのカウンタ値以下であると判断される場合もある。この場合には、上記Maxカウンタが、一致数が多数を占めるブロックの一致数を示すカウンタとして既に機能している。したがって、上記ステップS3205〜S3207の処理が行われることなく、後述のステップS3211やS3212が実行された時点で、上記ステップS3208の処理において、上記変数「j」に「1」が加算されることとなる。
そして上述の通り、こうしてステップS3208の処理が実行されて後は、上記一連の処理(ステップS3203〜S3208、並びにS3211及びS3212)が再度実行される。ただしここでは、先のステップS3208の処理において上記変数「j」に「1」が加算されたことにより、上記候補データ[5n−3](ブロック[5n−3]に対応するデータブロック)の一致結果を示す上記一致数カウンタ[5n−3]が上記確定データ(妥当性のあるデータ)となるか否かの判断が行われる。すなわち、上記ステップS3208の処理において、上記変数「j」に「1」が加算される都度、上記Maxカウンタのカウンタ値との比較対象が一致数カウンタ[5n−3]、一致数カウンタ[5n−2]、一致数カウンタ[5n−1]に順次変更され、それら各カウンタ値の間での大小比較が行われるようになる(ステップS3204)。そして、こうした処理を通じて上記確定データ(妥当性のあるデータ)として登録される候補データが、最終的には、上記組とされる上記5つのデータブロックから抽出されるべきデータとして得られるようになる(ステップS3207)。
また、こうしてステップS3203〜S3208、並びにステップS3211、S3212の処理が繰り返し実行されると、上記ステップS3203の処理において、上記変数「j」が「4」となり、基準値「4」未満でないと判断されるようになる。そしてこの場合、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])に一致数が多数を占めるデータが存在するか否かの判断(多数決チェック処理)は既に完了している。したがって、上記ステップS3203の処理において上記変数「j」が基準値「4」未満でないと判断された時点で、この制御は一旦終了される。
ただし上述の通り、その後に、上記ステップS3700の処理において、上記「n」に「1」が加算されれば、上記組とされる5つのデータブロックを1単位としたときの次の単位(組)を対象として当該多数決チェック処理(図18)が再実行されることとなる。
ところで、このように上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])を対象として当該多数決チェックが実行される場合、例えば、図19に例示されるように、上記ステップS3100の処理では、候補データ[5n−4]及び候補データ[5n−2]の一致数が同数で多数となる一致結果が得られる場合もある。そして、このように一致数が同数で多数となるブロック(ブロック[5n−4]及び[5n−2])が複数存在する場合、それらブロックに対応するデータブロックの1つを上記書き換えが要求されるデータとしての妥当性のあるデータとして選択的に抽出することは困難となる。そこで、この実施の形態では、上記ステップS3204の処理において、例えば一致数カウンタ[5n−2]のカウンタ値が上記Maxカウンタのカウンタ値以下であると判断されたとき、次いでステップS3211の処理として、これら2つのカウンタ値が一致するか否かの判断を行う。そしてこの結果、これら2つのカウンタ値が一致したときには、次の上記ステップS3212の処理において、このデータ抽出処理(ステップS134)を保留とすべく、上記多数決フラグをリセットするようにしている。これにより、このステップS3200の多数決チェック処理において、該多数決フラグのリセット状態が維持されれば、上記ステップS3300の処理において、上記多数決フラグがリセット状態にあることに基づき、このデータ抽出処理(ステップS134)が強制的に終了されるようになる。
以上説明したように、この第3の実施の形態にかかる車載制御装置によっても、基本的には先の第1の実施の形態の前記(1)及び(2)の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
(3)一致数が同数で多数となるブロックが複数存在すると判断された時点で、上記データ抽出処理(ステップS134)を強制的に終了するようにしたため、上記データの書き換えにかかるセキュリティレベルをより好適に維持することができるようになる。
なお、この発明にかかる車載制御装置は、組とされる3つのデータブロックを1単位として上記多数決チェックを行うとした場合、上記第3の実施の形態として示した処理態様に限らず、これを適宜に変形した、例えば以下に例示する態様にて実施することもできる。
(変形例)
上記実施の形態では、図15〜図18にそれぞれ示した処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理(ステップS134)を実行することとした。ただし、組とされる3つのデータブロックを1単位として上記多数決チェックを行うとする場合には、これに代えて、例えば図21に示される処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理(ステップS134)を実行するようにすることもできる。
ちなみにここでは、上記管理センター200が先の図10(a)〜(c)に準じたかたちで上記複数のデータを送信する。これに対し、車載制御装置100では、こうして送信される複数のデータを、図20(a)に例示されるように、ブロック[1]〜[3d]毎にデータブロックDB1〜DB3dとして上記エンジン制御装置110内のデータメモリ114の第1のメモリ領域114gに格納する。そして、こうしたデータブロックDB1〜DB3dに対し、図21に示される処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理(ステップS134)を実行することによって、図20(b)に併せて示されるように、上記複数のデータから上記書き換え用のデータを復号(抽出)するようにしている。
以下、図21を参照して、この変形例にかかるデータ抽出処理(ステップS134)について説明する。なおここでは、説明の便宜上、上記ブロック[1]〜[3d](図20)を、上記組とされる3つのデータブロックに対応して、ブロック[3n−2]、あるいはブロック[3n−1]、あるいはブロック[3n]として(ただし、「n」は整数)としてそれぞれ表すこととする。
このデータ抽出処理に際しては、図21に示されるように、同エンジン制御装置110がまず、ステップS4100の処理として、上記「n」に「1」を代入する。そしてこの上で、以下のステップS4200〜S4400、及びS4700の処理を繰り返し実行する。これにより、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])を1単位としたときの該単位毎に上記多数決チェック(照合)が実行されるようになる。
・上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])の間で多数決チェック(一致比較)を実行する(ステップS4200)。
・上記多数決チェック(一致比較)の結果に基づき、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])から一致数が多数を占めるデータブロックの1つを抽出する(ステップS4300)。
・全ブロック(ブロック[1]〜[3d])に対し、多数決チェックが実行されたか否かの判断を行う(ステップS4400)。
・上記「n」に「1」を加算する(ステップS4700)。
例えば、いま、上記ステップS4100の処理において、上記「n」に「1」が代入されたとすると、上記ステップS4200の処理では、上記ブロック[1]〜[3d]のうち、ブロック[1]〜[3]に対応するデータブロックDB1〜DB3に関しての多数決チェックがまずは実行される。
すなわち、このステップS4200の処理においては、まず、ステップS4201の処理として、上記データブロックDB1及びデータブロックDB2が互いに一致するか否かの判断を行う。また、このステップS4201の処理において、上記データブロックDB1及びデータブロックDB2が一致しなければ、同エンジン制御装置110は次に、ステップS4202の処理として、上記データブロックDB1及びデータブロックDB3が互いに一致するか否かの判断を行う。またさらに、このステップS4002の処理において、上記データブロックDB1及びデータブロックDB3が一致しなければ、次いで、ステップS4003の処理として、上記データブロックDB2及びデータブロックDB3が互いに一致するか否かの判断を行う。
ただしここでは、上記組とされる3つのデータブロックを1単位としたときの該単位毎に上記多数決チェック(照合)を実行することとしている。このため、上記ステップS4200の処理では、データブロックの一致が確認された時点で、それら2つのデータブロックを、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])のうちの一致数が多数を占めるデータの組として判断することも可能である。そこでこの変形例では、上記ステップS4201〜S4203のいずれかの処理において、上記データブロックの一致が確認された時点で、上記組とされる3つのデータブロックに一致数が多数を占めるデータが存在するとして、次にステップS4300の処理に移行する。そして、このステップS4300の処理において、上記多数決チェック(一致比較)の結果に基づき、上記一致が確認された2つのデータブロックの一方を抽出するようにしている。
例えば、このステップS4300の処理にあって、ステップS4301の処理では、上記ステップS4201またはS4202の処理において上記データブロックDB1が他のデータブロックと一致したとして、該データブロックDB1を上記データブロックDB1〜DB3から抽出する。一方、同ステップS4300の処理にあって、ステップS4302の処理では、上記ステップS4203の処理において上記データブロックDB2がデータブロックDB3と一致したとして、該データブロックDB2を上記データブロックDB1〜DB3から抽出する。
そして、こうしてブロック[1]〜[3]に関しての多数決チェックが成立すると、同エンジン制御装置110は次に、ブロック[4]〜[6]に関しての多数決チェックを実行するための処理として、上記ステップS4400及びS4700の処理を実行する。
そして上述の通り、こうしてステップS4700の処理が実行されて後は、上記一連の処理(ステップS4200〜S4400、及びS4700)が再度実行される。ただしここでは、先のステップS4700の処理において上記「n」に「1」が加算されたことにより、ブロック[4]〜[6]に対応するデータブロックDB4〜DB6に関しての多数決チェックが行われる。すなわち、上記ステップS4700の処理において、上記「n」に「1」が加算される都度、上記一致チェックの対象がブロック[4]〜[6]、ブロック[7]〜[9]、・・・、ブロック[3d−2]〜[3d]に順次変更され、それらブロックの間での多数決チェックが行われるようになる(ステップS4200)。
また、こうしてステップS4200〜S4400、及びS4700の処理が繰り返し実行されると、上記ステップS4400の処理において、上記全ブロック(ブロック[1]〜[3d])に対して多数決チェックが実行されたと判断され、同エンジン制御装置110は、次にステップS4500及びS4600の処理を行うようになる。すなわち、まず、ステップS4500の処理として、先の図20(a)及び(b)に示したように、上記ステップS4300の処理において上記データブロック[1]〜[d]毎に上記妥当性のあるデータとして抽出されたデータ(データブロックDB1、DB4、・・・、DB3d−2)を読み出す。そして、これら読み出されたデータ(データブロックDB1、DB4、・・・、DB3d−2)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114hに格納する。そしてこの結果、上記第2のメモリ領域114hにおいて上記書き換え用のデータが復号されれば、次いでステップS4600の処理として、上記多数決フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
ただし、上記ステップS4200〜S4400、及びS4700の処理が繰り返し実行された結果、上記ステップS4200(ステップS4203)の処理において、上記組とされる3つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる3つのデータブロックがいずれも一致しないと判断された時点で、上記多数決フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップS135(図7)の処理では、前述の通り、該多数決フラグのフラグ状態に基づき、上記書き換え用のデータが復号(抽出)されたか否かの判断を行うようになる。
したがって、このような変形例によっても、上記(1)〜(2)と同様の効果が得られるようになる。また新たに、
(4)データブロックの一致が確認された時点で、それら2つのデータブロックを、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])のうちの一致数が多数を占めるデータの組として判断するようにしたため、多数決チェックにかかる処理負荷の軽減が図られるようになる。
といった効果が得られることともなる。
(第4の実施の形態)
次に、この発明にかかる車載制御装置についてその第4の実施の形態を示す。なお、この実施の形態の車載制御装置100も、先の第3の実施の形態の車載制御装置(図1)とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置140とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置100が備える各制御装置の内部構造も、先の第3の実施の形態(図2)とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置100がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ(書き換え用のデータ及びダミーデータ)を受信すること。
・上記受信される複数のデータ(書き換え用のデータ及びダミーデータ)を照合して特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第3の実施の形態とほぼ同様である。
また、上記管理センター200による送信処理も、先の第3の実施の形態(図13(a)〜(c)参照)に準じたかたちで行われる。ただし、この実施の形態では、上記複数のデータの送信に際しては、同管理センター200がまず、上記書き換え用のデータ及びダミーデータを、以下の条件(ニ)〜(ヘ)の下に上記データブロック[1]からデータブロック[e]まで順次に読み出す。
(ニ)データブロック[1]からデータブロック[e]までの各データブロックにつき5つのデータブロックが組となるかたちで読み出されること。
且つ、
(ホ)組とされる上記5つのデータブロックには、第1〜第3のダミーデータのうち、少なくとも1つのダミーデータのデータブロックが含まれること。
且つ、
(ヘ)組とされる上記5つのデータブロックにあって、過半数を占めるデータブロックが上記書き換え用のデータのデータブロックであること。
そして、こうした条件の下で読み出されたデータブロックDB1〜DB5eの順序に基づき、それらデータブロックDB1〜DB5eを上記データフレームDF(図13(a))に各別に格納する。これによって、書き換え用のデータ及びダミーデータからなる複数(5つ)のデータが、データブロック単位(パケット単位)で順次送信されるようになる。
一方、車載制御装置100では、こうして送信される複数のデータを、図22(a)に例示されるように、ブロック[1]〜[5e]毎にデータブロックDB1〜DB5eとして上記エンジン制御装置110内のデータメモリ114の第1のメモリ領域114iに格納する。そして、このようなメモリ構造をもって上記複数のデータを保持する第1のメモリ領域114iに対し、この実施の形態にかかるエンジン制御装置110は、ステップS134の処理(データ抽出処理)として、上記書き換えが要求されるデータとしての妥当性のあるデータを以下のように抽出するようにしている。
すなわち、この実施の形態では、図22(a)に示されるように、上記第1のメモリ領域114iに格納されている複数のデータに対し、まず、それらデータのうちの過半数が一致するか否かを判断する過半数チェック(照合)を実行する。なお、この過半数チェックは、上記組とされる5つのデータブロック(データブロック[1]〜[e])毎に実行される。そして、この過半数チェック(照合)の結果、上記組とされる5つのデータブロックのうちの過半数が一致したと判断されれば、それらデータの一つを、上記書き換えが要求されるデータとしての妥当性のあるデータとして読み出す。そしてその後に、図22(b)に併せて示されるように、こうして読み出されたデータ(データブロックDB1、DB7、・・・、DB5e−4)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114jに格納するようにしている。これにより、該第2のメモリ領域114jにおいて上記書き換え用のデータが復号(抽出)されるようになる。
図23は、この実施の形態にかかるデータ抽出処理(ステップS134)についてその具体態様を示すフローチャートであり、次に同図23を参照して、同処理について説明する。なおここでは、説明の便宜上、上記ブロック[1]〜[5e](図22)を、上記組とされる5つのデータブロック毎に、ブロック[5n−4]、あるいはブロック[5n−3]、あるいはブロック[5n−2]、あるいはブロック[5n−1]、あるいはブロック[5n](ただし、「n」は整数)としてそれぞれ表すこととする。
このデータ抽出処理に際しては、同図23に示されるように、エンジン制御装置110がまず、ステップS5001の処理として、上記「n」に「1」を代入する。そしてこの上で、以下のステップS5100〜S5300、及びS5600の処理を繰り返し実行する。これにより、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])を1単位としたときの該単位毎に上記過半数チェック(照合)が実行されるようになる。
・上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])に対して上記過半数チェックを実行するとともに、該過半数チェックが成立したことを条件に、過半数チェックが成立したか否かを示す過半数フラグをセットするための過半数チェック処理を行う(ステップS5100)。
・上記過半数フラグのフラグ状態を確認する(ステップS5200)。
・全ブロック(ブロック[1]〜[5e])に対し、過半数チェックが実行されたか否かの判断を行う(ステップS5300)。
・上記「n」に「1」を加算する(ステップS5600)。
例えば、上記ステップS5100の処理(過半数チェック処理)では、先の第3の実施の形態におけるステップS3100の処理とほぼ同様、先の図16(a)〜(d)に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間での一致比較をまずは行う。すなわち、まず、図16(a)に示されるように、ブロック[5n−4]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行う。そして、このブロック[5n−4]を基準とした一致比較が終了すれば、次いで、図16(b)に示されるように、上記ブロック[5n−3]に対応するデータブロックを基準とした一致比較を実行する。また、このブロック[5n−3]を基準とした一致比較が終了すれば、図16(c)及び(d)に示されるように、上記ブロック[5n−2]に対応するデータブロック、さらには上記ブロック[5n−1]に対応するデータブロックを基準とした一致比較を順次に実行する。
ただし、この実施の形態では、例えば、図16(a)に例示されるように、ブロック[5n−4]を基準にした一致比較が実行された結果、該ブロック[5n−4]の一致数が「2」となった時点で、上記組とされる5つのデータブロックのうちの過半数が一致したと判断する。そしてこの場合、上記ブロック[5n−4]に対応するデータブロックを上記書き換えが要求されるデータとしての妥当性のあるデータとして上記組とされる5つのデータブロックから抽出するとともに、上記過半数チェックが成立したことを示す過半数フラグをセットすることとなる。
また、上記ステップS5300の処理では、上記過半数フラグがセット状態にあることを条件に(ステップS5200)、全ブロック(ブロック[1]〜[5e])に対して上記過半数チェック処理(ステップS5100)が実行されたか否かを判断する。そしてこの結果、全ブロック(ブロック[1]〜[5e])に対して上記過半数チェック処理が実行されていなければ、同エンジン制御装置110は、次にステップS5600の処理として、上記「n」に「1」を加算する。そしてこの上で、上記ステップS5100の処理を再度実行することにより、上記組とされる5つのデータブロックの次の単位(組)を対象としての上記過半数チェックを行う。
そして、こうしたステップS5100〜S5300、及びS5600の処理が繰り返し実行された結果、上記ステップS5300の処理において、全ブロック(ブロック[1]〜[5e])に対して上記過半数チェック処理(ステップS5100)が実行されたと判断されるようになると、同エンジン制御装置110は、次にステップS5400及びS5500の処理を行う。すなわち、まず、ステップS5400の処理として、先の図22(a)及び(b)に示したように、上記ステップS5100の処理において上記データブロック[1]〜[e]毎に上記妥当性のあるデータとして抽出されたデータ(データブロックDB1、DB7、・・・、DB5c−4)を読み出す。そして、これら読み出されたデータ(データブロックDB1、DB7、・・・、DB5c−4)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114jに格納する。そしてこの結果、上記第2のメモリ領域114jにおいて上記書き換え用のデータが復号されれば、次いでステップS5500の処理として、上記過半数フラグのセット状態を確定した時点で、この制御を終了する。
ただし、上記ステップS5100〜S5300、及びS5600の処理が繰り返し実行された結果、上記ステップS5200の処理において、上記過半数フラグがリセット状態にある場合もある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記過半数フラグがリセット状態にあると確認された時点で、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップS135(図7)の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、上記書き換え用のデータが復号(抽出)されたか否かの判断を行うようになる。
図24は、上記過半数チェック処理(ステップS5100)のアルゴリズムについてその一例をフローチャートとして示しており、次に、同図24を参照して、同処理を説明する。
上述の通り、この過半数チェック処理では、まず、先の図16に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間で一致比較をそれぞれ実施する。ただしここでは、上記組とされる5つのデータブロックの過半数が一致した時点で、上記一致比較を中止するとともに当該過半数チェックが成立したことを示す過半数フラグをセットする。この点、この実施の形態では、図24に示されるように、適宜に操作可能な変数「j」、「k」、及び上記比較結果としての一致数を演算するための複数の一致数カウンタを以下のようにそれぞれ操作することで、このような過半数チェック処理を実現している。
すなわち、同図24に示されるように、この過半数チェック処理に際しては、上記エンジン制御装置110がまず、ステップS5101の処理として、上記複数の一致数カウンタの各カウンタ値をクリアする。次いで、ステップS5102及びS5103の処理として、上記過半数フラグをリセットするとともに、上記変数「j」、「k」を「0」、「1」にそれぞれ設定する。そしてこの上で、以下のステップS5104〜S5108の処理を繰り返し実行する。これにより、先の図16(a)に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、ブロック[5n−4]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較が行われるようになる。
・上記変数「j」及び「k」を加算して、該加算値と上記組とされるデータブロックの数である基準値「5」との間での大小比較を行う(ステップS5104)。
・上記ステップS5104の処理において、上記変数「j」及び「k」の加算値が「5」未満であることを条件に、ブロック[5n−4+j]に対応するデータブロックと、ブロック[5n−4+j+k]に対応するデータブロックとの間で一致比較を行う(ステップS5105)。
・上記ステップS5105の処理において、上記2つのデータブロックが一致したことを条件に、上記ブロック[5n−4+j]に対応するデータブロックの一致数(比較結果)を示す一致数カウンタ[5n−4+j]をカウントアップする(ステップS5106)。
・上記ステップS5106の処理においてカウントアップされた一致数カウンタ[5n−4+j]のカウンタ値が過半数チェック成立を示しているか否かの判断を行う(ステップS5107)。
・上記変数「k」に「1」を加算する(ステップS5108)。
例えば、いま、上記ステップS5101〜S5103の処理において、上記複数の一致数カウンタ[5n−4+j]のカウンタ値がクリアされ、上記過半数フラグがリセットされ、上記変数「j」、「k」に「0」、「1」がそれぞれ設定されたとすると、上記ステップS5104の処理では、上記変数「j」及び「k」の加算値が基準値「5」未満であると判断される。次いで、上記ステップS5105の処理では、ブロック[5n−4]に対応するデータブロックを基準として、ブロック[5n−3]に対応するデータブロックとの間での一致比較が行われる。そしてこの結果、これら2つのデータブロックが一致したと判断されれば、次にステップS5106の処理として、該ブロック[5n−4]に対応するデータブロックの一致数を示す一致数カウンタ[5n−4]がカウントアップされ、すなわち該一致数カウンタ[5n−4]についてカウンタ値「1」を得る。そして次に、ステップS5107の処理では、この一致数カウンタ[5n−4]のカウンタ値「1」が当該過半数チェックの成立を示しているか否かの判断が行われる。具体的には、先の図16(a)に示したように、ブロック[5n−4]の一致数が「2」、すなわち一致数カウンタ[5n−4]のカウンタ値が「2」以上であることに基づき、上記組とされる5つのデータブロックのうちの過半数が一致したと判断される。したがってここでは、当該過半数チェックが成立していないと判断され、次にステップS5108の処理として、上記変数「k」に「1」が加算されることとなる。
ただし、上記ステップS5105の処理においては、上記2つのデータが一致しないと判断される場合もある。この場合には、一致数カウンタ[5n−4]をカウントアップする、等々といった上述の処理(ステップS5106及びS5107)を実行することなく、上記ステップS5108の処理に移行する。すなわちこの場合、上記2つのデータが一致しないと判断した時点で、上記変数「k」に「1」を加算することとなる。
そして上述の通り、こうしてステップS5108の処理が実行されて後は、上記一連の処理(ステップS5104〜S5108)が再度実行される。ただしここでは、先のステップS5108の処理において上記変数「k」に「1」が加算されたことにより、ブロック[5n−4]に対応するデータブロックを基準として、上記ブロック[5n−2]との間での一致比較が行われる。すなわち、上記ステップS5108の処理において、上記変数「k」に「1」が加算される都度、上記ブロック[5n−4]の一致比較の対象がブロック[5n−3]、ブロック[5n−2]、ブロック[5n−1]、ブロック[5n]に順次変更され、それらブロックの間での一致比較が行われるようになる(ステップS5104)。そして、こうした処理を通じて操作される上記一致数カウンタ[5n−4]のカウンタ値が、最終的には、上記ブロック[5n−4]の一致比較の結果(図16(a)では、一致数「2」)として得られるようになる(ステップS5106)。
また、こうしてステップS5104〜S5108の処理が繰り返し実行されると、上記ステップS5104の処理において、上記変数「j」及び「k」の加算値が「5」となり、基準値「5」未満でないと判断され、次にステップS5111の処理に移行するようになる。すなわちこの場合、上記変数「k」が「5」となっており、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、ブロック[5n−4]を基準とした一致比較の実行が全て完了されている。したがって、次のステップS5111の処理では、先の図16(b)に示したように、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])のうち、一致比較の基準となるブロックを、上記ブロック[5n−4]からブロック[5n−3]に変更するための処理として、上記変数「j」に「1」を加算する。また併せて、該ブロック[5n−3]に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行うための処理として、上記変数「k」を「1」に設定する(変数「k」をクリアする)。そして、こうして操作された変数「j」が、上記基準値「5」から「1」を減算された値「4」よりも小さいことを条件に(ステップS5112)、上記ステップS5104〜S5108の繰り返しの処理を再度実行し、これによって上記ブロック[5n−3]を基準とした一致比較が行われるようになる。なお、この実施の形態においても、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の各2つのブロック間での一致比較についてはそれぞれ1度ずつ実行するようにしている。
そして、上記ステップS5111及びS5112の処理を通じて、ブロック[5n−3]、[5n−2]、[5n−1]を基準とした上記一連の処理(ステップ5104〜S5108)が順次に繰り返し実行されると、最終的には、上記ステップS5112の処理において、上記変数「j」が「4」未満でないと判断されるようになる。すなわちこの場合、上記組とされる5つのデータブロック(ブロック[5n−4]〜[5n])の間での一致比較は全て完了しており、上記変数「j」が「4」未満でないと判断された時点で、この制御を一旦終了する。
ただし上述の通り、この実施の形態では、上記ステップS5104〜S5108や、ステップS5111及びS5112、等々の処理が繰り返し実行された結果、上記ステップS5107の処理において、上記一致数カウンタのカウンタ値が「2」となり、上記組とされる5つのデータブロックのうちの過半数が一致したと判断されると、同エンジン制御装置110は、まず、それら一連の処理を中止する。そして、ステップS5121の処理として、同ブロック[5n−4]に対応するデータブロックを、上記組とされる5つのデータブロックのうちの過半数を占める確定データ(妥当性のあるデータ)として登録する。そして次に、ステップS5122の処理として、当該過半数チェックが成立したことを示す過半数フラグをセットした時点で、この制御を一旦終了する。こうした処理を通じて、この後のステップS5200(図23)の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、当該データ抽出処理(ステップS134)を終了すべきか否かの判断を行うようになる。
そしてこれも上述の通り、その後、上記ステップS5600の処理において、上記「n」に「1」が加算されれば、上記組とされる5つのデータブロックを1単位としたときの次の単位(組)を対象として当該過半数チェック処理(図24)が再実行されることとなる。
以上説明したように、この第4の実施の形態にかかる車載制御装置によっても、基本的には先の第1の実施の形態の前記(1)及び(2)の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
(5)上記組とされる5つのデータブロックのうちの過半数が一致したと判断された時点で、該データを上記組とされる5つのデータブロックのうちの過半数を占める確定データ(妥当性のあるデータ)として登録するようにしたため、過半数チェックにかかる処理負荷の軽減が図られるようになる。
なお、この発明にかかる車載制御装置は、組とされる3つのデータブロックを1単位として上記過半数チェックを行うとした場合、上記第4の実施の形態として示した処理態様に限らず、これを適宜に変形した、例えば以下に例示する態様にて実施することもできる。
(変形例)
上記実施の形態では、図23及び図24にそれぞれ示した処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理(ステップS134)を実行することとした。ただし、組とされる3つのデータブロックを1単位として上記過半数チェックを行うとする場合には、これに代えて、例えば図26に示される処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理(ステップS134)を実行するようにすることもできる。
ちなみにここでは、上記管理センター200が先の図10(a)〜(c)に準じたかたちで上記複数のデータを送信する。これに対し、車載制御装置100では、こうして送信される複数のデータを、図25(a)に例示されるように、ブロック[1]〜[3f]毎にデータブロックDB1〜DB3fとして上記エンジン制御装置110内のデータメモリ114の第1のメモリ領域114kに格納する。そして、こうしたデータブロックDB1〜DB3fに対し、図26に示される処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理(ステップS134)を実行することによって、図25(b)に併せて示されるように、上記複数のデータから上記書き換え用のデータを復号(抽出)するようにしている。
以下、図26を参照して、この変形例にかかるデータ抽出処理(ステップS134)について説明する。なおここでは、説明の便宜上、上記ブロック[1]〜[3f](図25)を、上記組とされる3つのデータブロック毎に、ブロック[3n−2]、あるいはブロック[3n−1]、あるいはブロック[3n]として(ただし、「n」は整数)としてそれぞれ表すこととする。
このデータ抽出処理に際しては、図26に示されるように、同エンジン制御装置110がまず、ステップS6100の処理として、上記「n」に「1」を代入する。そしてこの上で、以下のステップS6200〜S6400、及びS6700の処理を繰り返し実行する。これにより、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])を1単位としたときの該単位毎に上記過半数チェック(照合)が実行されるようになる。
・上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])の間で過半数チェック(一致比較)を実行する(ステップS6200)。
・上記過半数チェック(一致比較)の結果に基づき、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])のうちの過半数を占めるデータブロックの組から1つのデータブロックを抽出する(ステップS6300)。
・全ブロック(ブロック[1]〜[3f])に対し、過半数チェックが実行されたか否かの判断を行う(ステップS6400)。
・上記「n」に「1」を加算する(ステップS6700)。
例えば、いま、上記ステップS6100の処理において、上記「n」に「1」が代入されたとすると、上記ステップS6200の処理では、上記ブロック[1]〜[3f]のうち、ブロック[1]〜[3]に対応するデータブロックDB1〜DB3に関しての一致比較がまずは実行される。
すなわち、このステップS6200の処理においては、まず、ステップS6201の処理として、上記データブロックDB1及びデータブロックDB2が互いに一致するか否かの判断を行う。また、このステップS6201の処理において、上記データブロックDB1及びデータブロックDB2が一致しなければ、同エンジン制御装置110は次に、ステップS6202の処理として、上記データブロックDB1及びデータブロックDB3が互いに一致するか否かの判断を行う。またさらに、このステップS6202の処理において、上記データブロックDB1及びデータブロックDB3が一致しなければ、次いで、ステップS6203の処理として、上記データブロックDB2及びデータブロックDB3が互いに一致するか否かの判断を行う。
ただしここでは、上記組とされる3つのデータブロックを1単位としたときの該単位毎に上記過半数チェック(照合)を実行することとしている。このため、上記ステップS6200の処理では、データブロックの一致が確認された時点で、それら2つのデータブロックを、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])のうちの過半数を占めるデータの組として判断することも可能である。そこでこの変形例では、上記ステップS6201〜S6203のいずれかの処理において、上記データブロックの一致が確認された時点で、上記組とされる3つのデータブロックのうちの過半数が一致した(特定の法則が満たされた)として、次にステップS6300の処理に移行する。そして、このステップS6300の処理において、上記過半数チェック(一致比較)の結果に基づき、上記一致が確認された2つのデータブロックの一方を抽出するようにしている。
例えば、このステップS6300の処理にあって、ステップS6301の処理では、上記ステップS6201またはS6202の処理において上記データブロックDB1が他のデータブロックと一致したとして、該データブロックDB1を上記データブロックDB1〜DB3から抽出する。一方、同ステップS6300の処理にあって、ステップS6302の処理では、上記ステップS6203の処理において上記データブロックDB2がデータブロックDB3と一致したとして、該データブロックDB2を上記データブロックDB1〜DB3から抽出する。
そして、こうしてブロック[1]〜[3]に関しての過半数チェックが成立すると、同エンジン制御装置110は次に、ブロック[4]〜[6]に関しての過半数チェックを実行するための処理として、上記ステップS6400及びS6700の処理を実行する。
そして上述の通り、こうしてステップS6700の処理が実行されて後は、上記一連の処理(ステップS6200〜S6400、及びS6700)が再度実行される。ただしここでは、先のステップS6700の処理において上記「n」に「1」が加算されたことにより、ブロック[4]〜[6]に対応するデータブロックDB4〜DB6に関しての過半数チェックが行われる。すなわち、上記ステップS6700の処理において、上記「n」に「1」が加算される都度、上記一致チェックの対象がブロック[4]〜[6]、ブロック[7]〜[9]、・・・、ブロック[3f−2]〜[3f]に順次変更され、それらブロックの間での過半数チェックが行われるようになる(ステップS6200)。
また、こうしてステップS6200〜S6400、及びS6700の処理が繰り返し実行されると、上記ステップS6400の処理において、上記全ブロック(ブロック[1]〜[3f])に対して過半数チェックが実行されたと判断され、同エンジン制御装置110は、次にステップS6500及びS6600の処理を行うようになる。すなわち、まず、ステップS6500の処理として、先の図25(a)及び(b)に示したように、上記ステップS6300の処理において上記データブロック[1]〜[f]毎に上記妥当性のあるデータとして抽出されたデータ(データブロックDB1、DB4、・・・、DB3f−2)を読み出す。そして、これら読み出されたデータ(データブロックDB1、DB4、・・・、DB3f−2)を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第2のメモリ領域114mに格納する。そしてこの結果、上記第2のメモリ領域114mにおいて上記書き換え用のデータが復号されれば、次いでステップS6600の処理として、上記過半数フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
ただし、上記ステップS6200〜S6400、及びS6700の処理が繰り返し実行された結果、上記ステップS6200(ステップS6203)の処理において、上記組とされる3つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター200から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる3つのデータブロックがいずれも一致しないと判断された時点で、上記過半数フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップS135(図7)の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、上記書き換え用のデータが復号(抽出)されたか否かの判断を行うようになる。
したがって、このような変形例によっても、上記(1)〜(2)と同様の効果が得られるようになる。また新たに、
(6)データブロックの一致が確認された時点で、それら2つのデータブロックを、上記組とされる3つのデータブロック(ブロック[3n−2]〜[3n])のうちの過半数を占めるデータの組として判断するようにしたため、過半数チェックにかかる処理負荷のさらなる軽減が図られるようになる。
(第5の実施の形態)
次に、この発明にかかる車載制御装置についてその第5の実施の形態を示す。なお、この実施の形態の車載制御装置100も、先の第4の実施の形態の車載制御装置(図1)とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置140とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置100が備える各制御装置の内部構造も、先の第4の実施の形態(図2)とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置100がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ(書き換え用のデータ及びダミーデータ)を受信すること。
・上記受信される複数のデータ(書き換え用のデータ及びダミーデータ)を照合して特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第4の実施の形態とほぼ同様である。
ただし、この実施の形態では、車載制御装置100が、上記第1〜第4の実施の形態において各々詳述した以下の4つの判定手段を備えている。
(a)上記複数のデータが特定のデータと該特定のデータの補数の関係にあるミラーデータとが対となる態様で受信されるときに、受信した2つのデータが互いに補数の関係にあることをもって上記特定の法則の成立を判断するミラー判定手段(第1の実施の形態)。
(b)上記複数のデータが1つのデータにつき3つ以上のデータとして受信されるときに、受信した3つ以上のデータのうちの2つ以上が一致することをもって上記特定の法則の成立を判断する一致判定手段(第2の実施の形態)。
(c)上記複数のデータが1つのデータにつき3つ以上のデータとして受信されるときに、受信した3つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって上記特定の法則の成立を判断する多数決判定手段(第3の実施の形態)。
(d)上記複数のデータが1つのデータにつき3つ以上のデータとして受信されるときに、受信した3つ以上のデータのうちの過半数が一致することをもって上記特定の法則の成立を判断する過半数判定手段(第4の実施の形態)。
そして、同車載制御装置100は、書き換え用のデータの抽出に際し、上記管理センター200との協働のもとに、該管理センター200から送信指示される情報に基づいてそれら判定手段の選択を動的に決定するようにしている。このような構成では、上記4つの法則の1つが仮に一般に認知されてしまったとしても、上記データの書き換えにかかるセキュリティレベルを維持することができるようになる。しかも、上記管理センター200との協働のもとに、それら判定手段の選択を動的に決定するため、上記エンジン制御装置110によるデータの抽出態様が解読され難くなり、上述の不正データや不正改造データに基づくデータの書き換え(不正書き換え)が実行されることがより確実に回避されるようになる。
図27は、上記管理センター200との協働のもとに上記エンジン制御装置110において行われる上記判定手段の選択処理についてその処理手順を示すフローチャートであり、次に、同図27を参照して、該処理について説明する。なお、この実施の形態においても、管理センター200とエンジン制御装置110との間での通信は、マスタ制御装置140によって仲介される。またこの処理は、所定期間毎に繰り返し実行される。
いま、上記管理センター200による上記複数のデータの送信態様が決定されたとすると、該管理センター200は、上記エンジン制御装置110によって選択されるべき判定手段を示す選択情報を送信する。
一方、エンジン制御装置110では、上記判定手段の選択に際してはまず、ステップS141の処理として、上記通信バス101を通じてデータが受信されるまで待機する。そして、データが受信されると、同エンジン制御装置110は、次にステップS142の処理として、該受信されたデータの識別子(ID)に基づいてそのデータの情報の種類を判断する。そしてこの結果、同受信されたデータが、上記4つの判定手段のいずれを採用すべきかを示す選択情報であれば、次にステップS143の処理として、該受信した選択情報に基づき、上記4つの判定手段のうちの一つを選択する。これにより、上記データ抽出処理(ステップS134)では、該選択された判定手段を採用して上記受信される複数のデータを照合するとともに、該照合の結果、特定の法則が満たされる1つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータとして抽出するようになる。
なお、上記選択情報としては、例えば、上記4つの判定手段(a)〜(d)に各々対応して関連付けられた4つの識別子(ID)情報(「0x01」、「0x02」、「0x03」、「0x04」)を採用することができる。そしてこの場合、上記ステップS143の処理では、上記受信される選択情報を用いて、例えば図28に例示されるテーブルTを参照することに基づき上記4つの判定手段のうちの一つを選択するようにすることが、当該処理を実現する上で実用上望ましい。
以上説明したように、この第5の実施の形態にかかる車載制御装置によっても、基本的には先の第1の実施の形態の前記(1)及び(2)の効果、及び第3の実施の形態の前記(3)の効果、及び第4の実施の形態の前記(5)の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
(7)上記4つの法則の1つが仮に一般に認知されてしまったとしても、上記データの書き換えにかかるセキュリティレベルを維持することができるようになる。しかも、上記エンジン制御装置110によるデータの抽出態様が解読され難くなり、上述の不正データや不正改造データに基づくデータの書き換え(不正書き換え)が実行されることがより確実に回避されるようになる。
また、この第5の実施の形態にかかる車載制御装置では、上記多数決判定手段として、第3の実施の形態の変形例において詳述した判定手段を採用すれば、前記(4)の効果を得ることができるようにもなる。また、これと同様、上記過半数判定手段として、第4の実施の形態の変形例において詳述した判定手段を採用すれば、前記(6)の効果をさらに得ることができるようにもなる。
(他の実施の形態)
なお、上記各実施の形態は、以下のように変更して実施することもできる。
・受信される複数のデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理については、上記複数のデータをメモリに格納することなく、それらの受信と並行して実行するようにしてもよい。
・第5の実施の形態では、管理センター200が上記選択情報を送信するようにしたが、例えばマスタ制御装置140など、他の装置が同選択情報を送信するようにしてもよい。ただしこの場合、上記管理センター200では、該選択情報を受信して、同選択情報に基づき上記複数のデータの送信態様を決定することとなる。
・第5の実施の形態では、上記複数のデータが受信された日時の情報を上記選択情報として用いて上記判定手段を選択するようにしてもよい。例えば、上記複数のデータが受信された日にちが上記判定手段の種類の数「4」で除算されたときの余りを以下のように上記4つの判定手段にそれぞれ予め対応させておくことで、上記複数のデータが受信された日時の情報を上記選択情報として用いることができるようになる。
(a)余り「0」(例えば、4日、8日など)…ミラー判定手段(第1の実施の形態)。
(b)余り「1」(例えば、1日、5日など)…一致判定手段(第2の実施の形態)。
(c)余り「2」(例えば、2日、6日など)…多数決判定手段(第3の実施の形態)。
(d)余り「3」(例えば、3日、7日など)…過半数判定手段(第4の実施の形態)。
ただしこの場合、上記管理センター200も同様に、上記複数のデータを送信する日時の情報に基づいてその送信態様を決定することとなる。
・第5の実施の形態において、車載制御装置100は、ミラー判定手段、及び一致判定手段、及び多数決判定手段、及び過半数判定手段の少なくとも2つを備え、それらの判定手段を動的に選択するものであればよい。
・上記各実施の形態では、上記受信される複数のデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理を、上記エンジン制御装置110が行うようにした。ただし、このデータ抽出処理については、マスタ制御装置140による上記エンジン制御装置110へのデータの送信処理に先立って、該マスタ制御装置140が行うようにしてもよい。以下、マスタ制御装置140によって行われるデータ抽出処理の処理手順について説明する。なおこの処理も、例えば所定期間毎に繰り返し実行される。例えば、図29に示されるように、マスタ制御装置140はまず、ステップS201の処理として、上記複数のデータを受信するまで待機する。そして、このステップS201の処理において、データブロック単位で分割送信される上記複数のデータが受信されると、次にステップS202の処理に移行する。このステップS202の処理では、それらデータに付されている各識別子(ID)と当該車両(装置)を指定するコード(例えばVINコード)とが一致するか否かを判断する。この結果、これら2つのコードが一致すれば、次にステップS203の処理として、例えばデータメモリ144などに記憶されている受信履歴に基づき、該受信された複数のデータが既に受信されている受信済みのデータと同一であるか否かの判断をさらに行う。そしてこの結果、これら複数のデータが未だ受信されていないデータであると判断されれば、同データを上記データメモリ144に格納して後に(ステップS204)、上記データ抽出処理を実行する(ステップS205)。そして、ステップS206の処理として、上記データ抽出処理によって書き換え用のデータが抽出されたと判断された時点で、この制御を終了する。なお、上記データ抽出処理(ステップS205)において、書き換え用のデータが抽出されなかった場合には(ステップ206)、上記無線通信によって取得された複数のデータ自体に適正性がないとして、上記管理センター200に対し、同データの再送を要求するデータ再送要求が通知されることとなる(ステップS207)。これにより、同マスタ制御装置140が、こうして抽出されたデータのみを上記エンジン制御装置110に送信するようにすることで、該エンジン制御装置110では、例えば図30に示される処理手順に基づき、上記プログラムメモリ113内のデータ(プログラム)の書き換えを行うことができるようになる。すなわちこの場合、同図30に示されるように、エンジン制御装置110ではまず、ステップS231の処理として、データを受信するまで待機する。そして、このステップS231の処理において、データが受信されると、次にステップS232の処理として、それらデータに付されている識別子に基づき該データが書き換え用のデータであるか否かの判断を行う。この結果、該データが書き換え用のデータであると判断されれば、同データを上記データメモリ114に格納して後に(ステップS233)、同受信したデータに基づき上記プログラムメモリ113内のデータ(プログラム)の書き換えを実行する。そして、該書き換えの完了が確認されれば、次いでステップS235の処理として、上記マスタ制御装置140に対し、同エンジン制御装置110内のデータ(プログラム)の書き換えが完了した旨を示す書換完了信号を送信することとなる。
・マスタ制御装置140は上述の通り、複数のデータの受信と並行して、上記データ抽出処理を行うようにすることもできる。ただしこの場合、同マスタ制御装置140は、例えば図31(a)及び(b)に示されるように、上記組とされる複数のデータブロックから特定の法則が満たされるデータブロックが抽出された時点で、残りのデータブロックの受信をキャンセルし、次の単位(組)を対象とした照合を実行するようにすることが望ましい。以下、マスタ制御装置140によって行われるこのようなデータ抽出処理の処理手順について説明する。なお、この処理態様は、先の第2〜第5の実施の形態のように、上記管理センター200から3つ以上のデータが送信される場合であれば、適用することができる。ただしここでは、説明の便宜上、一致判定手段(第2の実施の形態)によるデータ抽出処理に適用した場合のその処理態様について、図31及び図32を参照して説明することとする。ちなみに、管理センター200では、図31(a)に示されるように、上記複数のデータを、データブロック[1]からデータブロック[g]までの各データブロックにつき5つのデータブロックが組となるように、ブロック[1]〜[5g]として分割送信する。ただしこの際、上記組とされる5つのデータブロックのうち最初に送信されるデータブロックが書き換え用のデータのデータブロックとなるように送信する。一方、マスタ制御装置140では、まず、図32に示されるように、ステップS6001の処理として、データブロックが受信されるまで待機する。そして、いま、このステップS6001の処理において、ブロック[1]に対応するデータブロックが受信されたとすると、次にステップS6002の処理に移行する。このステップS6002の処理では、データブロックに付されている識別子(ID)と当該車両(装置)を指定するコード(例えばVINコード)とが一致するか否かを判断する。そしてこの結果、これら2つのコードが一致すれば、次にステップS6003の処理として、受信回数「k」が上記組とされるデータブロックの数「5」未満であるか否かの判断を行う。なお、上記ブロック[1]に対応するデータブロックを受信した時点ではこの受信回数「k」は「0」となっており、「5」未満であると判断される。このため、同マスタ制御装置140は次に、ブロック[1]〜[5]に対応する5つのデータブロックの間での一致比較を実行するための処理として、以下のステップS6004〜S6008の処理を実行することとなる。
・一致チェックが成立したときにセットされる一致フラグのフラグ状態を確認する(ステップS6004)。
・上記ステップS6004の処理において、一致フラグがリセット状態にあることを条件に、データメモリにデータブロックが既に格納されているか否かの判断を行う(ステップS6005)。
・上記ステップS6005の処理において、データメモリ144にデータブロックが格納されていないことを条件に、受信したデータブロックをデータメモリ144に格納する(ステップS6006)。
・上記ステップS6005の処理において、データメモリ144にデータブロックが格納されていないことを条件に、データメモリ144にデータブロックが格納されていることを示す受信格納フラグをセットする(ステップS6007)。
・受信回数「k」に「1」を加算する(ステップS6008)。
すなわちこうした処理を通じて、上記データメモリ114にブロック[1]に対応するデータブロックを格納するとともに(ステップS6006)、上記受信格納フラグをセットし(ステップS6007)、受信回数「k」を「1」に操作することとなる(ステップS6008)。これにより、ブロック[2]に対応するデータブロックが新たに受信された場合には(ステップS6001)、上記ステップS6005の処理において、上記受信格納フラグがセット状態にあることに基づき、上記データメモリ144にデータブロックが既に格納されていると判断されるようになる。そしてこの場合、同マスタ制御装置140は、データメモリ144に格納されているデータブロックと新たに受信されたデータブロックとの間での一致比較を行うための処理として、以下のステップS6011及びS6012の処理を実行することとなる。
・受信されたデータブロックとデータメモリに格納されているデータブロックとが一致するか否かの判断を行う(ステップS6011)。
・上記ステップS6011の処理において、上記2つのデータブロックが一致したことを条件に、上記一致フラグをセットする(ステップS6012)。
すなわちここでは、図31(a)に示されるように、ブロック[1]に対応するデータブロックと、新たに受信されたブロック[2]に対応するデータブロックとが一致すると判断され(ステップS6011)、上記一致フラグをセットすることとなる(ステップS6012)。そしてこの後に、ステップS6008の処理として、上記受信回数「k」に「1」をさらに加算し、該受信回数「k」を「2」とする。これにより、これ以降のブロック(ブロック[3]〜[5])に対応する各データブロックが新たに受信された場合には(ステップS6001)、上記ステップS6004の処理において、上記一致フラグのセット状態が確認され、これらデータブロックの受信がキャンセルされるようになる。すなわちこの場合、同マスタ制御装置140は、上記一致フラグのセット状態を確認した時点で、上記受信回数「k」に「1」をさらに加算することとなる(ステップS6008)。他方、ブロック[1]〜[5]に対応する5つのデータブロックの間での一致比較が完了し、ブロック[6]に対応するデータブロックが受信された場合には(ステップS6001)、上記ステップS6003の処理において、上記受信回数「k」が「5」未満でないと判断される。そしてこの場合、上記組とされる5つのデータブロックの次の単位(組)を対象としての上記一致チェックを行うための処理として、以下のステップS6021〜S6025、S6031の処理を実行することとなる。
・受信回数「k」をクリアする(ステップS6021)。
・一致フラグのフラグ状態を確認する(ステップS6022)。
・上記ステップS6022の処理において、上記一致フラグがセット状態にあることを条件に、一致フラグをリセットする(ステップS6023)。
・上記ステップS6022の処理において、上記一致フラグがセット状態にあることを条件に、受信したデータブロックをデータメモリ144に格納する(ステップS6024)。
・上記ステップS6022の処理において、上記一致フラグがセット状態にあることを条件に、受信回数「k」を「1」に設定する(ステップS6025)。
・上記ステップS6022の処理において、上記一致フラグがリセット状態にあることを条件に、管理センター200にデータ再送要求を通知する(ステップS6031)。
すなわちこうした処理を通じて、上記一致フラグをリセットするとともに(ステップS6022)、ブロック[6]に対応するデータブロックをデータメモリ144に格納し(ステップS6024)、受信回数「k」を「1」に設定することとなる(ステップS6025)。これにより、ブロック[7]に対応するデータブロックが新たに受信された場合には(ステップS6001)、上記ステップS6003の処理において、受信回数「k」が「5」未満であると判断されるようになる。そして、上記ステップS6004〜S6008、S6011、S6012の処理が再度繰り返し実行されることにより、ブロック[6]〜[10]に対応するデータブロックの間での一致チェックが図31に示される態様で実行されるようになる。このように、ステップS6001〜S6008、S6011、S6012、S6021〜S6025の処理が繰り返し実行されることで、一致判定手段(第2の実施の形態)によるデータ抽出処理として、図31に示される処理態様が実現されるようになる。
・第2〜5の実施の形態において、一致チェック、多数決チェック、過半数チェックのチェック対象となるデータは、3つ以上あればいくつでもよい。
・第2及び第5の実施の形態において、受信した3つ以上のデータのうちの3つ以上が一致することをもって一致チェックが成立したと判断するようにしてもよい。
・多数決チェックの結果、一致数が同数で多数を占めるデータの組が複数組存在するとき、多数決チェックの不成立を判断して上記データの抽出を保留するための処理手順については、第3の実施の形態において説明した処理手順に限られず、任意である。
・多数決チェックや過半数チェックにおいて、他のブロックを基準とした一致比較において既に一致比較が実行されている特定の2つのブロック間での一致比較を再度実行するようにしてもよい。
・管理センター200は、ダミーデータについては、メモリに予め保持することなく、上記複数のデータの送信に際して作成するようにしてもよい。
・2つのデータブロックを一致比較する場合、任意のデータ長(例えば2バイト)を単位として行うようにしてもよい。
・データブロック単位でデータを分割送信しなくてもよい。
・受信される複数のデータの照合をデータブロック単位で行わなくてもよい。
・マスタ制御装置140による書き換えの対象は、電子制御装置110〜130に限られず、任意である。また、電子制御装置110〜130を書き換えの対象としなくてもよい。
・上記各実施の形態の車載制御装置を、2つの電子制御装置の間で、専用の通信線を通じて通信するものに適用することも可能である。
・受信される複数のデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理については、ミラーチェック、一致チェック、多数決チェック、過半数チェックの他の手段を用いて行うようにしてもよい。要は、上記受信される複数のデータを照合して特定の法則が満たされる1つのデータを妥当性のあるデータとして抽出することのできる手段であればよい。また、それら手段を実現するためのアルゴリズムも任意である。
・管理センター200は、上記複数のデータの全てを、書き換えが要求されるデータとしての妥当性のあるデータとして送信するようにしてもよい。
100…車載制御装置、101…通信バス、110…エンジン制御装置、111…中央演算処理装置、112…通信装置、113…プログラムメモリ、114…データメモリ、114a、114c、114e、114g、114i、114k…第1のメモリ領域、114b、114d、114f、114h、114j、114m…第2のメモリ領域、115…入出力インターフェース、120…トランスミッション制御装置、130…ブレーキ制御装置、140…マスタ制御装置、141…中央演算処理装置、142…無線通信部、142a…アンテナ、142b…送受信器、142c…変復調器、142d…シフトレジスタ、143…プログラムメモリ、144…データメモリ、145…通信装置、200…管理センター、201a、201c…第1のメモリ領域、201b、201d…第2のメモリ領域、DF…データフレーム、T…テーブル。