(57)【特許請求の範囲】
【請求項１】
不揮発性メモリの書き換え可能な領域に格納されている車載機器を制御するための制御プログラム及び制御データの少なくとも一方が無線通信によって外部の送信手段から送信される書き換え用のデータに基づき書き換え可能に構成された車載制御装置のデータ書き換え方法であって、
前記送信手段から送信される書き換え用のデータには、同送信手段に予め用意された妥当性のあるデータと該妥当性のあるデータに対して不一致となる妥当性のないデータとの複数のデータが含まれ、それら妥当性のあるデータと妥当性のないデータとの複数のデータが同一の識別子が付されて送信手段から送信されるとともに、前記車載制御装置は、受信したそれら複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するデータ抽出手段を備え、この抽出される妥当性のあるデータを用いて前記書き換えを行う
ことを特徴とする車載制御装置のデータ書き換え方法。
【請求項２】
前記複数のデータは、前記妥当性のあるデータと前記妥当性のないデータとしてこの妥当性のあるデータの補数の関係にあるミラーデータとが対となる態様で構成されるものであり、前記データ抽出手段は、受信したそれら２つのデータが互いに補数の関係にあることをもって前記特定の法則の成立を判断して妥当性のあるデータを抽出する
請求項１に記載の車載制御装置のデータ書き換え方法。
【請求項３】
前記複数のデータは、２つ以上の妥当性のあるデータと、１つの妥当性のないデータとから構成されるものであり、前記データ抽出手段は、受信した３つ以上のデータのうちの２つ以上が一致することをもって前記特定の法則の成立を判断し、それら一致したデータの１つを前記妥当性のあるデータとして抽出する
請求項１に記載の車載制御装置のデータ書き換え方法。
【請求項４】
前記データ抽出手段は、前記複数のデータの受信中、前記２つ以上のデータの一致が確認された時点で、当該複数のデータに関する以降の受信をキャンセルする
請求項３に記載の車載制御装置のデータ書き換え方法。
【請求項５】
前記複数のデータは、２つ以上の妥当性のあるデータと、該妥当性のあるデータの数よりも少ない数で１つ以上の妥当性のないデータとから構成されるものであり、前記データ抽出手段は、受信した３つ以上のデータのうちの過半数が一致することをもって前記特定の法則の成立を判断し、それら一致した過半数のデータの１つを前記妥当性のあるデータとして抽出する
請求項１に記載の車載制御装置のデータ書き換え方法。
【請求項６】
前記複数のデータは、２つ以上の妥当性のあるデータと、該妥当性のあるデータの数よりも少ない数で１つ以上の妥当性のないデータとから構成されるものであり、前記データ抽出手段は、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって前記特定の法則の成立を判断し、それら一致数が多数を占めるデータの１つを前記妥当性のあるデータとして抽出する
請求項１に記載の車載制御装置のデータ書き換え方法。
【請求項７】
前記データ抽出手段は、前記一致数が同数で多数を占めるデータの組が複数組存在するとき、前記特定の法則の不成立を判断して前記データの抽出を保留する
請求項６に記載の車載制御装置のデータ書き換え方法。
【請求項８】
前記データ抽出手段は、前記特定の法則としての複数の法則にそれぞれ対応して該当する法則の成立の有無を判定する複数の判定手段を備え、前記複数のデータの送信元となる前記送信手段との協働のもとに、それら判定手段の選択を動的に決定する
請求項１に記載の車載制御装置のデータ書き換え方法。
【請求項９】
前記データ抽出手段は、前記送信手段から送信指示される情報に基づいて前記判定手段を選択する
請求項８に記載の車載制御装置のデータ書き換え方法。
【請求項１０】
前記データ抽出手段は、当該車載制御装置から指示される情報に基づいて前記判定手段を選択する
請求項８に記載の車載制御装置のデータ書き換え方法。
【請求項１１】
前記データ抽出手段は、前記複数のデータが受信された日時の情報に基づいて前記判定手段を選択する
請求項８に記載の車載制御装置のデータ書き換え方法。
【請求項１２】
前記判定手段は、
ａ．前記複数のデータが特定のデータと該特定のデータの補数の関係にあるミラーデータとが対となる態様で受信されるときに、受信した２つのデータが互いに補数の関係にあることをもって前記特定の法則の成立を判断するミラー判定手段、及び
ｂ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの２つ以上が一致することをもって前記特定の法則の成立を判断する一致判定手段、及び
ｃ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの過半数が一致することをもって前記特定の法則の成立を判断する過半数判定手段、及び
ｄ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって前記特定の法則の成立を判断する多数決判定手段、
の少なくとも１つを含む
請求項８〜１１のいずれか一項に記載の車載制御装置のデータ書き換え方法。
【請求項１３】
前記データ抽出手段は、前記判定手段として前記一致判定手段が選択されているとき、データの受信中、前記２つ以上のデータの一致が確認された時点で当該データに関する以降の受信をキャンセルする
請求項１２に記載の車載制御装置のデータ書き換え方法。
【請求項１４】
前記データ抽出手段は、前記判定手段として前記多数決判定手段が選択されているとき、前記一致数が同数で多数を占めるデータの組が複数組存在することに基づき前記特定の法則の不成立を判断して前記データの抽出を保留する
請求項１２に記載の車載制御装置のデータ書き換え方法。
【請求項１５】
前記複数のデータは予め複数のブロックに分割されるとともに、該分割されたブロック毎にデータブロックとして前記特定の法則に対応して予め取り決められた態様で各々パケット転送されるものであり、前記データ抽出手段は、前記複数のデータの照合をそれら分割されたデータブロック単位で行い、妥当性のあるデータブロックとして抽出したブロックを順次結合して前記書き換えが要求されるデータを復号する
請求項１〜１４のいずれか一項に記載の車載制御装置のデータ書き換え方法。
【請求項１６】
不揮発性メモリの書き換え可能な領域に格納されている車載機器を制御するための制御プログラム及び制御データの少なくとも一方が無線通信によって外部から得られる書き換え用のデータに基づき書き換え可能に構成された車載制御装置において、
前記書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信し、それら受信した複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するデータ抽出手段を備えるとともに、当該データ抽出手段は、前記特定の法則としての複数の法則にそれぞれ対応して該当する法則の成立の有無を判定する複数の判定手段を備え、前記データの送信元との協働のもとに、それら判定手段の選択を動的に決定する
ことを特徴とする車載制御装置。
【請求項１７】
前記データ抽出手段は、前記データの送信元から送信指示される情報に基づいて前記判定手段を選択する
請求項１６に記載の車載制御装置。
【請求項１８】
前記データ抽出手段は、当該車載制御装置から指示される情報に基づいて前記判定手段を選択する
請求項１６に記載の車載制御装置。
【請求項１９】
前記データ抽出手段は、データが受信された日時の情報に基づいて前記判定手段を選択する
請求項１６に記載の車載制御装置。
【請求項２０】
前記判定手段は、
ａ．前記複数のデータが特定のデータと該特定のデータの補数の関係にあるミラーデータとが対となる態様で受信されるときに、受信した２つのデータが互いに補数の関係にあることをもって前記特定の法則の成立を判断するミラー判定手段、及び
ｂ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの２つ以上が一致することをもって前記特定の法則の成立を判断する一致判定手段、及び
ｃ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、
受信した３つ以上のデータのうちの過半数が一致することをもって前記特定の法則の成立を判断する過半数判定手段、及び
ｄ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって前記特定の法則の成立を判断する多数決判定手段、
の少なくとも１つを含む
請求項１６〜１９のいずれか一項に記載の車載制御装置。
【請求項２１】
前記データ抽出手段は、前記判定手段として前記一致判定手段が選択されているとき、データの受信中、前記２つ以上のデータの一致が確認された時点で当該データに関する以降の受信をキャンセルする
請求項２０に記載の車載制御装置。
【請求項２２】
前記データ抽出手段は、前記判定手段として前記多数決判定手段が選択されているとき、前記一致数が同数で多数を占めるデータの組が複数組存在することに基づき前記特定の法則の不成立を判断して前記データの抽出を保留する
請求項２０に記載の車載制御装置。
【請求項２３】
前記受信されるデータは予め複数のブロックに分割されるとともに、該分割されたブロック毎にデータブロックとして前記特定の法則に対応して予め取り決められた態様で各々パケット転送されるものであり、前記データ抽出手段は、前記複数のデータの照合をそれら分割されたデータブロック単位で行い、妥当性のあるデータブロックとして抽出したブロックを順次結合して前記書き換えが要求されるデータを復号する
請求項１６〜２２のいずれか一項に記載の車載制御装置。
【請求項２４】
当該車載制御装置が分散制御を実行する複数の電子制御装置からなるとともに、車内ＬＡＮを構成する通信バスによって相互に接続されており、それら電子制御装置の１つに、前記データの送信元との間での通信を行う通信手段、及び前記データ抽出手段が設けられてなる
請求項１６〜２３のいずれか一項に記載の車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、車載機器を制御するための制御プログラムや制御データ等のデータを書き換える（リプログラミング）車載制御装置のデータ書き換え方法、および当該データ書き換えが可能に構成された車載制御装置に関し、特に無線通信によって外部から得られる書き換え用のデータに基づくデータ書き換え方法、および同書き換えが実行される車載制御装置に関する。
【背景技術】
【０００２】
周知のように、車両には通常、例えば車載エンジンの燃料噴射等の制御を行うエンジン制御装置や車両のブレーキ制御を行うブレーキ制御装置などの電子制御装置が搭載されている。これらの電子制御装置はいずれも、各々制御対象となる車載機器の制御に用いられる制御プログラムや制御データが予め格納された不揮発性のメモリを備えており、車両の運転状況を示す各種センサからの信号や上記制御データを用いて上記制御プログラムを実行することにより、それぞれ所望とされる制御を行う。
【０００３】
ところで、上記不揮発性メモリに格納されている制御プログラムや制御データは、制御プログラムのバージョンアップや修正等に伴って、その内容の書き換えが必要となることがある。ただしこの際、例えば書き換えの対象となる電子制御装置（車両）を回収するなど、それら各電子制御装置と適宜の外部ツールとの間で有線による通信によって上記制御プログラムや制御データ等のデータを書き換えを行おうとすれば、膨大な手間がかかる。
【０００４】
そこで従来は、こうした手間の軽減を図るべく、例えば特許文献１に記載の制御装置を車両に搭載することが提案されている。すなわち、この車載制御装置では、各車両のＶＩＮコード（車両識別コード）や制御プログラムのバージョン情報等を保持、管理している外部の管理センターから上記データ（プログラム）の書き換えを要求する旨の案内を受けるとまず、その書き換えに用いるデータを同管理センターから無線通信によって取得する。そして、該取得した書き換え用のデータに基づき、上記不揮発性メモリの書き換え可能な領域に格納されている制御プログラムや制御データを書き換える。このような制御装置を車両に搭載するようにすることで、極めて容易に電子制御装置内の制御プログラムや制御データを最新の状態に保つことができるようになる。
【０００５】
ただし、不正データや不正改造データなども含めて無条件にこれらデータ（プラグラム）の書き換えを可能としたのでは、法律基準を超えたＮＯｘ、ＨＣ、ＣＯの排出等、エミッションの悪化による環境への悪影響や車両性能の低下等を招きかねない。そこで、上記文献１に記載の車載制御装置ではさらに、このような不正データや不正改造データに基づく書き換え（不正書き換え）が実行されることを回避すべく、上記データの書き換えに際し、書き換えの対象となる車両（装置）を指定する識別コード（ＩＤ）を上記書き換え用のデータと併せて受信する。そして、該識別コード（ＩＤ）と当該車両（装置）を指定するコードとが一致するか否かを判断し、この結果、これら２つのコードが一致していることを条件に、上記書き換え用のデータに基づく書き換えを実行するようにしている。
【特許文献１】特開平５−１９５８５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、上記従来の車載制御装置によれば、受信される識別コード（ＩＤ）と当該車両（装置）を指定するコードとが一致していることを条件に、上記書き換え用のデータに基づく書き換えが実行されるため、それらデータの書き換えにかかるセキュリティレベルは確かに維持される。
【０００７】
しかしながら、上記書き換え用のデータが無線通信によって取得されるこのような装置では、該書き換え用のデータが有線通信によって取得される以前の装置よりも外部からのデータの送信頻度（アクセス頻度）が高く、それらデータが上述した不正データや不正改造データであったとしても、その識別コード（ＩＤ）と当該車両（装置）を指定するコードとが一致しかねない。そして、これが偶然にしろ、或いは故意にしろ、このようにこれら２つのコードが一致すれば、不正データや不正改造データに基づく書き換え（不正書き換え）が実行されてしまうこととなる。すなわちこの場合、法律基準を超えたＮＯｘ、ＨＣ、ＣＯの排出等、エミッションの悪化による環境への悪影響や車両性能の低下等を招きかねない。
【０００８】
本発明は、こうした実情に鑑みてなされたものであり、その目的は、無線通信によって外部から得られる書き換え用のデータに基づいて不揮発性メモリに格納されている制御プログラムや制御データを書き換える場合であれ、それらデータの書き換えにかかるセキュリティレベルをより高く維持することのできる車載制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
こうした目的を達成するため、請求項１に記載の車載制御装置のデータ書き換え方法では、不揮発性メモリの書き換え可能な領域に格納されている車載機器を制御するための制御プログラム及び制御データの少なくとも一方が無線通信によって外部の送信手段から送信される書き換え用のデータに基づき書き換え可能に構成された車載制御装置のデータ書き換え方法として、前記送信手段から送信される書き換え用のデータには、同送信手段に予め用意された妥当性のあるデータと該妥当性のあるデータに対して不一致となる妥当性のないデータとの複数のデータが含まれ、それら妥当性のあるデータと妥当性のないデータとの複数のデータが同一の識別子が付されて送信手段から送信されるとともに、前記車載制御装置は、受信したそれら複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するデータ抽出手段を備え、この抽出される妥当性のあるデータを用いて前記書き換えを行うこととした。
【００１０】
前述のように、上記書き換え用のデータが無線通信によって取得されるこのような装置では、外部からのデータの送信頻度（アクセス頻度）が高い。このため、それらデータが不正データや不正改造データであったとしても、その識別子（ＩＤ）と当該車両（装置）を指定するコードとが一致し、ひいてはこうしたデータに基づく書き換え（不正書き換え）が実行される懸念がある。この点、上記方法では、上記制御プログラムや制御データの書き換えに際し、書き換えが要求されるデータとして同一の識別子が付された複数のデータを前記送信手段が送信し、これら複数のデータを前記車載制御装置がまずは受信する。そして、当該車載制御装置に備えられるデータ抽出手段が、受信したそれら複数のデータを照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータとして抽出し、この抽出される妥当性のあるデータを用いて前記書き換えを行うようにしている。したがって、不正データや不正改造データの識別子（ＩＤ）と当該車両（装置）を指定するコードとが仮に一致してしまったとしても、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータが受信されたこと。
且つ、
・受信された複数のデータに、特定の法則が満たされるデータが含まれていること。
等々、といった条件がさらに満たされない限り、それらデータに基づく書き換え（不正書き換え）が実行されることは回避されるようになる。すなわち、このようにいわばデータのフィルタリングともいえる処理によって抽出されるデータのみを上記書き換え用のデータとして用いるようにすることで、それらデータの書き換えにかかるセキュリティレベルをより高く維持することができるようになる。
【００１１】
また、この場合には特に、請求項２に記載の車載制御装置のデータ書き換え方法によるように、前記複数のデータが、前記妥当性のあるデータと前記妥当性のないデータとしてこの妥当性のあるデータの補数の関係にあるミラーデータとによって対となる態様で構成
されるようにし、前記データ抽出手段は、受信したそれら２つのデータが互いに補数の関係にあることをもって前記特定の法則の成立を判断して前記妥当性のあるデータを抽出することが、上記データの書き換えにかかるセキュリティレベルをより高く維持する上で望ましい。すなわち、上記受信される複数のデータに、上記書き換えが要求されるデータとしての妥当性のないデータをあえて含ませるようにすれば、無線通信によって授受されるデータのデータ構造がより複雑となり、ひいてはそれら複数のデータから抽出されるデータ自体のセキュリティレベルもより高く維持されるようになる。
【００１２】
なお、上記請求項１に記載の車載制御装置のデータ書き換え方法としては、さらに、例えば請求項３、あるいは請求項５、あるいは請求項６、あるいは請求項８に記載の車載制御装置のデータ書き換え方法を採用するようにすることが、当該データ書き換え方法を実現する上で実用上望ましい。
【００１４】
ちなみに、上記請求項３に記載の車載制御装置のデータ書き換え方法では、複数のデータが、２つ以上の妥当性のあるデータと、１つの妥当性のないデータとから構成されるものであるとき、前記データ抽出手段が、受信した３つ以上のデータのうちの２つ以上が一致することをもって前記特定の法則の成立を判断し、それら一致したデータの１つを前記妥当性のあるデータとして抽出するようにすることで、上記データの書き換えにかかるセキュリティレベルを維持するようにしている。
【００１５】
なお、この請求項３に記載の車載制御装置のデータ書き換え方法では特に、請求項４に記載の車載制御装置のデータ書き換え方法によるように、前記データ抽出手段が、前記データの受信中、前記２つ以上のデータの一致が確認された時点で、当該データに関する以降の受信をキャンセルするようにすることがより望ましい。このような構成によれば、データの受信中、２つ以上のデータの一致が確認された時点、すなわち上記特定のデータが妥当性のあるデータとして抽出された時点で、当該データに関する以降の受信がキャンセルされるため、該データが格納されるメモリ領域を効率的に利用することができるようになる。
【００１６】
一方、上記請求項５に記載の車載制御装置のデータ書き換え方法では、前記複数のデータが、２つ以上の妥当性のあるデータと、該妥当性のあるデータの数よりも少ない数で１つ以上の妥当性のないデータとから構成されるものであるとき、前記データ抽出手段が、受信した３つ以上のデータのうちの過半数が一致することをもって前記特定の法則の成立を判断し、それら一致した過半数のデータの１つを前記妥当性のあるデータとして抽出するようにすることで、上記データの書き換えにかかるセキュリティレベルを維持するようにしている。
【００１７】
他方、上記請求項６に記載の車載制御装置のデータ書き換え方法では、前記複数のデータが、２つ以上の妥当性のあるデータと、該妥当性のあるデータの数よりも少ない数で１つ以上の妥当性のないデータとから構成されるものであるとき、前記データ抽出手段が、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって前記特定の法則の成立を判断し、それら一致数が多数を占めるデータの１つを前記妥当性のあるデータとして抽出するようにすることで、上記データの書き換えにかかるセキュリティレベルを維持するようにしている。
【００１８】
ただし、この請求項６に記載の車載制御装置のデータ書き換え方法においては、上記一致数が同数で多数を占めるデータの組が複数組存在するようなことがあり、この場合、それらデータの１つを上記妥当性のあるデータとして抽出することが困難となる。したがって、この請求項６に記載の車載制御装置のデータ書き換え方法においては、請求項７に記載の車載制御装置のデータ書き換え方法によるように、前記データ抽出手段が、前記一致数が同数で多数を占めるデータの組が複数組存在するとき、前記特定の法則の不成立を判断して前記データの抽出を保留するようにすることが、上記データの書き換えにかかる信頼性を維持する上で望ましい。
【００１９】
また他方、上記請求項８に記載の車載制御装置のデータ書き換え方法では、前記データ抽出手段が、前記特定の法則としての複数の法則にそれぞれ対応して該当する法則の成立の有無を判定する複数の判定手段を備え、前記複数のデータの送信元となる前記送信手段との協働のもとに、それら判定手段の選択を動的に決定するようにしている。
そして、請求項１６に記載の車載制御装置では、不揮発性メモリの書き換え可能な領域に格納されている車載機器を制御するための制御プログラム及び制御データの少なくとも一方が無線通信によって外部から得られる書き換え用のデータに基づき書き換え可能に構
成された車載制御装置として、前記書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信し、それら受信した複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するデータ抽出手段を備えるとともに、当該データ抽出手段が、前記特定の法則としての複数の法則にそれぞれ対応して該当する法則の成立の有無を判定する複数の判定手段を備え、前記送信手段との協働のもとに、それら判定手段の選択を動的に決定するようにしている。
【００２０】
上記車載制御装置のデータ書き換え方法並びに車載制御装置の構成では、上記特定の法則としての複数の法則にそれぞれ対応して該当する法則の成立の有無を判定する複数の判定手段を備えるため、上記複数の法則の１つが仮に一般に認知されてしまったとしても、前記送信手段、すなわちデータの送信元との協働のもとに、それら判定手段の選択を切り替えることで、上記データの書き換えにかかるセキュリティレベルを維持することができるようになる。しかも、上記データの送信元との協働のもとに、それら判定手段の選択を動的に決定するため、上記データ抽出手段によるデータの抽出態様が解読され難くなり、上述の不正データや不正改造データに基づくデータの書き換え（不正書き換え）が実行されることがより確実に回避されるようになる。
【００２１】
なお、データ抽出手段による上記判定手段の選択態様としては、例えば、請求項９に記載の車載制御装置のデータ書き換え方法、あるいは請求項１７に記載の車載制御装置によるように、
・前記データ抽出手段が、前記送信手段、すなわちデータの送信元から送信指示される情報に基づいて前記判定手段を選択する。
若しくは、請求項１０に記載の車載制御装置のデータ書き換え方法、あるいは請求項１８に記載の車載制御装置によるように、
・前記データ抽出手段が、当該車載制御装置から指示される情報に基づいて前記判定手段を選択する。
若しくは、請求項１１に記載の車載制御装置のデータ書き換え方法、あるいは請求項１９に記載の車載制御装置によるように、
・前記データ抽出手段が、データが受信された日時の情報に基づいて前記判定手段を選択する。
等々、を採用するようにすることが、上記送信手段、すなわちデータの送信元との協働のもとに上記判定手段を適切に選択する上で実用上望ましい。
【００２２】
また、上記判定手段については、請求項８〜１１のいずれか一項に記載の車載制御装置のデータ書き換え方法において、請求項１２に記載の車載制御装置のデータ書き換え方法
によるように、あるいは請求項１６〜１９のいずれか一項に記載の車載制御装置において、請求項２０に記載の車載制御装置によるように、ａ．前記複数のデータが特定のデータと該特定のデータの補数の関係にあるミラーデータとが対となる態様で受信されるときに、受信した２つのデータが互いに補数の関係にあることをもって前記特定の法則の成立を判断するミラー判定手段、及びｂ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの２つ以上が一致することをもって前記特定の法則の成立を判断する一致判定手段、及びｃ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの過半数が一致することをもって前記特定の法則の成立を判断する過半数判定手段、及びｄ．前記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって前記特定の法則の成立を判断する多数決判定手段、の少なくとも１つを含むようにすることが、上記データの書き換えにかかるセキュリティレベルを維持する上で実用上望ましい。
【００２３】
また、上記請求項１２に記載の車載制御装置のデータ書き換え方法では特に、請求項１３に記載の車載制御装置のデータ書き換え方法によるように、あるいは上記請求項２０に記載の車載制御装置では特に、請求項２１に記載の車載制御装置によるように、前記データ抽出手段が、前記判定手段として前記一致判定手段が選択されているとき、データの受信中、前記２つ以上のデータの一致が確認された時点で当該データに関する以降の受信をキャンセルするようにすることが望ましい。このような構成によれば、前記判定手段として前記一致判定手段が選択されているとき、データの受信中、２つ以上のデータの一致が確認された時点、すなわち上記特定のデータが上記妥当性のあるデータとして抽出された時点で、当該データに関する以降の受信がキャンセルされるため、該データが格納されるメモリ領域を効率的に利用することができるようになる。
【００２４】
ただし、上記請求項１２に記載の車載制御装置のデータ書き換え方法、あるいは上記請求項２０に記載の車載制御装置においては、前記判定手段として前記多数決判定手段が選択されているとき、上記一致数が同数で多数を占めるデータの組が複数組存在するようなことがあり、この場合、それらデータの１つを上記妥当性のあるデータとして抽出することが困難となる。したがって、この請求項１２に記載の車載制御装置のデータ書き換え方法においては、請求項１４に記載の車載制御装置のデータ書き換え方法によるように、あるいはこの請求項２０に記載の車載制御装置においては、請求項２２に記載の車載制御装置によるように、前記データ抽出手段が、前記判定手段として前記多数決判定手段が選択されているとき、前記一致数が同数で多数を占めるデータの組が複数組存在することに基づき前記特定の法則の不成立を判断して前記データの抽出を保留するようにすることが、上記データの書き換えにかかる信頼性を維持する上で望ましい。
【００２５】
また、請求項１〜１４のいずれか一項に記載の車載制御装置のデータ書き換え方法において、あるいは請求項１６〜２２のいずれか一項に記載の車載制御装置において、前記受信されるデータが予め複数のブロックに分割されるとともに、該分割されたブロック毎にデータブロックとして前記特定の法則に対応して予め取り決められた態様で各々パケット転送されるものであるときは、請求項１５に記載の車載制御装置のデータ書き換え方法によるように、あるいは請求項２３に記載の車載制御装置によるように、前記データ抽出手段が、前記複数のデータの照合をそれら分割されたデータブロック単位で行い、妥当性のあるデータブロックとして抽出したブロックを順次結合して前記書き換えが要求されるデータを復号するようにすることが、上記データの書き換えにかかるセキュリティレベルを維持する上で実用上望ましい。
【００２６】
ところで、請求項１６〜２３のいずれか一項に記載の車載制御装置が分散制御を実行する複数の電子制御装置からなるとともに、車内ＬＡＮを構成する通信バスによって相互に接続されてなるとき、無線通信によって取得される上記複数のデータを通信バスを介して他の電子制御装置に送信して後に、該電子制御装置において上記データ抽出手段によるデータの抽出を実行するとすれば、上記妥当性のあるデータを抽出するために、上記通信バスにかかる負荷を増大せしめることとなり、ひいては上記複数の電子制御装置による分散制御にも影響を及ぼしかねない。そこで、このような場合には、請求項２４に記載の車載制御装置によるように、それら電子制御装置の１つに、前記データの送信元との間での通信を行う通信手段、及び前記データ抽出手段を設けるようにすることが実用上望ましい。これにより、上記通信バスを利用することなく、上記妥当性のあるデータを抽出することができるようになる。
【発明を実施するための最良の形態】
【００２７】
（第１の実施の形態）
以下、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第１の実施の形態について、図１〜図９を参照して詳細に説明する。図１に、この実施の形態の全体構成をブロック図として示す。
【００２８】
同図１に示されるように、この車載制御装置１００は、大きくは、各種の車載機器を分散制御する複数の電子制御装置、及びこれら各電子制御装置に関する情報（例えば制御プログラムのバージョン情報など）を総括管理するマスタ制御装置１４０を備えている。これら制御装置は、例えばＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのバス型のネットワークシステムを構成する通信バス１０１によってそれぞれ電気的に接続され、該通信バス１０１を通じて各種データの授受を行う。
【００２９】
ここで、上記複数の電子制御装置は、その一部として以下に列記する電子制御装置１１０〜１３０を有してなる。
・車載エンジンの燃料噴射等の制御を行うエンジン制御装置１１０。
・トランスミッションの変速比の自動切替制御を行うトランスミッション制御装置１２０。
・車両のブレーキ制御を行うブレーキ制御装置１３０。
【００３０】
これら各電子制御装置１１０〜１３０の間では、上記通信バス１０１を通じて各々の制御状態や制御結果等の授受が行われる。そして通常は、こうして授受される情報や予め保持されている制御データに基づき、当該電子制御装置１１０〜１３０自身がそれぞれ内蔵する不揮発性メモリに格納されている制御プログラムを実行することにより、上述の各制御が協調して実行されるようになる。例えば、上記トランスミッション制御装置１２０では、トランスミッションの出力軸等に設けられている車速センサによる検出信号（２値化信号）が取り込まれると、この検出信号に基づいて車速情報を示すデータを作成してこれを上記通信バス１０１上に例えばシリアルデータとして送出する。そして、通信バス１０１上に送出されたシリアルデータが、例えば上記ブレーキ制御装置１３０に取り込まれ、該ブレーキ制御装置１３０において上述の車両のブレーキ制御に供されることとなる。
【００３１】
一方、上記マスタ制御装置１４０は、各車両のＶＩＮコード（車両識別コード）や制御プログラムのバージョン情報等を保持、管理している外部の管理センター２００（送信手段）から書き換え用のデータを無線通信によって取得し（通信手段）、該取得したデータに基づき上記電子制御装置１１０〜１３０内のデータを書き換えるための部分でもある。
【００３２】
すなわち、上記電子制御装置１１０〜１３０内の制御プログラムや制御データ等のデータは、制御プログラムのバージョンアップや修正等に伴って、その内容の書き換えが必要となることがある。このような場合、同マスタ制御装置１４０では、それらデータ（プログラム）の書き換えに際してまず、上記データ（プログラム）の書き換えを実行するための書き換え用のデータと、書き換えの対象となる車両（装置）を指定する識別コード（ＩＤ）とを受信する。次いで、識別コード（ＩＤ）と当該車両（装置）を指定するコードとが一致するか否かを判断し、この結果、これら２つのコードが一致していることを条件に、上記受信した書き換え用のデータに基づき、上記電子制御装置１１０〜１３０内のデータを、その書き換え対象となる電子制御装置と協働して書き換える。このような制御装置１００を車両に搭載するようにすることで、極めて容易に電子制御装置１１０〜１３０内の制御プログラムや制御データ等のデータを最新の状態に保つことができるようになる。
【００３３】
ただし前述の通り、上記書き換え用のデータを無線通信によって取得するこのような車載制御装置１００では、それらデータが不正データや不正改造データであったとしても、その識別子（ＩＤ）と当該車両（装置）を指定するコードとが一致し、ひいてはこうしたデータに基づく書き換え（不正書き換え）が実行される懸念がある。そしてこの場合、法律基準を超えたＮＯｘ、ＨＣ、ＣＯの排出等、エミッションの悪化による環境への悪影響や車両性能の低下等を招きかねない。
【００３４】
そこで、この実施の形態では、上記制御プログラムや制御データの書き換えに際し、該車載制御装置１００がまず、書き換えが要求されるデータとして同一の識別子が付された複数のデータを上記管理センター２００から無線通信によって受信する。そして、それら受信した複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出し（データ抽出手段）、該抽出したデータを上記書き換え用のデータとして用いて上記データ（プログラム）の書き換えを実行するようにしている。このような構成によれば、不正データや不正改造データの識別子（ＩＤ）と当該車両（装置）を指定するコードとが一致した場合であれ、
・同一の識別子が付された複数のデータが受信されたこと。
且つ、
・受信された複数のデータに、特定の法則が満たされるデータが含まれていること。
等々、といった条件がさらに満たされない限り、それらデータに基づく書き換えが実行されることは回避されるようになる。すなわち、このようにいわばデータのフィルタリングともいえる処理によって抽出されるデータのみを上記書き換え用のデータとして用いるため、それらデータの書き換えにかかるセキュリティレベルをより高く維持することができるようになる。
【００３５】
図２は、図１に示した車載制御装置１００のうち、特にエンジン制御装置１１０及びマスタ制御装置１４０の内部構造をブロック図として示したものである。以下、同図２を併せ参照してそれら制御装置１１０、１４０の各内部構造及びそれらの電気的な動作についてさらに具体的に説明する。なおここでは、エンジン制御装置１１０内のデータが書き換えられる場合を想定している。
【００３６】
同図２に示されるように、上記マスタ制御装置１４０は、各種情報を演算処理する中央演算処理装置（ＣＰＵ）１４１を中心に構成されている。この中央演算処理装置１４１では、無線通信部１４２やプログラムメモリ（ＲＯＭ）１４３、データメモリ（ＲＡＭ）１４４、通信装置１４５等との間での各種データの授受や、それらデータに基づく演算処理を行うこととなる。
【００３７】
ここで、上記無線通信部１４２は、同マスタ制御装置１４０と上記管理センター２００との間での無線通信によるデータの授受を仲介する部分であり、具体的には、アンテナ１４２ａや送受信器１４２ｂ、変復調器１４２ｃ、シフトレジスタ１４２ｄ等々、を備えて構成されている。これら電子部品の各機能については、後述する。
【００３８】
また、上記プログラムメモリ１４３は、各種制御プログラムやそれら制御で用いられる制御データが格納されている読み出し専用のメモリであり、特にこの実施の形態では、各電子制御装置１１０〜１３０内のデータ（プログラム）の書き換えを実行するための処理手順などを規定する制御プログラムが併せて格納されている。
【００３９】
また、上記データメモリ１４４は、上記管理センター２００や各電子制御装置１１０〜１３０から送信されるデータが格納される部分であり、例えばランダムアクセスメモリ（ＲＡＭ）からなる。
【００４０】
また、上記通信装置１４５は、当該マスタ制御装置１４０と各電子制御装置１１０〜１３０との間での上記通信バス１０１を介したデータの授受を仲介する部分である。
このようなマスタ制御装置１４０において、上記エンジン制御装置１１０内のデータの書き換えに際しては、該マスタ制御装置１４０の中央演算処理装置１４１がまず、書き換えが要求されるデータとして同一の識別子（ＩＤ）が付された複数のデータを無線通信によって取得する。なお、この実施の形態では、これら複数のデータは、上記管理センター２００から各々シリアルデータとしてパケット転送によって送信され、同マスタ制御装置１４０の無線通信部１４２において、まず、アンテナ１４２ａを介して送受信器１４２ｂに取り込まれる。次いで、変復調器１４２ｃに取り込まれ、この変復調器１４２ｃを通じて適宜に復調される。そしてこの復調されたデータが、シフトレジスタ１４２ｄにさらに取り込まれ、このシフトレジスタ１４２ｄにおいてシリアル／パラレル変換されて後、上記中央演算処理装置１４１により取得される。
【００４１】
そして、こうして複数のデータが受信されると、該マスタ制御装置１４０の中央演算処理装置１４１は、上記プログラムメモリ１４３に格納されている制御プログラムを実行することによって、上記エンジン制御装置１１０内のデータ（プログラム）を書き換えるための制御の実行を開始する。具体的には、同中央演算処理装置１４１は、取得した各データの識別子（ＩＤ）と当該車両（装置）を指定するコード（例えばＶＩＮコード）とが一致するか否かをまずは判断する。そしてその結果、これら２つのコードが一致することを条件に、同取得した複数のデータを上記データメモリ１４４に格納するとともに上記通信装置１４５を通じてエンジン制御装置１１０に送信する。
【００４２】
一方、上記エンジン制御装置１１０では、通信装置１１２やプログラムメモリ（ＲＯＭ）１１３、データメモリ（ＲＡＭ）１１４、入出力インターフェース１１５等との間で授受される情報に基づき各種の演算処理を行う中央演算処理装置（ＣＰＵ）１１１を中心に構成されている。
【００４３】
ここで、上記通信装置１１２は、当該エンジン制御装置１１０と上記マスタ制御装置１４０との間での上記通信バス１０１を介したデータの授受を仲介する部分である。
また、上記プログラムメモリ１１３は、エンジン制御に用いられるエンジン制御プログラムやエンジン制御データ等のデータが格納されている部分であり、例えばフラッシュメモリやＥＥＰＲＯＭなど、電気的に書き換え可能な不揮発性メモリからなる。ただし、この実施の形態では、このプログラムメモリ１１３に格納されているこれらデータ（エンジン制御プログラムやエンジン制御データ等）が書き換え（リプログラミング）の対象となっている。したがって、このプログラムメモリ１１３には、それらデータの書き換えが実行されるときに用いられる書換制御プログラムや書換制御データ等のデータが、上記書き換えの対象となるデータとは別のメモリ領域に併せて格納されている。
【００４４】
また、上記データメモリ１１４は、電子制御装置１２０〜１４０から送信されるデータや後述する各種センサから取り込まれる信号などのデータが格納される部分であり、例えばランダムアクセスメモリ（ＲＡＭ）からなる。
【００４５】
また、上記入出力インターフェース１１５は、車両の運転状況等を監視する各種センサからの信号や、車載機器を駆動するためのアクチュエータ（いずれも図示略）に対する駆動指令など、中央演算処理装置１１１とそれらセンサやアクチュエータとの間での情報の授受を仲介する部分である。
【００４６】
周知のように、このようなエンジン制御装置１１０では通常、中央演算処理装置１１１が上記センサから出力される温度情報や上記通信バス１０１上に送出されている車速情報などの情報を取り込み、上記プログラムメモリ１１３に格納されているエンジン制御プログラムを実行することにより、上述のエンジン制御を行う。
【００４７】
ただし、こうしたエンジン制御に用いられるデータの書き換えに際しては、同エンジン制御装置１１０の中央演算処理装置１１１がまず、上記マスタ制御装置１４０から送信される上記複数のデータを上記通信バス１０１及び通信装置１１２をそれぞれ介して取り込む。そして、該取得した複数のデータを上記データメモリ１１４に格納して後、それら複数のデータを照合し、該複数のデータに特定の法則が満たされるデータがあるか否かを判定（正否判定）する。この結果、上記複数のデータに特定の法則が満たされるデータがあれば、該データを妥当性のあるデータとして抽出するとともに、同データに基づいて上記プログラムメモリ１１３内の書換制御プログラムを実行する。これにより、同プログラムメモリ１１３内の書き換え対象となる上記データ（プログラム）が書き換えられるようになる。
【００４８】
なお、エンジン制御装置１１０内のこうした内部構造は、他の電子制御装置１２０、１３０においても概ね共通している。
次に、こうした内部構造を有するマスタ制御装置１４０及びエンジン制御装置１１０の協働の下に行われるデータの書換処理についてその具体態様を図４〜図９を参照しつつ説明する。
【００４９】
上述の通り、この書き換え処理に際してはまず、上記管理センター２００から、上記書き換えが要求されるデータとして同一の識別子が付された複数のデータが送信される。なお、この実施の形態では、該複数のデータとして、上記プログラムメモリ１１３内のデータを書き換えるための書き換え用のデータ（特定のデータ）、及び該書き換え用のデータに対して補数の関係にあるミラーデータが送信される。
【００５０】
ここで、図３（ａ）〜（ｃ）を参照して、管理センター２００によるこれらデータの送信態様について説明する。図３（ａ）は、管理センター２００と車載制御装置１００との間で授受されるデータのデータ構造を示すものである。また、図３（ｂ）は、該管理センター２００において、上記書き換え用のデータ及びミラーデータが格納されているメモリのメモリ構造をブロック図として示すものである。また、図３（ｃ）は、管理センター２００による上記書き換え用のデータ及びミラーデータの送信態様をブロック図として示すものである。
【００５１】
まず、図３（ａ）に示されるように、この実施の形態において、上記管理センター２００及び車載制御装置１００の間では、上記書き換え用のデータ及びミラーデータは、以下に列記する各フィールドや、エラーチェックコードなどを有してなるデータフレームＤＦに格納され、パケット単位で送信される。ただしこの際、これら書き換え用のデータ及びミラーデータには、上記書き換えが要求されるデータとして同一の識別子（ＩＤ）が付与される。
・フレームの始まりを示すスタートオブフレーム（ＳＯＦ）。
・格納データを特定するための識別子（ＩＤ）。
・実際のデータが格納されるデータフィールド（ＤＡＴＡ）。
・フレームの終わりを示すエンドオブフレーム（ＥＯＦ）。
【００５２】
一方、図３（ｂ）に示されるように、上記管理センター２００において、上記書き換え用のデータ及びミラーデータはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック［１］〜［ａ］（ただし、「ａ」は所定の整数）として所定のメモリの第１及び第２のメモリ領域２０１ａ、２０１ｂにそれぞれ格納されている。ただし、例えば書き換え用のデータのデータブロック［１］の値「０ｘ０１２３４５６・・・」に対する上記ミラーデータのデータブロック［１］の値「０ｘＦＥＤＣＢＡ９・・・」から明らかなように、ミラーデータのデータブロック［１］〜［ａ］は、書き換え用のデータのデータブロック［１］〜［ａ］に対して各々補数の関係（ミラーデータ）となっている。
【００５３】
このようなメモリに対し、上記書き換え用のデータ及びミラーデータの送信に際しては、同管理センター２００がまず、上記書き換え用のデータをデータブロック［１］からデータブロック［ａ］まで順次に読み出す。ただしこの際、同管理センター２００は、上記書き換え用のデータの各データブロックを読み出す都度、該読み出されたデータブロックに対して補数の関係にあるミラーデータのデータブロックを併せて読み出す。これにより、これら２つのデータは、図３（ｃ）に併せて示されるように、データブロックＤＢ１〜ＤＢ２ａとして上記所定のメモリから順次に取り出されるようになる。そして、同管理センター２００は、こうして取り出された順序に基づき、上記書き換え用のデータ及びミラーデータのデータブロックＤＢ１〜ＤＢ２ａを上記データフレームＤＦに各別に格納することによって、上記複数のデータを、データブロック単位（パケット単位）にて、書き換え用のデータとミラーデータとが対となる態様で送信する。
【００５４】
一方、このような無線送信処理によって上記書き換え用のデータ及びミラーデータが上記管理センター２００から送信されると、車載制御装置１００では、上記マスタ制御装置１４０がこれら２つのデータを受信して同マスタ制御装置１４０内のデータメモリ１４４に格納するための受信処理を実行するようになる。
【００５５】
図４は、こうした受信処理についてその処理手順をフローチャートとして示したものであり、次に、同図４を参照して、該処理について説明する。なおこの受信処理は、所定期間毎に繰り返し実行される。
【００５６】
同図４に示されるように、この受信処理に際しては、まず、ステップＳ１０１の処理として、上記書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信するまで待機する。そして、このステップＳ１０１の処理において、データブロック単位で分割送信される上記複数のデータが受信されると、次にステップＳ１０２の処理に移行する。
【００５７】
このステップＳ１０２の処理では、それらデータに付されている各識別子（ＩＤ）と当該車両（装置）を指定するコード（例えばＶＩＮコード）とが一致するか否かを判断する。この結果、これら２つのコードが一致すれば、次にステップＳ１０３の処理として、例えばデータメモリ１４４などに記憶されている受信履歴に基づき、該受信された複数のデータが既に受信されている受信済みのデータと同一であるか否かの判断をさらに行う。そしてこの結果、これら複数のデータが未だ受信されていないデータであることを条件に、それら複数のデータを、データブロック単位で上記データメモリ１４４に格納する。より具体的には、ここでは、上記書き換え用のデータとミラーデータとが対となる上述の態様で格納する。
【００５８】
一方、上記ステップＳ１０２の処理において上記２つのコードが一致しなかった場合や、上記ステップＳ１０３の処理において上記複数のデータが受信済みのデータと同一であった場合には、同複数のデータを上記データメモリ１４４に格納することなく、この受信処理を一旦終了する。すなわちこの場合、上記管理センター２００から新たなデータが送信されるまで再度待機することとなる（ステップＳ１０１）。
【００５９】
そして、こうした受信処理（図４）によって上記受信される複数のデータがデータメモリ１４４に格納されると、同マスタ制御装置１４０は次に、これら受信したデータを、上記通信バス１０１を介して書き換え対象となるエンジン制御装置１１０に送信するための送信処理を実行するようになる。
【００６０】
図５は、こうした送信処理についてその処理手順をフローチャートとして示したものであり、次に、同図５を参照して、該処理について説明する。なお、この送信処理は、上記データメモリ１４４に上記書き換え用のデータ及びミラーデータが格納されているとき、所定期間毎に繰り返し実行される。
【００６１】
同図５に示されるように、この送信処理に際しては、まず、ステップＳ１１１の処理として、上記エンジン制御装置１１０内のデータ（プログラム）が既に書き換えられたか否かを示す書換完了フラグのフラグ状態を確認する。なお後述するが、この書換完了フラグは、上記エンジン制御装置１１０内のデータの書き換え（リプログラミング）が完了したことに基づきセットされるフラグであり、例えば同マスタ制御装置１４０内のデータメモリ１４４に格納され、該マスタ制御装置１４０によって操作される。したがって、このステップＳ１１１の処理において、該書換完了フラグがリセット状態にある場合には、上記エンジン制御装置１１０内のデータの書き換えは未だ完了していないとして、同マスタ制御装置１４０は、次にステップＳ１１２及びＳ１１３の処理を行う。すなわち、まず、ステップＳ１１２の処理として、当該車両の状態が書き換えに適した状態にあるか否かを判断する。そしてこの結果、当該車両の状態が書き換えに適した状態にあることを条件に、次いでステップＳ１１３の処理として、上記通信バス１０１を介して上記データメモリ１４４に格納されている書き換え用のデータ及びミラーデータを上記エンジン制御装置１１０に送信する。なおここでも、上記複数のデータは、データブロック単位（パケット単位）にて、書き換え用のデータとミラーデータとが対となる上述の態様で送信される。
【００６２】
一方、上記ステップＳ１１１の処理において上記書換完了フラグがセットされている場合には、この送信処理を一旦終了する。なおこの際、同マスタ制御装置１４０は、上記データメモリ１４４に格納されている書き換え用のデータ及びミラーデータを消去するようにしてもよい。
【００６３】
他方、上記ステップＳ１１２の処理において当該車両が書き換えに適した状態にない場合も同様、この送信処理を一旦終了する。ただしこの場合、同マスタ制御装置１４０は、当該車両が書き換えに適した状態になるまで待機することとなる。
【００６４】
ちなみに、この送信処理にあって、上記ステップＳ１１２の処理は、例えば、エンジン回転数が「５０ｒｐｍ」未満（実質的に「０」）となった時刻から予め設定された時間が経過しているか否かの判断処理として行われる。すなわち、上記エンジン制御装置１１０の中央演算処理装置１１１では通常、車載エンジンの運転停止に伴ってその回転数が「０」となると、例えば次回の運転時まで保持すべき学習値等のデータを上記データメモリ１１４のバックアップ領域に保持するなどの後処理が行われる。したがって、このステップＳ１１２の処理では、エンジン回転数が「５０ｒｐｍ」未満（実質的に「０」）となった時刻から予め設定された時間が経過するまで待機するようにすることで、こうした後処理と並行して上記エンジン制御装置１１０内のデータの書き換えが実行されることを回避するようにしている。
【００６５】
そして、こうした送信処理によって上記複数のデータが上記エンジン制御装置１１０に対して送信されると、該エンジン制御装置１１０は上述の通り、それらデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出する。そして、該抽出したデータに基づき、同エンジン制御装置１１０内のデータ（プログラム）を書き換えるようになる。
【００６６】
ただし、上記照合の結果、上記複数のデータに特定の法則が満たされるデータが確認されない場合もある。このような場合、後述するが、上記エンジン制御装置１１０では、上記無線通信によって取得された複数のデータ（書き換え用のデータ及びミラーデータ）自体に適正性がないとして、当該装置１４０に対して同データ（書き換え用のデータ及びミラーデータ）の再送を要求するデータ再送要求を通知する。これに対し、マスタ制御装置１４０では、図６に示される処理手順に基づき、上記複数のデータの再送を要求するための送信処理を実行することとなる。
【００６７】
すなわち、いま、ステップＳ１２１の処理において、上記データ再送要求の通知があったとすると、同マスタ制御装置１４０は、ステップＳ１２２の処理として、上記管理センター２００に対し、上記複数のデータ（書き換え用のデータ及びミラーデータ）の再送を要求する。なおこの際、前回の無線通信によって取得されたデータが上記データメモリ１４４に未だ格納されている場合には、該データを消去するようにすることが同データメモリ１４４の容量を適切に確保する上で望ましい。
【００６８】
一方、図７は、エンジン制御装置１１０によって実行される上記プログラムメモリ１１３内の書き換え対象となるデータ（プログラム）を書き換えるための処理についてその処理手順を示したフローチャートであり、次に、同図７を参照して、該処理について説明する。
【００６９】
同処理に際しては、エンジン制御装置１１０がまず、ステップＳ１３１の処理として、上記通信バス１０１を通じてデータが受信されるまで待機する。そしてこの結果、データが受信されると、同エンジン制御装置１１０は、次にステップＳ１３２の処理として、該受信されたデータの識別子（ＩＤ）に基づき、同受信されたデータの情報の種類を判断する。この結果、該受信されたデータが上記書き換えが要求されるデータとして同一の識別子が付された複数のデータ（書き換え用のデータ及びミラーデータ）であれば、上記データ（プログラム）を書き換えるべく、同エンジン制御装置１１０は次に、以下のステップＳ１３３〜Ｓ１３８の処理を実行する。
【００７０】
ここで、上記ステップＳ１３３の処理ではまず、同エンジン制御装置１１０は、上記通信バス１０１から取得されたデータ（書き換え用のデータ及びミラーデータ）を、上記データメモリ１１４（図２）にデータブロック単位で格納する。より具体的には、例えば図８（ａ）に例示されるように、書き換え用のデータ及びミラーデータを、それらデータの各対応するデータブロックが対となる上述の態様で上記データメモリ１１４の第１のメモリ領域１１４ａに格納する。そして次に、ステップＳ１３４の処理として、これら２つのデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理を行う。
【００７１】
すなわち、このデータ抽出処理（ステップＳ１３４）ではまず、書き換え用のデータ及びミラーデータの照合として、それら２つのデータが互いに補数の関係にあるか否かを判断するいわゆるミラーチェックが行われる。ただし、この実施の形態では、図８（ａ）に示されるように、上記２つのデータの各対応するデータブロック毎にこうしたミラーチェック（照合）を実行する。そしてこの結果、図８（ｂ）に示されるように、上記２つのデータの各対応するデータブロック毎に、ミラーチェックが成立した書き換え用のデータのデータブロックを妥当性のあるデータとしてそれぞれ抽出し、それらデータブロックを上記データメモリ１１４の第２のメモリ領域１１４ｂに格納する。すなわちこうした処理によって、該第２のメモリ領域１１４ｂにおいて、上記抽出されたデータブロック［１］〜［ａ］（データブロックＤＢ１、ＤＢ３、・・・、ＤＢ２ａ−１）を順次結合し、上記書き換え用のデータを復号するようにしている。
【００７２】
そして、このデータ抽出処理（ステップＳ１３４）の結果、上記第２のメモリ領域１１４ｂにおいて、データブロック［１］〜［ａ］からなる書き換え用のデータが復号された場合には（ステップＳ１３５）、同エンジン制御装置１１０は、次にステップＳ１３６及びＳ１３７の処理を行う。すなわち、まず、ステップＳ１３６の処理として、該復号された書き換え用のデータに基づいて上記プログラムメモリ１１３内の書き換え対象となるデータ（プログラム）の書き換えを実行する。そして、該書き換えの完了が確認されれば、次いでステップＳ１３７の処理として、上記マスタ制御装置１４０に対し、同エンジン制御装置１１０内のデータ（プログラム）の書き換えが完了した旨を示す書換完了信号を送信する。これにより、上記マスタ制御装置１４０では、この書換完了信号の受信に基づき、上述の書換完了フラグをセットするようになる。
【００７３】
一方、上記データ抽出処理（ステップＳ１３４）の結果、上記ミラーチェックが成立しないデータブロックが含まれていた場合には、上記データメモリ１１４の第２のメモリ領域１１４ｂにおいて、書き換えが要求されるデータ（書き換え用のデータ）が復号されない。したがってこの場合、同エンジン制御装置１１０は上述の通り、上記無線通信によって取得された複数のデータ（書き換え用のデータ及びミラーデータ）自体に適正性がないとして、上記マスタ制御装置１４０に対し、同データ（書き換え用のデータ及びミラーデータ）の再送を要求するデータ再送要求を通知することとなる（ステップＳ１３８）。これによって、上記マスタ制御装置１４０では、このデータ再送要求の通知に基づき、上記管理センター２００に対して、上記複数のデータの再送を要求するための送信処理（図６）を実行するようになる。
【００７４】
図９は、上記データ抽出処理（ステップＳ１３４）についてその具体態様を示すフローチャートであり、次に同図９を参照して、該処理について説明する。
ちなみに、先の図８に示したように、上記書き換え用のデータ及びミラーデータは、予め複数のブロック［１］〜［２ａ］に分割されるとともに、該分割されたブロック毎にデータブロックＤＢ１〜ＤＢ２ａとして、上記データメモリ１１４の第１のメモリ領域１１４ａに格納されている。
【００７５】
このデータ抽出処理に際しては、図９に示されるように、まず、ステップＳ１００１の処理として、上記ブロック［１］〜［２ａ］の奇数ブロックをブロック「２ｎ−１」（ただし、ｎは整数）、偶数ブロックをブロック［２ｎ］（ただし、ｎは整数）としてそれぞれ表したときの「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ１００２、Ｓ１００３、Ｓ１０１１の処理を繰り返し実行する。これにより、上記書き換え用のデータ及びミラーデータの全ブロック（ブロック［１］〜［２ａ］）に対し、それらデータの各対応するデータブロック毎に上述のミラーチェック（照合）が実行されるようになる。
・上記ブロック［２ｎ］に対応するデータブロックＤＢ［２ｎ］が上記ブロック［２ｎ−１］に対応するデータブロックＤＢ［２ｎ−１］のミラーデータであるか否かの判断を行う（ステップＳ１００２）。
・全ブロック（ブロック［１］〜［２ａ］）に対し、ミラーチェックが実行されたか否かの判断を行う（ステップＳ１００３）。
・上記「ｎ」に「１」を加算する（ステップＳ１０１１）。
【００７６】
すなわち、いま、上記ステップＳ１００１の処理において、上記「ｎ」に「１」が代入されたとすると、上記ステップＳ１００２の処理では、上記データブロックＤＢ１〜ＤＢ２ａのうち、データブロックＤＢ１及びＤＢ２に関してのミラーチェックがまずは実行される。なおここでは、このミラーチェックは、例えば、上記データブロックＤＢ１の値「０ｘ０１２３４５６・・・」及び上記データブロックＤＢ２の値「０ｘＦＥＤＣＢＡ９・・・」の加算値と、該加算値として本来得られるべき値である期待値「０ｘＦＦＦＦＦＦＦ・・・」とが一致するか否かの判断として行われる。
【００７７】
そしてこの結果、これら２つの値（加算値及び期待値）が一致したと判断されると、上記データブロックＤＢ１及びＤＢ２に関してのミラーチェックが成立した（特定の法則が満たされた）として、次にデータブロックＤＢ３及びＤＢ４に関してのミラーチェックを実行するための処理を行う。すなわち、上記ステップＳ１０１１の処理において、上記「ｎ」に「１」を加算した上で、上記ステップＳ１００２及びＳ１００３の処理を再度実行する。これにより、同ステップＳ１００２の処理では、上記データブロックＤＢ３及びＤＢ４に関してのミラーチェックが、上述のデータブロックＤＢ１及びＤＢ２に関してのミラーチェックに準じたかたちで実行されるようになる。
【００７８】
そして、こうしたステップＳ１００２、Ｓ１００３、Ｓ１０１１の処理が繰り返し実行された結果、上記ステップＳ１００３の処理において、上記全ブロック（ブロック［１］〜［２ａ］）に対してミラーチェックが実行されたと判断されるようになると、同エンジン制御装置１１０は、次にステップＳ１００４及びＳ１００５の処理を行う。すなわち、まず、ステップＳ１００４の処理として、上記第１のメモリ領域１１４ａに格納されている書き換え用のデータ及びミラーデータ（データブロックＤＢ１〜ＤＢ２ａ）のうち、書き換え用のデータのデータブロック［１］〜［ａ］（データブロックＤＢ１、ＤＢ３、・・・、ＤＢ２ａ−１）を妥当性のあるデータとしてそれぞれ抽出する。そして、こうして抽出されたデータブロック［１］〜［ａ］を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータブロック［１］〜［ａ］を上記第２のメモリ領域１１４ｂに格納する。そしてこの結果、上記第２のメモリ領域１１４ｂにおいて、上記書き換え用のデータが復号されれば、次いでステップＳ１００５の処理として、上記ミラーチェックが成立したことを示すミラーフラグを例えば同データメモリ１１４においてセットする。これにより、上記ステップＳ１３５の処理（図７）において、該ミラーフラグに基づき、上記書き換え用のデータが復号されたか否かの判断が行われるようになる。
【００７９】
ただし、上記ステップＳ１００２、Ｓ１００３、Ｓ１０１１の処理が繰り返し実行された結果、上記ステップＳ１００２の処理において、上記ミラーチェックが成立しない（特定の法則が満たされない）と判断されることもある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記ミラーチェックが成立しないと判断された時点で、上記ミラーフラグをセットすることなく、このデータ抽出処理を終了する。
【００８０】
以上説明したように、この実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置によれば、以下に記載するような優れた効果が得られるようになる。
（１）制御プログラムや制御データの書き換えに際し、書き換えが要求されるデータとして同一の識別子が付された複数のデータをまずは受信する。そして、それら受信した複数のデータを照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとして妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出することとした。このため、それらデータ（プログラム）の書き換えにかかるセキュリティレベルをより高く維持することができるようになる。
【００８１】
（２）上記受信される複数のデータとして、書き換えが要求されるデータとしての妥当性のあるデータ（書き換え用のデータ）のほか、書き換えが要求されるデータとしての妥当性のないデータ（ミラーデータ）を採用することとした。このため、それら複数のデータから抽出されるデータ自体のセキュリティレベルがより高く維持されるようになる。
【００８２】
（第２の実施の形態）
次に、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置についてその第２の実施の形態を示す。なお、この実施の形態も、先の第１の実施の形態（図１）とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置が備える各制御装置の内部構造も、先の第１の実施の形態（図２）とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータを受信すること。
・上記受信される複数のデータを照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第１の実施の形態とほぼ同様である。
【００８３】
ただし、この第２の実施の形態では、図１０及び図１１に、先の図３及び図８とそれぞれ比較して示すように、管理センター２００による上記複数のデータの送信態様、及び車載制御装置１００による上記データの抽出態様が異なっている。
【００８４】
まず、図１０（ａ）〜（ｃ）を参照して、管理センター２００による上記複数のデータの送信態様について説明する。なお、図１０（ａ）は、管理センター２００と車載制御装置１００との間で授受されるデータのデータ構造を示したものである。また、図１０（ｂ）は、同管理センター２００において、上記複数のデータが格納されているメモリのメモリ構造をブロック図として示したものである。また、図１０（ｃ）は、同管理センター２００による上記複数のデータの送信態様をブロック図として示したものである。
【００８５】
図１０（ａ）に示されるように、この実施の形態においても、上記管理センター２００及び車載制御装置１００の間では、データフレームＤＦを用いたパケット転送によって上記複数のデータが送信される。またこれも同様、これら複数のデータには、上記書き換えが要求されるデータとして同一の識別子（ＩＤ）が付与される。
【００８６】
ただし、図１０（ｂ）に示されるように、この実施の形態では、同管理センター２００においては、上記妥当性のないデータとして、上記データ（プログラム）の書き換えを実行するための書き換え用のデータ（妥当性のあるデータ）に対して不一致となるダミーデータが用意されている。そして、これら書き換え用のデータ及びダミーデータはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック［１］〜［ｂ］（ただし、「ｂ」は所定の整数）として所定のメモリの第１及び第２のメモリ領域２０１ｃ、２０１ｄにそれぞれ格納されている。
【００８７】
そして、同管理センター２００は、上記車載制御装置１００への送信に際しては、上記所定のメモリから２つの書き換え用のデータ及び１つのダミーデータをそれぞれ読み出し、これら３つのデータを上記複数のデータとして送信するようにしている。
【００８８】
具体的には、図１０（ｃ）に併せて示されるように、まず、１つのデータブロックにつき２つの書き換え用のデータのデータブロックと１つのダミーデータのデータブロックとが組となるように、上記書き換え用のデータ及びダミーデータを上記データブロック［１］からデータブロック［ｂ］まで順次に読み出す。そして、こうして読み出されたデータブロックＤＢ１〜ＤＢ３ｂの順序に従って、それらデータブロックＤＢ１〜ＤＢ３ｂを上記データフレームＤＦに各別に格納することにより、上記３つのデータを、データブロック単位（パケット単位）で上記複数のデータとして送信する。
【００８９】
一方、こうして上記複数のデータが上記管理センター２００から送信されると、車載制御装置１００では、先の第１の実施の形態とほぼ同様、マスタ制御装置１４０がまず、同複数のデータを受信してデータメモリ１４４に格納するための受信処理（図４）を実行する。次いで、これも同様、同複数のデータを書き換えの対象となるエンジン制御装置１１０に送信するための送信処理（図５）を実行する。
【００９０】
また、こうして上記複数のデータが上記エンジン制御装置１１０に送信されると、該エンジン制御装置１１０では、上記プログラムメモリ１１３内の書き換え対象となるデータ（プログラム）を書き換えるための処理を実行する。なお、この実施の形態においても、同処理は、先の図７にて示したステップＳ１３１〜Ｓ１３８の処理手順に基づき実行される。
【００９１】
ただし前述の通り、この実施の形態では、当該処理（図７）にあって、該エンジン制御装置１１０による上記複数のデータからの上記データの抽出態様（ステップＳ１３４）が異なっている。
【００９２】
ちなみに、この実施の形態では、上記複数のデータは、管理センター２００による上述の送信態様に対応して、図１１（ａ）に例示されるように、ブロック［１］〜［３ｂ］に分割されるとともに、該分割されたブロック毎にデータブロックＤＢ１〜ＤＢ３ｂとして、上記データメモリ１１４の第１のメモリ領域１１４ｃに格納されている。より具体的には、データブロック［１］からデータブロック［ｂ］までの各データブロックにつき２つの書き換え用のデータのデータブロックと１つのダミーデータのデータブロックとが組となる上述の態様で格納されている。
【００９３】
このような第１のメモリ領域１１４ｃに対し、上記データの抽出に際しては、同エンジン制御装置１１０がまず、上記複数のデータの照合として、これら３つのデータのうち、２つ以上のデータが一致するか否かを判断する一致チェック（照合）を実行する。ただし、この実施の形態でも、図１１（ａ）に示されるように、上記複数のデータの各対応するデータブロック毎にこうした一致チェック（照合）を実行する。そして、図１１（ｂ）に示されるように、上記複数のデータの各対応するデータブロック毎に、一致チェックが成立した１つのデータブロックを妥当性のあるデータとしてそれぞれ抽出し、それら各データブロックを上記データメモリ１１４の第２のメモリ領域１１４ｄに格納する。これにより、該第２のメモリ領域１１４ｄにおいて、上記抽出されたデータブロック［１］〜［ｂ］（データブロックＤＢ１、ＤＢ２、・・・、ＤＢ３ｂ−２）が順次結合され、上記複数のデータから上記書き換え用のデータが復号（抽出）されるようになる。
【００９４】
図１２は、この実施の形態にかかるこのようなデータ抽出処理（ステップＳ１３４）についてその具体態様を示すフローチャートであり、次に同図１２を参照して、該処理について説明する。なおここでは、説明の便宜上、上記ブロック［１］〜［３ｂ］（図１１）を、上記組とされる３つのデータブロック毎に、ブロック［３ｎ−２］、あるいはブロック［３ｎ−１］、あるいはブロック［３ｎ］（ただし、「ｎ」は整数）としてそれぞれ表すこととする。
【００９５】
このデータ抽出処理に際しては、図１２に示されるように、同エンジン制御装置１１０がまず、ステップＳ２１００の処理として、上記「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ２２００〜Ｓ２４００、及びＳ２７００の処理を繰り返し実行する。これにより、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）を１単位としたときの該単位毎に上述の一致チェック（照合）が実行されるようになる。
・上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）の間で一致チェック（一致比較）を実行する（ステップＳ２２００）。
・一致チェック（一致比較）の結果に基づき、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）からデータブロックの１つを抽出する（ステップＳ２３００）。
・全ブロック（ブロック［１］〜［３ｂ］）に対し、一致チェックが実行されたか否かの判断を行う（ステップＳ２４００）。
・上記「ｎ」に「１」を加算する（ステップＳ２７００）。
【００９６】
例えば、いま、上記ステップＳ２１００の処理において、上記「ｎ」に「１」が代入されたとすると、上記ステップＳ２２００の処理では、上記ブロック［１］〜［３ｂ］のうち、ブロック［１］〜［３］に対応するデータブロックＤＢ１〜ＤＢ３に関しての一致比較がまずは実行される。
【００９７】
すなわち、このステップＳ２２００の処理においては、まず、ステップＳ２２０１の処理として、上記データブロックＤＢ１及びデータブロックＤＢ２が互いに一致するか否かの判断を行う。また、このステップＳ２２０１の処理において、上記データブロックＤＢ１及びデータブロックＤＢ２が一致しなければ、同エンジン制御装置１１０は次に、ステップＳ２２０２の処理として、上記データブロックＤＢ１及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。またさらに、このステップＳ２００２の処理において、上記データブロックＤＢ１及びデータブロックＤＢ３が一致しなければ、次いで、ステップＳ２００３の処理として、上記データブロックＤＢ２及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。
【００９８】
ただし、上記ステップＳ２２０１〜Ｓ２２０３のいずれかの処理において、上記データブロックの一致が確認されれば、その時点で、上記組とされる３つのデータブロックのうちの２つ以上のデータブロックが一致した（一致チェックが成立した）として、次にステップＳ２３００の処理に移行する。そして、このステップＳ２３００の処理において、上記一致チェックが成立した（特定の法則が満たされた）２つのデータブロックの一方を抽出するようにしている。
【００９９】
例えば、このステップＳ２３００の処理にあって、ステップＳ２３０１の処理では、上記ステップＳ２２０１またはＳ２２０２の処理において上記データブロックＤＢ１が他のデータブロックと一致したとして、該データブロックＤＢ１を上記データブロックＤＢ１〜ＤＢ３から抽出する。一方、同ステップＳ２３００の処理にあって、ステップＳ２３０２の処理では、上記ステップＳ２２０３の処理において上記データブロックＤＢ２がデータブロックＤＢ３と一致したとして、該データブロックＤＢ２を上記データブロックＤＢ１〜ＤＢ３から抽出する。
【０１００】
そして、こうしてブロック［１］〜［３］に関しての一致チェックが成立すると、同エンジン制御装置１１０は次に、ブロック［４］〜［６］に関しての一致チェックを実行するための処理として、上記ステップＳ２４００及びＳ２７００の処理を実行する。
【０１０１】
そして上述の通り、こうしてステップＳ２７００の処理が実行されて後は、上記一連の処理（ステップＳ２２００〜Ｓ２４００、及びＳ２７００）が再度実行される。ただしここでは、先のステップＳ２７００の処理において上記「ｎ」に「１」が加算されたことにより、ブロック［４］〜［６］に対応するデータブロックＤＢ４〜ＤＢ６に関しての一致チェックが行われる。すなわち、上記ステップＳ２７００の処理において、上記「ｎ」に「１」が加算される都度、上記一致チェックの対象がブロック［４］〜［６］、ブロック［７］〜［９］、・・・、ブロック［３ｂ−２］〜［３ｂ］に順次変更され、それらブロックの間での一致チェックが行われるようになる（ステップＳ２２００）。
【０１０２】
また、こうしてステップＳ２２００〜Ｓ２４００、及びＳ２７００の処理が繰り返し実行されると、上記ステップＳ２４００の処理において、上記全ブロック（ブロック［１］〜［３ｂ］）に対して一致チェックが実行されたと判断され、同エンジン制御装置１１０は、次にステップＳ２５００及びＳ２６００の処理を行うようになる。すなわち、まず、ステップＳ２５００の処理として、先の図１１（ａ）及び（ｂ）に示したように、上記ステップＳ２３００の処理において上記データブロック［１］〜［ｂ］毎に上記妥当性のあるデータとして抽出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｂ−２）を読み出す。そして、これら読み出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｂ−２）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｄに格納する。そしてこの結果、上記第２のメモリ領域１１４ｄにおいて上記書き換え用のデータが復号されれば、次いでステップＳ２６００の処理として、上記一致フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
【０１０３】
ただし、上記ステップＳ２２００〜Ｓ２４００、及びＳ２７００の処理が繰り返し実行された結果、上記ステップＳ２２００（ステップＳ２２０３）の処理において、上記組とされる３つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる３つのデータブロックがいずれも一致しないと判断された時点で、上記一致フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップＳ１３５（図７）の処理では、前述の通り、該一致フラグのフラグ状態に基づき、上記書き換え用のデータが復号（抽出）されたか否かの判断を行うようになる。
【０１０４】
以上説明したように、この第２の実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置によっても、基本的には先の第１の実施の形態の前記（１）及び（２）の効果と同等、あるいはそれに準じた効果を得ることができるようになる。
【０１０５】
（第３の実施の形態）
次に、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置についてその第３の実施の形態を示す。なお、この実施の形態も、先の第２の実施の形態（図１）とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置１４０とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置１００が備える各制御装置の内部構造も、先の第２の実施の形態（図２）とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置１００がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ（書き換え用のデータ及びダミーデータ）を受信すること。
・上記受信される複数のデータ（書き換え用のデータ及びダミーデータ）を照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第２の実施の形態とほぼ同様である。
【０１０６】
ただし、この第３の実施の形態では、図１３及び図１４に、先の図１０及び図１１とそれぞれ比較して示すように、管理センター２００による上記複数のデータの送信態様、及び車載制御装置１００による上記データの抽出態様が異なっている。
【０１０７】
まず、図１３（ａ）〜（ｃ）を参照して、管理センター２００による上記複数のデータの送信態様について説明する。なお、図１３（ａ）は、管理センター２００と車載制御装置１００との間で授受されるデータのデータ構造を示したものである。また、図１３（ｂ）は、同管理センター２００において、上記複数のデータが格納されているメモリのメモリ構造をブロック図として示したものである。また、図１３（ｃ）は、同管理センター２００による上記複数のデータの送信態様をブロック図として示したものである。
【０１０８】
ちなみに、図１３（ａ）に示されるように、この実施の形態においても、上記管理センター２００及び車載制御装置１００の間では、データフレームＤＦを用いたパケット転送によって上記複数のデータ（書き換え用のデータ及びダミーデータ）が送信される。またこれも同様、これら複数のデータ（書き換え用のデータ及びダミーデータ）には、上記書き換えが要求されるデータとして同一の識別子（ＩＤ）が付与される。
【０１０９】
ただし、この実施の形態では、同管理センター２００は、図１３（ｂ）に示されるように、上記データ（プログラム）の書き換えを実行するための書き換え用のデータ（妥当性のあるデータ）に対して不一致となる３種類のダミーデータ（第１〜第３のダミーデータ）を、上記妥当性のないデータとして用意している。なお、上記書き換え用のデータも含めて、これら各データはいずれも、予め複数のブロックに分割されており、これら分割されたブロック毎にデータブロック［１］〜［ｃ］（ただし、「ｃ」は所定の整数）として所定のメモリの第１〜第４のメモリ領域２０１ｅ〜２０１ｈにそれぞれ格納されている。
【０１１０】
そして、図１３（ｃ）に併せて示されるように、上記複数のデータの送信に際しては、同管理センター２００がまず、上記書き換え用のデータ及びダミーデータを、以下の条件（イ）〜（ハ）の下に上記データブロック［１］からデータブロック［ｃ］まで順次に読み出す。
（イ）データブロック［１］からデータブロック［ｃ］までの各データブロックにつき５つのデータブロックが組となるかたちで読み出されること。
且つ、
（ロ）組とされる上記５つのデータブロックには、上記第１〜第３のダミーデータのうち、少なくとも１つのダミーデータのデータブロックが含まれること。
且つ、
（ハ）組とされる上記５つのデータブロックにあって、一致数が多数を占めるデータブロックが上記書き換え用のデータのデータブロックであること。
【０１１１】
そして、こうした条件の下で読み出されたデータブロックＤＢ１〜ＤＢ５ｃの順序に基づき、それらデータブロックＤＢ１〜ＤＢ５ｃを上記データフレームＤＦに各別に格納する。これによって、書き換え用のデータ及びダミーデータからなる複数（５つ）のデータが、データブロック単位（パケット単位）で順次送信されるようになる。
【０１１２】
一方、車載制御装置１００では、こうして送信される複数のデータを、図１４（ａ）に例示されるように、ブロック［１］〜［５ｃ］毎にデータブロックＤＢ１〜ＤＢ５ｃとして上記エンジン制御装置１１０内のデータメモリ１１４の第１のメモリ領域１１４ｅに格納する。そして、このようなメモリ構造をもって上記複数のデータを保持する第１のメモリ領域１１４ｅに対し、同エンジン制御装置１１０が、ステップＳ１３４の処理（データ抽出処理）として、上記書き換えが要求されるデータとしての妥当性のあるデータを以下のように抽出するようにしている。
【０１１３】
すなわち、この実施の形態では、図１４（ａ）に示されるように、上記第１のメモリ領域１１４ｅに格納されている複数のデータに対し、まず、一致数が多数を占めるデータが存在するか否かを判断する多数決チェック（照合）を実行する。なお、この多数決チェックは、上記組とされる５つのデータブロック（データブロック［１］〜［ｃ］）毎に実行される。そして、この多数決チェック（照合）の結果、一致数が多数を占めるデータが存在すれば、多数決チェックが成立した（特定の法則が満たされた）として、該データを、上記書き換えが要求されるデータとしての妥当性のあるデータとして読み出す。そしてその後に、図１４（ｂ）に併せて示されるように、こうして読み出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｃ−４）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｆに格納するようにしている。これにより、該第２のメモリ領域１１４ｆにおいて上記書き換え用のデータが復号（抽出）されるようになる。
【０１１４】
図１５は、この実施の形態にかかるデータ抽出処理（ステップＳ１３４）についてその具体態様を示すフローチャートであり、次に同図１５を参照して、該処理について説明する。なおここでは、説明の便宜上、上記ブロック［１］〜［５ｃ］（図１４）を、上記組とされる５つのデータブロック毎に、ブロック［５ｎ−４］、あるいはブロック［５ｎ−３］、あるいはブロック［５ｎ−２］、あるいはブロック［５ｎ−１］、あるいはブロック［５ｎ］（ただし、「ｎ」は整数）としてそれぞれ表すこととする。
【０１１５】
このデータ抽出処理に際しては、図１５に示されるように、同エンジン制御装置１１０がまず、ステップＳ３００１の処理として、上記「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ３１００〜Ｓ３４００、及びＳ３７００の処理を繰り返し実行する。これにより、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）を１単位としたときの該単位毎に上記多数決チェック（照合）が実行されるようになる。
・上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間で一致比較をそれぞれ実施し、その比較結果を記憶するための一致比較処理を行う（ステップＳ３１００）。
・上記一致比較処理の結果に基づき、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）に対して上記多数決チェックを実行するとともに、該多数決チェックが成立したことを条件に、多数決チェックが成立したか否かを示す多数決フラグをセットするための多数決チェック処理を行う（ステップＳ３２００）。
・上記多数決フラグのフラグ状態を確認する（ステップＳ３３００）。
・全ブロック（ブロック［１］〜［５ｃ］）に対し、多数決チェックが実行されたか否かの判断を行う（ステップＳ３４００）。
・上記「ｎ」に「１」を加算する（ステップＳ３７００）。
【０１１６】
すなわち、上記ステップＳ３１００の処理（一致比較処理）においては、まず、図１６（ａ）に示されるように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、ブロック［５ｎ−４］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行う。そして、このブロック［５ｎ−４］を基準とした一致比較が終了すれば、次いで、図１６（ｂ）に示されるように、上記ブロック［５ｎ−３］に対応するデータブロックを基準とした一致比較を実行する。また、このブロック［５ｎ−３］を基準とした一致比較が終了すれば、図１６（ｃ）及び（ｄ）に示されるように、上記ブロック［５ｎ−２］に対応するデータブロック、さらには上記ブロック［５ｎ−１］に対応するデータブロックを基準とした一致比較を順次に実行する。
【０１１７】
そして、同図１６（ａ）〜（ｄ）に示されるように、こうした一致比較処理の結果として、ブロック［５ｎ−４］〜ブロック［５ｎ−１］の一致数がそれぞれ、「２」、「１」、「０」、「１」であったとすると、次のステップＳ３２００の処理では、ブロック［５ｎ−４］の一致数が多数であると判断する。そしてこの場合、上記ブロック［５ｎ−４］に対応するデータブロックを上記書き換えが要求されるデータとしての妥当性のあるデータとして上記組とされる５つのデータブロックから抽出するとともに、上記多数決チェックが成立したことを示す多数決フラグをセットすることとなる。
【０１１８】
また、上記ステップＳ３４００の処理では、上記多数決フラグがセット状態にあることを条件に（ステップＳ３３００）、全ブロック（ブロック［１］〜［５ｃ］）に対して上記多数決チェック処理（ステップＳ３２００）が実行されたか否かを判断する。そしてこの結果、全ブロック（ブロック［１］〜［５ｃ］）に対して上記多数決チェック処理が実行されていなければ、同エンジン制御装置１１０は、次にステップＳ３７００の処理として、上記「ｎ」に「１」を加算する。そしてこの上で、上記ステップＳ３１００及びＳ３２００の処理を再度実行することにより、上記組とされる５つのデータブロックの次の単位（組）を対象としての上記多数決チェックを行う。
【０１１９】
そして、こうしたステップＳ３１００〜Ｓ３４００、及びＳ３７００の処理が繰り返し実行された結果、上記ステップＳ３４００の処理において、全ブロック（ブロック［１］〜［５ｃ］）に対して上記多数決チェック処理（ステップＳ３２００）が実行されたと判断されるようになると、同エンジン制御装置１１０は、次にステップＳ３５００及びＳ３６００の処理を行う。すなわち、まず、ステップＳ３５００の処理として、先の図１４（ａ）及び（ｂ）に示したように、上記ステップＳ３２００の処理において上記データブロック［１］〜［ｃ］毎に上記妥当性のあるデータとして抽出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｃ−４）を読み出す。そして、これら読み出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｃ−４）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｆに格納する。そしてこの結果、上記第２のメモリ領域１１４ｆにおいて上記書き換え用のデータが復号されれば、次いでステップＳ３６００の処理として、上記多数決フラグのセット状態を確定した時点で、この制御を終了する。
【０１２０】
ただし、上記ステップＳ３１００〜Ｓ３４００、及びＳ３７００の処理が繰り返し実行された結果、上記ステップＳ３３００の処理において、上記多数決フラグがリセット状態にある場合もある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記多数決フラグがリセット状態にあると確認された時点で、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップＳ１３５（図７）の処理では、前述の通り、該多数決フラグのフラグ状態に基づき、上記書き換え用のデータが復号（抽出）されたか否かの判断を行うようになる。
【０１２１】
ここで、図１７及び図１８は、上記一致比較処理（ステップＳ３１００）及び多数決チェック処理（ステップＳ３２００）のアルゴリズムについてそれらの一例をそれぞれフローチャートとして示したものである。
【０１２２】
まず、図１７を参照して、上記一致比較処理（ステップＳ３１００）を説明する。
上述の通り、この一致比較処理では、先の図１６に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間で一致比較をそれぞれ実施するとともに、その比較結果をそれらデータブロック（（ブロック［５ｎ−４］〜［５ｎ］））毎に記憶する。この点、この実施の形態では、図１７に示されるように、適宜に操作可能な変数「ｊ」、「ｋ」、及び上記比較結果としての一致数を演算するための複数の一致数カウンタを以下のようにそれぞれ操作することで、このような一致比較処理を実現している。
【０１２３】
すなわち、同図１７に示されるように、この一致比較処理に際しては、上記エンジン制御装置１１０がまず、ステップＳ３１０１の処理として、上記複数の一致数カウンタの各カウンタ値をクリアする。次いで、ステップＳ３１０２の処理として、上記変数「ｊ」を「０」に設定するとともに、上記変数「ｋ」を「１」に設定する。そしてこの上で、以下のステップＳ３１０３〜Ｓ３１０８の処理を繰り返し実行する。これにより、先の図１６（ａ）に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、ブロック［５ｎ−４］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較が行われるようになる。
・上記変数「ｊ」及び「ｋ」を加算して、該加算値と上記組とされるデータブロックの数である基準値「５」との間での大小比較を行う（ステップＳ３１０３）。
・上記ステップＳ３１０３の処理において、上記変数「ｊ」及び「ｋ」の加算値が「５」未満であることを条件に、ブロック［５ｎ−４＋ｊ］に対応するデータブロックと、ブロック［５ｎ−４＋ｊ＋ｋ］に対応するデータブロックとの間で一致比較を行う（ステップＳ３１０４）。
・上記ステップＳ３１０４の処理において、上記２つのデータブロックが一致したことを条件に、上記ブロック［５ｎ−４＋ｊ］に対応するデータブロックが、一致数が多数を占めるデータとして抽出されるべきデータの候補（候補データ［５ｎ−４＋ｊ］）として登録済みか否かを確認する（ステップＳ３１０５）。
・上記ステップＳ３１０５の処理において、上記抽出されるべきデータの候補として登録されていないことを条件に、上記ブロック［５ｎ−４＋ｊ］に対応するデータブロックを候補データ［５ｎ−４＋ｊ］として登録する（ステップＳ３１０６）。
・上記ステップＳ３１０４において、上記２つのデータが一致したことを条件に、ブロック［５ｎ−４＋ｊ］に対応するデータブロックの一致数（比較結果）を示す一致数カウンタ［５ｎ−４＋ｊ］をカウントアップする（ステップＳ３１０７）。
・上記変数「ｋ」に「１」を加算する（ステップＳ３１０８）。
【０１２４】
例えば、いま、上記ステップＳ３１０１及びＳ３１０２の処理において、上記複数の一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値がクリアされるとともに、上記変数「ｊ」が「０」、変数「ｋ」が「１」にそれぞれ設定されたとすると、上記ステップＳ３１０３の処理では、上記変数「ｊ」及び「ｋ」の加算値が基準値「５」未満であると判断される。次いで、上記ステップＳ３１０４の処理では、ブロック［５ｎ−４］に対応するデータブロックを基準として、ブロック［５ｎ−３］に対応するデータブロックとの間での一致比較が行われる。この結果、これら２つのデータブロックが一致したと判断されれば、次にステップＳ３１０５及びＳ３１０６の処理として、このブロック［５ｎ−４］に対応するデータブロックが、一致数が多数を占めるデータとして抽出されるべき候補（候補データ［５ｎ−４］）として登録される。そして次に、ステップＳ３１０７の処理として、該ブロック［５ｎ−４］に対応するデータブロックの一致数を示す一致数カウンタ［５ｎ−４］がカウントアップされ、すなわち該一致数カウンタ［５ｎ−４］についてカウンタ値「１」を得る。そしてその後、次のステップＳ３１０８の処理において、上記変数「ｋ」に「１」が加算されることとなる。
【０１２５】
ただし、上記ステップＳ３１０４の処理においては、上記２つのデータが一致しないと判断される場合もある。この場合には、上記候補データ［５ｎ−４］として登録する処理（ステップＳ３１０６）や、上記一致数カウンタ［５ｎ−４］をカウンタ操作する処理（ステップＳ３１０７）を実行することなく、上記ステップＳ３１０８の処理に移行する。すなわち、上記２つのデータが一致しないと判断した時点で、上記変数「ｋ」に「１」を加算することとなる。
【０１２６】
そして上述の通り、こうしてステップＳ３１０８の処理が実行されて後は、上記一連の処理（ステップＳ３１０３〜Ｓ３１０８）が再度実行される。ただしここでは、先のステップＳ３１０８の処理において上記変数「ｋ」に「１」が加算されたことにより、ブロック［５ｎ−４］に対応するデータブロックを基準として、上記ブロック［５ｎ−２］との間での一致比較が行われる。すなわち、上記ステップＳ３１０８の処理において、上記変数「ｋ」に「１」が加算される都度、上記ブロック［５ｎ−４］の一致比較の対象がブロック［５ｎ−３］、ブロック［５ｎ−２］、ブロック［５ｎ−１］、ブロック［５ｎ］に順次変更され、それらブロックの間での一致比較が行われるようになる（ステップＳ３１０４）。そして、こうした処理を通じて操作される上記一致数カウンタ［５ｎ−４］のカウンタ値が、最終的には、上記ブロック［５ｎ−４］の一致比較の結果（図１６（ａ）では、一致数「２」）として得られるようになる（ステップＳ３１０７）。
【０１２７】
また、こうしてステップＳ３１０３〜Ｓ３１０８の処理が繰り返し実行されると、上記ステップＳ３１０３の処理において、上記変数「ｊ」及び「ｋ」の加算値が「５」となり、基準値「５」未満でないと判断され、次にステップＳ３１１１の処理に移行するようになる。すなわちこの場合、上記変数「ｋ」が「５」となっており、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、ブロック［５ｎ−４］を基準とした一致比較の実行が全て完了されている。したがって、次のステップＳ３１１１の処理では、先の図１６（ｂ）に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、一致比較の基準となるブロックを、上記ブロック［５ｎ−４］からブロック［５ｎ−３］に変更するための処理として、上記変数「ｊ」に「１」を加算する。また併せて、該ブロック［５ｎ−３］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行うための処理として、上記変数「ｋ」を「１」に設定する（変数「ｋ」をクリアする）。そして、こうして操作された変数「ｊ」が、上記基準値「５」から「１」を減算された値「４」よりも小さいことを条件に（ステップＳ３１１２）、上記ステップＳ３１０３〜Ｓ３１０８の繰り返しの処理を再度実行し、これによって上記ブロック［５ｎ−３］を基準とした一致比較が行われるようになる。
【０１２８】
ただしここで、この実施の形態では、先の図１６（ｂ）にも示したように、ブロック［５ｎ−３］を基準とした一致比較においては、上記ブロック［５ｎ−４］との間での一致比較についてはこれを実行しないこととしている。すなわち、ブロック［５ｎ−３］とブロック［５ｎ−４］との間での一致比較は、先のブロック［５ｎ−４］を基準とした一致比較において既に実行されており、ここでは該処理の割愛を通じて当該データ抽出処理（ステップＳ１３５）にかかる処理負荷の軽減を図るようにしている。なお、一致比較にかかるこうした処理態様は、先の図１６（ｃ）及び（ｄ）に示したように、ブロック［５ｎ−２］やブロック［５ｎ−１］を基準とした一致比較においても同様に適用されている。このため、この実施の形態では、ブロック［５ｎ］を基準とした一致比較は実行されない。
【０１２９】
そして、上記ステップＳ３１１１及びＳ３１１２の処理を通じて、ブロック［５ｎ−３］、［５ｎ−２］、［５ｎ−１］を基準とした上記一連の処理（ステップ３１０３〜Ｓ３１０８）が順次に繰り返し実行されると、最終的には、上記ステップＳ３１１２の処理において、上記変数「ｊ」が「４」未満でないと判断されるようになる。すなわちこの場合、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間での一致比較は全て完了しており、上記変数「ｊ」が「４」未満でないと判断された時点で、この制御が一旦終了される。
【０１３０】
ただし上述の通り、その後に、上記ステップＳ３７００の処理において、上記「ｎ」に「１」が加算されれば、上記組とされる５つのデータブロックを１単位としたときの次の単位（組）を対象として当該一致比較処理（図１７）が再実行されることとなる。
【０１３１】
次に、図１８を参照して、多数決チェック処理（ステップＳ３２００）を説明する。
上述の通り、先の一致比較処理（ステップＳ３２００）においては、図１６（ａ）〜（ｄ）に示されるように、上記ブロック［５ｎ−４］〜［５ｎ−１］に対応するデータブロックの一致数が、上記一致数カウンタ［５ｎ−４］〜［５ｎ−１］のカウンタ値としてそれぞれ算出される。
【０１３２】
これに対し、この多数決チェック処理では、上述の通り、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）に一致数が多数を占めるデータが存在するか否かの判断を行うとともに、該データが存在することを条件に上記多数決フラグをセットする。この点、この実施の形態では、図１８に示されるように、適宜に操作可能な上記変数「ｊ」、及び一致数が多数を占めるブロックの一致数を示すＭａｘカウンタを以下のようにそれぞれ操作することにより、このような多数決チェック処理を実現している。
【０１３３】
すなわち、同図１８に示されるように、この多数決チェック処理に際しては、上記エンジン制御装置１１０がまず、ステップＳ３２０１の処理として、上記Ｍａｘカウンタのカウンタ値をクリアする。次いで、ステップＳ３２０２の処理として、上記変数「ｊ」を「０」に設定するとともに、上記多数決フラグをリセットする。そしてこの上で、以下のステップＳ３２０３〜Ｓ３２０８、並びにＳ３２１１、Ｓ３２１２の処理を繰り返し実行する。これにより、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）に一致数が多数を占めるデータが存在するか否かの判断（多数決チェック処理）が行われるようになる。
・上記変数「ｊ」と、上記基準値「５」から「１」を減算された値「４」との間での大小比較を行う（ステップＳ３２０３）。
・上記ステップＳ３２０３の処理において、上記変数「ｊ」が「４」未満であることを条件に、ブロック［５ｎ−４＋ｊ］に対応するデータブロックの一致数を示す上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値と、上記Ｍａｘカウンタのカウンタ値との間での大小比較を行う（ステップＳ３２０４）。
・上記ステップＳ３２０４の処理において、上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値が上記Ｍａｘカウンタよりも大きいことを条件に、これら２つのカウンタのカウンタ値が一致するように、同Ｍａｘカウンタのカウンタ値を操作（カウントアップ）する（ステップＳ３２０５）。
・同じく、上記ステップＳ３２０４の処理において、上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値が上記Ｍａｘカウンタよりも大きいことを条件に、ブロック［５ｎ−４＋ｊ］の対応するデータブロック（候補データ［５ｎ−４＋ｊ］）を、一致数が多数を占める確定データ（妥当性のあるデータ）として登録する（ステップＳ３２０６）。
・同じく、上記ステップＳ３２０４の処理において、上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値が上記Ｍａｘカウンタよりも大きいことを条件に、上記多数決フラグをセットする（ステップＳ３２０７）。
・上記変数「ｊ」に「１」を加算する（ステップＳ３２０８）。
・上記ステップＳ３２０３の処理において、上記変数「ｊ」が「４」未満でないことを条件に、ブロック［５ｎ−４＋ｊ］に対応するデータブロックの一致数を示す上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値と、上記Ｍａｘカウンタのカウンタ値との間での一致比較を行う（ステップＳ３２１１）。
・上記ステップＳ３２１１の処理において、上記一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値と、上記Ｍａｘカウンタのカウンタ値とが一致したことを条件に、上記多数決フラグをリセットする（ステップＳ３２１２）。
【０１３４】
例えば、いま、上記ステップＳ３２０１及びＳ３２０２の処理において、Ｍａｘカウンタのカウンタ値がクリアされるとともに、上記変数「ｊ」が「０」に設定されたとすると、上記ステップＳ３２０３の処理では、上記変数「ｊ」が上記基準値「５」から「１」を減算された値「４」未満であると判断される。次いで、上記ステップＳ３２０４の処理では、上記候補データ［５ｎ−４］の一致数を示す上記一致数カウンタ［５ｎ−４］のカウンタ値と、上記Ｍａｘカウンタのカウンタ値との間での大小比較が行われる。この結果、上記一致数カウンタ［５ｎ−４］のカウンタ値が上記Ｍａｘカウンタよりも大きい場合には、上記候補データ［５ｎ−４］として登録された上記ブロック［５ｎ−４］に対応するデータブロックが、一致数が多数を占めるデータとして判断される。したがって、次のステップＳ３２０６の処理においては、上記Ｍａｘカウンタのカウンタ値が、上記一致数カウンタ［５ｎ−４］のカウンタ値と一致するように操作（カウントアップ）される。そして次に、ステップＳ３２０６及びＳ３２０７の処理として、候補データ［５ｎ−４］が、一致数が多数を占める確定データ（妥当性のあるデータ）として登録されるとともに、上記多数決フラグがセットされる。そしてその後、次のステップＳ３２０８の処理において、上記変数「ｊ」に「１」が加算されることとなる。
【０１３５】
ただし、上記ステップＳ３２０４の処理においては、上記候補データ［５ｎ−４］の一致数を示す上記一致数カウンタ［５ｎ−４］のカウンタ値が、上記Ｍａｘカウンタのカウンタ値以下であると判断される場合もある。この場合には、上記Ｍａｘカウンタが、一致数が多数を占めるブロックの一致数を示すカウンタとして既に機能している。したがって、上記ステップＳ３２０５〜Ｓ３２０７の処理が行われることなく、後述のステップＳ３２１１やＳ３２１２が実行された時点で、上記ステップＳ３２０８の処理において、上記変数「ｊ」に「１」が加算されることとなる。
【０１３６】
そして上述の通り、こうしてステップＳ３２０８の処理が実行されて後は、上記一連の処理（ステップＳ３２０３〜Ｓ３２０８、並びにＳ３２１１及びＳ３２１２）が再度実行される。ただしここでは、先のステップＳ３２０８の処理において上記変数「ｊ」に「１」が加算されたことにより、上記候補データ［５ｎ−３］（ブロック［５ｎ−３］に対応するデータブロック）の一致結果を示す上記一致数カウンタ［５ｎ−３］が上記確定データ（妥当性のあるデータ）となるか否かの判断が行われる。すなわち、上記ステップＳ３２０８の処理において、上記変数「ｊ」に「１」が加算される都度、上記Ｍａｘカウンタのカウンタ値との比較対象が一致数カウンタ［５ｎ−３］、一致数カウンタ［５ｎ−２］、一致数カウンタ［５ｎ−１］に順次変更され、それら各カウンタ値の間での大小比較が行われるようになる（ステップＳ３２０４）。そして、こうした処理を通じて上記確定データ（妥当性のあるデータ）として登録される候補データが、最終的には、上記組とされる上記５つのデータブロックから抽出されるべきデータとして得られるようになる（ステップＳ３２０７）。
【０１３７】
また、こうしてステップＳ３２０３〜Ｓ３２０８、並びにステップＳ３２１１、Ｓ３２１２の処理が繰り返し実行されると、上記ステップＳ３２０３の処理において、上記変数「ｊ」が「４」となり、基準値「４」未満でないと判断されるようになる。そしてこの場合、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）に一致数が多数を占めるデータが存在するか否かの判断（多数決チェック処理）は既に完了している。したがって、上記ステップＳ３２０３の処理において上記変数「ｊ」が基準値「４」未満でないと判断された時点で、この制御は一旦終了される。
【０１３８】
ただし上述の通り、その後に、上記ステップＳ３７００の処理において、上記「ｎ」に「１」が加算されれば、上記組とされる５つのデータブロックを１単位としたときの次の単位（組）を対象として当該多数決チェック処理（図１８）が再実行されることとなる。
【０１３９】
ところで、このように上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）を対象として当該多数決チェックが実行される場合、例えば、図１９に例示されるように、上記ステップＳ３１００の処理では、候補データ［５ｎ−４］及び候補データ［５ｎ−２］の一致数が同数で多数となる一致結果が得られる場合もある。そして、このように一致数が同数で多数となるブロック（ブロック［５ｎ−４］及び［５ｎ−２］）が複数存在する場合、それらブロックに対応するデータブロックの１つを上記書き換えが要求されるデータとしての妥当性のあるデータとして選択的に抽出することは困難となる。そこで、この実施の形態では、上記ステップＳ３２０４の処理において、例えば一致数カウンタ［５ｎ−２］のカウンタ値が上記Ｍａｘカウンタのカウンタ値以下であると判断されたとき、次いでステップＳ３２１１の処理として、これら２つのカウンタ値が一致するか否かの判断を行う。そしてこの結果、これら２つのカウンタ値が一致したときには、次の上記ステップＳ３２１２の処理において、このデータ抽出処理（ステップＳ１３４）を保留とすべく、上記多数決フラグをリセットするようにしている。これにより、このステップＳ３２００の多数決チェック処理において、該多数決フラグのリセット状態が維持されれば、上記ステップＳ３３００の処理において、上記多数決フラグがリセット状態にあることに基づき、このデータ抽出処理（ステップＳ１３４）が強制的に終了されるようになる。
【０１４０】
以上説明したように、この第３の実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置によっても、基本的には先の第１の実施の形態の前記（１）及び（２）の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
【０１４１】
（３）一致数が同数で多数となるブロックが複数存在すると判断された時点で、上記データ抽出処理（ステップＳ１３４）を強制的に終了するようにしたため、上記データの書き換えにかかるセキュリティレベルをより好適に維持することができるようになる。
【０１４２】
なお、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置は、組とされる３つのデータブロックを１単位として上記多数決チェックを行うとした場合、上記第３の実施の形態として示した処理態様に限らず、これを適宜に変形した、例えば以下に例示する態様にて実施することもできる。
【０１４３】
（変形例）
上記実施の形態では、図１５〜図１８にそれぞれ示した処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理（ステップＳ１３４）を実行することとした。ただし、組とされる３つのデータブロックを１単位として上記多数決チェックを行うとする場合には、これに代えて、例えば図２１に示される処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理（ステップＳ１３４）を実行するようにすることもできる。
【０１４４】
ちなみにここでは、上記管理センター２００が先の図１０（ａ）〜（ｃ）に準じたかたちで上記複数のデータを送信する。これに対し、車載制御装置１００では、こうして送信される複数のデータを、図２０（ａ）に例示されるように、ブロック［１］〜［３ｄ］毎にデータブロックＤＢ１〜ＤＢ３ｄとして上記エンジン制御装置１１０内のデータメモリ１１４の第１のメモリ領域１１４ｇに格納する。そして、こうしたデータブロックＤＢ１〜ＤＢ３ｄに対し、図２１に示される処理手順及び処理態様をもって上記多数決チェックに基づくデータ抽出処理（ステップＳ１３４）を実行することによって、図２０（ｂ）に併せて示されるように、上記複数のデータから上記書き換え用のデータを復号（抽出）するようにしている。
【０１４５】
以下、図２１を参照して、この変形例にかかるデータ抽出処理（ステップＳ１３４）について説明する。なおここでは、説明の便宜上、上記ブロック［１］〜［３ｄ］（図２０）を、上記組とされる３つのデータブロックに対応して、ブロック［３ｎ−２］、あるいはブロック［３ｎ−１］、あるいはブロック［３ｎ］として（ただし、「ｎ」は整数）としてそれぞれ表すこととする。
【０１４６】
このデータ抽出処理に際しては、図２１に示されるように、同エンジン制御装置１１０がまず、ステップＳ４１００の処理として、上記「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ４２００〜Ｓ４４００、及びＳ４７００の処理を繰り返し実行する。これにより、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）を１単位としたときの該単位毎に上記多数決チェック（照合）が実行されるようになる。
・上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）の間で多数決チェック（一致比較）を実行する（ステップＳ４２００）。
・上記多数決チェック（一致比較）の結果に基づき、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）から一致数が多数を占めるデータブロックの１つを抽出する（ステップＳ４３００）。
・全ブロック（ブロック［１］〜［３ｄ］）に対し、多数決チェックが実行されたか否かの判断を行う（ステップＳ４４００）。
・上記「ｎ」に「１」を加算する（ステップＳ４７００）。
【０１４７】
例えば、いま、上記ステップＳ４１００の処理において、上記「ｎ」に「１」が代入されたとすると、上記ステップＳ４２００の処理では、上記ブロック［１］〜［３ｄ］のうち、ブロック［１］〜［３］に対応するデータブロックＤＢ１〜ＤＢ３に関しての多数決チェックがまずは実行される。
【０１４８】
すなわち、このステップＳ４２００の処理においては、まず、ステップＳ４２０１の処理として、上記データブロックＤＢ１及びデータブロックＤＢ２が互いに一致するか否かの判断を行う。また、このステップＳ４２０１の処理において、上記データブロックＤＢ１及びデータブロックＤＢ２が一致しなければ、同エンジン制御装置１１０は次に、ステップＳ４２０２の処理として、上記データブロックＤＢ１及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。またさらに、このステップＳ４００２の処理において、上記データブロックＤＢ１及びデータブロックＤＢ３が一致しなければ、次いで、ステップＳ４００３の処理として、上記データブロックＤＢ２及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。
【０１４９】
ただしここでは、上記組とされる３つのデータブロックを１単位としたときの該単位毎に上記多数決チェック（照合）を実行することとしている。このため、上記ステップＳ４２００の処理では、データブロックの一致が確認された時点で、それら２つのデータブロックを、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）のうちの一致数が多数を占めるデータの組として判断することも可能である。そこでこの変形例では、上記ステップＳ４２０１〜Ｓ４２０３のいずれかの処理において、上記データブロックの一致が確認された時点で、上記組とされる３つのデータブロックに一致数が多数を占めるデータが存在するとして、次にステップＳ４３００の処理に移行する。そして、このステップＳ４３００の処理において、上記多数決チェック（一致比較）の結果に基づき、上記一致が確認された２つのデータブロックの一方を抽出するようにしている。
【０１５０】
例えば、このステップＳ４３００の処理にあって、ステップＳ４３０１の処理では、上記ステップＳ４２０１またはＳ４２０２の処理において上記データブロックＤＢ１が他のデータブロックと一致したとして、該データブロックＤＢ１を上記データブロックＤＢ１〜ＤＢ３から抽出する。一方、同ステップＳ４３００の処理にあって、ステップＳ４３０２の処理では、上記ステップＳ４２０３の処理において上記データブロックＤＢ２がデータブロックＤＢ３と一致したとして、該データブロックＤＢ２を上記データブロックＤＢ１〜ＤＢ３から抽出する。
【０１５１】
そして、こうしてブロック［１］〜［３］に関しての多数決チェックが成立すると、同エンジン制御装置１１０は次に、ブロック［４］〜［６］に関しての多数決チェックを実行するための処理として、上記ステップＳ４４００及びＳ４７００の処理を実行する。
【０１５２】
そして上述の通り、こうしてステップＳ４７００の処理が実行されて後は、上記一連の処理（ステップＳ４２００〜Ｓ４４００、及びＳ４７００）が再度実行される。ただしここでは、先のステップＳ４７００の処理において上記「ｎ」に「１」が加算されたことにより、ブロック［４］〜［６］に対応するデータブロックＤＢ４〜ＤＢ６に関しての多数決チェックが行われる。すなわち、上記ステップＳ４７００の処理において、上記「ｎ」に「１」が加算される都度、上記一致チェックの対象がブロック［４］〜［６］、ブロック［７］〜［９］、・・・、ブロック［３ｄ−２］〜［３ｄ］に順次変更され、それらブロックの間での多数決チェックが行われるようになる（ステップＳ４２００）。
【０１５３】
また、こうしてステップＳ４２００〜Ｓ４４００、及びＳ４７００の処理が繰り返し実行されると、上記ステップＳ４４００の処理において、上記全ブロック（ブロック［１］〜［３ｄ］）に対して多数決チェックが実行されたと判断され、同エンジン制御装置１１０は、次にステップＳ４５００及びＳ４６００の処理を行うようになる。すなわち、まず、ステップＳ４５００の処理として、先の図２０（ａ）及び（ｂ）に示したように、上記ステップＳ４３００の処理において上記データブロック［１］〜［ｄ］毎に上記妥当性のあるデータとして抽出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｄ−２）を読み出す。そして、これら読み出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｄ−２）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｈに格納する。そしてこの結果、上記第２のメモリ領域１１４ｈにおいて上記書き換え用のデータが復号されれば、次いでステップＳ４６００の処理として、上記多数決フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
【０１５４】
ただし、上記ステップＳ４２００〜Ｓ４４００、及びＳ４７００の処理が繰り返し実行された結果、上記ステップＳ４２００（ステップＳ４２０３）の処理において、上記組とされる３つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる３つのデータブロックがいずれも一致しないと判断された時点で、上記多数決フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップＳ１３５（図７）の処理では、前述の通り、該多数決フラグのフラグ状態に基づき、上記書き換え用のデータが復号（抽出）されたか否かの判断を行うようになる。
【０１５５】
したがって、このような変形例によっても、上記（１）〜（２）と同様の効果が得られるようになる。また新たに、
（４）データブロックの一致が確認された時点で、それら２つのデータブロックを、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）のうちの一致数が多数を占めるデータの組として判断するようにしたため、多数決チェックにかかる処理負荷の軽減が図られるようになる。
といった効果が得られることともなる。
【０１５６】
（第４の実施の形態）
次に、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置についてその第４の実施の形態を示す。なお、この実施の形態も、先の第３の実施の形態（図１）とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置１４０とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置１００が備える各制御装置の内部構造も、先の第３の実施の形態（図２）とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置１００がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ（書き換え用
のデータ及びダミーデータ）を受信すること。
・上記受信される複数のデータ（書き換え用のデータ及びダミーデータ）を照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第３の実施の形態とほぼ同様である。
【０１５７】
また、上記管理センター２００による送信処理も、先の第３の実施の形態（図１３（ａ）〜（ｃ）参照）に準じたかたちで行われる。ただし、この実施の形態では、上記複数のデータの送信に際しては、同管理センター２００がまず、上記書き換え用のデータ及びダミーデータを、以下の条件（ニ）〜（ヘ）の下に上記データブロック［１］からデータブロック［ｅ］まで順次に読み出す。
（ニ）データブロック［１］からデータブロック［ｅ］までの各データブロックにつき５つのデータブロックが組となるかたちで読み出されること。
且つ、
（ホ）組とされる上記５つのデータブロックには、第１〜第３のダミーデータのうち、少なくとも１つのダミーデータのデータブロックが含まれること。
且つ、
（ヘ）組とされる上記５つのデータブロックにあって、過半数を占めるデータブロックが上記書き換え用のデータのデータブロックであること。
【０１５８】
そして、こうした条件の下で読み出されたデータブロックＤＢ１〜ＤＢ５ｅの順序に基づき、それらデータブロックＤＢ１〜ＤＢ５ｅを上記データフレームＤＦ（図１３（ａ））に各別に格納する。これによって、書き換え用のデータ及びダミーデータからなる複数（５つ）のデータが、データブロック単位（パケット単位）で順次送信されるようになる。
【０１５９】
一方、車載制御装置１００では、こうして送信される複数のデータを、図２２（ａ）に例示されるように、ブロック［１］〜［５ｅ］毎にデータブロックＤＢ１〜ＤＢ５ｅとして上記エンジン制御装置１１０内のデータメモリ１１４の第１のメモリ領域１１４ｉに格納する。そして、このようなメモリ構造をもって上記複数のデータを保持する第１のメモリ領域１１４ｉに対し、この実施の形態にかかるエンジン制御装置１１０は、ステップＳ１３４の処理（データ抽出処理）として、上記書き換えが要求されるデータとしての妥当性のあるデータを以下のように抽出するようにしている。
【０１６０】
すなわち、この実施の形態では、図２２（ａ）に示されるように、上記第１のメモリ領域１１４ｉに格納されている複数のデータに対し、まず、それらデータのうちの過半数が一致するか否かを判断する過半数チェック（照合）を実行する。なお、この過半数チェックは、上記組とされる５つのデータブロック（データブロック［１］〜［ｅ］）毎に実行される。そして、この過半数チェック（照合）の結果、上記組とされる５つのデータブロックのうちの過半数が一致したと判断されれば、それらデータの一つを、上記書き換えが要求されるデータとしての妥当性のあるデータとして読み出す。そしてその後に、図２２（ｂ）に併せて示されるように、こうして読み出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｅ−４）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｊに格納するようにしている。これにより、該第２のメモリ領域１１４ｊにおいて上記書き換え用のデータが復号（抽出）されるようになる。
【０１６１】
図２３は、この実施の形態にかかるデータ抽出処理（ステップＳ１３４）についてその具体態様を示すフローチャートであり、次に同図２３を参照して、同処理について説明する。なおここでは、説明の便宜上、上記ブロック［１］〜［５ｅ］（図２２）を、上記組とされる５つのデータブロック毎に、ブロック［５ｎ−４］、あるいはブロック［５ｎ−３］、あるいはブロック［５ｎ−２］、あるいはブロック［５ｎ−１］、あるいはブロック［５ｎ］（ただし、「ｎ」は整数）としてそれぞれ表すこととする。
【０１６２】
このデータ抽出処理に際しては、同図２３に示されるように、エンジン制御装置１１０がまず、ステップＳ５００１の処理として、上記「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ５１００〜Ｓ５３００、及びＳ５６００の処理を繰り返し実行する。これにより、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）を１単位としたときの該単位毎に上記過半数チェック（照合）が実行されるようになる。
・上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）に対して上記過半数チェックを実行するとともに、該過半数チェックが成立したことを条件に、過半数チェックが成立したか否かを示す過半数フラグをセットするための過半数チェック処理を行う（ステップＳ５１００）。
・上記過半数フラグのフラグ状態を確認する（ステップＳ５２００）。
・全ブロック（ブロック［１］〜［５ｅ］）に対し、過半数チェックが実行されたか否かの判断を行う（ステップＳ５３００）。
・上記「ｎ」に「１」を加算する（ステップＳ５６００）。
【０１６３】
例えば、上記ステップＳ５１００の処理（過半数チェック処理）では、先の第３の実施の形態におけるステップＳ３１００の処理とほぼ同様、先の図１６（ａ）〜（ｄ）に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間での一致比較をまずは行う。すなわち、まず、図１６（ａ）に示されるように、ブロック［５ｎ−４］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行う。そして、このブロック［５ｎ−４］を基準とした一致比較が終了すれば、次いで、図１６（ｂ）に示されるように、上記ブロック［５ｎ−３］に対応するデータブロックを基準とした一致比較を実行する。また、このブロック［５ｎ−３］を基準とした一致比較が終了すれば、図１６（ｃ）及び（ｄ）に示されるように、上記ブロック［５ｎ−２］に対応するデータブロック、さらには上記ブロック［５ｎ−１］に対応するデータブロックを基準とした一致比較を順次に実行する。
【０１６４】
ただし、この実施の形態では、例えば、図１６（ａ）に例示されるように、ブロック［５ｎ−４］を基準にした一致比較が実行された結果、該ブロック［５ｎ−４］の一致数が「２」となった時点で、上記組とされる５つのデータブロックのうちの過半数が一致したと判断する。そしてこの場合、上記ブロック［５ｎ−４］に対応するデータブロックを上記書き換えが要求されるデータとしての妥当性のあるデータとして上記組とされる５つのデータブロックから抽出するとともに、上記過半数チェックが成立したことを示す過半数フラグをセットすることとなる。
【０１６５】
また、上記ステップＳ５３００の処理では、上記過半数フラグがセット状態にあることを条件に（ステップＳ５２００）、全ブロック（ブロック［１］〜［５ｅ］）に対して上記過半数チェック処理（ステップＳ５１００）が実行されたか否かを判断する。そしてこの結果、全ブロック（ブロック［１］〜［５ｅ］）に対して上記過半数チェック処理が実行されていなければ、同エンジン制御装置１１０は、次にステップＳ５６００の処理として、上記「ｎ」に「１」を加算する。そしてこの上で、上記ステップＳ５１００の処理を再度実行することにより、上記組とされる５つのデータブロックの次の単位（組）を対象としての上記過半数チェックを行う。
【０１６６】
そして、こうしたステップＳ５１００〜Ｓ５３００、及びＳ５６００の処理が繰り返し実行された結果、上記ステップＳ５３００の処理において、全ブロック（ブロック［１］〜［５ｅ］）に対して上記過半数チェック処理（ステップＳ５１００）が実行されたと判断されるようになると、同エンジン制御装置１１０は、次にステップＳ５４００及びＳ５５００の処理を行う。すなわち、まず、ステップＳ５４００の処理として、先の図２２（ａ）及び（ｂ）に示したように、上記ステップＳ５１００の処理において上記データブロック［１］〜［ｅ］毎に上記妥当性のあるデータとして抽出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｃ−４）を読み出す。そして、これら読み出されたデータ（データブロックＤＢ１、ＤＢ７、・・・、ＤＢ５ｃ−４）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｊに格納する。そしてこの結果、上記第２のメモリ領域１１４ｊにおいて上記書き換え用のデータが復号されれば、次いでステップＳ５５００の処理として、上記過半数フラグのセット状態を確定した時点で、この制御を終了する。
【０１６７】
ただし、上記ステップＳ５１００〜Ｓ５３００、及びＳ５６００の処理が繰り返し実行された結果、上記ステップＳ５２００の処理において、上記過半数フラグがリセット状態にある場合もある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記過半数フラグがリセット状態にあると確認された時点で、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップＳ１３５（図７）の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、上記書き換え用のデータが復号（抽出）されたか否かの判断を行うようになる。
【０１６８】
図２４は、上記過半数チェック処理（ステップＳ５１００）のアルゴリズムについてその一例をフローチャートとして示しており、次に、同図２４を参照して、同処理を説明する。
【０１６９】
上述の通り、この過半数チェック処理では、まず、先の図１６に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間で一致比較をそれぞれ実施する。ただしここでは、上記組とされる５つのデータブロックの過半数が一致した時点で、上記一致比較を中止するとともに当該過半数チェックが成立したことを示す過半数フラグをセットする。この点、この実施の形態では、図２４に示されるように、適宜に操作可能な変数「ｊ」、「ｋ」、及び上記比較結果としての一致数を演算するための複数の一致数カウンタを以下のようにそれぞれ操作することで、このような過半数チェック処理を実現している。
【０１７０】
すなわち、同図２４に示されるように、この過半数チェック処理に際しては、上記エンジン制御装置１１０がまず、ステップＳ５１０１の処理として、上記複数の一致数カウンタの各カウンタ値をクリアする。次いで、ステップＳ５１０２及びＳ５１０３の処理として、上記過半数フラグをリセットするとともに、上記変数「ｊ」、「ｋ」を「０」、「１」にそれぞれ設定する。そしてこの上で、以下のステップＳ５１０４〜Ｓ５１０８の処理を繰り返し実行する。これにより、先の図１６（ａ）に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、ブロック［５ｎ−４］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較が行われるようになる。
・上記変数「ｊ」及び「ｋ」を加算して、該加算値と上記組とされるデータブロックの数である基準値「５」との間での大小比較を行う（ステップＳ５１０４）。
・上記ステップＳ５１０４の処理において、上記変数「ｊ」及び「ｋ」の加算値が「５」未満であることを条件に、ブロック［５ｎ−４＋ｊ］に対応するデータブロックと、ブロック［５ｎ−４＋ｊ＋ｋ］に対応するデータブロックとの間で一致比較を行う（ステップＳ５１０５）。
・上記ステップＳ５１０５の処理において、上記２つのデータブロックが一致したことを条件に、上記ブロック［５ｎ−４＋ｊ］に対応するデータブロックの一致数（比較結果）を示す一致数カウンタ［５ｎ−４＋ｊ］をカウントアップする（ステップＳ５１０６）。
・上記ステップＳ５１０６の処理においてカウントアップされた一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値が過半数チェック成立を示しているか否かの判断を行う（ステップＳ５１０７）。
・上記変数「ｋ」に「１」を加算する（ステップＳ５１０８）。
【０１７１】
例えば、いま、上記ステップＳ５１０１〜Ｓ５１０３の処理において、上記複数の一致数カウンタ［５ｎ−４＋ｊ］のカウンタ値がクリアされ、上記過半数フラグがリセットされ、上記変数「ｊ」、「ｋ」に「０」、「１」がそれぞれ設定されたとすると、上記ステップＳ５１０４の処理では、上記変数「ｊ」及び「ｋ」の加算値が基準値「５」未満であると判断される。次いで、上記ステップＳ５１０５の処理では、ブロック［５ｎ−４］に対応するデータブロックを基準として、ブロック［５ｎ−３］に対応するデータブロックとの間での一致比較が行われる。そしてこの結果、これら２つのデータブロックが一致したと判断されれば、次にステップＳ５１０６の処理として、該ブロック［５ｎ−４］に対応するデータブロックの一致数を示す一致数カウンタ［５ｎ−４］がカウントアップされ、すなわち該一致数カウンタ［５ｎ−４］についてカウンタ値「１」を得る。そして次に、ステップＳ５１０７の処理では、この一致数カウンタ［５ｎ−４］のカウンタ値「１」が当該過半数チェックの成立を示しているか否かの判断が行われる。具体的には、先の図１６（ａ）に示したように、ブロック［５ｎ−４］の一致数が「２」、すなわち一致数カウンタ［５ｎ−４］のカウンタ値が「２」以上であることに基づき、上記組とされる５つのデータブロックのうちの過半数が一致したと判断される。したがってここでは、当該過半数チェックが成立していないと判断され、次にステップＳ５１０８の処理として、上記変数「ｋ」に「１」が加算されることとなる。
【０１７２】
ただし、上記ステップＳ５１０５の処理においては、上記２つのデータが一致しないと判断される場合もある。この場合には、一致数カウンタ［５ｎ−４］をカウントアップする、等々といった上述の処理（ステップＳ５１０６及びＳ５１０７）を実行することなく、上記ステップＳ５１０８の処理に移行する。すなわちこの場合、上記２つのデータが一致しないと判断した時点で、上記変数「ｋ」に「１」を加算することとなる。
【０１７３】
そして上述の通り、こうしてステップＳ５１０８の処理が実行されて後は、上記一連の処理（ステップＳ５１０４〜Ｓ５１０８）が再度実行される。ただしここでは、先のステップＳ５１０８の処理において上記変数「ｋ」に「１」が加算されたことにより、ブロック［５ｎ−４］に対応するデータブロックを基準として、上記ブロック［５ｎ−２］との間での一致比較が行われる。すなわち、上記ステップＳ５１０８の処理において、上記変数「ｋ」に「１」が加算される都度、上記ブロック［５ｎ−４］の一致比較の対象がブロック［５ｎ−３］、ブロック［５ｎ−２］、ブロック［５ｎ−１］、ブロック［５ｎ］に順次変更され、それらブロックの間での一致比較が行われるようになる（ステップＳ５１０４）。そして、こうした処理を通じて操作される上記一致数カウンタ［５ｎ−４］のカウンタ値が、最終的には、上記ブロック［５ｎ−４］の一致比較の結果（図１６（ａ）では、一致数「２」）として得られるようになる（ステップＳ５１０６）。
【０１７４】
また、こうしてステップＳ５１０４〜Ｓ５１０８の処理が繰り返し実行されると、上記ステップＳ５１０４の処理において、上記変数「ｊ」及び「ｋ」の加算値が「５」となり、基準値「５」未満でないと判断され、次にステップＳ５１１１の処理に移行するようになる。すなわちこの場合、上記変数「ｋ」が「５」となっており、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、ブロック［５ｎ−４］を基準とした一致比較の実行が全て完了されている。したがって、次のステップＳ５１１１の処理では、先の図１６（ｂ）に示したように、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）のうち、一致比較の基準となるブロックを、上記ブロック［５ｎ−４］からブロック［５ｎ−３］に変更するための処理として、上記変数「ｊ」に「１」を加算する。また併せて、該ブロック［５ｎ−３］に対応するデータブロックを基準として、該データブロックとその他のデータブロックとの間での一致比較を行うための処理として、上記変数「ｋ」を「１」に設定する（変数「ｋ」をクリアする）。そして、こうして操作された変数「ｊ」が、上記基準値「５」から「１」を減算された値「４」よりも小さいことを条件に（ステップＳ５１１２）、上記ステップＳ５１０４〜Ｓ５１０８の繰り返しの処理を再度実行し、これによって上記ブロック［５ｎ−３］を基準とした一致比較が行われるようになる。なお、この実施の形態においても、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の各２つのブロック間での一致比較についてはそれぞれ１度ずつ実行するようにしている。
【０１７５】
そして、上記ステップＳ５１１１及びＳ５１１２の処理を通じて、ブロック［５ｎ−３］、［５ｎ−２］、［５ｎ−１］を基準とした上記一連の処理（ステップ５１０４〜Ｓ５１０８）が順次に繰り返し実行されると、最終的には、上記ステップＳ５１１２の処理において、上記変数「ｊ」が「４」未満でないと判断されるようになる。すなわちこの場合、上記組とされる５つのデータブロック（ブロック［５ｎ−４］〜［５ｎ］）の間での一致比較は全て完了しており、上記変数「ｊ」が「４」未満でないと判断された時点で、この制御を一旦終了する。
【０１７６】
ただし上述の通り、この実施の形態では、上記ステップＳ５１０４〜Ｓ５１０８や、ステップＳ５１１１及びＳ５１１２、等々の処理が繰り返し実行された結果、上記ステップＳ５１０７の処理において、上記一致数カウンタのカウンタ値が「２」となり、上記組とされる５つのデータブロックのうちの過半数が一致したと判断されると、同エンジン制御装置１１０は、まず、それら一連の処理を中止する。そして、ステップＳ５１２１の処理として、同ブロック［５ｎ−４］に対応するデータブロックを、上記組とされる５つのデータブロックのうちの過半数を占める確定データ（妥当性のあるデータ）として登録する。そして次に、ステップＳ５１２２の処理として、当該過半数チェックが成立したことを示す過半数フラグをセットした時点で、この制御を一旦終了する。こうした処理を通じて、この後のステップＳ５２００（図２３）の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、当該データ抽出処理（ステップＳ１３４）を終了すべきか否かの判断を行うようになる。
【０１７７】
そしてこれも上述の通り、その後、上記ステップＳ５６００の処理において、上記「ｎ」に「１」が加算されれば、上記組とされる５つのデータブロックを１単位としたときの次の単位（組）を対象として当該過半数チェック処理（図２４）が再実行されることとなる。
【０１７８】
以上説明したように、この第４の実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置によっても、基本的には先の第１の実施の形態の前記（１）及び（２）の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
【０１７９】
（５）上記組とされる５つのデータブロックのうちの過半数が一致したと判断された時点で、該データを上記組とされる５つのデータブロックのうちの過半数を占める確定データ（妥当性のあるデータ）として登録するようにしたため、過半数チェックにかかる処理負荷の軽減が図られるようになる。
【０１８０】
なお、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置は、組とされる３つのデータブロックを１単位として上記過半数チェックを行うとした場合、上記第４の実施の形態として示した処理態様に限らず、これを適宜に変形した、例えば以下に例示する態様にて実施することもできる。
【０１８１】
（変形例）
上記実施の形態では、図２３及び図２４にそれぞれ示した処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理（ステップＳ１３４）を実行することとした。ただし、組とされる３つのデータブロックを１単位として上記過半数チェックを行うとする場合には、これに代えて、例えば図２６に示される処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理（ステップＳ１３４）を実行するようにすることもできる。
【０１８２】
ちなみにここでは、上記管理センター２００が先の図１０（ａ）〜（ｃ）に準じたかたちで上記複数のデータを送信する。これに対し、車載制御装置１００では、こうして送信される複数のデータを、図２５（ａ）に例示されるように、ブロック［１］〜［３ｆ］毎にデータブロックＤＢ１〜ＤＢ３ｆとして上記エンジン制御装置１１０内のデータメモリ１１４の第１のメモリ領域１１４ｋに格納する。そして、こうしたデータブロックＤＢ１〜ＤＢ３ｆに対し、図２６に示される処理手順及び処理態様をもって上記過半数チェックに基づくデータ抽出処理（ステップＳ１３４）を実行することによって、図２５（ｂ）に併せて示されるように、上記複数のデータから上記書き換え用のデータを復号（抽出）するようにしている。
【０１８３】
以下、図２６を参照して、この変形例にかかるデータ抽出処理（ステップＳ１３４）について説明する。なおここでは、説明の便宜上、上記ブロック［１］〜［３ｆ］（図２５）を、上記組とされる３つのデータブロック毎に、ブロック［３ｎ−２］、あるいはブロック［３ｎ−１］、あるいはブロック［３ｎ］として（ただし、「ｎ」は整数）としてそれぞれ表すこととする。
【０１８４】
このデータ抽出処理に際しては、図２６に示されるように、同エンジン制御装置１１０がまず、ステップＳ６１００の処理として、上記「ｎ」に「１」を代入する。そしてこの上で、以下のステップＳ６２００〜Ｓ６４００、及びＳ６７００の処理を繰り返し実行する。これにより、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）を１単位としたときの該単位毎に上記過半数チェック（照合）が実行されるようになる。
・上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）の間で過半数チェック（一致比較）を実行する（ステップＳ６２００）。
・上記過半数チェック（一致比較）の結果に基づき、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）のうちの過半数を占めるデータブロックの組から１つのデータブロックを抽出する（ステップＳ６３００）。
・全ブロック（ブロック［１］〜［３ｆ］）に対し、過半数チェックが実行されたか否かの判断を行う（ステップＳ６４００）。
・上記「ｎ」に「１」を加算する（ステップＳ６７００）。
【０１８５】
例えば、いま、上記ステップＳ６１００の処理において、上記「ｎ」に「１」が代入されたとすると、上記ステップＳ６２００の処理では、上記ブロック［１］〜［３ｆ］のうち、ブロック［１］〜［３］に対応するデータブロックＤＢ１〜ＤＢ３に関しての一致比較がまずは実行される。
【０１８６】
すなわち、このステップＳ６２００の処理においては、まず、ステップＳ６２０１の処理として、上記データブロックＤＢ１及びデータブロックＤＢ２が互いに一致するか否かの判断を行う。また、このステップＳ６２０１の処理において、上記データブロックＤＢ１及びデータブロックＤＢ２が一致しなければ、同エンジン制御装置１１０は次に、ステップＳ６２０２の処理として、上記データブロックＤＢ１及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。またさらに、このステップＳ６２０２の処理において、上記データブロックＤＢ１及びデータブロックＤＢ３が一致しなければ、次いで、ステップＳ６２０３の処理として、上記データブロックＤＢ２及びデータブロックＤＢ３が互いに一致するか否かの判断を行う。
【０１８７】
ただしここでは、上記組とされる３つのデータブロックを１単位としたときの該単位毎に上記過半数チェック（照合）を実行することとしている。このため、上記ステップＳ６２００の処理では、データブロックの一致が確認された時点で、それら２つのデータブロックを、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）のうちの過半数を占めるデータの組として判断することも可能である。そこでこの変形例では、上記ステップＳ６２０１〜Ｓ６２０３のいずれかの処理において、上記データブロックの一致が確認された時点で、上記組とされる３つのデータブロックのうちの過半数が一致した（特定の法則が満たされた）として、次にステップＳ６３００の処理に移行する。そして、このステップＳ６３００の処理において、上記過半数チェック（一致比較）の結果に基づき、上記一致が確認された２つのデータブロックの一方を抽出するようにしている。
【０１８８】
例えば、このステップＳ６３００の処理にあって、ステップＳ６３０１の処理では、上記ステップＳ６２０１またはＳ６２０２の処理において上記データブロックＤＢ１が他のデータブロックと一致したとして、該データブロックＤＢ１を上記データブロックＤＢ１〜ＤＢ３から抽出する。一方、同ステップＳ６３００の処理にあって、ステップＳ６３０２の処理では、上記ステップＳ６２０３の処理において上記データブロックＤＢ２がデータブロックＤＢ３と一致したとして、該データブロックＤＢ２を上記データブロックＤＢ１〜ＤＢ３から抽出する。
【０１８９】
そして、こうしてブロック［１］〜［３］に関しての過半数チェックが成立すると、同エンジン制御装置１１０は次に、ブロック［４］〜［６］に関しての過半数チェックを実行するための処理として、上記ステップＳ６４００及びＳ６７００の処理を実行する。
【０１９０】
そして上述の通り、こうしてステップＳ６７００の処理が実行されて後は、上記一連の処理（ステップＳ６２００〜Ｓ６４００、及びＳ６７００）が再度実行される。ただしここでは、先のステップＳ６７００の処理において上記「ｎ」に「１」が加算されたことにより、ブロック［４］〜［６］に対応するデータブロックＤＢ４〜ＤＢ６に関しての過半数チェックが行われる。すなわち、上記ステップＳ６７００の処理において、上記「ｎ」に「１」が加算される都度、上記一致チェックの対象がブロック［４］〜［６］、ブロック［７］〜［９］、・・・、ブロック［３ｆ−２］〜［３ｆ］に順次変更され、それらブロックの間での過半数チェックが行われるようになる（ステップＳ６２００）。
【０１９１】
また、こうしてステップＳ６２００〜Ｓ６４００、及びＳ６７００の処理が繰り返し実行されると、上記ステップＳ６４００の処理において、上記全ブロック（ブロック［１］〜［３ｆ］）に対して過半数チェックが実行されたと判断され、同エンジン制御装置１１０は、次にステップＳ６５００及びＳ６６００の処理を行うようになる。すなわち、まず、ステップＳ６５００の処理として、先の図２５（ａ）及び（ｂ）に示したように、上記ステップＳ６３００の処理において上記データブロック［１］〜［ｆ］毎に上記妥当性のあるデータとして抽出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｆ−２）を読み出す。そして、これら読み出されたデータ（データブロックＤＢ１、ＤＢ４、・・・、ＤＢ３ｆ−２）を順次結合し、上記書き換え用のデータが復号されるかたちでそれらデータを上記第２のメモリ領域１１４ｍに格納する。そしてこの結果、上記第２のメモリ領域１１４ｍにおいて上記書き換え用のデータが復号されれば、次いでステップＳ６６００の処理として、上記過半数フラグのセット状態を確定した時点で、このデータ抽出処理を終了する。
【０１９２】
ただし、上記ステップＳ６２００〜Ｓ６４００、及びＳ６７００の処理が繰り返し実行された結果、上記ステップＳ６２００（ステップＳ６２０３）の処理において、上記組とされる３つのデータブロックがいずれも一致しないと判断される場合もある。この場合には、上記管理センター２００から無線送信されたデータが不正データや不正改造データであるとして、上記組とされる３つのデータブロックがいずれも一致しないと判断された時点で、上記過半数フラグをセットすることなく、このデータ抽出処理を終了する。こうした処理を通じて、この後のステップＳ１３５（図７）の処理では、前述の通り、該過半数フラグのフラグ状態に基づき、上記書き換え用のデータが復号（抽出）されたか否かの判断を行うようになる。
【０１９３】
したがって、このような変形例によっても、上記（１）〜（２）と同様の効果が得られるようになる。また新たに、
（６）データブロックの一致が確認された時点で、それら２つのデータブロックを、上記組とされる３つのデータブロック（ブロック［３ｎ−２］〜［３ｎ］）のうちの過半数を占めるデータの組として判断するようにしたため、過半数チェックにかかる処理負荷のさらなる軽減が図られるようになる。
【０１９４】
（第５の実施の形態）
次に、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置についてその第５の実施の形態を示す。なお、この実施の形態も、先の第４の実施の形態（図１）とほぼ同様、大きくは、各種の車載機器を分散制御する複数の電子制御装置と、これら各電子制御装置に関する情報を総括管理するマスタ制御装置１４０とを備え、これら制御装置間での通信をバス型のネットワークシステムを通じて行うものとなっている。また、車載制御装置１００が備える各制御装置の内部構造も、先の第４の実施の形態（図２）とほぼ同様であり、上記制御プログラムや制御データの書き換えに際し、同車載制御装置１００がまず、
・書き換えが要求されるデータとして同一の識別子が付された複数のデータ（書き換え用のデータ及びダミーデータ）を受信すること。
・上記受信される複数のデータ（書き換え用のデータ及びダミーデータ）を照合して特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータ、すなわち上記書き換え用のデータとして抽出すること。
等々、といった処理を行う点についても、先の第４の実施の形態とほぼ同様である。
【０１９５】
ただし、この実施の形態では、車載制御装置１００が、上記第１〜第４の実施の形態において各々詳述した以下の４つの判定手段を備えている。
（ａ）上記複数のデータが特定のデータと該特定のデータの補数の関係にあるミラーデータとが対となる態様で受信されるときに、受信した２つのデータが互いに補数の関係にあることをもって上記特定の法則の成立を判断するミラー判定手段（第１の実施の形態）。
（ｂ）上記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの２つ以上が一致することをもって上記特定の法則の成立を判断する一致判定手段（第２の実施の形態）。
（ｃ）上記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうち、一致数が多数を占めるデータが存在することをもって上記特定の法則の成立を判断する多数決判定手段（第３の実施の形態）。
（ｄ）上記複数のデータが１つのデータにつき３つ以上のデータとして受信されるときに、受信した３つ以上のデータのうちの過半数が一致することをもって上記特定の法則の成立を判断する過半数判定手段（第４の実施の形態）。
【０１９６】
そして、同車載制御装置１００は、書き換え用のデータの抽出に際し、上記管理センター２００との協働のもとに、該管理センター２００から送信指示される情報に基づいてそれら判定手段の選択を動的に決定するようにしている。このような構成では、上記４つの法則の１つが仮に一般に認知されてしまったとしても、上記データの書き換えにかかるセキュリティレベルを維持することができるようになる。しかも、上記管理センター２００との協働のもとに、それら判定手段の選択を動的に決定するため、上記エンジン制御装置１１０によるデータの抽出態様が解読され難くなり、上述の不正データや不正改造データに基づくデータの書き換え（不正書き換え）が実行されることがより確実に回避されるようになる。
【０１９７】
図２７は、上記管理センター２００との協働のもとに上記エンジン制御装置１１０において行われる上記判定手段の選択処理についてその処理手順を示すフローチャートであり、次に、同図２７を参照して、該処理について説明する。なお、この実施の形態においても、管理センター２００とエンジン制御装置１１０との間での通信は、マスタ制御装置１４０によって仲介される。またこの処理は、所定期間毎に繰り返し実行される。
【０１９８】
いま、上記管理センター２００による上記複数のデータの送信態様が決定されたとすると、該管理センター２００は、上記エンジン制御装置１１０によって選択されるべき判定手段を示す選択情報を送信する。
【０１９９】
一方、エンジン制御装置１１０では、上記判定手段の選択に際してはまず、ステップＳ１４１の処理として、上記通信バス１０１を通じてデータが受信されるまで待機する。そして、データが受信されると、同エンジン制御装置１１０は、次にステップＳ１４２の処理として、該受信されたデータの識別子（ＩＤ）に基づいてそのデータの情報の種類を判断する。そしてこの結果、同受信されたデータが、上記４つの判定手段のいずれを採用すべきかを示す選択情報であれば、次にステップＳ１４３の処理として、該受信した選択情報に基づき、上記４つの判定手段のうちの一つを選択する。これにより、上記データ抽出処理（ステップＳ１３４）では、該選択された判定手段を採用して上記受信される複数のデータを照合するとともに、該照合の結果、特定の法則が満たされる１つのデータを上記書き換えが要求されるデータとしての妥当性のあるデータとして抽出するようになる。
【０２００】
なお、上記選択情報としては、例えば、上記４つの判定手段（ａ）〜（ｄ）に各々対応して関連付けられた４つの識別子（ＩＤ）情報（「０ｘ０１」、「０ｘ０２」、「０ｘ０３」、「０ｘ０４」）を採用することができる。そしてこの場合、上記ステップＳ１４３の処理では、上記受信される選択情報を用いて、例えば図２８に例示されるテーブルＴを参照することに基づき上記４つの判定手段のうちの一つを選択するようにすることが、当該処理を実現する上で実用上望ましい。
【０２０１】
以上説明したように、この第５の実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置によっても、基本的には先の第１の実施の形態の前記（１）及び（２）の効果、及び第３の実施の形態の前記（３）の効果、及び第４の実施の形態の前記（５）の効果と同等、あるいはそれに準じた効果を得ることができるとともに、以下の効果を新たに得ることができるようになる。
【０２０２】
（７）上記４つの法則の１つが仮に一般に認知されてしまったとしても、上記データの書き換えにかかるセキュリティレベルを維持することができるようになる。しかも、上記エンジン制御装置１１０によるデータの抽出態様が解読され難くなり、上述の不正データや不正改造データに基づくデータの書き換え（不正書き換え）が実行されることがより確実に回避されるようになる。
【０２０３】
また、この第５の実施の形態にかかる車載制御装置のデータ書き換え方法および車載制御装置では、上記多数決判定手段として、第３の実施の形態の変形例において詳述した判定手段を採用すれば、前記（４）の効果を得ることができるようにもなる。また、これと同様、上記過半数判定手段として、第４の実施の形態の変形例において詳述した判定手段を採用すれば、前記（６）の効果をさらに得ることができるようにもなる。
【０２０４】
（他の実施の形態）
なお、上記各実施の形態は、以下のように変更して実施することもできる。
・受信される複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理については、上記複数のデータをメモリに格納することなく、それらの受信と並行して実行するようにしてもよい。
【０２０５】
・第５の実施の形態では、管理センター２００が上記選択情報を送信するようにしたが、例えばマスタ制御装置１４０など、他の装置が同選択情報を送信するようにしてもよい。ただしこの場合、上記管理センター２００では、該選択情報を受信して、同選択情報に基づき上記複数のデータの送信態様を決定することとなる。
【０２０６】
・第５の実施の形態では、上記複数のデータが受信された日時の情報を上記選択情報として用いて上記判定手段を選択するようにしてもよい。例えば、上記複数のデータが受信された日にちが上記判定手段の種類の数「４」で除算されたときの余りを以下のように上記４つの判定手段にそれぞれ予め対応させておくことで、上記複数のデータが受信された日時の情報を上記選択情報として用いることができるようになる。
（ａ）余り「０」（例えば、４日、８日など）…ミラー判定手段（第１の実施の形態）。
（ｂ）余り「１」（例えば、１日、５日など）…一致判定手段（第２の実施の形態）。
（ｃ）余り「２」（例えば、２日、６日など）…多数決判定手段（第３の実施の形態）。
（ｄ）余り「３」（例えば、３日、７日など）…過半数判定手段（第４の実施の形態）。
ただしこの場合、上記管理センター２００も同様に、上記複数のデータを送信する日時の情報に基づいてその送信態様を決定することとなる。
【０２０７】
・第５の実施の形態において、車載制御装置１００は、ミラー判定手段、及び一致判定手段、及び多数決判定手段、及び過半数判定手段の少なくとも２つを備え、それらの判定手段を動的に選択するものであればよい。
【０２０８】
・上記各実施の形態では、上記受信される複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理を、上記エンジン制御装置１１０が行うようにした。ただし、このデータ抽出処理については、マスタ制御装置１４０による上記エンジン制御装置１１０へのデータの送信処理に先立って、該マスタ制御装置１４０が行うようにしてもよい。以下、マスタ制御装置１４０によって行われるデータ抽出処理の処理手順について説明する。なおこの処理も、例えば所定期間毎に繰り返し実行される。例えば、図２９に示されるように、マスタ制御装置１４０はまず、ステップＳ２０１の処理として、上記複数のデータを受信するまで待機する。そして、このステップＳ２０１の処理において、データブロック単位で分割送信される上記複数のデータが受信されると、次にステップＳ２０２の処理に移行する。このステップＳ２０２の処理では、それらデータに付されている各識別子（ＩＤ）と当該車両（装置）を指定するコード（例えばＶＩＮコード）とが一致するか否かを判断する。この結果、これら２つのコードが一致すれば、次にステップＳ２０３の処理として、例えばデータメモリ１４４などに記憶されている受信履歴に基づき、該受信された複数のデータが既に受信されている受信済みのデータと同一であるか否かの判断をさらに行う。そしてこの結果、これら複数のデータが未だ受信されていないデータであると判断されれば、同データを上記データメモリ１４４に格納して後に（ステップＳ２０４）、上記データ抽出処理を実行する（ステップＳ２０５）。そして、ステップＳ２０６の処理として、上記データ抽出処理によって書き換え用のデータが抽出されたと判断された時点で、この制御を終了する。なお、上記データ抽出処理（ステップＳ２０５）において、書き換え用のデータが抽出されなかった場合には（ステップ２０６）、上記無線通信によって取得された複数のデータ自体に適正性がないとして、上記管理センター２００に対し、同データの再送を要求するデータ再送要求が通知されることとなる（ステップＳ２０７）。これにより、同マスタ制御装置１４０が、こうして抽出されたデータのみを上記エンジン制御装置１１０に送信するようにすることで、該エンジン制御装置１１０では、例えば図３０に示される処理手順に基づき、上記プログラムメモリ１１３内のデータ（プログラム）の書き換えを行うことができるようになる。すなわちこの場合、同図３０に示されるように、エンジン制御装置１１０ではまず、ステップＳ２３１の処理として、データを受信するまで待機する。そして、このステップＳ２３１の処理において、データが受信されると、次にステップＳ２３２の処理として、それらデータに付されている識別子に基づき該データが書き換え用のデータであるか否かの判断を行う。この結果、該データが書き換え用のデータであると判断されれば、同データを上記データメモリ１１４に格納して後に（ステップＳ２３３）、同受信したデータに基づき上記プログラムメモリ１１３内のデータ（プログラム）の書き換えを実行する。そして、該書き換えの完了が確認されれば、次いでステップＳ２３５の処理として、上記マスタ制御装置１４０に対し、同エンジン制御装置１１０内のデータ（プログラム）の書き換えが完了した旨を示す書換完了信号を送信することとなる。
【０２０９】
・マスタ制御装置１４０は上述の通り、複数のデータの受信と並行して、上記データ抽出処理を行うようにすることもできる。ただしこの場合、同マスタ制御装置１４０は、例えば図３１（ａ）及び（ｂ）に示されるように、上記組とされる複数のデータブロックから特定の法則が満たされるデータブロックが抽出された時点で、残りのデータブロックの受信をキャンセルし、次の単位（組）を対象とした照合を実行するようにすることが望ましい。以下、マスタ制御装置１４０によって行われるこのようなデータ抽出処理の処理手順について説明する。なお、この処理態様は、先の第２〜第５の実施の形態のように、上記管理センター２００から３つ以上のデータが送信される場合であれば、適用することができる。ただしここでは、説明の便宜上、一致判定手段（第２の実施の形態）によるデータ抽出処理に適用した場合のその処理態様について、図３１及び図３２を参照して説明することとする。ちなみに、管理センター２００では、図３１（ａ）に示されるように、上記複数のデータを、データブロック［１］からデータブロック［ｇ］までの各データブロックにつき５つのデータブロックが組となるように、ブロック［１］〜［５ｇ］として分割送信する。ただしこの際、上記組とされる５つのデータブロックのうち最初に送信されるデータブロックが書き換え用のデータのデータブロックとなるように送信する。一方、マスタ制御装置１４０では、まず、図３２に示されるように、ステップＳ６００１の処理として、データブロックが受信されるまで待機する。そして、いま、このステップＳ６００１の処理において、ブロック［１］に対応するデータブロックが受信されたとすると、次にステップＳ６００２の処理に移行する。このステップＳ６００２の処理では、データブロックに付されている識別子（ＩＤ）と当該車両（装置）を指定するコード（例えばＶＩＮコード）とが一致するか否かを判断する。そしてこの結果、これら２つのコードが一致すれば、次にステップＳ６００３の処理として、受信回数「ｋ」が上記組とされるデータブロックの数「５」未満であるか否かの判断を行う。なお、上記ブロック［１］に対応するデータブロックを受信した時点ではこの受信回数「ｋ」は「０」となっており、「５」未満であると判断される。このため、同マスタ制御装置１４０は次に、ブロック［１］〜［５］に対応する５つのデータブロックの間での一致比較を実行するための処理として、以下のステップＳ６００４〜Ｓ６００８の処理を実行することとなる。
・一致チェックが成立したときにセットされる一致フラグのフラグ状態を確認する（ステップＳ６００４）。
・上記ステップＳ６００４の処理において、一致フラグがリセット状態にあることを条件に、データメモリにデータブロックが既に格納されているか否かの判断を行う（ステップＳ６００５）。
・上記ステップＳ６００５の処理において、データメモリ１４４にデータブロックが格納されていないことを条件に、受信したデータブロックをデータメモリ１４４に格納する（ステップＳ６００６）。
・上記ステップＳ６００５の処理において、データメモリ１４４にデータブロックが格納されていないことを条件に、データメモリ１４４にデータブロックが格納されていることを示す受信格納フラグをセットする（ステップＳ６００７）。
・受信回数「ｋ」に「１」を加算する（ステップＳ６００８）。
すなわちこうした処理を通じて、上記データメモリ１１４にブロック［１］に対応するデータブロックを格納するとともに（ステップＳ６００６）、上記受信格納フラグをセットし（ステップＳ６００７）、受信回数「ｋ」を「１」に操作することとなる（ステップＳ６００８）。これにより、ブロック［２］に対応するデータブロックが新たに受信された場合には（ステップＳ６００１）、上記ステップＳ６００５の処理において、上記受信格納フラグがセット状態にあることに基づき、上記データメモリ１４４にデータブロックが既に格納されていると判断されるようになる。そしてこの場合、同マスタ制御装置１４０は、データメモリ１４４に格納されているデータブロックと新たに受信されたデータブロックとの間での一致比較を行うための処理として、以下のステップＳ６０１１及びＳ６０１２の処理を実行することとなる。
・受信されたデータブロックとデータメモリに格納されているデータブロックとが一致するか否かの判断を行う（ステップＳ６０１１）。
・上記ステップＳ６０１１の処理において、上記２つのデータブロックが一致したことを条件に、上記一致フラグをセットする（ステップＳ６０１２）。
すなわちここでは、図３１（ａ）に示されるように、ブロック［１］に対応するデータブロックと、新たに受信されたブロック［２］に対応するデータブロックとが一致すると判断され（ステップＳ６０１１）、上記一致フラグをセットすることとなる（ステップＳ６０１２）。そしてこの後に、ステップＳ６００８の処理として、上記受信回数「ｋ」に「１」をさらに加算し、該受信回数「ｋ」を「２」とする。これにより、これ以降のブロック（ブロック［３］〜［５］）に対応する各データブロックが新たに受信された場合には（ステップＳ６００１）、上記ステップＳ６００４の処理において、上記一致フラグのセット状態が確認され、これらデータブロックの受信がキャンセルされるようになる。すなわちこの場合、同マスタ制御装置１４０は、上記一致フラグのセット状態を確認した時点で、上記受信回数「ｋ」に「１」をさらに加算することとなる（ステップＳ６００８）。他方、ブロック［１］〜［５］に対応する５つのデータブロックの間での一致比較が完了し、ブロック［６］に対応するデータブロックが受信された場合には（ステップＳ６００１）、上記ステップＳ６００３の処理において、上記受信回数「ｋ」が「５」未満でないと判断される。そしてこの場合、上記組とされる５つのデータブロックの次の単位（組）を対象としての上記一致チェックを行うための処理として、以下のステップＳ６０２１〜Ｓ６０２５、Ｓ６０３１の処理を実行することとなる。
・受信回数「ｋ」をクリアする（ステップＳ６０２１）。
・一致フラグのフラグ状態を確認する（ステップＳ６０２２）。
・上記ステップＳ６０２２の処理において、上記一致フラグがセット状態にあることを条件に、一致フラグをリセットする（ステップＳ６０２３）。
・上記ステップＳ６０２２の処理において、上記一致フラグがセット状態にあることを条件に、受信したデータブロックをデータメモリ１４４に格納する（ステップＳ６０２４）。
・上記ステップＳ６０２２の処理において、上記一致フラグがセット状態にあることを条件に、受信回数「ｋ」を「１」に設定する（ステップＳ６０２５）。
・上記ステップＳ６０２２の処理において、上記一致フラグがリセット状態にあることを条件に、管理センター２００にデータ再送要求を通知する（ステップＳ６０３１）。
すなわちこうした処理を通じて、上記一致フラグをリセットするとともに（ステップＳ６０２２）、ブロック［６］に対応するデータブロックをデータメモリ１４４に格納し（ステップＳ６０２４）、受信回数「ｋ」を「１」に設定することとなる（ステップＳ６０２５）。これにより、ブロック［７］に対応するデータブロックが新たに受信された場合には（ステップＳ６００１）、上記ステップＳ６００３の処理において、受信回数「ｋ」が「５」未満であると判断されるようになる。そして、上記ステップＳ６００４〜Ｓ６００８、Ｓ６０１１、Ｓ６０１２の処理が再度繰り返し実行されることにより、ブロック［６］〜［１０］に対応するデータブロックの間での一致チェックが図３１に示される態様で実行されるようになる。このように、ステップＳ６００１〜Ｓ６００８、Ｓ６０１１、Ｓ６０１２、Ｓ６０２１〜Ｓ６０２５の処理が繰り返し実行されることで、一致判定手段（第２の実施の形態）によるデータ抽出処理として、図３１に示される処理態様が実現されるようになる。
【０２１０】
・第２〜５の実施の形態において、一致チェック、多数決チェック、過半数チェックのチェック対象となるデータは、３つ以上あればいくつでもよい。
・第２及び第５の実施の形態において、受信した３つ以上のデータのうちの３つ以上が一致することをもって一致チェックが成立したと判断するようにしてもよい。
【０２１１】
・多数決チェックの結果、一致数が同数で多数を占めるデータの組が複数組存在するとき、多数決チェックの不成立を判断して上記データの抽出を保留するための処理手順については、第３の実施の形態において説明した処理手順に限られず、任意である。
【０２１２】
・多数決チェックや過半数チェックにおいて、他のブロックを基準とした一致比較において既に一致比較が実行されている特定の２つのブロック間での一致比較を再度実行するようにしてもよい。
【０２１３】
・管理センター２００は、ダミーデータについては、メモリに予め保持することなく、上記複数のデータの送信に際して作成するようにしてもよい。
・２つのデータブロックを一致比較する場合、任意のデータ長（例えば２バイト）を単位として行うようにしてもよい。
【０２１４】
・データブロック単位でデータを分割送信しなくてもよい。
・受信される複数のデータの照合をデータブロック単位で行わなくてもよい。
・マスタ制御装置１４０による書き換えの対象は、電子制御装置１１０〜１３０に限られず、任意である。また、電子制御装置１１０〜１３０を書き換えの対象としなくてもよい。
【０２１５】
・上記各実施の形態の車載制御装置を、２つの電子制御装置の間で、専用の通信線を通じて通信するものに適用することも可能である。
・受信される複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出するためのデータ抽出処理については、ミラーチェック、一致チェック、多数決チェック、過半数チェックの他の手段を用いて行うようにしてもよい。要は、上記受信される複数のデータを照合して特定の法則が満たされる１つのデータを妥当性のあるデータとして抽出することのできる手段であればよい。また、それら手段を実現するためのアルゴリズムも任意である。
【０２１６】
・管理センター２００は、上記複数のデータの全てを、書き換えが要求されるデータとしての妥当性のあるデータとして送信するようにしてもよい。
【図面の簡単な説明】
【０２１７】
【図１】この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第１の実施の形態について、管理センターとの関係も含めて、その全体構成を示すブロック図。
【図２】同実施の形態の車載制御装置のうち、特にマスタ制御装置及びエンジン制御装置の内部構造を示すブロック図。
【図３】（ａ）は、管理センターと車載制御装置との間で授受されるデータのデータ構造を示す図。（ｂ）は、管理センターにおいて、複数のデータが格納されているメモリのメモリ構造を示すブロック図。（ｃ）は、管理センターによる複数のデータの送信態様を示すブロック図。
【図４】同実施の形態の車載制御装置（マスタ制御装置）によって行われる複数のデータの受信処理についてその処理手順を示すフローチャート。
【図５】同実施の形態の車載制御装置（マスタ制御装置）によって行われる複数のデータの送信処理についてその処理手順を示すフローチャート。
【図６】同実施の形態の車載制御装置（マスタ制御装置）によって行われる再送要求の通知処理についてその処理手順を示すフローチャート。
【図７】同実施の形態の車載制御装置（エンジン制御装置）によって行われるデータの書換処理についてその処理手順を示すフローチャート。
【図８】（ａ）及び（ｂ）は、ミラーチェックに基づくデータの抽出態様を示すブロック図。
【図９】同実施の形態の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図１０】（ａ）は、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第２の実施の形態において、管理センターと車載制御装置との間で授受されるデータのデータ構造を示す図。（ｂ）は、同実施の形態の管理センターにおいて、複数のデータが格納されているメモリのメモリ構造を示すブロック図。（ｃ）は、同実施の形態の管理センターによる複数のデータの送信態様を示すブロック図。
【図１１】（ａ）及び（ｂ）は、一致チェックに基づくデータの抽出態様を示すブロック図。
【図１２】同実施の形態の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図１３】（ａ）は、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第３の実施の形態において、管理センターと車載制御装置との間で授受されるデータのデータ構造を示す図。（ｂ）は、同実施の形態の管理センターにおいて、複数のデータが格納されているメモリのメモリ構造を示すブロック図。（ｃ）は、同実施の形態の管理センターによる複数のデータの送信態様を示すブロック図。
【図１４】（ａ）及び（ｂ）は、多数決チェックに基づくデータの抽出態様を示すブロック図。
【図１５】同実施の形態の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図１６】（ａ）〜（ｄ）は、一致比較処理の具体態様を示すブロック図。
【図１７】一致比較処理のアルゴリズムについてその一例を示すフローチャート。
【図１８】多数決チェック処理のアルゴリズムについてその一例を示すフローチャート。
【図１９】多数決チェック処理を説明するためのブロック図。
【図２０】（ａ）及び（ｂ）は、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第３の実施の形態の変形例において行われる多数決チェックに基づくデータの抽出態様を示すブロック図。
【図２１】同変形例の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図２２】（ａ）及び（ｂ）は、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第４の実施の形態において行われる過半数チェックに基づくデータの抽出態様を示すブロック図。
【図２３】同実施の形態の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図２４】過半数チェック処理のアルゴリズムについてその一例を示すフローチャート。
【図２５】（ａ）及び（ｂ）は、この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第４の実施の形態の変形例において行われる過半数チェックに基づくデータの抽出態様を示すブロック図。
【図２６】同変形例の車載制御装置（エンジン制御装置）によって行われるデータ抽出処理についてその具体態様を示すフローチャート。
【図２７】この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の第５の実施の形態において、管理センターとの協働のもとに行われる判定手段の選択処理についてその処理手順を示すフローチャート。
【図２８】選択情報（識別子）と判定手段との対応関係を示すテーブル。
【図２９】この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の別例として、マスタ制御装置によって行われるデータ抽出処理についてその処理手順を示すフローチャート。
【図３０】この発明にかかる車載制御装置のデータ書き換え方法および車載制御装置の別例として、マスタ制御装置がデータ抽出処理を行うとしたときのエンジン制御装置によるデータの書換処理についてその処理手順を示すフローチャート。
【図３１】（ａ）、（ｂ）は、マスタ制御装置がデータ抽出処理を行うとしたときの別例を示すブロック図。
【図３２】マスタ制御装置がデータ抽出処理を行うとしたときの別例を示すフローチャート。
【符号の説明】
【０２１８】
１００…車載制御装置、１０１…通信バス、１１０…エンジン制御装置、１１１…中央演算処理装置、１１２…通信装置、１１３…プログラムメモリ、１１４…データメモリ、１１４ａ、１１４ｃ、１１４ｅ、１１４ｇ、１１４ｉ、１１４ｋ…第１のメモリ領域、１１４ｂ、１１４ｄ、１１４ｆ、１１４ｈ、１１４ｊ、１１４ｍ…第２のメモリ領域、１１５…入出力インターフェース、１２０…トランスミッション制御装置、１３０…ブレーキ制御装置、１４０…マスタ制御装置、１４１…中央演算処理装置、１４２…無線通信部、１４２ａ…アンテナ、１４２ｂ…送受信器、１４２ｃ…変復調器、１４２ｄ…シフトレジスタ、１４３…プログラムメモリ、１４４…データメモリ、１４５…通信装置、２００…管理センター、２０１ａ、２０１ｃ…第１のメモリ領域、２０１ｂ、２０１ｄ…第２のメモリ領域、ＤＦ…データフレーム、Ｔ…テーブル。
【図１】
0004492470.tif 000002
【図２】
0004492470.tif 000003
【図３】
0004492470.tif 000004
【図４】
0004492470.tif 000005
【図５】
0004492470.tif 000006
【図６】
0004492470.tif 000007
【図７】
0004492470.tif 000008
【図８】
0004492470.tif 000009
【図９】
0004492470.tif 000010
【図１０】
0004492470.tif 000011
【図１１】
0004492470.tif 000012
【図１２】
0004492470.tif 000013
【図１３】
0004492470.tif 000014
【図１４】
0004492470.tif 000015
【図１５】
0004492470.tif 000016
【図１６】
0004492470.tif 000017
【図１７】
0004492470.tif 000018
【図１８】
0004492470.tif 000019
【図１９】
0004492470.tif 000020
【図２０】
0004492470.tif 000021
【図２１】
0004492470.tif 000022
【図２２】
0004492470.tif 000023
【図２３】
0004492470.tif 000024
【図２４】
0004492470.tif 000025
【図２５】
0004492470.tif 000026
【図２６】
0004492470.tif 000027
【図２７】
0004492470.tif 000028
【図２８】
0004492470.tif 000029
【図２９】
0004492470.tif 000030
【図３０】
0004492470.tif 000031
【図３１】
0004492470.tif 000032
【図３２】
0004492470.tif 000033