(57)【特許請求の範囲】
【請求項１】
マイコン（３０）と、前記マイコンの外部に設けられ、書換可能な不揮発性の外部メモリ（４４）と、を備え、
書換装置（６０）から送信された書込データが前記マイコンにより転送されて前記外部メモリに書き込まれ、前記外部メモリのデータが更新される電子制御装置であって、
前記マイコンが、前記書込データが不正データであるか否かを判定するための基準値を、受信した前記書込データ内の所定アドレスから抽出する抽出部（Ｓ５０６，Ｓ５０８）と、前記外部メモリに書き込まれた前記書込データを、前記外部メモリから取得する取得部（Ｓ５２０，Ｓ５２２）と、前記取得部が取得した前記書込データのうち、前記基準値を除くデータを用いて、所定の演算を実行する演算部（Ｓ５２４，Ｓ５２６，Ｓ５２８）と、前記演算部による演算結果と前記基準値との関係が、予め設定された所定の関係を満たすか否かを判定する判定部（Ｓ６０２）と、前記判定部の判定結果を前記書換装置に送信する通知部（Ｓ６０６，Ｓ６１０）と、を有し、
前記マイコンは、書換可能な不揮発性メモリ（３４）を有し、
前記基準値のアドレス情報は、前記不揮発性メモリにおいてデータの書き換えが不可能な非書換領域（３４ｂ）に予め記憶されている電子制御装置。
【請求項２】
前記非書換領域には、複数のアドレス情報が予め記憶されており、
前記マイコンは、前記書換装置から送信された情報に基づいて、前記複数のアドレス情報の中からひとつを選択する選択部（Ｓ９０）を有し、
前記抽出部は、選択された前記アドレス情報に基づいて前記基準値を抽出する請求項１に記載の電子制御装置。
【請求項３】
マイコン（３０）と、前記マイコンの外部に設けられ、書換可能な不揮発性の外部メモリ（４４）と、を備え、
書換装置（６０）から送信された書込データが前記マイコンにより転送されて前記外部メモリに書き込まれ、前記外部メモリのデータが更新される電子制御装置であって、
前記マイコンが、前記書込データが不正データであるか否かを判定するための基準値を、受信した前記書込データ内の所定アドレスから抽出する抽出部（Ｓ５０６，Ｓ５０８）と、前記外部メモリに書き込まれた前記書込データを、前記外部メモリから取得する取得部（Ｓ５２０，Ｓ５２２）と、前記取得部が取得した前記書込データのうち、前記基準値を除くデータを用いて、所定の演算を実行する演算部（Ｓ５２４，Ｓ５２６，Ｓ５２８）と、前記演算部による演算結果と前記基準値との関係が、予め設定された所定の関係を満たすか否かを判定する判定部（Ｓ６０２）と、前記判定部の判定結果を前記書換装置に送信する通知部（Ｓ６０６，Ｓ６１０）と、を有し、
前記マイコンは、前記書換装置から送信された情報を、前記基準値のアドレス情報として設定する設定部（Ｓ１１０）を有し、
前記抽出部は、設定された前記アドレス情報に基づいて前記基準値を抽出する電子制御装置。
【請求項４】
前記マイコンは、前記書込データを前記外部メモリに送信する前に、正規データの書き込みが完了したか否かを管理するフラグを異常状態に設定し、前記基準値と前記演算結果とが所定関係を満たす場合に、前記フラグを正常状態に設定するフラグ状態設定部（Ｓ２００，Ｓ６０４，Ｓ６０８）を有する請求項１〜３いずれか１項に記載の電子制御装置。
【請求項５】
前記マイコンは第１マイコンであり、
前記第１マイコンとは別に設けられた第２マイコン（４０）をさらに備え、
前記第２マイコンに、前記外部メモリが内蔵されている請求項１〜４いずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイコンと、マイコンの外部に設けられ、書換可能な不揮発性の外部メモリと、を備え、書換装置から送信された書込データがマイコンにより転送されて外部メモリに書き込まれ、外部メモリのデータが更新される電子制御装置に関する。
【背景技術】
【０００２】
特許文献１には、マイコンと、マイコンの外部に設けられ、書換可能な不揮発性の外部メモリと、を備え、書換装置から送信された書込データがマイコンにより転送されて外部メモリに書き込まれ、外部メモリのデータが更新される電子制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２６８１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された電子制御装置では、マイコン（第一マイコン）が、外部メモリ（第二マイコンのＲＯＭ）から取得した書込データと、書換装置から送信された、書込データと同一のデータである比較対象データとを比較する。そして、マイコンは、比較結果を書換装置に送信する。これにより、マイコンから外部メモリへのデータ転送過程でエラーが生じたか否かを、書換装置にて把握することができる。
【０００５】
しかしながら、上記電子制御装置では、第三者により不正データが書き込まれた場合、外部メモリに書き込まれたデータと比較対象データが一致することとなるため、不正データの書き込みを検出することができない。
【０００６】
本発明は上記問題点に鑑み、書込データがマイコンにより転送されて外部メモリに書き込まれ、外部メモリのデータが更新される電子制御装置において、不正データの書き込みを検出できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
ここに開示される発明は、上記目的を達成するために以下の技術的手段を採用する。なお、特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【０００８】
開示された発明のひとつは、マイコン（３０）と、マイコンの外部に設けられ、書換可能な不揮発性の外部メモリ（４４）と、を備え、
書換装置（６０）から送信された書込データがマイコンにより転送されて外部メモリに書き込まれ、外部メモリのデータが更新される電子制御装置であって、
マイコンが、書込データが不正データであるか否かを判定するための基準値を、受信した書込データ内の所定アドレスから抽出する抽出部（Ｓ５０６，Ｓ５０８）と、外部メモリに書き込まれた書込データを、外部メモリから取得する取得部（Ｓ５２０，Ｓ５２２）と、取得部が取得した書込データのうち、基準値を除くデータを用いて、所定の演算を実行する演算部（Ｓ５２４，Ｓ５２６，Ｓ５２８）と、演算部による演算結果と基準値との関係が、予め設定された所定の関係を満たすか否かを判定する判定部（Ｓ６０２）と、判定部の判定結果を書換装置に送信する通知部（Ｓ６０６，Ｓ６１０）と、を有し、
マイコンは、書換可能な不揮発性メモリ（３４）を有し、
基準値のアドレス情報は、不揮発性メモリにおいてデータの書き換えが不可能な非書換領域（３４ｂ）に予め記憶されている。
【０００９】
不正データが書き込まれた場合、書込データ内の所定アドレスには基準値が格納されていない。よって、マイコンが所定アドレスから抽出した値と、所定アドレスのデータを除く書込データによる演算結果との関係が、所定の関係を満たすことはない。一方、正規の書込データが書き込まれた場合、書込データ内の所定アドレスには基準値が格納されている。よって、マイコンが抽出した基準値と、基準値を除く書込データによる演算結果との関係が、所定の関係を満たす。このように本発明によれば、書込データが正規に書き込まれたデータであるか、それとも不正データであるのかを判定することができる。すなわち、不正データの書き込みを検出することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る電子制御装置及びデータ書換システムの概略構成を示す図である。
【図２】第２マイコンのＲＯＭのデータ更新手順を示す図である。
【図３】第２マイコンのＲＯＭのデータ更新に際して、第１マイコンが実行する処理を示すフローチャートである。
【図４】第１マイコンが実行する消去通信処理を示すフローチャートである。
【図５】第１マイコンが実行する書換通信処理を示すフローチャートである。
【図６】第１マイコンが実行する不正確認処理を示すフローチャートである。
【図７】第２マイコンのＲＯＭのデータ更新に際して、書換装置が実行する処理を示すフローチャートである。
【図８】第２マイコンのＲＯＭのデータ更新に際して、第２マイコンが実行する処理を示すフローチャートである。
【図９】第２実施形態において、第１マイコンのＲＯＭに記憶される複数のアドレス情報を示す図である。
【図１０】第２実施形態において、第２マイコンのデータ更新に際し、第１マイコンが実行する処理を示すフローチャートである。
【図１１】第３実施形態において、第２マイコンのデータ更新に際し、第１マイコンが実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図に基づいて説明する。なお、各実施形態において、共通乃至関連する要素には同一の符号を付与するものとする。
【００１２】
（第１実施形態）
先ず、図１に基づき、本実施形態に係る電子制御装置及びデータ書換システムの概略構成を説明する。
【００１３】
図１に示すように、データ書換システム１０は、電子制御装置２０と、書換装置６０と、を備えている。以下において、電子制御装置２０をＥＣＵ２０と称する。ＥＣＵは、Electronic Control Unitの略称である。
【００１４】
ＥＣＵ２０は、車両用の電子制御装置である。ＥＣＵ２０の制御対象としては、たとえばエンジンを挙げることができる。しかしながら、制御対象についてエンジンに特に限定されず、各種電子制御装置に適用することができる。ＥＣＵ２０は、第１マイコン３０と、第２マイコン４０と、外部通信線５０と、内部通信線５１などを有している。
【００１５】
第１マイコン３０は、通信回路３１，３２、ＣＰＵ３３、ＲＯＭ３４、ＲＡＭ３５、図示しないレジスタ、及びＩ／Ｏポートなどを備えて構成されたマイクロコンピュータである。この第１マイコン３０がマイコンに相当し、ＲＯＭ３４が不揮発性メモリに相当する。
【００１６】
第１マイコン３０において、ＣＰＵ３３が、ＲＡＭ３５やレジスタの一時記憶機能を利用しつつ、ＲＯＭ３４に予め記憶された制御プログラム、通信線を介して取得した各種データなどに応じて信号処理を行う。また、この信号処理で得られた信号を、通信線を介して第１マイコン３０の外部に出力したりする。このようにして、第１マイコン３０は、各種機能を実行する。
【００１７】
ＣＰＵ３３は、通信回路３１及び外部通信線５０を介して、書換装置６０とシリアル通信が可能である。さらにＣＵＰ３３は、通信回路３２及び内部通信線５１を介して、第２マイコン４０とシリアル通信が可能である。
【００１８】
ＲＯＭ３４は、書換可能、すなわちデータの消去及び書き込みが可能な不揮発性メモリである。ＲＯＭ３４としては、電気的に書換可能なフラッシュメモリを採用することができる。ＲＯＭ３４は、データの消去及び書き込みが可能な書換可能領域３４ａと、データの消去及び書き込みが不可能な非書換領域３４ｂと、を有している。非書換領域３４ｂは、マスク領域とも称される。
【００１９】
書換可能領域３４ａには、第１マイコン３０が制御対象を制御するために必要な演算処理を、ＣＰＵ３３にて実行するための制御プログラムなどが記憶されている。なお、制御プログラムは、制御ソフトとも称される。書換可能領域３４ａには、制御プログラムなどが記憶される領域とは別に、正規データの書き込みが完了したか否かを管理するためのフラグが記憶されるフラグ領域３４ａ１が設けられている。
【００２０】
非書換領域３４ｂには、第１マイコン３０が、ＲＯＭ３４における書換可能領域３４ａ内に記憶されたデータ（制御プログラムなど）を更新したり、書換可能領域３４ａに新規データを追加するための書換プログラムなどが記憶されている。なお、プログラムの書き換えは、リプログラミング、リプログ、リプロとも称される。このため、書換プロフラムは、リプログソフトとも称される。非書換領域３４ｂには、書換プログラムなどが記憶される領域とは別に、後述する基準値格納先のアドレス情報が記憶されるアドレス情報領域３４ｂ１が設けられている。本実施形態では、アドレス情報領域３４ｂ１に、基準値のアドレス情報のみが記憶されている。
【００２１】
第２マイコン４０は、通信回路４１、ＣＰＵ４３、ＲＯＭ４４、ＲＡＭ４５、図示しないレジスタ、及びＩ／Ｏポートなどを備えて構成されたマイクロコンピュータである。第２マイコン４０のＲＯＭ４４が、不揮発性の外部メモリに相当する。
【００２２】
第２マイコン４０において、ＣＰＵ４３が、ＲＡＭ４５やレジスタの一時記憶機能を利用しつつ、ＲＯＭ４４に予め記憶された制御プログラム、通信線を介して取得した各種データなどに応じて信号処理を行う。また、この信号処理で得られた信号を、通信線を介して第２マイコン４０の外部に出力したりする。このようにして、第２マイコン４０は、各種機能を実行する。
【００２３】
ＣＰＵ４３は、通信回路４１及び内部通信線５１を介して第１マイコン３０とシリアル通信が可能である。ＲＯＭ４４は、書換可能な不揮発性メモリである。ＲＯＭ４４としては、ＲＯＭ３４同様、電気的に書換可能なフラッシュメモリを採用することができる。ＲＯＭ４４も、データの消去及び書き込みが可能な書換可能領域４４ａと、データの消去及び書き込みが不可能な非書換領域４４ｂと、を有している。
【００２４】
書換可能領域４４ａには、第２マイコン４０が制御対象を制御するために必要な演算処理を、ＣＰＵ４３にて実行するための制御プログラムなどが記憶されている。非書換領域４４ｂには、第２マイコン４０が、ＲＯＭ４４における書換可能領域４４ａ内に記憶されたデータ（制御プログラムなど）を更新したり、書換可能領域４４ａに新規データを追加するための書換プログラムなどが記憶されている。
【００２５】
次に、図２に基づき、第２マイコン４０のＲＯＭ４４のデータ更新について説明する。データ更新は、たとえばＥＣＵ２０の工場出荷時や、工場出荷後にディーラーなどで実行される。なお、更新するデータ、すなわち書き換えるプログラムは、ＥＣＵ２０が各種制御を実行するための制御プログラムなどである。本実施形態では、一例として、制御プログラムを書き換える。図２では、第１マイコン３０を第１ＭＣ、第２マイコン４０を第２ＭＣとも示す。
【００２６】
図２に示すように、第１マイコン３０は、書換装置６０から第２マイコン４０のＲＯＭ４４の書換可能領域４４ａに記憶されている制御ログラムのリプロ要求（書換要求）を受信すると、上記したフラグを異常値にセットする。そして、第１マイコン３０は、セットが完了したことを示す応答信号を、書換装置６０に送信する。
【００２７】
次いで、第１マイコン３０が、書換装置６０から第２マイコン４０への消去コマンドを受信及びＲＯＭ４４のデータを消去するアドレスデータを受信すると、消去コマンド及びアドレスデータを第２マイコン４０に転送する。第２マイコン４０は、消去コマンドを受信すると、ＣＰＵ４３にて実行する書換プログラムにより、書換可能領域４４ａにおけるアドレスデータに従う領域内のデータを消去する。データが消去された領域は、データ書き込み可能な状態となる。消去処理が終了すると、第２マイコン４０は、消去処理終了を示す応答信号を第１マイコン３０に送信し、第１マイコン３０は、この応答信号を書換装置６０に転送する。
【００２８】
次いで、第１マイコン３０が、書換装置６０から第２マイコン４０への書込コマンド及び書込データを受信すると、書込コマンド及び書込データを第２マイコン４０に転送する。第１マイコン３０は、受信した書込データ内の所定アドレスに格納されている基準値を抽出する。第１マイコン３０は、書込データを受信しながら基準値を抽出する。
【００２９】
本実施形態では、ＥＣＵ２０を安価に構成するために、第２マイコン４０として第１マイコン３０よりも不揮発性メモリ（ＲＯＭ４４）の容量が小さく、受信処理能力が低い安価なマイコンを用いている。したがって、書換装置６０と第１マイコン３０との間に一度に送受信可能なデータ量に対して、第１マイコン３０と第２マイコン４０との間で一度に送受信可能なデータ量が小さい。このため、第１マイコン３０は、受信したデータを一旦ＲＡＭ３５に保存し、第２マイコン４０が一度に受信可能なデータ量に分割して送信する。
【００３０】
第２マイコン４０は、書込コマンドを受信すると、その後送られてくる書込データを、ＲＯＭ４４の書換可能領域４４ａ内において、データ消去によりデータ書き込み可能な状態となった領域に書き込み、ＲＯＭ４４が記憶するデータ（制御プログラム）を更新する。
【００３１】
受信分の書込処理が終了すると、第２マイコン４０は、書込処理終了を示す応答信号を第１マイコン３０に送信し、第１マイコン３０は、この応答信号を書換装置６０に転送する。
【００３２】
次いで、第１マイコン３０は、書換装置６０からＲＯＭ４４に書き込まれた書込データを読み出すための読出コマンドを受信すると、この読出コマンドを第２マイコン４０に転送する。第２マイコン４０は、読出コマンドを受信すると、先の書込処理によって書換可能領域４４ａに書き込んだ書込データを読み出して、第１マイコン３０に送信する。以下においては、第２マイコン４０から第１マイコン３０へ送信する書込データを、読出データと示す。
【００３３】
第１マイコン３０は読出データを受信しながら、予め設定された所定の演算を実行し、演算結果をＲＡＭ３５に保存する。第１マイコン３０は、後述するように、読出データに基準値が含まれていると、この基準値を除外して演算を実行する。そして、第２マイコン４０から送信された読出データについて演算が終了すると、終了を示す応答信号を書換装置６０に送信する。本実施形態では、図２に示すように、所定バイト単位、たとえば第２マイコン４０が一括消去できるブロック単位（一例として１６ｋバイト）で、上記した書き込み及び読み出しを繰り返す。したがって、最終的には、演算結果が、基準値を除くすべての読出データを用いたものとなる。
【００３４】
すべての書込データについてデータの書き込み及び読み出しが完了すると、書換装置６０は、第１マイコン３０に対して、不正確認コマンドを送信する。不正確認コマンドは、先に書き込まれた書込データが、不正に書き込まれたデータであったか否か、すなわちＲＯＭ４４のデータが不正に改ざんされたか否かの確認を指示するチェックコマンドである。不正確認コマンドは、ベリファイコマンドとも称される。
【００３５】
第１マイコン３０は、不正確認コマンドを受信すると、基準値と演算結果とに基づき、書込データが不正データか否かについて判定する判定処理を実行する。そして、判定結果に応じてフラグをセットし、判定結果、すなわちフラグのセット状態に応じた応答信号を、書換装置６０に送信する。
【００３６】
次に、図３〜図６に基づき、第２マイコン４０のＲＯＭ４４のデータ更新に際して、第１マイコン３０が実行する処理について説明する。第１マイコン３０は、書換装置６０から第２マイコン４０のリプロ要求を受信すると、以下に示す処理を実行する。具体的には、第１マイコン３０のＣＰＵ３３が、ＲＯＭ３４の非書換領域３４ｂに記憶されている書換プログラムに従って、処理を実行する。
【００３７】
書換装置６０から、リプロ要求として、ＩＤコードを含むデータが暗号化されて送信される。第１マイコン３０は、通信回路３１により受信したリプロ要求を復号し、非書換領域３４ｂのアドレス情報領域３４ｂ１に記憶されている第２マイコン４０のデータ更新用のＩＤコードと照合する。そして、照合の結果、一致する場合、図３に示すように、ＩＤコードに関連付けられてアドレス情報領域３４ｂ１に記憶されている基準値のアドレス情報を、ＲＡＭ３５に設定（保存）する（ステップＳ１００）。
【００３８】
また、第１マイコン３０は、書換可能領域３４ａのフラグ領域３４ａ１に記憶されるフラグを異常値にセットする（ステップＳ２００）。なお、ステップＳ１００，Ｓ２００の処理は、いずれを先に実行してもよい。たとえばフラグを異常値にセットした後に、アドレス情報をＲＡＭ３５に設定してもよい。
【００３９】
データの暗号化及び復号については、ＡＥＳ（Advanced Encryption Standard）などの共通鍵暗号アルゴリズムや公開鍵暗号アルゴリズムなどの周知技術を用いることができる。なお、リプロ要求に限らず、その他の各種コマンドや書込データも書換装置６０にて暗号化されて送信され、第１マイコン３０で復号される。以下において、暗号化及び復号に関する記載を省略する。
【００４０】
ステップＳ１００，Ｓ２００の処理が終了すると、第１マイコン３０は、フラグセットが完了したことを示す応答信号を、通信回路３１を介して書換装置６０に送信する（ステップＳ３００）。ステップＳ３００が終了すると、第１マイコン３０は、消去通信処理を実行する（ステップＳ４００）。図４は、第１マイコン３０が実行する消去通信処理を示している。
【００４１】
図４に示すように、第１マイコン３０は、通信回路３１を介して第２マイコン４０への消去コマンドを受信したか否かを判定する（ステップＳ４０２）。第１マイコン３０は、消去コマンドを受信するまで待機する。
【００４２】
第２マイコン４０への消去コマンドを受信したと判定すると、第１マイコン３０は、通信回路３１を介して、データを消去するＲＯＭ４４のアドレスデータを受信する（ステップＳ４０４）。ステップＳ４０４では、第１マイコン３０が、アドレスデータを受信するだけでなく、受信したアドレスデータを第２マイコン４０用のアドレスデータに変換し、これをＲＡＭ３５に保存することで、受信処理を終了する。
【００４３】
ステップＳ４０４の終了後、第１マイコン３０は、受信した消去コマンドを、第２マイコン４０が受付可能な第２マイコン４０用の消去コマンドに変換し、通信回路３２を介して第２マイコン４０に送信する（ステップＳ４０６）。次いで第１マイコン３０は、変換したアドレスデータを第２マイコン４０に送信する（ステップＳ４０８）。アドレスデータについては、必要に応じて第２マイコン４０が一度に受信可能なデータ量に分割し、通信回路３２を介して第２マイコンに送信する。
【００４４】
ステップＳ４０８の終了後、第１マイコン３０は、第２マイコン４０の消去処理が終了したか否かを判定する（ステップＳ４１０）。第１マイコン３０は、通信回路３２を介して、第２マイコン４０から消去処理終了を示す応答信号を受信するまで待機する。消去処理終了を示す応答信号を受信したと判定すると、第１マイコン３０は次のステップＳ４１２の処理を実行する。第１マイコン３０は、ステップＳ４１２において、第２マイコン４０の消去処理が終了したことを示す応答信号を書換装置６０に送信する。以上により、第１マイコン３０は、消去通信処理を終了する。
【００４５】
図３に戻り、第１マイコン３０は、ステップＳ４００の消去通信処理が終了すると、次いで、書換通信処理を実行する（ステップＳ５００）。図５は、第１マイコン３０が実行する書換通信処理を示している。
【００４６】
図５に示すように、第１マイコン３０は、通信回路３１を介して第２マイコン４０への書込コマンドを受信したか否かを判定する（ステップＳ５０２）。第１マイコン３０は、書込コマンドを受信するまで待機する。
【００４７】
書込コマンドを受信したと判定すると、第１マイコン３０は、通信回路３１を介して書込データを受信する（ステップＳ５０４）。ステップＳ５０４では、第１マイコン３０が書込データを受信するだけでなく、受信した書込データを第２マイコン４０が解釈可能な書込データに変換し、これをＲＡＭ３５に保存することで、受信処理を終了する。
【００４８】
上記したように、本実施形態では、第２マイコン４０のデータを更新する際に、第１マイコン３０が１回の処理で全書込データを受信するのではなく、所定バイト単位分の書込データを受信する。
【００４９】
第１マイコン３０は、ＲＡＭ３５に設定されている基準値のアドレス情報（ステップＳ１００参照）に基づき、書込データに所定アドレスのデータが含まれているか否か、すなわち所定アドレスのデータを受信したか否かを判定する（ステップＳ５０６）。第１マイコン３０は、所定アドレスのデータを受信したと判定すると、当該アドレスの値を基準値としてＲＡＭ３５に保存し（ステップＳ５０８）、次いでステップＳ５１０を実行する。ステップＳ５０６，５０８の処理については、書込データをＲＡＭ３５に保存しつつ順に実行してもよいし、すべての書込データをＲＡＭ３５に保存してから実行してもよい。なお、ステップＳ５０６，Ｓ５０８の処理が、抽出部に相当する。
【００５０】
一方、受信した書込データが所定アドレスのものではないと判定した場合、ステップＳ５０８の処理を実行せずに、ステップＳ５１０の処理を実行する。ステップＳ５１０において、第１マイコン３０は、通信回路３２を介して第２マイコン４０へ書込コマンドを送信する。このとき、第１マイコン３０は、書込コマンドを、第２マイコン４０が受付可能な書込コマンドに変換し、変換した書込コマンドを第２マイコン４０へ送信する。
【００５１】
次いで、第１マイコン３０は、書込データを、第２マイコン４０が一度に受信可能なデータ量に分割し、分割した書込データを通信回路３２を介して順に第２マイコン４０へ送信する（ステップＳ５１２）。第１マイコン３０は、１回の送信で書換装置６０から送信された分の書込データについて、書き込みが終了したか否かを判定する（ステップＳ５１４）。第１マイコン３０は、書き込みが終了するまで待機する。第１マイコン３０は、第２マイコン４０から書込処理終了を示す応答信号を受信すると、書き込みが終了したと判定する。書込終了と判定すると、マイコン３０は、通信回路３１を介して書換装置６０に、１回の送信分の書き込みが終了したことを示す応答信号を送信する（ステップ５１６）。
【００５２】
次いで、第１マイコン３０は、通信回路３１を介して第２マイコン４０への読出コマンドを受信したか否かを判定する（ステップＳ５１８）。第１マイコン３０は、読出コマンドを受信するまで待機する。
【００５３】
読出コマンドを受信すると、第１マイコン３０は、読出コマンドを、第２マイコン４０が受付可能な読出コマンドに変換し、変換した読出コマンドを第２マイコン４０へ送信する（ステップＳ５２０）。そして、第２マイコン４０から送信された読出データを受信する（ステップＳ５２２）。ステップＳ５２０，Ｓ５２２の処理が取得部に相当する。
【００５４】
次いで、第１マイコン３０は、ＲＡＭ３５に設定されている基準値のアドレス情報に基づき、読出データに所定アドレスのデータが含まれているか否か、すなわち所定アドレスのデータを受信したか否かを判定する（ステップＳ５２４）。そして、所定アドレスのデータを受信したと判定した場合、当該アドレスの値が基準値であるとして、演算処理の対象から除外し（ステップＳ５２６）、予め設定された所定の演算を実行して演算結果をＲＡＭ３５に保存する（ステップＳ５２８）。一方、読出データが所定アドレスのデータではない場合、ステップＳ５２６を実行せず、ステップＳ５２８を実行する。ステップＳ５２４，Ｓ５２６，Ｓ５２８の処理が、演算部に相当する。
【００５５】
このように、所定アドレスに格納された値である基準値は演算に用いず、基準値以外のデータを演算に用いる。演算手法については特に限定されない。
【００５６】
次いで、第１マイコン３０は、第２マイコン４０から読み出した読出データについて演算が終了すると、演算終了を示す応答信号を書換装置６０に送信する（ステップＳ５３０）。そして、第１マイコン３０は、再び第２マイコン４０への書込コマンドを受信したか否かを判定する（ステップＳ５３２）。書込コマンドを受信したと判定すると、ステップＳ５０４に戻り、ステップＳ５０４以降の処理を繰り返す。書換装置６０から送信される書込データが残っている場合、ステップＳ５３２で書込コマンドを受信することとなる。
【００５７】
ステップＳ５３２で書込コマンドの受信なしと判定すると、第１マイコン３０は、不正確認コマンドを受信したか否かを確認する（ステップＳ５３４）。そして、不正確認コマンドを受信したと判定すると、一連の処理を終了する。書換装置６０から送信される書込データがなくなると、ステップＳ５３４で不正確認コマンドを受信することとなる。
【００５８】
一方、ステップＳ５３４で不正確認コマンドの受信なしと判定すると、ステップＳ５３２に戻る。すなわち、ステップＳ５３０の送信処理後、書込コマンド及び不正確認コマンドのいずれかを受信するまで、ステップＳ５３２，Ｓ５３４の処理を繰り返す。
【００５９】
図３に戻り、第１マイコン３０は、ステップＳ５００の書換通信処理が終了すると、次いで、不正確認処理を実行する（ステップＳ６００）。そして、不正確認処理の実行後、一連の処理を終了する。図６は、第１マイコン３０が実行する不正確認処理を示している。
【００６０】
第１マイコン３０は、不正確認コマンドを受信すると、図６に示す不正確認処理を実行する。先ず第１マイコン３０は、最終的にステップＳ５２８で得られた演算結果と、ステップＳ５０８でＲＡＭ３５に保存した基準値とが、予め決定された所定の関係を満たすか否かを判定する。その一例として本実施形態では、第１マイコン３０が、演算結果と基準値とが一致するか否かを判定する（ステップＳ６０２）。
【００６１】
ステップＳ６０２で一致と判定すると、第１マイコン３０は、フラグ領域３４ａ１に記憶されるフラグを正常値にセットする（ステップＳ６０４）。そして、第１マイコン３０は、書換装置６０へ不正データの書き込みなし、すなわち第三者によるデータ改ざんなしを示す確認結果を送信し（ステップＳ６０６）、一連の処理を終了する。
【００６２】
一方、ステップＳ６０２で一致せずと判定すると、第１マイコン３０は、フラグ領域３４ａ１に記憶されるフラグを異常値のまま維持する（ステップＳ６０８）。換言すれば、フラグを異常時に再びセットする。そして、第１マイコン３０は、書換装置６０へ不正データの書き込みあり、すなわち第三者によるデータ改ざんありを示す確認結果を送信し（ステップＳ６１０）、一連の処理を終了する。
【００６３】
なお、ステップＳ６０２に示す処理が、判定部に相当する。ステップＳ６０６，Ｓ６１０に示す処理が、通知部に相当する。ステップＳ２００，Ｓ６０４，Ｓ６０８に示す処理が、フラグ状態設定部に相当する。
【００６４】
次に、図７に基づき、第２マイコン４０のＲＯＭ４４のデータ更新に際して、書換装置６０が実行する処理について説明する。
【００６５】
書換装置６０は、先ず、第１マイコン３０に対して、第２マイコン４０のリプロ要求を送信する（ステップＳ７００）。このリプロ要求として、上記したように、第２マイコン４０のデータ更新用のＩＤコードを含むデータが暗号化されて送信される。
【００６６】
次いで、書換装置６０は、第１マイコン３０のフラグが異常値にセットされたか否かを判定する（ステップＳ７０２）。書換装置６０は、フラグが異常値にセットされたと判定するまで待機する。書換装置６０は、第１マイコン３０から、異常値へのセット完了を示す応答信号を受信すると、フラグセット済みと判定する。
【００６７】
次いで、書換装置６０は、第１マイコン３０に対して、第２マイコン４０への消去コマンドを送信し（ステップＳ７０４）、送信後は、第２マイコン４０の消去処理が終了したか否かを判定する（ステップＳ７０６）。書換装置６０は、第１マイコン３０から、第２マイコン４０の消去処理終了を示す応答信号を受信するまで待機する。
【００６８】
ステップＳ７０６において消去処理終了と判定すると、書換装置６０は、第１マイコン３０に対して、第２マイコン４０への書込コマンドを送信し（ステップＳ７０８）、次いで書込データを送信する（ステップＳ７１０）。上記したように、書換装置６０は、１回の書込コマンドにつき、所定バイト分の書込データを送信する。
【００６９】
次いで、書換装置６０は、送信分の書込データの書込処理が終了したか否かを判定する（ステップＳ７１２）。書換装置６０は、第１マイコン３０から、第２マイコン４０の書込終了を示す応答信号を受信するまで待機する。ステップＳ７１２で書込処理が終了していると判定すると、書換装置６０は、第２マイコン４０への読出コマンドを送信する（ステップＳ７１４）。
【００７０】
そして、書換装置６０は、第２マイコン４０のＲＯＭ４４のデータ更新に際して、すべての書込データの送信が終了したか否かを判定する（ステップＳ７１６）。ステップＳ７１６で、全書込データの送信が終了していないと判定すると、書換装置６０は、ステップＳ７０８に戻り、残りの書込データについて、ステップＳ７０８以降の処理を実行する。書換装置６０は、第１マイコン３０から演算終了を示す応答信号（ステップＳ５３０参照）を受信したときに、書込データの送信に残りがある場合、全書込データの送信が終了していないと判定し、応答信号を受信したときに書込データに残りがないと、全書込データの送信が終了したと判定する。
【００７１】
ステップＳ７１６で、全書込データの送信が終了したと判定すると、次いで書換装置６０は、第１マイコン３０に対し、不正確認コマンドを送信する（ステップＳ７１８）。そして、書換装置６０は、第１マイコン３０の判定結果を受信し（ステップＳ７２０）、判定結果に関して、ＥＣＵ２０の外部に通知する通知処理を実行する（ステップＳ７２２）。以上により、一連の処理を終了する。
【００７２】
なお、通知処理としては、たとえば車両のモニタに不正データの書き込みがなされたことを表示させるなどが考えられる。これによれば、ユーザに対して、書換装置６０を用いた第２マイコン４０のＲＯＭ４４のデータ更新の再度の実行を促すことができる。
【００７３】
次に、図８に基づき、第２マイコン４０のＲＯＭ４４のデータ更新に際して、第２マイコン４０が実行する処理について説明する。第２マイコン４０は、消去コマンド及びアドレスデータを受信すると、以下に示す処理を実行する。具体的には、第２マイコン４０のＣＰＵ４３が、ＲＯＭ４４の非書換領域４４ｂに記憶されている書換プログラムに従って、処理を実行する。
【００７４】
消去コマンド及びアドレスデータを受信すると、図８に示すように、第２マイコン４０は、書換可能領域４４ａにおけるアドレスデータに従う領域内のデータを消去する（ステップＳ８００）。データが消去された領域は、データ書き込み可能な状態となる。消去処理が終了すると、第２マイコン４０は、消去処理終了を示す応答信号を第１マイコン３０に送信する（ステップＳ８０２）。
【００７５】
次いで第２マイコン４０は、第１マイコン３０から書込コマンドを受信したか否かを判定する（ステップＳ８０４）。第２マイコン４０は、書込コマンドを受信するまで待機する。書込コマンドの受信後、第２マイコン４０は、第１マイコン３０から書込データを受信し（ステップＳ８０６）、データが消去された領域に書込データの書込処理を実行する（ステップＳ８０８）。
【００７６】
第２マイコン４０は、受信分の書込データの書き込みが終了すると、書込終了を示す応答信号を第１マイコン３０に送信する（ステップＳ８１０）。応答信号の送信後、第２マイコン４０は、第１マイコン３０から読出コマンドを受信したか否かを判定する（ステップＳ８１２）。第２マイコン４０は、読出コマンドを受信するまで待機する。
【００７７】
読出コマンドを受信したと判定すると、第２マイコン４０は、ＲＯＭ４４の書換可能領域４４ａに書き込んだ書込データを読み出し、読出データとして第１マイコン３０に送信する（ステップＳ８１４）。第２マイコン４０は、読出データの送信から予め設定された所定時間の間に、書込コマンドを再び受信するか否かを判定する（ステップＳ８１６）。書込コマンドを受信したと判定すると、ステップＳ８０６に戻り、ステップＳ８０６以降の処理を実行する。書込データが残っている場合には、ステップＳ８１６で書込コマンドを受信することとなる。
【００７８】
一方、すべての書込データについての書き込み及び読み出しが終了している場合、ステップＳ８１６で書込コマンドを受信することはなく、一連の処理は終了となる。
【００７９】
次に、上記したＥＣＵ２０及びデータ書換システム１０の効果について説明する。
【００８０】
書込データとして、第三者により不正データが書き込まれた場合、書込データ内の所定アドレスには基準値が格納されていない。よって、アドレス情報により第１マイコン３０が抽出した基準値と、基準値を除く書込データによる演算結果との関係が、所定の関係を満たすことはない。
【００８１】
一方、書換装置６０により正規の書込データが書き込まれた場合、書込データ内の所定アドレスには基準値が格納されている。よって、アドレス情報により第１マイコン３０が抽出した基準値と、基準値を除く書込データによる演算結果との関係が、所定の関係を満たす。
【００８２】
このように本実施形態によれば、基準値と演算結果との判定結果に基づき、書込データが正規に書き込まれたデータであるか、それとも不正データであるのかを判定することができる。すなわち、書込データが第１マイコン３０により転送されて第２マイコン４０のＲＯＭ４４（外部メモリ）に書き込まれ、ＲＯＭ４４のデータが更新されるＥＣＵ２０及びデータ書換システム１０において、第三者による不正データの書き込み、すなわちデータ改ざんを検出することができる。
【００８３】
なお、不正データの書き込みのみならず、ノイズ重畳により、第１マイコン３０と第２マイコン４０との通信過程でエラーが生じた場合にも、基準値と演算結果とが所定の関係を満たさなくなる。したがって、通信過程でのエラーも検出することができる。
【００８４】
また、本実施形態では、基準値のアドレス情報が、第１マイコン３０のＲＯＭ３４における非書換領域３４ｂ（アドレス情報領域３４ｂ１）に予め記憶されている。よって、基準値のアドレス情報を、第１マイコン３０の外部から取得する構成に較べて、基準値及びアドレス情報が外部に第三者の手に渡りにくく、セキュリティ性を向上することができる。
【００８５】
また、本実施形態では、第１マイコン３０のＲＯＭ３４のうち、書換可能領域３４ａにフラグ領域３４ａ１を設け、フラグ領域３４ａ１に、正規データの書き込みが完了したか否かを管理するフラグを記憶されている。そして、第１マイコン３０は、書込データを第２マイコン４０に送信する前に、敢えてフラグを異常状態に設定し、基準値と演算結果との判定の結果、所定の関係を満たす場合にのみフラグを正常状態に設定しなおす。一方、所定の関係を満たさない場合、フラグを異常状態に維持する。このように、フラグを用いることで、フラグ情報をＲＯＭ４４に格納することが厳しい第２マイコン４０を用いる場合でも、不正データの確認を容易に行うことができる。また、途中で処理が止まっても、フラグの状態を確認することができる。
【００８６】
（第２実施形態）
本実施形態は、先行実施形態を参照できる。このため、先行実施形態に示したＥＣＵ２０及びデータ書換システム１０と共通する部分についての説明は省略する。
【００８７】
たとえば、要求される機能に応じて、複数の第２マイコン４０の中からひとつを選択し、ＥＣＵ２０に搭載することが考えられる。このため、本実施形態では、非書換領域３４ｂのアドレス情報領域３４ｂ１に、図９に示すように、複数のアドレス情報が記憶されている。具体的には、ＥＣＵ２０として搭載可能な複数の第２マイコン４０分の基準値のアドレス情報が記憶されている。
【００８８】
本実施形態でも、書換装置６０から、リプロ要求として、ＩＤコードを含むデータが暗号化されて送信される。また、図９に示すように、第２マイコン４０の種類に応じてＩＤコードが設定されている。したがって、第１マイコン３０は、リプロ要求を受信すると、図１０に示すように、リプロ要求として受信したデータのＩＤコードに基づいて、搭載されている第２マイコン４０の種類、すなわち対応する基準値のアドレス情報を選択する（ステップＳ９０）。このステップＳ９０に示す処理が、選択部に相当する。
【００８９】
ステップＳ９０の実行後、第１マイコン３０は、ステップＳ１００を実行する。すなわち、ステップＳ９０で選択した基準値のアドレス情報を、ＲＡＭ３５に設定する。以下の処理は第１実施形態と同じである。
【００９０】
本実施形態によれば、第２マイコン４０を変更しても、共通する第１マイコン３０にて、不正データの書き込み検出を実行することができる。
【００９１】
（第３実施形態）
本実施形態は、先行実施形態を参照できる。このため、先行実施形態に示したＥＣＵ２０及びデータ書換システム１０と共通する部分についての説明は省略する。
【００９２】
先行実施形態では、第１マイコン３０が有するＲＯＭ３４の非書換領域３４ｂ（アドレス情報領域３４ｂ１）に、基準値のアドレス情報が予め記憶されている例を示した。これに対し、本実施形態では、書換装置６０がリプロ要求として、ＩＤコードに加えて基準値のアドレス情報も送信する。
【００９３】
このため、第１マイコン３０は、リプロ要求として、基準値のアドレス情報を受信する。そして、図１１に示すように、受信した基準値のアドレス情報を、ＲＡＭ３５に設定する（ステップＳ１１０）。それ以後の処理については第１実施形態と同じである。ステップＳ１１０に示す処理が、設定部に相当する。
【００９４】
これによれば、ＲＯＭ４４の容量や基準値の格納されるアドレスに変更が生じた場合にも、不正データの書き込み検出を実施することができる。すなわち、設計の自由度を向上することができる。また、ＲＯＭ３４に、予め基準値のアドレス情報を記憶させておく必要がない。
【００９５】
上記実施形態の構造は、あくまで例示であって、本発明の範囲はこれらの記載の範囲に限定されるものではない。本発明の範囲は、特許請求の範囲の記載によって示され、さらに特許請求の範囲の記載と均等の意味及び範囲内でのすべての変更を含むものである。
【００９６】
上記実施形態では、外部メモリとして、第２マイコン４０のＲＯＭ４４の例を示したが
これに限定されるものではない。外部メモリとしては、第１マイコン３０（マイコン）の外部に設けられ、書換可能な不揮発性のメモリであれば採用することができる。
【００９７】
上記実施形態では、第２マイコン４０のＲＯＭ４４のデータ（制御プログラム）を更新する際に、所定バイト単位で書き込み及び読み出しを実行する例を示した。しかしながら、更新するためのすべての書込データを１回の書込コマンドで第１マイコン３０に送信し、１回の読出コマンドですべての読出データを第１マイコン３０に送信する構成を採用することもできる。この場合、図５に示したステップＳ５３０が不要となる。
【００９８】
フラグを用いる例を示したが、フラグのない構成を採用することもできる。
【符号の説明】
【００９９】
１０…データ書換システム、２０…電子制御装置（ＥＣＵ）、３０…第１マイコン、３１，３２…通信回路、３３…ＣＰＵ、３４…ＲＯＭ、３４ａ…書換可能領域、３４ａ１…フラグ領域、３４ｂ…非書換領域、３４ｂ１…アドレス情報領域、４０…第２マイコン、４１…通信回路、４３…ＣＰＵ、４４…ＲＯＭ、４４ａ…書換可能領域、４４ｂ…非書換領域、４５…ＲＡＭ、５０…外部通信線、５１…内部通信線、６０…書換装置
【図１】
0006468168.tif 000002
【図２】
0006468168.tif 000003
【図３】
0006468168.tif 000004
【図４】
0006468168.tif 000005
【図５】
0006468168.tif 000006
【図６】
0006468168.tif 000007
【図７】
0006468168.tif 000008
【図８】
0006468168.tif 000009
【図９】
0006468168.tif 000010
【図１０】
0006468168.tif 000011
【図１１】
0006468168.tif 000012