次に図面を参照してこの発明の実施の形態を説明する。図1は、この発明の一実施例に従う車両の書き換えシステムの全体的な構成を示す。書き換えシステムは、車両に搭載される複数の制御ユニット、この実施例では第1および第2の制御ユニット11aおよび11bを備える。
第1および第2の制御ユニット11aおよび11bは、演算処理装置(CPU)13aおよび13bと、ランダムアクセスメモリ(RAM)を含むメモリ15aおよび15bと、書き込みおよび消去が可能であって電源を切っても記憶内容が失われない不揮発性メモリ19aおよび19bとをそれぞれ備えるコンピュータである。ランダムアクセスメモリ15aおよび15bには、CPU13aおよび13bが演算のために必要なデータが一時的に記憶される。不揮発性メモリ19aおよび19bは、たとえばEEPROMであり、制御ユニット11aおよび11bによって実現される車両制御のためのプログラムおよびデータを記憶する。制御ユニット11aおよび11bは、車両に設けられた様々なセンサ(図示せず)からの信号を、所定の入力インターフェース(図示せず)を介して受け取り、不揮発性メモリ19aおよび19bに記憶された制御プログラムおよびデータを用いて演算を行い、車両の各部を制御するための制御信号を生成し、生成した制御信号を、所定の出力インターフェース(図示せず)を介して該車両の各部に送信する。
第1および第2の制御ユニット11aおよび11bは、マスタースレーブ関係にあり、以降、第1の制御ユニット11aはマスター制御ユニットと呼ばれ、第2の制御ユニット11bはスレーブ制御ユニットと呼ばれる。スレーブ制御ユニット11bは、マスター制御ユニット11aによって制御される。スレーブ制御ユニット11bの不揮発性メモリ19bには、マスター制御ユニット11aの不揮発性メモリ19aと、同じ制御プログラムおよび(または)同じデータが記憶されており、本願発明の書き換え対象は、両方の不揮発性メモリに記憶された該同じ制御プログラムまたは同じデータである。
マスターおよびスレーブ制御ユニット11aおよび11bは、それぞれの入出力インターフェース21aおよび21bを介して第1のバス25aに接続されている。また、マスター制御ユニット11aとスレーブ制御ユニット11bとの間には、それぞれの入出力インターフェース23aおよび23bを介して第2のバス25bが接続されている。図では1つのスレーブ制御ユニットのみ示されているが、複数のスレーブ制御ユニットを設けてもよい。その場合には、これらのスレーブ制御ユニットも、第1のバス25aに接続されると共に、第2のバス25bを介してマスター制御ユニット11aに接続される。
このような構成の制御ユニットを備える車両制御の一例として、マスターおよびスレーブ制御ユニット11aおよび11bを、ハイブリッド車両に搭載される電池の異なるセルを監視する制御(たとえば、電圧値の監視等)を行うよう構成することができる。マスターおよびスレーブ制御ユニット11aおよび11bの違いは、監視対象となるセルであり、同じ制御プログラムを不揮発性メモリに記憶している。それぞれの制御ユニットに設けられた外部端子(図示せず)を介して監視対象となるセルの識別子を受け取り、これによって、どの制御ユニットがどのセルを監視するかを切換えることができる。監視対象となるセルの数に応じて、スレーブ制御ユニットが複数設けられる。しかしながら、本願発明は、このような形態の制御に限定されるものではなく、不揮発性メモリに同じ制御プログラムおよび(または)データを有する複数の制御ユニットに適用可能である。
また、図には、2つの制御ユニットのみが示されているが、第1のバス25aには、点線のボックス11cに示されるように、他の様々な制御ユニットを接続することができる。たとえば、エンジン(吸気量、燃料噴射量等)を制御するための制御ユニット、トランスミッションを制御するための制御ユニット等を接続することができる。
書き換え装置31は、車両に搭載された制御ユニットの不揮発性メモリの書き換えを指示するための装置である。書き換え装置31は、車両外部に設けられる形態のものでもよいし、車両上(オンボード上)に実装される形態のものでもよい。
書き換え装置31は、演算処理装置(CPU)33およびメモリ35を備えるコンピュータである。メモリ35には、ランダムアクセスメモリ(RAM)およびリードオンリーメモリ(ROM)を備えることができる。RAMには、CPU33の演算のために必要なデータが一時的に記憶される。ROMは、書き換え可能な不揮発性メモリ(EEPROM等)でもよいし、書き換え不可能なROM(PROM等)でもよい。また、書き換え装置31は、ハードディスクなどの記憶装置(図示せず)を備えることができる。
書き換え装置31は、シリアルインターフェースを実現する入出力インターフェース37を有しており、書き換えを行う際に、書き換え装置31のシリアルインターフェース37を、第1のバス25aに接続されたシリアルインターフェース(車両に搭載されており、図示せず)に接続することにより、書き換え装置31と、第1のバス25aに接続された制御ユニット11aおよび11bとの間で、メッセージを介してシリアル通信を行うことができる。
書き換え装置31はディスプレイおよび入力装置(図示せず)を備えており、ユーザは、該入力装置を介して書き換え装置31を操作することにより、制御ユニット11aおよび11bの不揮発性メモリ19aおよび19bに対する書き換えを指示することができる。入力装置は、たとえば、キーボード、入力ペン、マウス等を含むことができる。
図2は、本願発明の一実施例に従う、書き換え装置31、マスター制御ユニット11a、およびスレーブ制御ユニット11bの間の通信の形態を示したものである。(i)に示すように、書き換え装置31から送信された1つのメッセージは、第1のバス25aを介して、マスター制御ユニット11aとスレーブ制御ユニット11bの両方によって受信される。ここで、「メッセージ」は、書き換え装置31、マスター制御ユニット11a、およびスレーブ制御ユニット11bの間で送受信されるデータを示す意図で用いられており、書き換え装置31からの命令(要求)および通知を示すメッセージだけでなく、マスターおよびスレーブ制御ユニット11aおよび11bからの応答を示すメッセージを含むと共に、書き換え装置31から送信される書き換えのためのプログラムコードのようなデータをも含む。
また、(ii)に示すように、マスター制御ユニット11aとスレーブ制御ユニット11bは、互いに、第2のバス25bを介して通信する。これにより、マスター制御ユニット11aは、スレーブ制御ユニット11bの状態を監視したり、制御することができる。
さらに、(iii)に示すように、書き換え装置31からのメッセージに対して応答メッセージを送信することは、マスター制御ユニット11のみが行う。図に示されるように、スレーブ制御ユニット11bは、書き換え装置31に対して応答メッセージを直接送信することはしない。
このように、書き換え装置31から見ると、マスター制御ユニット11aおよび11bは、仮想的に1つの制御ユニットとしてみえる(これを、以下、仮想制御ユニットと呼ぶことがある)。書き換え装置31は、2つの制御ユニットのそれぞれに対して別個のメッセージを送信する必要はなく、また、該メッセージに対する2つの制御ユニットのそれぞれからの別個の応答を管理する必要もない。書き換え装置31は、1つの該仮想制御ユニットに対して1つのメッセージを送信し、それに対する該仮想制御ユニットからの応答メッセージを管理することにより、2つの制御ユニット11aおよび11bの両方に対し、書き換え処理を同時に実施させることができる。
この実施例では、1つの該仮想制御ユニットに1つのアドレスを割り当て、書き換え装置31は、このアドレス宛にメッセージを送信する。マスターおよびスレーブ制御ユニット11aおよび11bの両方は、該アドレス宛のメッセージを受信するよう構成されている。マスター制御ユニット11aからの応答メッセージは、該アドレスからの返信として書き換え装置31に受け取られる。
ここで、書き換えにおけるメッセージの送受信の概要を述べれば(詳細は後述される)、書き換え装置31から送信された書き換えに関する1つのメッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方によって受信される(i)。マスター制御ユニット11aは、スレーブ制御ユニット11bとの第2のバス25bによる通信を介して該スレーブ制御ユニットの該メッセージに対する応答を受け取る(ii)。
マスター制御ユニット11aは、スレーブ制御ユニット11bの該応答を解析する。マスター制御ユニット11aは、スレーブ制御ユニット11bの該応答と、自身(マスター制御ユニット)の該メッセージに対する応答との両方が、該メッセージに対する肯定結果を示すならば、肯定結果を表す1つの応答メッセージを生成し、該応答メッセージを書き換え装置31に送る(iii)。
他方、マスター制御ユニット11aは、スレーブ制御ユニット11bの該応答と、自身(マスター制御ユニット)の該メッセージに対する応答のうち、少なくとも一方の応答が、該メッセージに対する否定結果を示すならば、否定結果を表す1つの応答メッセージを生成し、該応答メッセージを書き換え装置31に送る(iii)。書き換え装置31は、該装置31が送信したメッセージに対する仮想制御ユニットの応答内容を、受信した1つの応答メッセージから判断することができる。
代替的に、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答を、マスター制御ユニット11aの応答と共に、別個の応答メッセージとして書き換え装置31に送るようにしてもよい。書き換え装置31は、受信した2つの応答メッセージの両方が肯定結果を示すならば、該装置31が送信したメッセージに対する仮想制御ユニットの応答が肯定であると判断し、少なくともいずれか一方が否定結果を示すならば、該装置31が送信したメッセージに対する仮想制御ユニットの応答が否定であると判断する。
マスターおよびスレーブ制御ユニット11aおよび11bに搭載される不揮発性メモリ19aおよび19bにおいて、書き換え対象となる同じ制御プログラムおよび(または)同じデータが記憶されるメモリ領域は、同じアドレスを有するのが好ましい。これにより、書き換え装置31は、書き換え操作において、1つのアドレスだけで、2つの不揮発性メモリ19aおよび19bを同時にアドレス指定することができる。
この実施例では、図3に示すように、マスター制御ユニット11aの不揮発性メモリ19aとスレーブ制御ユニット11bの不揮発性メモリ19bは、同じアドレス構成を持っており、該不揮発性メモリのメモリ領域の一部を非書き換え領域に設定すると共に、残りを書き換え領域に設定している。非書き換え領域は、書き換えが実施されないメモリ領域であり、たとえば、制御ユニットをブートするのに必要なプログラムおよびデータが記憶されることができる。代替的に、非書き換え領域を不揮発性メモリに設定する代わりに、リードオンリーメモリ(ROM)を別個設け、ここに、書き換えが実施されないプログラムやデータを記憶してもよい。
書き換え領域には、書き換え対象となる制御プログラムおよび(または)データが記憶されている。不揮発性メモリ19aの書き換え領域と不揮発性メモリ19bの書き換え領域は、書き換え対象となる同じ制御プログラムおよび(または)同じデータを同じアドレス領域に記憶している。
前述したように、書き換え装置31から見ると、マスターおよびスレーブ制御ユニット11aおよび11bは、1つの仮想制御ユニットのように見える。さらに、この実施例では、不揮発性メモリ19aおよび19bは同じアドレス構成を有しているので、書き換え装置31から見ると、2つの不揮発性メモリ19aおよび19bは、仮想的に1つの不揮発性メモリと考えることができる。これにより、書き換え装置31は、書き換えるべきアドレス領域を1つ指定するだけで、2つの不揮発性メモリ19aおよび19bの両方について、該アドレス領域に対する書き換えを同時に実施させることができる。
図に示されるすべてのアドレス値は単なる一例であり、これに限定されるものではなく、非書き換え領域および書き換え領域のそれぞれの大きさおよび位置付けは、任意に決定することができる。
次に、図4〜図9を参照して、本願発明の一実施例に従う、書き換え装置31、マスター制御ユニット11a、およびスレーブ制御ユニット11bによる書き換え処理を詳細に説明する。なお、これらの図に示されるフローを実現するプログラムは、書き換え装置31のメモリ(ROM)35、マスターおよびスレーブ制御ユニット11aおよび11bの不揮発性メモリ19aおよび19b(非書き換え領域でも書き換え領域でもよい)に記憶されることができる。書き換え装置31、マスターおよび制御ユニット11aおよび11bは、それぞれ、CPUによって対応するプログラムを起動することにより、これらの図に示される書き換え処理を実行する。また、ここでは、書き換え対象がプログラムである場合を例として説明するが、書き換え対象は、前述したように、データであってもよい。
書き換え装置31上で、ユーザが、入力装置を介して、たとえばディスプレイ上で書き換え対象の制御ユニットを選択することでこの処理を開始することができる。この実施例では、マスターおよびスレーブ制御ユニット11aおよび11bの両方の不揮発性メモリ19aおよび19bが書き換え対象となるが、前述したように、書き換え装置31からは仮想的にこれら2つの制御ユニットは1つの仮想制御ユニットに見える。したがって、該1つの仮想制御ユニットに割り当てられた1つの識別子(名称、ID、アドレス等)を選択することで、該2つの不揮発性メモリ19aおよび19bの同時書き換え処理を起動することができる。
図4において、書き換え装置31は、不揮発性メモリに記憶されたプログラムのプログラムIDを読み出すための要求メッセージを送信する(S11)。この要求メッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、スレーブ制御ユニット11bは、この受信に応じた処理は行わない。マスターおよびスレーブ制御ユニットの不揮発性メモリ19aおよび19bの両方に同じプログラムが記憶されているので、プログラムIDの読み出し要求は、マスター制御ユニット11aによってのみ処理されればよいからである。
不揮発性メモリ19aの所定のメモリ領域には、該不揮発性メモリ19aに記憶されているプログラムのプログラムIDが予め記憶されている。マスター制御ユニット11aは、該要求メッセージを受信したならば(S101)、該所定のメモリ領域から読み出したプログラムIDを含む応答メッセージを、第1のバス25aを介して書き換え装置31に返信する(S102)。
プログラムIDは、プログラムを識別する識別子であり、該プログラムのバージョンについての情報も有している。書き換え装置31は、プログラムIDを含む応答メッセージを受信することにより(S12)、何のプログラムのどのバージョンが不揮発性メモリ19aに記憶されているかを判断することができる。
書き換え装置31は、不揮発性メモリに記憶されるべきプログラムIDの一覧(リスト)を、たとえばハードディスクやメモリ35に予め有しており、これと、受信したプログラムIDとを比較することにより、書き換えの必要なプログラムが存在するかどうかを判断することができる。書き換えが必要なプログラムは、書き換え装置31のディスプレイに表示されることができる。また、書き換えが必要なプログラムが存在しない場合には、その旨のメッセージをディスプレイに表示することができ、ユーザは、この表示に応じて、書き換え作業の中止処理を、入力装置を介して入力することができる。
このように、書き換え装置31からのメッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、書き換え装置31への返信を行うのは、マスター制御ユニット11aのみである。
図5において、書き換えを行う前に、書き換え装置31が、車両のメーカーによって認められた正規の書き換え装置かどうかを認証するためのセキュリティチェック処理が行われる。
書き換え装置31は、シード(seed)を要求するメッセージを送信する(S21)。該要求メッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方により受信されるが、シードは、一方の制御ユニットで用意すればよいので、スレーブ制御ユニット11bは、該メッセージの受信に応じた処理は行わない。
マスター制御ユニット11aは、該要求メッセージの受信に応じて(S121)、シードを生成し、または予め生成されているシードのうちから任意に選択し、該生成または選択したシードを含む応答メッセージを、第1のバス25aを介して書き換え装置31に返信する(S122)。
シードが代入されるべき変数を用いてキーを計算するための関数(すなわち、キー=f(シード)であり、fは任意の関数)が、書き換え装置31のメモリ(ROM)35に予め記憶されている。書き換え装置31は、該シードを受信したならば(S22)、該記憶された関数を読み出し、受信したシードを該関数に代入してキーを計算する(S23)。
他方、書き換え装置31に記憶された関数と同じ関数が、マスター制御ユニット11aの不揮発性メモリ(非書き換え領域でも書き換え領域でもよい)19aに記憶されている。マスター制御ユニット11aは、該関数を読み出し、書き換え装置31に返信したシードを該関数に代入してキーを計算する(S123)。
書き換え装置31は、ステップS23で算出したキーを含むメッセージを送信する(S24)。このメッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、セキュリティチェック処理は一方の制御ユニットで行えばよいので、スレーブ制御ユニット11bは、該メッセージの受信に応じた処理は行わない。マスター制御ユニット11aは、キーを受信したならば(S124)、該キーを、自身がステップS123で算出したキーと照合し、両者が一致するかどうかを判断する(S125)。マスター制御ユニット11aは、キーが一致したならば、書き換え装置31が正規の書き換え装置であると判断し、該装置31による書き換えを許可する(セキュリティの解除)。他方、マスター制御ユニット11aは、キーが不一致ならば、書き換え装置31が正規の書き換え装置ではないと判断する。マスター制御ユニット11aは、該照合結果を示す応答メッセージを、第1のバス25aを介して書き換え装置31に返信する(S126)。
書き換え装置31は、応答メッセージを受信し(S25)、照合結果がキーの一致を示すならば、セキュリティが解除されたと判断し(S26)、図6に進む。照合結果がキーの一致を示さなければ、セキュリティが解除されないため、書き換え処理を中止する。この時、その旨を示すメッセージを書き換え装置31のディスプレイに表示することができる。
このように、書き換え装置31からのメッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、書き換え装置31への返信を行うのは、マスター制御ユニット11aのみである。また、図5の例では、書き換え装置31が正規かどうかを判断するセキュリティチェック処理であるので、書き換え装置31からのメッセージに対する処理がマスター制御ユニット11aによってのみ実行される形態となっている。
図6において、書き換え装置31は、制御ユニットを書き換えモードに移行させるための要求メッセージを送信する(S31)。この要求メッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、スレーブ制御ユニット11bは、この時点では、該要求メッセージを受信するのみである。
マスター制御ユニット11aは、該要求メッセージの受信に応じて(S131)、肯定応答を示すメッセージを書き換え装置31に返信すると共に(S132)、スレーブ制御ユニット11bに、第2のバス25bを介して、書き換えモードへの移行を要求するメッセージを送信する(S133)。書き換え装置31は、たとえば所定時間内に肯定応答メッセージを受信しなければ、書き換え処理を中止することができる(S32)。
スレーブ制御ユニット11bは、該第2のバス25bを介した要求メッセージを受信したならば(S231)、該スレーブ制御ユニットの書き換えモードへの移行処理を開始し(S232)、移行処理の結果を示す応答メッセージを、第2のバス25bを介してマスター制御ユニット11aに返信する(S233)。マスター制御ユニット11aは、該応答メッセージを受信し(S134)、該応答メッセージの内容を解析する(S135)。該応答メッセージが、移行処理が完了(すなわち、正常に終了)したことを示す肯定結果を示すならば、マスター制御ユニット11aは、自身の書き換えモードへの移行処理を開始する(S136)。その結果、自身の移行処理が完了したことを示す肯定結果であれば、マスター制御ユニット11aは、仮想制御ユニットの書き換えモードへの移行が完了したとして、肯定結果を示す1つの応答メッセージを生成し、該応答メッセージを書き換え装置31に送信する(S137)。
他方、ステップS135の結果、スレーブ制御ユニット11bの移行処理が完了しなかったことを示す否定結果であれば、マスター制御ユニット11aは、自身の書き換えモードへの移行処理を開始することなく、仮想制御ユニットの書き換えモードへの移行が完了しなかったとして、否定結果を示す1つの応答メッセージを生成し、該応答メッセージを書き換え装置31に送信する(S137)。
書き換え装置31は、マスター制御ユニット11aからの応答メッセージを受信し(S33)、該応答メッセージが肯定結果を示す場合には、図7に進む。図示していないが、書き換え装置31は、該応答メッセージが否定結果を示す場合には、書き換え処理を中止することができ、その場合、その旨を書き換え装置31のディスプレイに表示することができる。
このように、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答と、自身の応答とを、1つの応答メッセージとして書き換え装置31に送るので、書き換え装置31は、1つの移行要求メッセージに対して、1つの応答メッセージを管理しさえすればよい。
この実施例では、ステップS137における書き換え装置31への応答メッセージは、仮想制御ユニットについて移行が完了したかどうかを示すように、肯定または否定結果を示す。しかしながら、代替的に、それぞれの制御ユニットについて移行が完了したかどうかを示すように、該応答メッセージを構成してもよい。たとえば、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答(肯定または否定)と、自身の応答(肯定または否定)とを連結して、1つの応答メッセージとすることができる。書き換え装置31は、すべての制御ユニットの応答が肯定結果を示すならば、仮想制御ユニットの移行が完了したと判断し、いずれかの制御ユニットの応答が否定結果を示すならば、仮想制御ユニットの移行が完了しなかったと判断して書き換え処理を中止することができる。
さらに、図2を参照して述べた代替形態のように、マスター制御ユニット11aが、スレーブ制御ユニット11bの応答を、自身の応答と共に、別個の応答メッセージとして書き換え装置31に送信するようにしてもよい。書き換え装置31は、それぞれの応答メッセージから、仮想制御ユニットに含まれる制御ユニットのそれぞれについて、移行が完了したかどうかを判断することができる。
不揮発性メモリに対する書き換えは、書き換えモードでのみ許される処理である。一方の制御ユニットのみ移行が完了し、他方の制御ユニットの移行は完了することができない、という状態が生じると、以降の2つの不揮発性メモリへの同時書き換えを実施することができない。すなわち、書き換えモードへの移行は、図4および図5に示されるような処理とは異なり、2つの制御ユニット間で同期を取る必要がある。そこで、上記のように、書き換えモードへの移行は、マスター制御ユニット11aの管理下で、マスター制御ユニット11aとスレーブ制御ユニット11bとの間で同期を取るよう実現される。
不揮発性メモリの読み出しモードと書き換えモードの間の切換は、任意の手法で実現されることができる。たとえば、所定のモードレジスタに、読み出しモードまたは書き換えモードを示す値を設定することにより、実現されることができる。制御ユニットのCPUは、該モードレジスタの値に応じて、不揮発性メモリを動作させる回路を、読み出し動作を行う構成と消去および書き込み動作を行う構成との間で切り換えるための信号(たとえば、回路に供給する電圧値を変更するための信号)を生成することができる。こうして、書き換えモードに切り換えられたならば、不揮発性メモリに対し、消去および書き込み動作を実施することができる。
図7に進み、書き換え装置31は、不揮発性メモリの書き換え領域に記憶されたデータの消去を要求するメッセージを送信する(S41)。
該要求メッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信される(S141,S241)。この受信に応じて、マスター制御ユニット11aは、肯定応答を示すメッセージを第1のバス25aを介して書き換え装置31に返信すると共に(S142)、不揮発性メモリ19aの書き換え領域に対する消去処理を開始し(S143)、スレーブ制御ユニット11bも、不揮発性メモリ19bの書き換え領域に対する消去処理を開始する(S242)。書き換え装置31は、たとえば所定時間内に肯定応答メッセージを受信しなければ、書き換え処理を中止することができる(S42)。
この実施例では、書き換え領域のすべてが消去される。代替的に、消去要求メッセージに、消去すべきアドレス領域を含め、該指定されたアドレス領域だけが消去されるようにしてもよい。
スレーブ制御ユニット11bは、消去処理が終了したならば(S243)、消去処理の結果を示す応答メッセージを、第2のバス25bを介してマスター制御ユニット11aに返信する(S244)。マスター制御ユニット11aは、該応答メッセージを受信すると共に(S144)、自身の不揮発性メモリ19aの消去処理を終了したならば(S145)、スレーブ制御ユニット11bからの応答メッセージの内容を解析し、スレーブ制御ユニット11bの消去処理が完了(すなわち、正常に終了)したかどうかを判断する。マスター制御ユニット11aは、マスター制御ユニット11aの消去処理とスレーブ制御ユニット11bの消去処理の両方が完了したならば、肯定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S146)。他方、マスター制御ユニット11aは、マスター制御ユニット11aの消去処理とスレーブ制御ユニット11bの消去処理の少なくとも一方が完了しなかったならば、否定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S146)。
消去処理には、ある程度の時間がかかるので、書き換え装置31は、マスター制御ユニット11aからの応答メッセージの受信を待つ(S43)。ステップS41のメッセージ送信から所定時間(たとえば、120秒)内に該応答メッセージを受信したならば(S44)、図8に進む。該所定時間が経過しても該応答メッセージを受信しなければ、書き換え処理を中止する。
図示していないが、書き換装置31は、マスター制御ユニット11aからの応答メッセージが否定結果を示す場合には書き換え処理を中止することができ、この場合、書き換え装置31のディスプレイに、消去処理が未完了である旨を示すメッセージを表示することができる。
こうして、書き換え装置31からの消去要求メッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、該消去要求メッセージに対して応答するのは、マスター制御ユニット11aのみである。書き換え装置31からの1つの消去要求メッセージで、2つの不揮発性メモリ19aおよび19bの書き換え領域の消去を同時に実現することができる。
さらに、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答と、自身の応答とを、1つの応答メッセージとして書き換え装置31に送るので、書き換え装置31は、1つの消去要求メッセージに対して、1つの応答メッセージを管理しさえすればよい。
この実施例では、ステップS146における書き換え装置31への応答メッセージは、仮想制御ユニットについて消去が完了したかどうかを示すように、肯定または否定結果を示す。しかしながら、図6を参照して述べた代替形態のように、それぞれの制御ユニットについて消去が完了したかどうかを示すように、該応答メッセージを構成してもよい。さらに、やはり図6を参照して述べた代替形態のように、マスター制御ユニット11aが、スレーブ制御ユニット11bの応答を、自身の応答と共に、別個の応答メッセージとして書き換え装置31に送信するようにしてもよい。
図8は、書き換え装置31から送信されたプログラムコードを、マスターおよびスレーブ制御ユニットの不揮発性メモリ19aおよび19bに同時に書き込む処理を示す。
プログラムコードは、書き換え装置31のたとえばメモリ(RAM)35に、予めロードされている。ロードは、任意の適切な手法で実現することができる。たとえば、外部記憶媒体(たとえば、ICカード)の読み取り機能を書き換え装置31に設け、該外部記憶媒体からプログラムコードをロードすることができる。代替的に、ネットワークのような何らかの通信を介して、他のコンピュータから書き換え装置31にロードしてもよい。また、前述したようにプログラムIDを制御ユニットから受信したことに応じて、書き換え装置31が、書き換えの必要なプログラムを識別し、該識別したプログラムのプログラムコードを、たとえば外部記憶媒体や他のコンピュータから自動的にロードするようにしてもよい。代替的に、入力装置を介して、ユーザが、ロードすべきプログラムをディスプレイ上で選択するようにしてもよいし、または、該ロードされているプログラムのうち制御ユニットに実際に送信するプログラムをディスプレイ上で選択するようにしてもよい。
プログラムコードは、所定のブロック単位(たとえば、8バイトのブロック単位)で書き換え装置31から送信される(S51)。
書き換え装置31から送信された1ブロックのプログラムコードを含むメッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信される。該受信に応じて(S151,S251)、マスター制御ユニット11aは、肯定応答を示すメッセージを書き換え装置31に返信し(S152)、受信したプログラムコードを、不揮発性メモリ19aの開始アドレス(これは、任意の手法で設定されることができ、たとえば消去したメモリ領域の開始アドレスとすることができる)から書き込む処理を開始し(S153)、スレーブ制御ユニット11bも、該受信したプログラムコードを、不揮発性メモリ19bの開始アドレスから書き込む処理を開始する(S252)。書き換え装置31は、たとえば所定時間内に肯定応答メッセージを受信しなければ、書き換え処理を中止することができる(S52)。
スレーブ制御ユニット11bは、該ブロックの書き込み処理が終了したならば(S253)、該書き込みの結果を示す応答メッセージを、第2のバス25bを介してマスター制御ユニット11aに返信する。マスター制御ユニット11aは、該応答メッセージを受信すると共に(S154)、不揮発性メモリ19aへの該ブロックの書き込み処理が終了したならば(S155)、スレーブ制御ユニット11bからの応答メッセージの内容を解析し、スレーブ制御ユニット11bの書き込み処理が完了(すなわち、正常に終了)したかどうかを判断する。マスター制御ユニット11aは、マスター制御ユニット11aの書き込み処理とスレーブ制御ユニット11bの書き込み処理の両方が完了したならば、肯定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S156)。他方、マスター制御ユニット11aは、マスター制御ユニット11aの書き込み処理とスレーブ制御ユニット11bの書き込み処理の少なくとも一方が完了しなかったならば、否定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S156)。
書き換装置31は、マスター制御ユニット11aからの応答メッセージを受信する(S53)。図示していないが、書き換え装置31は、該応答メッセージが否定結果を示す場合には書き換え処理を中止することができ、この場合、書き換え装置31のディスプレイに、書き込み処理が未完了である旨を示すメッセージを表示することができる。
該応答メッセージが肯定結果を示すならば、書き換え装置31は、書き換え対象であるプログラムコードのすべてのブロックの書き込みが完了したかどうかを判断し(S54)、まだ書き込まれていないブロックが残っていれば、ステップS51に戻り、次のプログラムコードを送信する。マスターおよびスレーブ制御ユニット11aおよび11bも、まだ書き込まれていないブロックがあれば(S157,S255)、ステップS151およびS251にそれぞれ戻る。書き込まれていないブロックがあるかどうかは、たとえば、書き込みが終了アドレス(これは、任意の手法で決定されることができ、たとえば、開始アドレスおよびプログラムコードのデータ量に基づいて算出されることができる)に達したかどうかによって判断することができる。マスターおよびスレーブ制御ユニット11aおよび11bは、次のデータブロックを受信したならば、前のデータブロックが書き込まれたアドレス領域に続けて、該受信した次のデータブロックを書き込む。
書き換え装置31は、すべてのブロックのプログラムコードの書き込みを完了したならば(S54)、図9に進む。
こうして、書き換え装置31からのプログラムコードを含むメッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、該メッセージに対して応答するのは、マスター制御ユニット11aのみである。書き換え装置31からの1つのメッセージで、2つの不揮発性メモリ19aおよび19bへのプログラムコードの書き込みを同時に実現することができる。
さらに、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答と、自身の応答とを、1つの応答メッセージとして書き換え装置31に送るので、書き換え装置31は、1つの書き込み要求メッセージに対して、1つの応答メッセージを管理しさえすればよい。
この実施例では、ステップS156における書き換え装置31への応答メッセージは、仮想制御ユニットについて書き込みが完了したかどうかを示すように、肯定または否定結果を示す。しかしながら、図6を参照して述べた代替形態のように、マスターおよびスレーブ制御ユニットのそれぞれについて書き込みが完了したかどうかを示すように、該応答メッセージを構成してもよい。さらに、やはり図6を参照して述べた代替形態のように、マスター制御ユニット11aが、スレーブ制御ユニット11bの応答を、自身の応答と共に、別個の応答メッセージとして書き換え装置31に送信するようにしてもよい。
図9において、書き換え装置31は、メモリチェックの実行を要求するメッセージを送信する(S61)。該メッセージは、第1のバス25aを介して、マスターおよびスレーブ制御ユニット11aおよび11bの両方に受信される。該受信に応じて(S161)、マスター制御ユニット11aは、第1のバス25aを介して肯定応答を書き換え装置31に返信し(S162)、不揮発性メモリ19aに対するメモリチェックの実行を開始する(S163)。スレーブ制御ユニット11bも、該受信に応じて(S261)、不揮発性メモリ19bに対するメモリチェックの実行を開始する(S262)。書き換え装置31は、たとえば所定時間内に肯定応答メッセージを受信しなければ、書き換え処理を中止することができる(S62)。
メモリチェックは、不揮発性メモリに書き込まれたプログラムコードが正しいかどうかを確認するために実行され、任意の適切な手法により実現されることができる。たとえば、書き換え装置31からの送信の途中で何らかのエラーが含まれる可能性があり、このような誤りを検出するようメモリチェックを実現することができる。チェックサムおよびCRC(巡回冗長符号)のような周知のメモリチェック機能を利用することができる。
スレーブ制御ユニット11bは、不揮発性メモリ19bに対するメモリチェックを終了したならば(S263)、第2のバス25bを介して、メモリチェックの結果を示す応答メッセージをマスター制御ユニット11aに送信する(S264)。マスター制御ユニット11aは、該応答メッセージを受信すると共に(S164)、自身の不揮発性メモリ19aに対するメモリチェックを終了したならば(S165)、スレーブ制御ユニット11bからの応答メッセージの内容を解析し、スレーブ制御ユニット11bのメモリチェックが完了(すなわち、正常に終了)したかどうかを判断する。マスター制御ユニット11aは、マスター制御ユニット11aのメモリチェックとスレーブ制御ユニット11bのメモリチェックの両方が完了したならば、肯定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S166)。他方、マスター制御ユニット11aは、マスター制御ユニット11aのメモリチェックとスレーブ制御ユニット11bのメモリチェックの少なくとも一方が完了しなかったならば、否定結果を示す1つの応答メッセージを生成し、該応答メッセージを第1のバス25aを介して書き換え装置31に返信する(S166)。
メモリチェックには、ある程度の時間がかかるので、書き換え装置31は、応答メッセージの受信を待つ(S63)。ステップS61のメッセージ送信から所定時間(たとえば、120秒)内に応答メッセージを受信し、該応答メッセージが肯定結果を示すならば、書き換え処理は完了し、その旨のメッセージを書き換え装置31のディスプレイに表示させることができる。他方、該所定時間が経過しても該応答メッセージを受信しなければ、書き換え処理を中止する(S64)。この場合、メモリチェックについての応答が無かったことを示すメッセージを、書き換え装置31のディスプレイに表示することができる。これに応じてメモリチェックのみを実行するようユーザが入力装置を介して指示できるように、書き換え装置31を構成してもよい。
図示していないが、書き換装置31は、ステップS166におけるマスター制御ユニット11aからの応答メッセージが否定結果を示す場合には書き換え処理を中止することができ、この場合、書き換え装置31のディスプレイにメモリチェック処理が未完了である旨を示すメッセージを表示することができる。
こうして、書き換え装置31からの要求メッセージは、第1のバス25aを介してマスターおよびスレーブ制御ユニット11aおよび11bの両方に受信されるが、該メッセージに対して応答するのは、マスター制御ユニット11aのみである。書き換え装置31からの1つのメッセージで、2つの不揮発性メモリ19aおよび19bのメモリチェックを同時に実現することができる。
さらに、マスター制御ユニット11aは、スレーブ制御ユニット11bの応答と、自身の応答とを、1つの応答メッセージとして書き換え装置31に送るので、書き換え装置31は、1つの要求メッセージに対して、1つの応答メッセージを管理しさえすればよい。
この実施例では、ステップS166における書き換え装置31への応答メッセージは、仮想制御ユニットについてメモリチェックが完了したかどうかを示すように、肯定または否定結果を示す。しかしながら、図6を参照して述べた代替形態のように、マスターおよびスレーブ制御ユニットのそれぞれについてメモリチェックが完了したかどうかを示すように、該応答メッセージを構成してもよい。さらに、やはり図6を参照して述べた代替形態のように、マスター制御ユニット11aが、スレーブ制御ユニット11bの応答を、自身の応答と共に、別個の応答メッセージとして書き換え装置31に送信するようにしてもよい。
こうして書き換え処理を終了した後、図には示していないが、たとえば車両のイグニションスイッチをオフおよびオンしてマスターおよびスレーブ制御ユニット11aおよび11bを再起動することができる。上記の書き換え処理において、書き換えられたプログラムのプログラムIDは更新されている(たとえば、プログラムコードの書き込みに際して、プログラムIDを所定のメモリ領域に書き込むことができる)。したがって、再び図4に示すような手順で不揮発性メモリのプログラムIDを読み出すことにより、不揮発性メモリのプログラムが書き換えられかどうかを判断することができるよう、書き換え装置31を構成することができる。