以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成及び処理の一部のみを説明している場合は、構成及び処理の他の部分については先行して説明した他の形態を参照し適用することができる。
図1に示すように、本実施形態の書き換えシステムは、ECU100と書き換え装置200とを備えて構成されている。本実施形態では、本発明の電子制御装置をECU100に適用した例を採用している。なお、ECUは、Electronic Control Unitの略称である。
この書き換えシステムは、例えばECU100の工場出荷時や、工場出荷後にディーラーなどで、書き換え装置200によって、ECU100に記憶されているプログラムを書き換えるものである。なお、書き換えるプログラムは、ECU100が各種制御を実行するためのプログラムである制御プログラムなどである。また、制御プログラムは、製品ソフトと言い換えることもできる。また、プログラムの書き換えは、リプログラミングと言い換えることができ、更に、リプロと省略することができる。本実施形態では、ECU100に記憶されている制御プログラムを書き換える例を採用する。
書き換え装置200は、特許請求の範囲における外部装置に相当する。この書き換え装置200は、ECU100の外部に設けられており、ECU100に対して書き込みデータを送信する。書き換え装置200は、ECU100と常時接続されているわけではなく、リプロ時にECU100に接続される。
書き換え装置200は、通信バス70を介して、ECU100のメインマイコン10、第1サブマイコン20、第2サブマイコン30と通信が可能に構成されている。よって、書き換え装置200は、通信バス70を介して、書き込みデータをメインマイコン10、第1サブマイコン20、第2サブマイコン30の夫々に送信する。なお、以下においては、メインマイコン10、第1サブマイコン20、第2サブマイコン30の夫々を区別する必要がない場合、これらを纏めてマイコンと省略することもある。
書き込みデータは、ECU100に既に記憶されている制御プログラムにかわって、新たに書き込まれる制御プログラムである。つまり、書き換えシステムは、ECU100に記憶されている制御プログラムを、この書き込みデータに書き換えるものである。また、書き込みデータは、各マイコンに共通のデータである共通データと、マイコン毎で異なる個別データとを含むものである。
書き換え装置200は、共通データを送信する場合、書き込みデータが共通データであることを各マイコンが認識可能な状態で送信する。例えば、書き換え装置200は、書き込みデータとして共通データを送信する場合、共通データであることを示す識別子と共に送信する。なお、書き換え装置200の処理動作に関しては、後程詳しく説明する。
ここで、ECU100の構成に関して説明する。ECU100は、メインマイコン10、第1サブマイコン20、第2サブマイコン30と、各マイコンに接続されたバス通信トランシーバ40〜60と、バス通信トランシーバ40〜60の夫々に接続された通信バス70とを備えて構成されている。また、ECU100は、メインマイコン10と第1サブマイコン20とを通信可能に接続している第1通信線81と、メインマイコン10と第2サブマイコン30とを通信可能に接続している第2通信線82とを備えている。しかしながら、ECU100は、第1通信線81及び第2通信線82を備えていなくてもよい。なお、ECU100の処理動作に関しては、後程詳しく説明する。
ECU100は、例えば、自動車に搭載されて、二つのモータを制御するモータ制御装置に適用できる。また、本実施形態では、一例として、三つのCPUを備えたECU100を採用している。しかしながら、本発明はこれに限定されない。ECU100は、少なくとも二つのマイコンを備えていればよい。つまり、ECU100は、二つのCPUと、各CPUに対応してに対して個別に設けられたフラッシュメモリとを備えていればよい。
また、ECU100は、共通のデータを用いる複数のマイコンが設けられた電子制御装置であれば適用できる。言い換えると、ECU100は、共通ロジックを有する複数のマイコンが設けられた電子制御装置であれば適用できる。更に、ECU100は、例えばEPS(電動パワーステアリング)用の電子制御装置などにも適用できる。
各マイコンは、通信バス70に対して共通に接続されている。よって、ECU100は、各マイコンに共通に接続された一つの通信バス70を備えている、と言うことができる。この通信バス70を介したネットワークは、例えばCANの通信プロトコルに準拠したネットワークを採用できる。CANは登録商標である。よって、通信バス70は、CANバスと言い換えることができる。また、書き換え装置200は、ECU100に取り付けられた場合、通信バス70に接続されて、ECU100と通信可能となる。つまり、各マイコンは、通信バス70を共用して、書き換え装置200とのデータ通信を行う。また、各マイコンは、自身以外のマイコンを経由することなく書き換え装置200と直接通信できる。
各マイコン及び書き換え装置200は、通信バス70を介してデータを送信する場合、データの送信先を示す通信IDをデータに付与して送信する。つまり、各マイコン及び書き換え装置200は、通信バス70を介して、通信IDとデータとを含む通信フレームを送信する。
特に、書き換え装置200は、複数のマイコンに対してデータを送信するものであり、且つ、データ毎の送信対象であるマイコンが異なることがある。そこで、本実施形態では、一例として、通信ID=1,2,3,4を採用する。通信ID=1は、メインマイコン10、第1サブマイコン20、第2サブマイコン30の全てが送信先であることを示す。通信ID=2は、メインマイコン10が送信先であることを示す。通信ID=3は、第1サブマイコン20が送信先であることを示す。通信ID=4は、第2サブマイコン30が送信先であることを示す。このように、通信IDは、送信先を示すものである。このため、通信ID=1は、上記共通データであることを示す識別子として用いることもできる。なお、各マイコンと書き換え装置200とで通信されるデータは、書き込みデータや各種コマンドなどを含む。
メインマイコン10は、メインCPU11、フラッシュメモリ12、バス通信コントローラ13、RAM14、シリアル通信コントローラ15などを備えて構成されている。これらの構成要素は、メインマイコン10内において、図示を省略するバスを介して、適宜接続されている。なお、CPUは、Central Processing Unitの略称である。RAMは、Random Access Memoryの略称である。
メインマイコン10は、メインCPU11がRAM14やレジスタの一時記憶機能を利用しつつ、フラッシュメモリ12に予め記憶された制御プログラムやバス通信コントローラ13などを介して取得した信号などに応じて信号処理を行う。また、メインマイコン10は、信号処理で得られた信号を、バス通信コントローラ13などを介して出力する。メインマイコン10は、このようにすることで各種機能を実行することができる。
なお、メインCPU11は、バス通信コントローラ13、バス通信トランシーバ40及び通信バス70を介して、書き換え装置200や第1サブマイコン20や第2サブマイコン30と通信が可能である。更に、メインCPU11は、シリアル通信コントローラ15及び第1通信線81を介して第1サブマイコン20とシリアル通信が可能であり、シリアル通信コントローラ15及び第2通信線82を介して第2サブマイコン30とシリアル通信が可能である。このシリアル通信としては、例えば、UARTなどを採用できる。また、第1通信線81を介した通信、及び第2通信線82を介した通信は、通信バス70を介したバス通信に対して、CPU間通信と称することができる。また、CPU間通信は、シリアル通信に限定されない。本発明は、メインCPU11が後程説明する第1CPU21や第2CPU31と通信できるものであればCPU間通信として採用できる。
また、メインマイコン10は、ECU100に書き換え装置200が接続されている場合、バス通信トランシーバ40及び通信バス70を介して、書き換え装置200と通信可能な状態となる。このような状態の場合、メインマイコン10は、自身のバス通信コントローラ13、及びバス通信トランシーバ40や通信バス70を介して、書き換え装置200から送信された通信フレームを受信することができる。
これによって、メインCPU11は、フラッシュメモリ12に記憶されている制御プログラムを、受信した通信フレームに含まれる書き込みデータに書き換えることができる。このメインCPU11は、特許請求の範囲における書き換え手段に相当する。また、フラッシュメモリ12は、メインCPU11と共にメインマイコン10に設けられているため、メインCPU11に対応している不揮発性メモリと言うことができる。
第1サブマイコン20は、第1CPU21、フラッシュメモリ22、バス通信コントローラ23、RAM24、シリアル通信コントローラ25などを備えて構成されている。このように、第1サブマイコン20は、メインマイコン10と同様の構成を有している。また、第1CPU21は、メインマイコン10と同様に、書き込みデータの受信、フラッシュメモリ22の書き換えを行うことができる。この第1CPU21は、特許請求の範囲における書き換え手段に相当する。また、フラッシュメモリ22は、第1CPU21と共に第1サブマイコン20に設けられているため、第1CPU21に対応している不揮発性メモリと言うことができる。
なお、第1サブマイコン20は、第1CPU21がメインCPU11と同様に信号処理を行い、各種機能を実行する。しかしながら、第1サブマイコン20は、メインマイコン10と異なる機能を実行可能であってもよい。
また、第1CPU21は、バス通信コントローラ23、バス通信トランシーバ50及び通信バス70を介して、書き換え装置200やメインマイコン10や第2サブマイコン30と通信が可能である。更に、第1CPU21は、シリアル通信コントローラ25及び第1通信線81を介して、メインマイコン10とシリアル通信が可能である。
第2サブマイコン30は、第2CPU31、フラッシュメモリ32、バス通信コントローラ33、RAM34、シリアル通信コントローラ35などを備えて構成されている。このように、第2サブマイコン30は、メインマイコン10と同様の構成を有している。また、第2CPU31は、メインマイコン10と同様に、書込みデータの受信、フラッシュメモリ32の書き換えを行うことができる。この第2CPU31は、特許請求の範囲における書き換え手段に相当する。また、フラッシュメモリ32は、第2CPU31と共に第2サブマイコン30に設けられているため、第2CPU31に対応している不揮発性メモリと言うことができる。
なお、第2サブマイコン30は、第2CPU31がメインCPU11と同様に信号処理を行い、各種機能を実行する。しかしながら、第2サブマイコン30は、メインマイコン10と異なる機能を実行可能であってもよい。
また、第2CPU31は、バス通信コントローラ33、バス通信トランシーバ60及び通信バス70を介して、書き換え装置200やメインマイコン10や第1サブマイコン20と通信が可能である。更に、第2CPU31は、シリアル通信コントローラ35及び第2通信線82を介して、メインマイコン10とシリアル通信が可能である。なお、以下においては、メインCPU11,第1CPU21,第2CPU31の夫々を区別する必要がない場合、これらを纏めてCPUと省略することもある。
フラッシュメモリ12,22,32は、特許請求の範囲における不揮発性メモリに相当する。各フラッシュメモリは、電気的にデータの書き換えが可能な記憶装置である。また、各フラッシュメモリには、各マイコンで用いられる制御プログラムが書き込まれている。フラッシュメモリ12は、図2に示すように、共通領域12aと個別領域12bとに領域が分けられている。同様に、フラッシュメモリ22は、共通領域22aと個別領域22bとに領域が分けられている。また、フラッシュメモリ32は、共通領域32aと個別領域32bとに領域が分けられている。
共通領域12a,22a,32aは、制御プログラムの一部であり、各マイコンで共通に用いられるデータが記憶されている記憶領域である。一方、個別領域12b,22b,32bは、制御プログラムの一部であり、マイコン毎に異なるデータが記憶されている記憶領域である。よって、上記書き込みデータの共通データは、各共通領域12a,22a,32aに書き込まれる。一方、書き込みデータの個別データは、各個別領域12b,22b,32bに書き込まれる。
例えば、各マイコンは、制御対象が同種の機器である場合、制御定数に関するデータは異なるが、制御ロジックに関するデータは共通で用いることができる。よって、共通領域12a,22a,32aには、制御プログラムの一部として制御ロジックに関するデータが記憶される。一方、個別領域12b,22b,32bには、制御プログラムの一部として制御定数に関するデータが記憶される。具体的には、二つのモータジェネレータに対応したインバータの場合、モータ制御定数に関するデータを除き、制御ロジックに関するデータは共通に用いることができる。
また、以下においては、メインCPU11で用いられる個別データをメインCPUデータ、第1CPU21で用いられる個別データを第1CPUデータ、第2CPU31で用いられる個別データを第2CPUデータとも称する。
ここで、書き換えシステムの処理動作に関して説明する。まず、図3を用いて、書き換えシステムにおける、データの書き換え処理の全体的な流れを説明する。
ステップS10では、共通領域の書き換えを行う。各CPUは、共通領域12a,22a,32aの夫々に記憶されているデータを消去し、共通領域12a,22a,32aの夫々に、共通データを書き込むことで、各共通領域12a,22a,32aの書き換えを行う。また、各CPUによる各共通領域12a,22a,32aの書き換えは、時間的に並行して行われる。
ステップS11では、個別領域の書き換えを行う。書き換えシステムは、ステップS11をマイコンの個数分ループする。つまり、個別領域の書き換えを行う際には、一つのマイコンにおける個別領域の消去と、その個別領域に対する個別データの書き込みを1ループとして、このループをマイコンの個数分行う。
具体的には、メインCPU11は、個別領域12bに記憶されているデータを消去し、この個別領域12bに新たな個別データを書き込むことで、個別領域12bの書き換えを行う。また、第1CPU21は、個別領域22bに記憶されているデータを消去し、この個別領域22bに新たな個別データを書き込むことで、個別領域22bの書き換えを行う。そして、第2CPU31は、個別領域32bに記憶されているデータを消去し、この個別領域32bに新たな個別データを書き込むことで、個別領域32bの書き換えを行う。これら各CPUによる各個別領域12b,22b,32bの書き換えは、異なるタイミングで行われる。なお、ECU100は、複数のマイコンのうち、個別データを書き換える必要がないマイコンが含まれていてもよい。
このように、ECU100は、フラッシュメモリ12,22,32に記憶されている制御プロフラムを消去して、受信した書き込みデータをフラッシュメモリ12,22,32に書き込む。このようにして、ECU100は、フラッシュメモリ12,22,32を受信した書き込みデータに書き換える。
ここで、書き換え装置200及び各マイコンの処理動作に関して詳細に説明する。まず、図4〜図6を用いて、書き換え装置200の処理動作に関して説明する。
書き換え装置200は、図4に示すように、ステップS20で共通データの書き換えを行い、ステップS21で個別データの書き換えを行う。書き換え装置200は、ステップS20,S21では、各マイコンに対して指示を送信し、各マイコンからの応答を受信する。
書き換え装置200は、共通データの書き換えを行う場合、図5に示すフローチャートを実行する。ステップS30では、全マイコンへ消去指示を行う。書き換え装置200は、消去指示のコマンド及び通信ID=1を含む通信フレームを通信バス70に出力する。つまり、書き換え装置200は、この通信フレームを、メインCPU11,第1CPU21,第2CPU31の夫々に対して一斉に送信する。
なお、後程説明するが、各マイコンは、消去コマンドを受信すると、各フラッシュメモリ12,22,32の消去を実施すると共に、その消去が成功したか否かを判定する。そして、各マイコンは、その判定結果として、消去が成功したことを示す肯定応答、又は消去が失敗したことを示す否定応答を書き換え装置200に送信する。つまり、各マイコンは、コマンド実行が成功したか否かを書き換え装置200に通知する。
ステップS31では、全マイコンから肯定応答を受信したか否かを判定する。書き換え装置200は、全マイコンから肯定応答を受信したと判定した場合はステップS32へ進み、全マイコンから肯定応答を受信したと判定してない場合はS30へ戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS30に戻る。この所定時間は、タイムアウト時間と称することもできる。また、タイムアウト時間は、例えば規定時間にマージンを加えた時間である。
なお、書き換え装置200は、ステップS32に進むことなく、ステップS30,S31を所定回数繰り返した場合、図6の処理を終了する。以下においては、このように処理と判定を所定回数繰り返した場合に、そのフローチャートの処理を終了することをリトライ処理とも称する。
ステップS32では、全マイコンに対して書き込み指示及び書き込みデータを送信する。書き換え装置200は、書き込みデータとして共通データを送信する。具体的には、書き換え装置200は、書き込み指示を示す情報、共通データ、及び通信ID=1を含む通信フレームを通信バス70に出力する。このように、共通データは全てのマイコンに共通であるため、書き換え装置200は、全てのマイコンが送信先となる通信ID=1を含む通信フレームを送信する。つまり、書き換え装置200は、この通信フレームを、複数のCPUに対して一斉に送信する。なお、書き換え装置200は、書き込み指示を示す情報として書き込みデータ(ここでは共通データ)を用いてもよい。つまり、各マイコンは、自身宛ての書き込みデータを受信すると、書き込み指示とみなして、受信した書き込みデータを各フラッシュメモリ12,22,32に書き込む。また、書き換え装置200は、書き込みデータと通信IDに加えて、書き込みデータが共通データであるか、個別データであるかを示すデータ種別を示す情報を含む通信フレームを送信してもよい。
なお、後程説明するが、各マイコンは、書き込みデータを受信すると、受信した書き込みデータを各フラッシュメモリ12,22,32に書き込むと共に、その書き込みが成功したか否かを判定する。そして、各マイコンは、その判定結果として、書き込みが成功したことを示す肯定応答、又は書き込みが失敗したことを示す否定応答を書き換え装置200に送信する。つまり、各マイコンは、コマンド実行が成功したか否かを書き換え装置200に通知する。
ステップS33では、全マイコンから肯定応答を受信したか否かを判定する。書き換え装置200は、全マイコンから肯定応答を受信したと判定した場合は図6の処理を終了し、全マイコンから肯定応答を受信したと判定してない場合はS32へ戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS32に戻る。なお、書き換え装置200は、ステップS32,S33でリトライ処理を実行する。
書き換え装置200は、個別データの書き換えを行う場合、図6に示すフローチャートを実行する。書き換え装置200は、書き換え対象のフラッシュメモリが設けられているマイコンの個数分、ステップS40〜S43を繰り返す。この書き換え対象のフラッシュメモリが設けられているマイコンは、書き換え対象のマイコンと言い換えることができる。本実施形態では、メインマイコン10,第1サブマイコン20,第2サブマイコン30が書き換え対象のマイコンである。よって、書き換え装置200は、ステップS40〜S43を三回繰り返す。つまり、書き換え装置200は、メインマイコン10,第1サブマイコン20,第2サブマイコン30に対して順番に個別データの書き換えを行う。
ステップS40では、マイコンnへ消去指示を行う。書き換え装置200は、複数のマイコンのうちの一つに対して消去指示を行う。本実施形態では、n=1,2,3とし、n=1がメインマイコン10、n=2が第1サブマイコン20、n=3が第2サブマイコン30とする。また、ここでは、書き換え装置200がメインマイコン10から消去指示を行う例を採用する。よって、まず、書き換え装置200は、消去指示のコマンド及び通信ID=2を含む通信フレームを通信バス70に出力する。
ステップS41では、マイコンnから肯定応答を受信したか否かを判定する。書き換え装置200は、メインマイコン10から肯定応答を受信したと判定した場合はステップS42へ進み、メインマイコン10から肯定応答を受信したと判定してない場合はS40へ戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS40に戻る。なお、書き換え装置200は、ステップS40,S41でリトライ処理を実行する。
ステップS42では、マイコンnへ書き込み指示及び書き込みデータを送信する。書き換え装置200は、書き込みデータとして個別データであるメインCPUデータを送信する。具体的には、書き換え装置200は、書き込み指示を示す情報、メインCPUデータ、及び通信ID=2を含む通信フレームを通信バス70に出力する。言い換えると、書き換え装置200は、メインCPU11に対して、メインCPUデータを送信する。
ステップS43では、マイコンnから肯定応答を受信したか否かを判定する。書き換え装置200は、メインマイコン10から肯定応答を受信したと判定した場合は次のループへ進み、メインマイコン10から肯定応答を受信したと判定してない場合はS42へ戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS42に戻る。なお、書き換え装置200は、ステップS42,S43でリトライ処理を実行する。
そして、書き換え装置200は、メインマイコン10から肯定応答を受信すると、次のループとして、第1サブマイコン20を対象としたステップS40〜S43を実行する。書き換え装置200は、このループにおいては、通信ID=3、個別データとして第1CPUデータを採用する。
更に、書き換え装置200は、第1サブマイコン20から肯定応答を受信すると、次のループとして、第2サブマイコン30を対象としたステップS40〜S43を実行する。書き換え装置200は、このループにおいては、通信ID=4、個別データとして第2CPUデータを採用する。このように、個別データは各マイコンで異なるため、書き換え装置200は、通信IDを変えて個別データを送信する。なお、本実施形態では、メインマイコン10、第1サブマイコン20、第2サブマイコン30の順番で個別データの書き換えを行う例を採用した。しかしながら、本発明はこれに限定されない。
次に、図7,図8を用いて、各マイコンの処理動作に関して説明する。各マイコンは、図7に示す全体的な処理を実行する。そして、各マイコンは、全体的な処理の一部として、図8に示す書き換え処理を実行する。詳述すると、図7,図8の処理は、複数のCPUの夫々が実行する。
各マイコンは、図7に示すように、ステップS50で書き換え装置200からデータを受信すると、ステップS51でデータ書き換えを行う。その後、各マイコンは、ステップS52で書き換え装置200からデータなしか否かを判定、データなしと判定すると図7の処理を終了し、データなしと判定しない場合はステップS50に戻る。
ここで、図8のフローチャートを用いて、各マイコンによる書き換え処理に関して説明する。つまり、図8を用いて、ステップS51の処理を説明する。ステップS60では、消去指示を受信したか否かを判定する。各CPUは、消去指示のコマンドを受信したか否かを判定し、受信したと判定した場合はステップS61に進み、受信したと判定してない場合はステップS60での判定を繰り返す。
ステップS61では、消去を実行する。各CPUは、消去指示のコマンドを含む通信フレームを受信すると、上記ステップS10,S11に示すように、共通領域12a,22a,32aの夫々に記憶されているデータを消去し、個別領域12b,22b,32bの夫々に記憶されているデータを消去する。なお、各CPUは、通信フレームに含まれているデータ種別、又は通信IDによって、共通データの書き換えなのか、個別データの書き換えなのかを判定できる。
具体的には、各CPUは、消去指示のコマンド及び通信ID=1を含む通信フレームを受信した場合、共通データの書き換えを行うための消去指示と認識する。従って、各CPUは、各共通領域12a,22a,32aの消去指示とみなして、各共通領域12a,22a,32aに記憶されているデータを消去する。
また、メインCPU11は、消去指示のコマンド及び通信ID=2を含む通信フレームを受信した場合、個別データの書き換えを行うための消去指示と認識する。従って、メインCPU11は、個別領域12bの消去指示とみなして、個別領域12bに記憶されているデータを消去する。
同様に、第1CPU21は、消去指示のコマンド及び通信ID=3を含む通信フレームを受信した場合、個別領域22bの消去指示とみなして、個別領域22bに記憶されているデータを消去する。また、第2CPU31は、消去指示のコマンド及び通信ID=4を含む通信フレームを受信した場合、個別領域32bの消去指示とみなして、個別領域32bに記憶されているデータを消去する。
ステップS62では、消去に成功したか否かを判定する。各CPUは、消去成功と判定した場合はステップS63へ進み、消去成功と判定しなかった場合はステップS61に戻る。つまり、各CPUは、消去に失敗した場合、もしくは所定時間内に消去を終了できなかった場合はステップS61に戻る。なお、各CPUは、ステップS63へ進むことなくステップS62でのNO判定を所定回数繰り返した場合、ステップS68に進む。
ステップS63では、書き換え装置200に対して肯定応答を行う。消去に成功したと判定したCPUは、書き換え装置200へ肯定応答を行う。このとき、CPUは、通信バス70を介して、肯定応答を示すデータを含む通信フレームを書き換え装置200に対して送信する。
ステップS64では、書き込み指示を受信したか否かを判定する。各CPUは、書き込み指示を受信したと判定した場合はステップS65に進み、書き込み指示を受信したと判定してない場合はステップS64での判定を繰り返す。各マイコンは、書き込み指示を示す情報、又は書き込みデータを受信すると、書き込み指示を受信したと判定する。
ステップS65では、書き込みを実行する。各CPUは、受信した通信フレームに、自身が設けられているマイコンが送信先であることを示す通信IDが含まれていた場合、その通信フレームに含まれている書き込みデータを、自身に対応したフラッシュメモリに書き込む。詳述すると、各CPUは、ステップS61でデータを消去した領域に、通信フレームに含まれている書き込みデータを書き込む。このようにして、各CPUは、フラッシュメモリを書き換える。
例えば、各CPUは、共通データ及び通信ID=1を含む通信フレームを受信すると、共通データの書き換えを行うための書き込み指示と認識する。従って、各CPUは、共通データ及び通信ID=1を含む通信フレームを受信すると、上記ステップS11のように、共通領域12a,22a,32aの夫々に共通データを書き込む(書き換え手段)。
上記のように通信ID=1は、全マイコンが送信先であることを示す。よって、全CPUは、共通データ及び通信ID=1を含む通信フレームを受信すると、時間的に並行して、共通領域12a,22a,32aの夫々に共通データを書き込むことになる。つまり、全CPUは、共通データを受信した場合、時間的に並行して、各フラッシュメモリに記憶されているデータを受信した共通データに書き換える(書き換え手段)。
また、各CPUは、個別データ及び通信ID=2などを含む通信フレームを受信すると、上記ステップS12のように、個別領域12b,22b,32bの夫々に個別データを書き込む(書き換え手段)。
具体的には、メインCPU11は、メインCPUデータ及び通信ID=2を含む通信フレームを受信すると、個別データの書き換えを行うための書き込み指示と認識する。従って、メインCPU11は、メインCPUデータ及び通信ID=2を含む通信フレームを受信すると、個別領域12bにメインCPUデータを書き込む。
同様に、第1CPU21は、第1CPUデータ及び通信ID=3を含む通信フレームを受信すると、個別領域22bに第1CPUデータを書き込む。また、第2CPU31は、第2CPUデータ及び通信ID=4を含む通信フレームを受信すると、個別領域32bに第2CPUデータを書き込む。このように、各CPUは、順番に個別領域12b,22b,32bの夫々に個別データを書き込む。
ステップS66では、書き込みに成功したか否かを判定する。各CPUは、書き込み成功と判定した場合はステップS67へ進み、書き込み成功と判定しなかった場合はステップS65に戻る。つまり、各CPUは、書き込みに失敗した場合、もしくは所定時間内に書き込みを終了できなかった場合、ステップS65に戻る。なお、各CPUは、ステップS67に進むことなくステップS66でのNO判定を所定回数繰り返した場合、ステップS68に進む。
ステップS67では、書き換え装置200に対して肯定応答を行う。このとき、CPUは、通信バス70を介して、肯定応答を示すデータを含む通信フレームを書き換え装置200に対して送信する。
一方、ステップS68では、書き換え装置200に対して否定応答を行う。このとき、CPUは、通信バス70を介して、否定応答を示すデータを含む通信フレームを書き換え装置200に対して送信する。
このように、ECU100は、フラッシュメモリ12,22,32に記憶されているデータを、受信した共通データに書き換える場合、複数のCPUが時間的に並行して書き換えを行う。このため、各CPUは、フラッシュメモリ12,22,32に記憶されているデータを、受信した共通データに書き換える際に、他のCPUによる共通データの書き換えが終了するのを待つ必要がない。よって、ECU100は、書き換え時間を短縮できる。また、ECU100は、全マイコンの書き換え総時間を短縮できる、と言うことができる。なお、ECU100は、各共通領域12a,22a,32aが大きいほど効果が増大する。また、ECU100は、CPUの数が増えるほど効果が増大する。
また、ECU100は、各マイコンに共通に接続された一つの通信バス70を介して書き換え装置200と通信できる。このため、ECU100は、各マイコンにおける共通データを物理的に並列に通信でき、時間の短縮効果を向上できる。
また、書き換えシステムでは、書き換え装置200が、複数のマイコンの夫々に対して共通データを送信する場合、書き込みデータが共通データであることを複数のマイコンが認識可能な状態で送信する。このため、書き換えシステムは、共通データを書き込むか、又は個別データを書き込むかを、各マイコンが容易に判断できる。
また、各CPUは、消去に成功しなかった場合や書込みに成功しなかった場合に肯定応答をしない。一方、書き換え装置200は、肯定応答がないと、書き込みデータを送信しない。よって、書き換えシステムは、消去に成功しなかったマイコンに対して書き込みデータを送信することを抑制できる。
なお、ECU100のリプロは、ECU100を自動車から取り外し、基板レベルまで分解して、シリアル通信で行うことも考えられる。しかしながら、ECU100を自動車から取り外し、基板レベルまで分解することは困難である。よって、自動車に搭載された状態でのECU100のリプロは、ディーラーなどにおいて、通信バス70を介して行うことが多い。上記のようにECU100は、書き換え時間を短縮できるため、ディーラーなどでのリプロ時間を短縮できる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明の変形例1〜5に関して説明する。上述の実施形態及び変形例1〜5は、夫々単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
(変形例1)
変形例1のECUは、同一の種類であるメインマイコン10,第1サブマイコン20,第2サブマイコン30を備えている。つまり、変形例1のECUは、同一の種類であるマイコンが複数設けられている。同一の種類であるマイコンとは、フラッシュメモリのデータを消去するのに要する時間、及びフラッシュメモリに対してデータを書き込むのに要する時間が同じマイコンである。つまり、同一の種類であるマイコンとは、フラッシュメモリの書き換えに要する時間が同じマイコンである。なお、変形例1の書き換え装置200は、上記実施形態によるものと処理動作が異なるが便宜的に同じ符号を採用する。
ここで、変形例1における書き換え装置200及び各マイコンの処理動作に関して詳細に説明する。
まず、図11を用いて、変形例1の各マイコンの書き換え処理に関して説明する。なお、変形例1の各マイコンの全体的な処理は、上記実施形態によるものと同様である。
変形例1のECUは、各マイコンの書き換えに要する時間が同じであるため、各マイコンによる書き換え時間を揃えることができる。このため、変形例1のECUは、書き換え装置200に対する肯定応答及び否定応答の送信が不要となる。従って、変形例1の各マイコンは、図11に示すように、ステップS60〜S62,S64〜S66を実行すればよい。つまり、変形例1の各マイコンは、図8のステップS63,S67,S68を実行する必要がない。なお、変形例1の各マイコンは、ステップS62,S66でNO判定の場合は図11の処理を終了する。
一方、変形例1の書き換え装置200は、共通データの書き換えを行う場合、図9に示すフローチャートを実行する。変形例1の書き換え装置200は、図5のステップS31,S33を実行する必要がない。変形例1の書き換え装置200は、ステップS30,S32に加えて、ステップS34に示す規定時間ウェイトを実行する。各マイコンは、種類に応じた消去時間が必ず存在し、その時間を待たないと書込みが出来ない。そこで、変形例1の書き換え装置200は、ステップS30で消去指示を行った後に、ステップS34で規定時間待って、ステップS32の書き込み指示を行う。よって、ここでの規定時間とは、各マイコンの種類に応じた消去時間、又はその消去時間にマージンを加えた時間である。
また、変形例1の書き換え装置200は、個別データの書き換えを行う場合、図10に示すフローチャートを実行する。変形例1の書き換え装置200は、図6のステップS41,S43を実行する必要がない。変形例1の書き換え装置200は、ステップS40,S42に加えて、ステップS34と同様に、ステップS44の規定時間ウェイトを実行する。
よって、変形例1のECUは、ECU100よりも処理を低減しつつ、ECU100と同様の効果を奏することができる。
(変形例2)
変形例2のECUは、複数のフラッシュメモリにおける共通領域12a,22a,32aのアドレスが同一である。図12に示すように、各フラッシュメモリは、例えばアドレス0x00000000から0x00010000の領域が共通領域12a,22a,32aとして割り当てられている。つまり、変形例2のECUは、各フラッシュメモリにおける共通領域12a,22a,32aのアドレスを固定しておく。
変形例2のECUは、ECU100と同様の効果を奏することができる。また、変形例2においては、書き換え装置200が共通データを識別することが容易になる。つまり、書き換え装置200は、マイコン毎にどのアドレスからどのアドレスまで共通データを書き込むのかを判断する必要がない。
(変形例3)
変形例3のECU100aは、主に、書き換え装置200への応答をメインマイコン10aが集約する点がECU100と異なる。ECU100aは、これ以外の点に関してはECU100と同様である。なお、変形例3の書き換え装置200は、上記実施形態によるものと処理動作が異なるが便宜的に同じ符号を採用する。
ECU100aは、図13に示すように、メインマイコン10a、第1サブマイコン20a、第2サブマイコン30aを備えて構成されている。メインマイコン10aは、特許請求の範囲におけるメイン処理部に相当し、第1サブマイコン20aと第2サブマイコン30aは、特許請求の範囲におけるサブ処理部に相当する。各マイコンの構成要素は、上記実施形態と同様である。よって、以下においては、便宜的に、各マイコンの構成要素を上記実施形態と同じ符号を用いて説明する。なお、図13においては、バス通信トランシーバ40〜60を省略している。また、以下においては、第1サブマイコン20aと第2サブマイコン30aとを区別する必要がない場合、これらを纏めてサブマイコンとも記載する。
ここで、書き換え装置200及び各マイコンの処理動作に関して詳細に説明する。まず、図14を用いて、書き換え装置200の共通データの書き換え処理に関して説明する。なお、全体的な処理及び個別データの書き換え処理に関しては、図4及び図6と同様である。
変形例3の書き換え装置200は、図14に示すように、ステップS31a,S33aの判定が上記書き換え装置200と異なる。
ステップS31aでは、メインマイコン10aから肯定応答を受信したか否かを判定する。書き換え装置200は、メインマイコン10aから肯定応答を受信したと判定した場合はステップS32へ進み、メインマイコン10aから肯定応答を受信したと判定してない場合はステップS30に戻る。
ステップS33aでは、メインマイコン10aから肯定応答を受信したか否かを判定する。書き換え装置200は、メインマイコン10aから肯定応答を受信したと判定した場合は図14の処理を終了し、肯定応答を受信したと判定してない場合はステップS32へ戻る。
次に、図15〜図17を用いて、各マイコンのコマンド処理に関して説明する。変形例3のECU100aは、メインマイコン10aとサブマイコンとで処理内容が異なる。また、図17のステップS66は、特許請求の範囲における第1判定手段に相当する。ステップS67,S68は、特許請求の範囲における第1送信手段に相当する。ステップS66aは、特許請求の範囲における第2判定手段に相当する。ステップS67,S68は、特許請求の範囲における第2送信手段に相当する。
まず、図15、図16を用いてメインマイコン10aの処理に関して説明する。メインマイコン10aは、全体的な処理として、図15に示す処理を実行する。図15に示すように、メインマイコン10aは、図7のステップS51にかえて、ステップS53〜S56を実行する。
ステップS53では、書き換え装置200から指定されたデータ種別毎に分岐する。メインCPU11は、データ種別が共通データであると判定した場合はステップS54へ進み、データ種別が個別データであると判定した場合はステップS55へ進む。
ステップS54では、共通データの書き換え処理を実行する。一方、ステップS56では、共通データの書き換え処理を実行する。
メインマイコン10aは、共通データの書き換えを行う場合、図16に示すフローチャートを実行する。なお、メインマイコン10aによる個別データの書き換え処理は、図8と同様である。
図16に示すように、メインマイコン10aは、図8のステップS62,S66にかえて、ステップS62a,S66aを実行する。ステップS62aでは、自身の消去成功、且つ、全サブマイコンから肯定応答を受信したか否かを判定する。つまり、メインCPU11は、全てのCPUで消去が成功したか否かを判定する。そして、メインCPU11は、自身が消去に成功、且つ、全サブマイコンから肯定応答を受信したと判定した場合はステップS63へ進む。また、メインCPU11は、自身が消去に成功したと判定してない場合、又は、全サブマイコンから肯定応答を受信したと判定してない場合はステップS61へ戻る。
ステップS66aでは、自身の書き込み成功、且つ、全サブマイコンから肯定応答を受信したか否かを判定する。つまり、メインCPU11は、全てのCPUで書き込みが成功したか否かを判定する。そして、メインCPU11は、自身が消書き込みに成功、且つ、全サブマイコンから肯定応答を受信したと判定した場合はステップS67へ進む。また、メインCPU11は、自身が書き込み消去に成功したと判定してない場合、又は、全サブマイコンから肯定応答を受信したと判定してない場合はステップS65へ戻る。
次に、図17を用いてサブマイコンの処理に関して説明する。なお、各サブマイコンの全体的な処理は、図7と同様である。各サブマイコンは、書き換え処理を行う場合、図17に示すフローチャートを実行する。図17に示すように、各サブマイコンは、図8のステップS63,S67,S68にかえて、ステップS63a,S67a,S68aを実行する。
ステップS63aでは、メインマイコン10a又は書き換え装置200に肯定応答を行う。第1CPU21は、共通領域22aの消去に成功したと判定した場合は第1通信線81を介してメインマイコン10aに肯定応答を行い、個別領域22bの消去に成功したと判定した場合は通信バス70を介して書き換え装置200に肯定応答を行う。第2CPU31は、共通領域32aの消去に成功したと判定した場合は第2通信線82を介してメインマイコン10aに肯定応答を行い、個別領域32bの消去に成功したと判定した場合は通信バス70を介して書き換え装置200に肯定応答を行う。
ステップS67aは、メインマイコン10a又は書き換え装置200に肯定応答を行う。第1CPU21は、共通データの書き込みに成功したと判定した場合は第1通信線81を介してメインマイコン10aに肯定応答を行い、個別データの書き込みに成功したと判定した場合は通信バス70を介して書き換え装置200に肯定応答を行う。第2CPU31は、共通データの書き込みに成功したと判定した場合は第2通信線82を介してメインマイコン10aに肯定応答を行い、個別データの書き込みに成功したと判定した場合は通信バス70を介して書き換え装置200に肯定応答を行う。
ステップS68aは、メインマイコン10a又は書き換え装置200に否定応答を行う。第1CPU21は、共通データの書き込みに成功したと判定してない場合は第1通信線81を介してメインマイコン10aに否定応答を行い、個別データの書き込みに成功したと判定してない場合は通信バス70を介して書き換え装置200に否定応答を行う。第2CPU31は、共通データの書き込みに成功したと判定してない場合は第2通信線82を介してメインマイコン10aに否定応答を行い、個別データの書き込みに成功したと判定してない場合は通信バス70を介して書き換え装置200に否定応答を行う。
ECU100aは、ECU100と同様の効果を奏することができる。また、ECU100aは、書き換え装置200に対して、通信バス70を介して肯定応答又は否定応答を行うのがメインマイコン10aである。つまり、第1サブマイコン20a及び第2サブマイコン30aは、書き換え装置200に対して、通信バス70を介して肯定応答又は否定応答を行わない。よって、ECU100aは、ECU100よりも通信バス70の負荷を低減できる。更に、書き換え装置200は、各マイコンからの応答を待つ必要がない。なお、変形例3の書き換えシステムは、実施形態の書き換えシステムよりも通信バス70の負荷を低減できる、と言うことができる。
(変形例4)
変形例4のECU100bは、主に、各マイコンがデータを中継可能に構成されている点がECU100,00aなどと異なる。ECU100bは、これ以外の点に関してはECU100,100aなどと同様である。
ECU100bは、図18,図19に示すように、メインマイコン10b、第1サブマイコン20b、第2サブマイコン30bを備えて構成されている。メインマイコン10bは、特許請求の範囲におけるメイン処理部に相当し、第1サブマイコン20bと第2サブマイコン30bは、特許請求の範囲におけるサブ処理部に相当する。各マイコンの構成要素は、上記実施形態と同様である。よって、以下においては、便宜的に、各マイコンの構成要素を上記実施形態と同じ符号を用いて説明する。なお、図18,図19においては、バス通信トランシーバ40〜60を省略している。また、以下においては、第1サブマイコン20bと第2サブマイコン30bとを区別する必要がない場合、これらを纏めてサブマイコンとも記載する。
ここで、各マイコンの処理動作に関して詳細に説明する。まず、図20を用いて、メインマイコン10bの全体的な処理に関して説明する。メインマイコン10bは、図15のフローチャートに加えて、ステップS56を実行する。つまり、ステップS56では、メインCPU11は、中継判定を行う。また、メインCPU11は、中継判定を行う場合、図21に示すフローチャートを実行する。
ステップS70では、メインマイコン10bは、通信バス診断を行う(通信判定手段)。つまり、メインCPU11は、通信バス70によるデータ通信の可否を判定する。メインCPU11は、例えば、バスオフチェックなどによって、データ通信の可否を判定する。
ステップS71では、サブマイコンから診断結果を取得する。メインCPU11は、第1通信線81を介して第1サブマイコン20bから診断結果を取得すると共に、第2通信線82を介して第2サブマイコン30bから診断結果を取得する。
ステップS72では、全マイコンが正常であるか否かを判定する。つまり、メインCPU11は、全マイコンが通信バス70によるデータ通信が可能な状態であると判定したか否かを判定する。なお、正常とは、通信バス70によるデータ通信が可能な状態であり、通信可と称することもできる。一方、通信バス70によるデータ通信が可能でない状態は異常又は通信否と称する。そして、メインCPU11は、全マイコンが正常であると判定した場合は図21の処理を終了し、全マイコンが正常であると判定しなかった場合はステップS73へ進む。なお、異常との診断結果を出力したサブマイコンは、異常サブマイコンと言い換えることもできる。
ステップS73では、自身が正常であるか否かを判定する。そして、メインCPU11は、自身が正常であると判定した場合、第1サブマイコン20b及び第2サブマイコン30bの少なくとも一方が正常でないとみなしてステップS74に進む。また、メインCPU11は、自身が正常でないと判定した場合はステップS75に進む。なお、メインCPU11は、ステップS71で取得した診断結果によって、第1サブマイコン20b及び第2サブマイコン30bのどちらが異常であるかを把握することができる。
ステップS74では、異常サブマイコンが取得すべき通信IDを自身が取得可設定し、以降の異常サブマイコン向け通信フレームを異常サブマイコンに中継する。つまり、メインCPU11は、通信バス70に送信された通信フレームのうち、異常サブマイコンが取得すべき通信IDを含む通信フレームをメインマイコン10bが取得できるように設定する。これによって、メインマイコン10bは、自身が送信先であることを示す通信IDを含む通信フレームに加えて、異常サブマイコンが送信先であることを示す通信IDを含む通信フレームを受信することができる。
言い換えると、メインCPU11は、自身が送信先であることを示す通信IDと共に通信フレームに含まれたデータと、異常サブマイコンが送信先であることを示す通信IDと共に通信フレームに含まれたデータを取得できる。例えば、メインマイコン10bは、通信ID=1を含む通信フレーム、通信ID=2を含む通信フレームに加えて、通信ID=3を含む通信フレームを受信できる。なお、メインマイコン10bは、異常サブマイコン宛のデータを取得した場合、異常サブマイコンからのバイパス要求に応じて、第1通信線81又は第2通信線82を介して異常サブマイコンに送信する。
ステップS75では、第1サブマイコン20bにバイパス要求する。メインCPU11は、自身が通信バス70を介してデータを受信することができないので、そのデータを第1サブマイコン20bにバイパスしてもらうように要求する。このとき、メインCPU11は、第1通信線81を介して、バイパス要求を示す信号を第1サブマイコン20bに送信する。
ステップS76では、以降の通信先を書き換え装置200から第1サブマイコン20bに切り替える。言い換えると、メインCPU11は、以降のデータ取得元を第1サブマイコン20bに切り替える(切替手段)。このように、メインマイコン10bは、ステップS70で通信否と診断した場合、書き換え装置200から受信していたデータを、第1サブマイコン20bから第1通信線81を介して受信するように切り替える。よって、メインマイコン10bは、例えば、図19に示すように、通信バス70を介してデータを受信できない場合、二点鎖線で示すように書き込みデータやコマンドを第1サブマイコン20bから受信することができる。
なお、ここでは、第1サブマイコン20bに切り替える例を採用しているが、本発明はこれに限定されない。メインマイコン10bは、自身以外のマイコンに切り替えればよく、例えば第2サブマイコン30bに切り替えてもよい。
次に、図22を用いて、サブンマイコンの全体的な処理に関して説明する。サブマイコンは、図7のフローチャートに加えて、ステップS57を実行する。つまり、ステップS57では、第1CPU21及び第2CPU31は、中継判定を行う。なお、本変形例においては、サブマイコンは、ステップS50において、書き換え装置200又はメインマイコン10bからデータ受信することになる。
また、第1CPU21及び第2CPU31は、中継判定を行う場合、図23に示すフローチャートを実行する。以下においては、第1CPU21と第2CPU31とを区別する必要がない場合、これらを纏めてサブCPUとも記載する。
ステップS80では、通信バス診断を行う(通信判定手段)。各サブCPUは、ステップS70と同様に、通信バス70によるデータ通信の可否を判定する。
ステップS81では、ステップS80での診断結果をメインマイコン10bに通知する。このとき、第1CPU21は、メインマイコン10bに対して、第1通信線81を介して診断結果を送信する。一方、第2CPU31は、メインマイコン10bに対して、第2通信線82を介して診断結果を送信する。
ステップS82では、自身が正常であるか否かを判定する。そして、各サブCPUは、自身が正常であると判定した場合はステップS83へ進み、自身が正常でないと判定した場合はステップS85に進む。
ステップS83では、バイパス要求の有無を判定する。サブCPUは、自身が通信バス70を介してデータ通信を行うことができると判定した場合、メインCPU11からバイパス要求が有るか否かを判定する。そして、サブCPUは、バイパス要求がないと判定した場合は図23の処理を終了し、バイパス要求が有ると判定した場合はステップS84へ進む。
ステップS84では、メインマイコン10bが取得すべき通信IDを取得可設定し、以降のメインマイコン10b向け通信フレームをメインマイコンに中継する。つまり、サブCPUは、メインマイコン10bが取得すべき通信IDを含む通信フレームを取得可設定にする。本変形例では、第1サブマイコン20bにバイパス要求をする例を採用している。よって、第1CPU21は、通信バス70に送信された通信フレームのうち、メインマイコン10bが取得すべき通信IDを含む通信フレームを自身が取得できるように設定する。これによって、第1サブマイコン20bは、自身が送信先であることを示す通信IDを含む通信フレームに加えて、メインマイコン10bが送信先であることを示す通信IDを含む通信フレームを受信することができる。
言い換えると、第1CPU21は、自身が送信先であることを示す通信IDと共に通信フレームに含まれたデータと、メインマイコン10bが送信先であることを示す通信IDと共に通信フレームに含まれたデータを取得できる。例えば、第1サブマイコン20bは、通信ID=1を含む通信フレーム、通信ID=3を含む通信フレームに加えて、通信ID=2を含む通信フレームを受信できる。なお、第1サブマイコン20bは、メインマイコン10b宛のデータを取得した場合、メインマイコン10bからのバイパス要求に応じて、第1通信線81を介してメインマイコン10bに送信する。
ステップS85では、以降の通信先を書き換え装置200からメインマイコン10bに切り替える。言い換えると、サブCPUは、以降のデータ取得元をメインマイコン10bに切り替える(切替手段)。このように、サブマイコンは、ステップS80で通信否と診断した場合、書き換え装置200から受信していたデータを、メインマイコン10bから受信するように切り替える。例えば、第1サブマイコン20bは、第1通信線81を介してメインマイコン10bからデータを受信する。よって、第1サブマイコン20bは、例えば、図18に示すように、通信バス70を介してデータを受信できない場合、二点鎖線で示すように書き込みデータやコマンドをメインマイコン10bから受信することができる。なお、第2サブマイコン30bが通信否と判定した場合は、同様に、メインマイコン10bからデータを受信する。
ECU100bは、ECU100と同様の効果を奏することができる。また、ECU100bは、通信バス70の断線や、各バス通信トランシーバ40〜60の故障時などにおいても、各マイコンが書き換え処理を進めることが可能となる。
(変形例5)
変形例5のECU100cは、主に、メインマイコン10cだけが通信バス71に接続されている点がECU100aと異なる。
ECU100cは、図24に示すように、メインマイコン10c、第1サブマイコン20c、第2サブマイコン30cを備えて構成されている。メインマイコン10cは、特許請求の範囲における第1処理部に相当するものである。メインマイコン10cは、メインCPU11cなどを備えて構成されている。メインCPU11cは、メインCPU11と異なり、他のCPUと時間的に並行して共通データの書き換えを行うことはない。
また、第1サブマイコン20cと第2サブマイコン30cは、特許請求の範囲における第2処理部に相当する。この第1サブマイコン20c及び第2サブマイコン30cは、第1サブマイコン20及び第2サブマイコン30と同様の構成を有している。よって、以下においては、便宜的に、第1サブマイコン20cと第2サブマイコン30cの構成要素を上記実施形態と同じ符号を用いて説明する。また、以下においては、第1サブマイコン20cと第2サブマイコン30cとを区別する必要がない場合、これらを纏めてサブマイコンとも記載する。
一例として、ECU100cは、自動車に搭載され、メインマイコン10cに加えて、第1モータジェネレータの制御を行う第1サブマイコン20cと、第2モータジェネレータの制御を行う第2サブマイコン30cとを備えた構成を採用できる。また、ECU100cは、第1サブマイコン20cと第2サブマイコン30cとが共通データを有している例を採用する。
図24に示すように、通信バス71は、書き換え装置200との間でデータ通信を行うためのものであり、第1サブマイコン20cと第2サブマイコン30cには直接接続されておらず、メインマイコン10cだけに接続されている。このため、ECU100cは、第1サブマイコン20c及び第2サブマイコン30cに直接接続されたバス通信トランシーバが設けられていない。当然ながら、第1サブマイコン20c及び第2サブマイコン30cは、バス通信コントローラも設けられていない。また、ECU100cは、メインマイコン10c配下に、第1サブマイコン20c及び第2サブマイコン30cがシリアル通信で接続された構成をなしている、と言うことができる。また、メインマイコン10cは、通信ID=1や通信ID=2を含む通信フレームに加えて、通信ID=3や通信ID=4を含む通信フレームも受信できるように設定されている。
第1サブマイコン20cは、第1通信線81及びメインマイコン10cを介して、通信バス71と通信できる。同様に、第2サブマイコン30cは、第2通信線82及びメインマイコン10cを介して、通信バス71と通信できる。よって、第1サブマイコン20c及び第2サブマイコン30cは、メインマイコン10cが中継することで、通信バス71と通信できる。つまり、第1サブマイコン20c及び第2サブマイコン30cは、メインマイコン10cを介して書き換え装置200と通信できる。なお、変形例5の書き換え装置200は、上記実施形態の書き換え装置200と処理動作が異なるが便宜的に同じ符号を採用する。
ここで、書き換え装置200及び各マイコンの処理動作に関して詳細に説明する。まず、図25,図26を用いて、書き換え装置200の処理動作に関して説明する。
書き換え装置200は、全体的な処理の流れとして、図25のフローチャートに示す処理を実行する。ステップS20aでは、サブマイコンに対する共通データの書き換えを実行する。ステップS21aでは、サブマイコンに対する個別データの書き換えを実行する。そして、ステップS22aでは、メインマイコン10cに対するデータの書き換えを実行する。なお、書き換え装置200は、各マイコンに対して通信IDを含む通信フレームを送信するため、任意の順番でステップS20a〜S22aの夫々を実行すればよい。つまり、各マイコンは、通信IDによって自身に対する通信フレームを把握できる。よって、書き換え装置200は、任意の処理順序でステップS20a〜S22aを実行できる。更に、書き換え装置200は、ステップS22aを実行しないものであっても採用できる。
書き換え装置200は、ステップS20a〜S22aの夫々の書き換え処理として、図26のフローチャートに示す処理を実行する。ステップS30aでは、書き換え装置200は、ステップS30と同様に消去指示を行う。しかしながら、書き換え装置200は、通信フレームをメインマイコン10cに送信することになる。言い換えると、書き換え装置200は、消去指示のコマンドを、メインCPU11cに対して送信する。
例えば、書き換え装置200は、ステップS20aを実行する際には、通信ID=1及び消去指示のコマンドを含む通信フレームを通信バス71に出力する。また、書き換え装置200は、ステップS21aを実行する際には、通信ID=3又は4、及び消去指示のコマンドを含む通信フレームを通信バス71に出力する。そして、書き換え装置200は、ステップS22aを実行する際には、通信ID=1又は2及び消去指示のコマンドを含む通信フレームを通信バス71に出力する。
ステップS31aでは、書き換え装置200は、肯定応答を受信したか否かを判定する。つまり、書き換え装置200は、消去指示のコマンド実行に成功したか否かを判定する。書き換え装置200は、肯定応答を受信したと判定した場合、ECU100cが消去指示のコマンド実行に成功したとみなしてステップS32aに進む。また、書き換え装置200は、肯定応答を受信したと判定してない場合、ステップS30aに戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS30aに戻る。また、書き換え装置200は、ステップS32aに進むことなくステップS31aでのNO判定を所定回数繰り返した場合に図26の処理を終了する。
ステップS32aでは、書き換え装置200は、書き込み指示及び書き込みデータを送信する。書き換え装置200は、ステップS32と同様に消去指示を行う。しかしながら、書き換え装置200は、通信フレームをメインマイコン10cに送信することになる。言い換えると、書き換え装置200は、消去指示のコマンドを、メインCPU11cに対して送信する。
例えば、書き換え装置200は、ステップS20aを実行する際には、通信ID=1及び共通データを含む通信フレームを通信バス71に出力する。また、書き換え装置200は、ステップS21aを実行する際には、通信ID=3又は4及び個別データを含む通信フレームを通信バス71に出力する。そして、書き換え装置200は、ステップS22aを実行する際には、通信ID=1又は2及び個別データを含む通信フレームを通信バス71に出力する。
ステップS33aでは、ステップS31aと同様に、肯定応答を受信したか否かを判定する。しかしながら、ステップS33aでは、書き換え装置200は、書き込み指示のコマンド実行に成功したか否かを判定する。書き換え装置200は、肯定応答を受信したと判定した場合、ECU100cが書き込み指示のコマンド実行に成功したとみなして図26の処理を終了する。また、書き換え装置200は、肯定応答を受信したと判定してない場合、ステップS32aに戻る。つまり、書き換え装置200は、否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合はステップS32aに戻る。また、書き換え装置200は、図26の処理を終了することなくステップS33aでのNO判定を所定回数繰り返した場合に図26の処理を終了する。
次に、図27〜図30を用いて、ECU100cの処理動作に関して説明する。まず、メインマイコン10cは、全体的な処理の流れとして、図27のフローチャートに示す処理を実行する。メインマイコン10cは、図15のフローチャートのステップS53のかわりにステップS53a、ステップS55のかわりにステップS55aを実行する。なお、メインマイコン10cの書き換え処理は、図8と同様である。
ステップS53aでは、書き換え装置200から指定されたマイコン別に分岐させる。つまり、メインCPU11cは、書き換え装置200から受信した書き込みデータがメインマイコン10cに対するものであるか、どのサブマイコンに対するものであるかを判定する。そして、メインCPU11cは、メインマイコン10cに対する書き込みデータであると判定した場合はステップS54へ進み、あるサブマイコンに対する書き込みデータであると判定した場合はステップS55aへ進む。なお、メインCPU11cは、通信IDによって、書き込みデータがどのマイコンに対するものであるかを判定できる。つまり、メインCPU11cは、書き込みデータが共通データであるか個別データであるかに加えて、個別データがどのサブマイコンに対するものであるかを判定できる。
ステップS55aでは、サブマイコンへのデータ中継処理を行う。ここで、図28を用いて、データ中継処理に関して説明する。ステップS70aでは、共通データであるか否かを判定する。そして、メインCPU11cは、共通データであると判定した場合はステップS71aへ進み、共通データではない、すなわち個別データであると判定した場合はステップS74aへ進む。
ステップS71aでは、全サブマイコンに対して受信データを送信する。つまり、メインCPU11cは、CPU間通信によって、第1サブマイコン20c及び第2サブマイコン30cに対して共通データを送信する。これによって、ECU100cは、フラッシュメモリ22,32に記憶されているデータを、受信した共通データに書き換える場合、第1CPU21及び第2CPU31が時間的に並行して書き換えを行う。
ステップS72aでは、全サブマイコンから肯定応答を受信したか否かを判定する。そして、メインCPU11cは、全サブマイコンから肯定応答を受信したと判定した場合はステップS73aに進み、全サブマイコンから肯定応答を受信したと判定してない場合はステップS76aに進む。つまり、メインCPU11cは、少なくとも一つのサブマイコンから否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合、ステップS76aに進む。なお、ステップS73aでは、メインCPU11cは、ステップS67と同様に、書き換え装置200に対して肯定応答を行う。
ステップS74aでは、サブマイコンnに対して、受信データを送信する。つまり、メインCPU11cは、個別データの送信先であるサブマイコンに対して、個別データを送信する。このとき、メインCPU11cは、CPU間通信によって、該当するサブマイコンに個別データを送信する。
ステップS75aでは、ステップS74aで個別データを送信したサブマイコンから肯定応答を受信したか否かを判定する。そして、メインCPU11cは、肯定応答を受信したと判定した場合はステップS73aに進み、肯定応答を受信したと判定してない場合はステップS76aに進む。つまり、メインCPU11cは、該当するサブマイコンから否定応答を受信した場合、もしくは所定時間内に肯定応答を受信できなかった場合、ステップS76aに進む。なお、ステップS76aでは、メインCPU11cは、ステップS68と同様に、書き換え装置200に対して否定応答を行う。
また、サブマイコンは、全体的な処理の流れとして、図29のフローチャートに示す処理を実行する。サブマイコンは、書き換え装置200からデータを受信するのではなく、メインマイコン10cからデータを受信する点が上記実施形態の各マイコンと異なる。よって、ステップS50aでは、ステップS51と同様にデータを受信するが、メインマイコン10cからデータを受信する。そして、ステップS52aでは、ステップS52と同様にデータ受信なしか否かを判定するが、メインマイコン10cからデータ受信なしか否かを判定する。
サブマイコンは、書き換え処理を行う場合、図30に示すフローチャートを実行する。図30に示すように、サブマイコンは、図8のステップS63,S67,S68にかえて、ステップS63b,S67b,S68bを実行する。つまり、サブマイコンは、肯定応答又は否定応答の通知先がメインマイコン10cである点が上記実施形態の各マイコンと異なる。
このように、ECU100cは、メインマイコン10cが、通信バス71を介して書き換え装置200とのデータ通信を行う。一方、サブマイコンは、第1通信線81又は第2通信線82、メインマイコン10c、及び通信バス71を介して、書き換え装置200とのデータ通信を行う。
ECU100cは、ECU100と同様の効果を奏することができる。つまり、第1CPU21は、フラッシュメモリ22に記憶されているデータを、受信した共通データに書き換える際に、第2CPU31による共通データの書き換えが終了するのを待つ必要がない。同様に、第2CPU31は、フラッシュメモリ32に記憶されているデータを、受信した共通データに書き換える際に、第1CPU21による共通データの書き換えが終了するのを待つ必要がない。よって、ECU100は、書き換え時間を短縮できる。
更に、ECU100cは、メインマイコン10cのみが通信バス71を介した通信を行う。このため、ECU100cは、第1サブマイコン20c及び第2サブマイコン30cの夫々に対応したバス通信トランシーバを設ける必要がない。よって、ECU100cは、ECU100よりも構成を簡素化できる。また、ECU100cは、ECU100よりも安価にできる。
なお、ECU100cは、上記のように、メインマイコン10c,第1サブマイコン20c,第2サブマイコン30cが同一の種類であると好ましい。また、メインマイコン10c,第1サブマイコン20c,第2サブマイコン30cの夫々に設けられているフラッシュメモリは、上記のように、共通領域のアドレスが同一であると好ましい。