(57)【特許請求の範囲】
【請求項１】
電気的にデータの書き換えが可能な不揮発性メモリを備え、通常時には、前記不揮発性メモリに格納されたデータにより構成される制御プログラム及び制御データに従って動作し、外部からの書き換え指令を受けた場合には、前記不揮発性メモリ内のデータを外部装置から送信されて来る新たなデータに書き換える書換処理を行う電子装置において、
当該電子装置は、前記書換処理を行うための書換制御プログラムを前記外部装置から受信し、該書換制御プログラムを書き換え対象でないメモリ領域に格納して実行することにより、前記不揮発性メモリ内のデータを前記外部装置から送信されて来る新たなデータに書き換えるよう構成されるものであって、
前記電子装置は、動作モードが書換モードであると判断した後、前記外部装置との間で行われるデータ通信の通信速度が初期値に設定されている状態で、前記外部装置からのボーレート値要求を受けると、当該電子装置が対応可能な通信速度を表す信号を前記外部装置に送信し、当該通信速度を変更可能に構成されており、
その後、設定された通信速度にて前記外部装置から送信されて来る前記書換制御プログラムを受信して前記書き換え対象でないメモリ領域に格納し、
更に、該書換制御プログラムを受信し終えた後、前記外部装置との間で行うデータ通信の通信速度を、所定の変更命令を実行することで該変更命令に応じた前記書換制御プログラムを通信する際の通信速度より早く設定された値に変更可能に構成されており、
前記外部装置から送信されて来る前記書換制御プログラムには、前記書換処理を行うための命令群の前に、前記変更命令が配置されていること、
を特徴とする電子装置。
【請求項２】
請求項１に記載の電子装置において、
更に、前記書換制御プログラムには、前記変更命令の前に、該変更命令により設定される当該電子装置の通信速度を表す信号を前記外部装置に送信する送信命令が配置されており、
当該電子装置は、前記送信命令を実行することで、前記外部装置に前記通信速度を表す信号を送信すること、
を特徴とする電子装置。
【請求項３】
電気的にデータの書き換えが可能な不揮発性メモリを備え、通常時には、前記不揮発性メモリに格納されたデータにより構成される制御プログラム及び制御データに従って動作し、外部からの書き換え指令を受けた場合には、前記不揮発性メモリ内のデータを外部装置から送信されて来る新たなデータに書き換える電子装置において、
前記不揮発性メモリ内のデータを前記新たなデータに書き換えるための手段として、
前記外部装置から送信されて来る所定量のデータを受信して所定のバッファ領域に格納するデータ取得手段と、
前記バッファ領域に格納されたデータを、前記不揮発性メモリに書き込むデータ書込手段と、
該データ書込手段により前記バッファ領域内のデータが前記不揮発性メモリに全て書き込まれたか否かを判定する書込状態判定手段と、
該書込状態判定手段により肯定判定されると、前記外部装置へ、前記不揮発性メモリに次に書き込むべき所定量のデータを要求するための要求信号を送信する要求信号送信手段とを備えると共に、
当該電子装置は、
前記データ取得手段、データ書込手段、書込状態判定手段、及び要求信号送信手段の機能を実現するための書換制御プログラムを前記外部装置から受信し、該書換制御プログラムを書き換え対象でないメモリ領域に格納して実行することにより、前記不揮発性メモリ内のデータを前記外部装置から送信されて来る新たなデータに書き換えるように構成されており、
更に、当該電子装置は、
動作モードが書換モードであると判断した後、前記外部装置との間で行われるデータ通信の通信速度が初期値に設定されている状態で、前記外部装置からのボーレート値要求を受けると、当該電子装置が対応可能な通信速度を表す信号を前記外部装置に送信し、当該通信速度を変更可能に構成されており、
その後、設定された通信速度にて前記外部装置から送信されて来る前記書換制御プログラムを受信して前記書き換え対象でないメモリ領域に格納し、
更に、該書換制御プログラムを受信し終えた後、
前記外部装置との間で行うデータ通信の通信速度を、所定の変更命令を実行することで該変更命令に応じた前記書換制御プログラムを通信する際の通信速度より早く設定された値に変更可能に構成されており、
前記外部装置から送信されて来る前記書換制御プログラムには、前記データ取得手段、データ書込手段、書込状態判定手段、及び要求信号送信手段の機能を実現するための命令群の前に、前記変更命令が配置されていること、
を特徴とする電子装置。
【請求項４】
請求項３に記載の電子装置において、
更に、前記書換プログラムには、前記変更命令の前に、該変更命令により設定される当該電子装置の通信速度を表す信号を前記外部装置に送信する送信命令が配置されており、  当該電子装置は、前記送信命令を実行することで、前記外部装置に前記通信速度を表す信号を送信すること、
を特徴とする電子装置。
【請求項５】
請求項３又は請求項４に記載の電子装置において、
前記所定量は、前記データ書込手段が前記不揮発性メモリに一度に書き込むことが可能なデータのビット数を複数倍した値に設定されていると共に、
前記データ書込手段は、前記バッファ領域から前記ビット数分のデータを順次取り出し、その取り出した各データ群を前記不揮発性メモリに順次書き込むように構成されていること、
を特徴とする電子装置。
【請求項６】
請求項１又は請求項２に記載の電子装置において、
前記新たなデータは、前記外部装置から所定量ずつパケット化されて送信されるようになっており、
当該電子装置は、前記所定量のデータの前記不揮発性メモリへの書き込みを完了すると、前記外部装置へ、前記不揮発性メモリに次に書き込むべき所定量のデータを要求するための要求信号を送信すること、
を特徴とする電子装置。
【請求項７】
請求項１ないし請求項６の何れか１項に記載の電子装置において、
当該電子装置は、自動車用エンジン制御装置であること、
を特徴とする電子装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電気的にデータの書き換えが可能な不揮発性メモリに格納された制御プログラムや制御データを、該不揮発性メモリを電子装置に搭載した状態で書き換える技術に関する。
【０００２】
【従来の技術】
従来より、例えば特開平４−１１４２８９号公報に開示されているように、制御プログラムや制御データを記憶しておくための記憶媒体として、電気的にデータの書き換えが可能なＥＥＰＲＯＭやフラッシュＥＥＰＲＯＭ（以下、フラッシュＲＯＭという）等の不揮発性メモリを備え、この不揮発性メモリを組み付けた状態（実装した状態）で、制御プログラムや制御データを書き換え可能に構成された電子装置が提案されている。また、このような電子装置によれば、その製造工程において、不揮発性メモリを装置に実装してから、制御プログラム等を新規に書き込むことができる。
【０００３】
即ち、この種の電子装置では、別途用意された外部装置が接続されて、この外部装置から所定の指令を受けると、上記外部装置からシリアルデータとして送信されて来る制御プログラムや制御データを受信し、その受信したデータを不揮発性メモリに順次書き込むようにしている。
【０００４】
【発明が解決しようとする課題】
ところで、このような電子装置においては、外部装置との間で行うデータ通信の通信速度を上げるほど、通信に要する時間が短くなり、その分、不揮発性メモリ内のデータを書き換えるのに要するトータル時間を短縮することができる。
【０００５】
しかしながら、上記従来の電子装置では、外部装置からのデータを受信して不揮発性メモリに書き込む、といった一連の処理を行うためのプログラムやハードウェアを、市場への供給後に容易に変更することはできず、この結果、外部装置との通信速度を変更して不揮発性メモリ内のデータを書き換えるのに要する時間を短縮する、といった手法を採ることができなかった。
【０００６】
一方、従来より、この種の電子装置では、不揮発性メモリに一度に書き込むことが可能なビット数（例えば１バイトであり、以下、１バイトとして説明する）分のデータを外部装置から受信すると、その受信した１バイトデータを以下の手順で不揮発性メモリに書き込むようにしている。即ち、受信したデータを不揮発性メモリに書き込む処理を行った後、正常に書き込めたか否かをベリファイチェックし、このベリファイチェックにより正常に書き込めたと判定するまで、所定回数を限度に、データの書き込み処理を繰り返す。そして、受信したデータを正常に書き込むことができたならば、外部装置から次の１バイトデータが送信されて来るのを待つようにしている。
【０００７】
このため、上記従来の電子装置に接続される外部装置は、図９に例示するように、１バイトデータＤを予め定められた時間間隔Ｔで順次送信するようにしており、しかも、その時間間隔（送信間隔）Ｔは、電子装置側にてデータの書き込みに要する最大時間ｔmax よりも大きく設定されている。尚、図９において、左から右方向の矢印「→」は、外部装置から電子装置への１バイトデータＤの送信を示している。
【０００８】
つまり、この種の電子装置において、受信したデータの書き込みに要する時間（ベリファイチェックにより正常に書き込めたと判定するまでの時間）には、図９にて符号ｔ1 ，ｔ2 ，ｔ3 ，ｔ4 ，…に示すように、その都度ばらつきがあり、また、受信したデータの書き込みが終了するまでは次の１バイトデータＤを受信することができないため、外部装置は、電子装置側にてデータの書き込みに要する最大時間ｔmaxよりも大きな時間間隔Ｔ（＞ｔmax ）で、１バイトデータＤを送信する必要があった。
【０００９】
しかしながら、通常、電子装置側にてデータの書き込みに要する時間は、図９にて符号ｔ1 ，ｔ2 ，ｔ4 に例示するように、上記最大時間ｔmax （＝ｔ3 ）よりも短い場合がほとんどであり、この結果、従来の電子装置では、データの受渡しに無駄な時間が生じてしまい、不揮発性メモリ内のデータを書き換えるのに要するトータル時間が長くなってしまっていた。
【００１０】
本発明は、こうした問題に鑑みなされたものであり、不揮発性メモリ内のデータを、より速く書き換えることのできる電子装置を提供することを目的としている。
【００１１】
【課題を解決するための手段、及び発明の効果】
上記目的を達成するためになされた請求項１に記載の電子装置は、電気的にデータの書き換えが可能な不揮発性メモリを備えており、通常時には、その不揮発性メモリに格納されたデータにより構成される制御プログラム及び制御データに従って動作するのであるが、外部からの書き換え指令を受けた場合には、前記不揮発性メモリ内のデータを外部装置から送信されて来る新たなデータに書き換える書換処理を行う。
【００１２】
ここで特に、請求項１に記載の電子装置は、前記書換処理を行うための書換制御プログラムを前記外部装置から受信し、その受信した書換制御プログラムを書き換え対象でないメモリ領域に格納して実行することにより、前記不揮発性メモリ内のデータを前記外部装置から送信されて来る新たなデータに書き換えるよう構成されるものであって、前記電子装置は、動作モードが書換モードであると判断した後、前記外部装置との間で行われるデータ通信の通信速度が初期値に設定されている状態で、前記外部装置からのボーレート値要求を受けると、当該電子装置が対応可能な通信速度を表す信号を前記外部装置に送信し、当該通信速度を変更可能に構成されており、その後、設定された通信速度にて前記外部装置から送信されて来る前記書換制御プログラムを受信して前記書き換え対象でないメモリ領域に格納し、更に、該書換制御プログラムを受信し終えた後、前記外部装置との間で行うデータ通信の通信速度を、所定の変更命令を実行することで該変更命令に応じた前記書換制御プログラムを通信する際の通信速度より早く設定された値に変更可能に構成されている。
【００１３】
そして、前記外部装置から送信されて来る書換制御プログラムには、前記書換処理を行うための命令群の前に、前記変更命令が配置されている。この請求項１に記載の電子装置によれば、動作モードが書換モードであると判断した後、外部装置から前記書換制御プログラムを、当該電子装置が対応可能な所定の通信速度に変更して送信できるものであり、この書換制御プログラムが、当該電子装置にて、書き換え対象でないメモリ領域に格納されれば、書換制御プログラムにて書換処理を行うための命令群の前に配置された変更命令が実行されることにより、外部装置との間で行うデータ通信の通信速度が、上記変更命令に応じた書換制御プログラムを通信する際の通信速度より早く設定された値に変更される。そして、この変更後の通信速度で、その後外部装置から送信されて来る新たなデータ（不揮発性メモリに書き込むべきデータ）の受信が行われる。
【００１４】
このため、外部装置が書換制御プログラムを送信した後に新たなデータ（不揮発性メモリに書き込むべきデータ）を送信する時には、その新たなデータを、書換制御プログラムに配置した変更命令により設定される通信速度で送信することができ、この変更命令により設定される通信速度を、書換制御プログラムの通信を行う場合の通信速度よりも速く設定しておくことで、新たなデータをより速く電子装置側へ転送することができるようになる。
【００１５】
このように請求項１に記載の電子装置によれば、外部装置との間で行うデータ通信の通信速度（詳しくは、不揮発性メモリに書き込むべき新たなデータの通信速度）を任意に高速化して、不揮発性メモリ内のデータを書き換えるのに要するトータル時間を短縮することが可能となる。
【００１６】
尚、電気的にデータの書き換えが可能な不揮発性メモリとしては、ＥＥＰＲＯＭ或いはフラッシュＲＯＭが一般的であるが、電気的に書き換え可能な他のＲＯＭでも良い。また、書換制御プログラムを格納する書き換え対象でないメモリ領域としては、ＲＡＭや書き換え可能なＲＯＭが挙げられる。
【００１７】
次に、請求項２に記載の電子装置では、請求項１に記載の電子装置に対し、更に、前記書換制御プログラムには、前記変更命令の前に、該変更命令により設定される当該電子装置の通信速度を表す信号を前記外部装置に送信する送信命令が配置されており、当該電子装置は、前記送信命令を実行することで、前記外部装置に前記通信速度を表す信号を送信する。
【００１８】
このような請求項２に記載の電子装置によれば、通信速度の変更命令が実行される前に、前記送信命令が実行されて、外部装置へ、その後に設定される当該電子装置の新たな通信速度を表す信号が、それまでの通信速度（即ち、書換制御プログラムの通信を行う場合の通信速度）と同じ通信速度で送信されることとなる。
【００１９】
よって、外部装置は、上記信号を受信することで、当該電子装置側の新たな通信速度を知ることができ、この結果、請求項２に記載の電子装置によれば、外部装置との間の通信をより確実に行うことができるようになる。
つまり、請求項１に記載の電子装置では、書換制御プログラムに配置された変更命令によって設定される通信速度を、外部装置側で予め認識しておく必要があるが、請求項２に記載の電子装置によれば、外部装置は、当該電子装置からの信号によって変更後の通信速度を知ることができ、その変更後の通信速度に自動的に切り替えるように構成することが可能となるため、外部装置との間のデータ通信を、より確実に成立させることができるようになるのである。
【００２０】
一方、請求項３に記載の電子装置も、電気的にデータの書き換えが可能な不揮発性メモリを備えており、外部からの書き換え指令を受けた場合には、その不揮発性メモリ内のデータを外部装置から送信されて来る新たなデータに書き換えるのであるが、前記不揮発性メモリ内のデータを新たなデータに書き換えるための手段として、データ取得手段、データ書込手段、書込状態判定手段、及び要求信号送信手段を備えている。
【００２１】
即ち、データ取得手段が、外部装置から送信されて来る所定量のデータを受信して所定のバッファ領域に格納し、データ書込手段が、そのバッファ領域に格納されたデータを、前記不揮発性メモリに書き込み、書込状態判定手段が、データ書込手段により前記バッファ領域内のデータが不揮発性メモリに全て書き込まれたか否かを判定する。そして、この書込状態判定手段により肯定判定されると（つまり、バッファ領域内のデータが不揮発性メモリに全て書き込まれたと判定されると）、要求信号送信手段が、外部装置へ、不揮発性メモリに次に書き込むべき所定量のデータを要求するための要求信号を送信する。
【００２２】
つまり、請求項３に記載の電子装置では、外部装置から送信されて来る所定量のデータを受信してバッファ領域に格納し、その格納したデータの不揮発性メモリへの書き込みが完了すると、外部装置へ、次に書き込むべき所定量のデータを要求するための要求信号を送信するようにしている。
【００２３】
よって、外部装置は、不揮発性メモリに書き込むべき新たなデータを、最初に所定量だけ送信し、その後は、当該電子装置からの要求信号を受ける度に次の所定量のデータを送信する、といった手順で送信することができる。
このように、請求項３に記載の電子装置によれば、図９を用いて説明したように、外部装置が予め定められた時間間隔（電子装置側にてデータの書き込みに要する最大時間よりも大きな時間間隔）で新たなデータを順次送信する、といった送信方法を採る必要がなく、外部装置側の送信間隔を、当該電子装置側にてデータの書き込みに実際に要した時間に応じて最適に変化させることができるため、新たなデータを受渡しする時間に無駄が生じることがなく、この結果、不揮発性メモリ内のデータを短い時間で書き換えることができるようになる。
【００２４】
尚、外部装置から受信する新たなデータの１単位であってバッファ領域に一度に格納するデータ量である上記所定量（換言すれば、バッファ領域のサイズ）は、不揮発性メモリに一度に書き込むことが可能なビット数に設定しても良いが、請求項５に記載のように、前記所定量を、不揮発性メモリに一度に書き込むことが可能なデータのビット数を複数倍した値に設定し、データ書込手段が、バッファ領域から前記ビット数分のデータを順次取り出して、その取り出した各データ群を不揮発性メモリに順次書き込むようにすれば、より大きな効果を得ることができる。
【００２５】
つまり、当該電子装置から外部装置へ要求信号を送信する回数を減らすことができ、その分、新たなデータを受渡しするのに必要な時間を短縮することができる。そして、この結果、不揮発性メモリ内のデータをより短い時間で書き換えることができるようになる。
【００２６】
ここで更に、請求項３に記載の電子装置では、前記データ取得手段、データ書込手段、書込状態判定手段、及び要求信号送信手段の機能を実現するための書換制御プログラムを外部装置から受信し、その書換制御プログラムを書き換え対象でないメモリ領域に格納して実行することにより、前記不揮発性メモリ内のデータを前記外部装置から送信されて来る新たなデータに書き換えるように構成されている。
【００２７】
このため、上記各手段の機能を実現するための書換制御プログラムを実行して、不揮発性メモリ内のデータを外部装置から送信されて来る新たなデータに書き換える構成の場合に、その書換制御プログラムを予め内蔵しておく必要がなく、メモリの節約が可能となる。
【００２８】
そして特に、請求項３に記載の電子装置では、前記外部装置との間で行うデータ通信の通信速度を、所定の変更命令を実行することで該変更命令に応じた値に変更可能に構成されており、前記外部装置から送信されて来る書換制御プログラムには、データ取得手段、データ書込手段、書込状態判定手段、及び要求信号送信手段の機能を実現するための命令群の前に、前記変更命令が配置されている。
【００２９】
このため、請求項１に記載の電子装置と同様に、動作モードが書換モードであると判断した後、外部装置から前記書換制御プログラムを当該電子装置が対応可能な所定の通信速度に変更して送信でき、この書換制御プログラムが、当該電子装置にて、書き換え対象でないメモリ領域に格納されれば、書換制御プログラムにて上記各手段の機能を実現するための命令群の前に配置された変更命令が実行されることにより、外部装置との間で行うデータ通信の通信速度が、上記変更命令に応じた書換制御プログラムを通信する際の通信速度より早く設定された値に変更される。そして、この変更後の通信速度により、少なくとも、その後外部装置から送信されて来る新たなデータの受信と、前記要求信号の外部装置への送信とが行われる。
【００３０】
このような請求項３に記載の電子装置によれば、請求項１に記載の電子装置と同様に、外部装置から前記書換制御プログラムを当該電子装置が対応可能な所定の通信速度に変更して送信でき、さらに、外部装置との間で行うデータ通信の通信速度（詳しくは、新たなデータ及び要求信号の通信速度）を任意に変更することができるため、不揮発性メモリ内のデータを書き換えるのに要するトータル時間を、より一層短縮することができる。
【００３１】
次に、請求項４に記載の電子装置では、請求項３に記載の電子装置に対し、更に、前記書換制御プログラムには、前記変更命令の前に、該変更命令により設定される当該電子装置の通信速度を表す信号を前記外部装置に送信する送信命令が配置されており、当該電子装置は、前記送信命令を実行することで、前記外部装置に前記通信速度を表す信号を送信する。
【００３２】
この電子装置によれば、請求項２に記載の電子装置と同様に、通信速度の変更命令が実行される前に、前記送信命令が実行されて、外部装置へ、その後に設定される当該電子装置の新たな通信速度を表す信号が、それまでの通信速度（即ち、書換制御プログラムの通信を行う場合の通信速度）と同じ通信速度で送信されることとなる。よって、請求項２に記載の電子装置と同様の効果、即ち、外部装置は、当該電子装置からの信号によって変更後の通信速度を知ることができ、その変更後の通信速度に自動的に切り替えるように構成することが可能となるため、外部装置との間のデータ通信をより確実に成立させることができるようになる、という効果を得ることができる。
一方、請求項６の発明は、請求項１，２の電子装置において、前記新たなデータは、外部装置から所定量ずつパケット化されて送信されるようになっており、当該電子装置は、前記所定量のデータの前記不揮発性メモリへの書き込みを完了すると、外部装置へ、前記不揮発性メモリに次に書き込むべき所定量のデータを要求するための要求信号を送信すること、を特徴としている。
また、請求項７の発明は、請求項１〜６の電子装置において、当該電子装置は自動車用エンジン制御装置であることを特徴としている。
【００３３】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。尚、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り、種々の形態を採り得ることは言うまでもない。
【００３４】
まず図１は、自動車に搭載されて内燃機関型エンジンの制御を行うエンジン制御装置（以下、ＥＣＵという）２と、ＥＣＵ２に内蔵されたエンジン制御用のプログラムやデータを書き換える際、或いは新規に書き込む際にＥＣＵ２に接続されるメモリ書換装置４とからなる、実施例の電子装置のメモリ書換システム５の全体構成を表すブロック図である。
【００３５】
図１に示すように、ＥＣＵ２は、エンジンの運転状態を検出する様々なセンサからの信号を入力して波形処理する入力回路６と、入力回路６からのセンサ信号に基づき、エンジンを制御するための様々な処理を実行するシングルチップマイクロコンピュータ（以下、マイコンという）８と、マイコン８からの制御信号に基づき、エンジンに取り付けられたインジェクタ（燃料噴射弁）やイグナイタ等のアクチュエータへ駆動信号を出力する出力回路１０とを備えている。
【００３６】
そして、マイコン８には、プログラムに従い動作する周知のＣＰＵ１８と、ＣＰＵ１８を動作させるのに必要なプログラム及びデータを格納する不揮発性のＲＯＭ２０と、ＣＰＵ１８の演算結果等を一時格納するＲＡＭ２２と、前記入力回路６等からの信号を受けると共に、出力回路１０に制御信号を出力するためのＩ／Ｏ２４と、メモリ書換装置４との間でシリアルデータ通信を行うための通信回路２５とが備えられている。
【００３７】
ここで、ＲＯＭ２０としては、電気的にデータの書き換え（詳しくは消去及び書き込み）が可能なフラッシュＲＯＭ２０ａと、データの書き換えが不能なマスクＲＯＭ２０ｂとを備えている。
そして、フラッシュＲＯＭ２０ａには、ＥＣＵ２の製造工程において当該マイコン８がＥＣＵ２へ実装された後に、エンジン制御用の制御プログラム及び制御データが新規に書き込まれ、また、マスクＲＯＭ２０ｂには、リセット直後に実行されるブートプログラムが、当該マイコン８のＥＣＵ２への実装前に予め格納されている。尚、本実施例において、フラッシュＲＯＭ２０ａには、アドレス１番地当りに１バイト（＝８ビット）のデータが格納される。また、マスクＲＯＭ２０ｂに代えて、フラッシュＲＯＭ２０ａと同様に電気的にデータの書き換えが可能な不揮発性メモリを用いても、データの書き換えが禁止されていれば良い。
【００３８】
このようなＥＣＵ２において、マイコン８（ＣＰＵ１８）は、リセット直後に、マスクＲＯＭ２０ｂ内のブートプログラムを起動し、メモリ書換装置４が接続されていない通常時には、そのブートプログラムにてフラッシュＲＯＭ２０ａ内のエンジン制御プログラム（エンジン制御用の制御プログラム）をコールして、エンジンの制御を行う。
【００３９】
また、マイコン８は、ブートプログラムを起動した際に、後述するように書換モードであると判定すると、フラッシュＲＯＭ２０ａ内の制御プログラムをコールすることなく、メモリ書換装置４から送信されて来る書換制御プログラムを受信してＲＡＭ２２に格納し、その書換制御プログラムをコールしてＲＡＭ２２上で実行することにより、フラッシュＲＯＭ２０ａ内に格納されている現在の制御プログラム及び制御データを、その後メモリ書換装置４から送信されて来る書込データ（新たな制御プログラム及び制御データを構成するデータ）に書き換える処理を行う。
【００４０】
尚、フラッシュＲＯＭ２０ａにエンジン制御用の制御プログラム及び制御データが未だ書き込まれていないＥＣＵ２の製造時においても、フラッシュＲＯＭ２０ａにエンジン制御用の制御プログラム及び制御データが新規に書き込まれるだけで全く同様である。よって、以下では、フラッシュＲＯＭ２０ａ内の制御プログラム及び制御データを書き換えるケースについて説明する。
【００４１】
一方、メモリ書換装置４は、ＥＣＵ２側のマイコン８にフラッシュＲＯＭ２０ａの書き換えを行わせるための処理を実行するＣＰＵ，ＲＯＭ，ＲＡＭ等を内蔵したマイコン３０と、このマイコン３０からの指令に応じて、ＥＣＵ２側のマイコン８へ、フラッシュＲＯＭ２０ａのデータ書換時に必要な書換電圧（本実施例では１２Ｖ）Ｖｐｐを供給する電源回路３２と、ＥＣＵ２の動作モードを、エンジンの制御を行う通常モードからフラッシュＲＯＭ２０ａのデータを書き換える（或いは新規に書き込む）書換モードに変更させるための書換スイッチＳＷとを備えている。
【００４２】
そして更に、メモリ書換装置４は、ＥＣＵ２へ送信する書換制御プログラム（詳しくは、書換制御プログラムを構成するプログラムコード及び書換制御プログラムの実行時に参照されるデータ）が格納された第１のＲＯＭ３４と、ＥＣＵ２へ送信すべき書込データ（即ち、フラッシュＲＯＭ２０ａに書き込むべき新たな制御プログラム及び制御データを構成するデータ）が格納された第２のＲＯＭと３６と、作業者が当該メモリ書換装置４に様々な指示入力を行うための入力装置３７とを備えている。尚、第１のＲＯＭ３４と第２のＲＯＭ３６は、夫々、周知のＩＣソケット３８，４０によって、当該メモリ書換装置４に着脱可能に設けられている。
【００４３】
このようなメモリ書換装置４とＥＣＵ２との接続は、図１に示す如く、メモリ書換装置４側の雌コネクタ４２ＦとＥＣＵ２に設けられた雄コネクタ４２Ｍとを嵌合することにより行われる。
即ち、上記両コネクタ４２Ｆ，４２Ｍが嵌合されると、通信線４４を介して、メモリ書換装置４側のマイコン３０とＥＣＵ２側のマイコン８との間におけるシリアルデータ通信が可能となり、また、電源供給線４６を介して、メモリ書換装置４側の電源回路３２からＥＣＵ２側のマイコン８へフラッシュＲＯＭ２０ａのデータ書換時に必要な書換電圧Ｖｐｐが供給される。そして更に、メモリ書換装置４側で書換スイッチＳＷを介して接地電位（０Ｖ）に接続される信号線４８が、ＥＣＵ２側で抵抗器Ｒにより５Ｖにプルアップされたモード判定用信号ラインＬに接続され、これにより、メモリ書換装置４側で書換スイッチＳＷがＯＮされると、ＥＣＵ２側においては上記モード判定用信号ラインＬがハイレベル（５Ｖ）からロウレベル（０Ｖ）に変化することとなる。そして、ＥＣＵ２のマイコン８は、前述の如くブートプログラムを起動した際に、モード判定用信号ラインＬがロウレベルであれば、書換モードと判定する。
【００４４】
次に、メモリ書換装置４のマイコン３０で実行される処理と、ＥＣＵ２のマイコン８で実行される処理について、図２〜図５のフローチャートを用いて説明する。尚、図２及び図３は、メモリ書換装置４のマイコン３０で実行される処理を表すフローチャートである。また、図４及び図５は、ＥＣＵ２のマイコン８で実行される処理を表すフローチャートであり、そのステップ（以下、単に「Ｓ」と記す）３００〜Ｓ３５０の処理が、マスクＲＯＭ２０ｂ内のブートプログラムによって実行され、Ｓ４００の処理が、フラッシュＲＯＭ２０ａ内のエンジン制御プログラムによって実行される。そして、Ｓ５００〜Ｓ７４０の処理が、メモリ書換装置４から送信されてＲＡＭ２２に格納される書換制御プログラムによって実行される。
【００４５】
まず、メモリ書換装置４では、作業者によりＥＣＵ２に接続されて書換スイッチＳＷがＯＮされると、マイコン３０が図２に示す処理を実行する。尚、本実施例において、メモリ書換装置４とＥＣＵ２との間で行われるデータ通信の通信速度（以下、ボーレートともいう）は、最初は互いに９６００ｂｐｓに設定されている。
【００４６】
図２に示すように、メモリ書換装置４のマイコン３０は、まず最初のＳ１００にて、ＥＣＵ２に対し該ＥＣＵが対応可能なボーレートの値を表す信号を要求するためのボーレート値要求を送信する。
そして、続くＳ１１０にて、ＥＣＵ２からのデータを受信するまで待機し、データを受信すると、Ｓ１２０に進んで、その受信したデータが、ＥＣＵ２が対応可能なボーレートの値を表す信号（以下、対応ボーレート値信号という）であるか否かを判定し、受信したデータが対応ボーレート値信号であれば、続くＳ１３０にて、当該メモリ書換装置４側のボーレートを、上記受信した対応ボーレート値信号の表す値に変更する。つまり、本実施例のＥＣＵ２は、後述するように、当該メモリ書換装置４へ対応ボーレート値信号を送信した後、自己のボーレートを上記送信した対応ボーレート値信号の表す値に変更するため、当該メモリ書換装置４側でも、通信に用いるボーレートをＥＣＵ２から受信した対応ボーレート値信号の表す値に変更して、その後の通信が成立するようにしている。
【００４７】
そして、Ｓ１３０の処理を実行するか、或いは、前記Ｓ１２０にて、受信したデータが対応ボーレート値信号ではないと判定すると、Ｓ１４０に移行して、第１のＲＯＭ３４から書込制御プログラムを読み出し、その読み出した書換制御プログラムをＥＣＵ２に送信する。尚、この書換制御プログラムの送信と、それ以降の通信は、Ｓ１３０の処理が実行されていれば（Ｓ１２０：ＹＥＳ）、Ｓ１３０で変更されたボーレートで行われ、Ｓ１３０の処理が実行されていなければ（Ｓ１２０：ＮＯ）、最初のＳ１００と同じ９６００ｂｐｓで行われる。
【００４８】
このＳ１４０にて、書換制御プログラムの送信が全て終了すると、Ｓ１５０に進んで、ＥＣＵ２から書換制御プログラムの受信が終了した旨を示す受信終了信号が送信されて来るのを待ち、その受信終了信号を受信すると、Ｓ１６０に進んで、Ｓ１００の場合と同様に、ＥＣＵ２へボーレート値要求を送信する。
【００４９】
そして、続くＳ１７０にて、ＥＣＵ２からのデータを受信するまで待機し、データを受信すると、続くＳ１８０にて、その受信したデータが対応ボーレート値信号であるか否かを判定する。そして、対応ボーレート値信号であれば、Ｓ１９０に進んで、当該メモリ書換装置４側のボーレートを、Ｓ１７０で受信した対応ボーレート値信号の表す値に変更する。つまり、Ｓ１６０〜Ｓ１９０では、前述したＳ１００〜Ｓ１３０と全く同様の処理を行う。
【００５０】
そして、Ｓ１９０の処理を実行するか、或いは、前記Ｓ１８０にて、受信したデータが対応ボーレート値信号ではないと判定すると、Ｓ２００に移行して、書込データのパケット送信処理を実行し、その後、当該メモリ書換装置４側の処理を終了する。
【００５１】
ここで、Ｓ２００の書込データのパケット送信処理は、第２のＲＯＭ３６に格納された書込データをｎバイトずつ読み出して、そのｎバイトの書込データを図６に示す如くパケット化してＥＣＵ２へ送信するものであり、図３に示す手順で実行される。尚、図６において、「ＨＤ」は、ｎバイトの書込データdata１，data２，…，dataｎに付される数バイトのヘッダであり、このヘッダＨＤには、当該送信データの転送先を示すコード等の通信制御用の情報が配置される。そして、「ＣＳ」は、通信誤りを検出するための１バイト或いは数バイトのチェックサム（検査用データ）である。また、このパケット送信処理におけるＥＣＵ２との通信は、Ｓ１９０の処理が実行されていれば（Ｓ１８０：ＹＥＳ）、Ｓ１９０で変更されたボーレートで行われ、Ｓ１９０の処理が実行されていなければ（Ｓ１８０：ＮＯ）、Ｓ１３０で変更されたボーレート或いは最初のＳ１００と同じ９６００ｂｐｓで行われる。
【００５２】
図３に示すように、書込データのパケット送信処理の実行が開始されると、まずＳ２１０にて、第２のＲＯＭ３６から書込データのうちの最初のｎバイトを読み出し、そのｎバイトの書込データに図６の如くヘッダＨＤ及びチェックサムＣＳを付すことで１つのパケットを生成して、そのパケットをＥＣＵ２へ送信する。
【００５３】
そして、続くＳ２２０にて、ＥＣＵ２から次のパケットを要求するための、要求信号としてのパケット要求が送信されて来るまで待機し、ＥＣＵ２からのパケット要求を受信すると、Ｓ２３０に進んで、第２のＲＯＭ３６から書込データのうちの次のｎバイトを読み出し、そのｎバイトの書込データをＳ２１０の場合と同様にパケット化してＥＣＵ２へ送信する。
【００５４】
そして、続くＳ２４０にて、第２のＲＯＭ３６に格納された全ての書込データを送信し終えたか否かを判定し、全データを未だ送信していなければ、Ｓ２２０及びＳ２３０の処理を繰り返す。また、Ｓ２４０にて、全データの送信が終了したと判定した場合には、このパケット送信処理から図２の処理へ戻り、その後、当該メモリ書換装置４側の処理を終える。
【００５５】
一方、次にＥＣＵ２では、電源が投入されると、マイコン８がリセット状態から動作を開始して、図４に示す処理を実行する。
即ち、最初に、マスクＲＯＭ２０ｂに格納されたブートプログラムを起動して、まずＳ３００にて、書換モードであるか否かを、モード判定用信号ラインＬがロウレベルであるか否かによって判定する。そして、モード判定用信号ラインＬがロウレベルでなければ（Ｓ３００：ＮＯ）、書換モードではない通常モードであると判断して、エンジン制御プログラムへジャンプする。
【００５６】
すると、フラッシュＲＯＭ２０ａに格納されている制御プログラムが起動され、その後は、Ｓ４００に示すように、エンジン制御用の制御データを参照して行われるエンジン制御処理が実行される。尚、このエンジン制御処理は、入力回路６からの各種センサ信号とフラッシュＲＯＭ２０ａに格納された制御データとに基づき、エンジンに対する最適な燃料噴射量や点火時期等を演算し、その演算結果に応じて、インジェクタやイグナイタ等のアクチュエータを駆動するための制御信号を出力回路１０に出力する、といった手順で繰り返し実行される。
【００５７】
これに対し、ブートプログラムにおいて、上記Ｓ３００で書換モードであると判断した場合、即ち、当該ＥＣＵ２にメモリ書換装置４が接続されて書換スイッチＳＷがＯＮされることにより、モード判定用信号ラインＬがロウレベルであった場合には、Ｓ３１０に移行する。
【００５８】
そして、このＳ３１０にて、前述した図２のＳ１００でメモリ書換装置４から送信されて来るボーレート値要求を受信するまで待機し、ボーレート値要求を受信すると、Ｓ３２０に進んで、次のＳ３３０で変更・設定される自己のボーレートを表す信号（対応ボーレート値信号）を、メモリ書換装置４に送信し、続くＳ３３０で、自己のボーレートを上記送信した対応ボーレート値信号の表す値に変更する。
【００５９】
すると、前述した図２のＳ１４０でメモリ書換装置４から書換制御プログラムが上記変更後のボーレートで送信されて来るため、続くＳ３４０にて、その書換制御プログラムを受信して、ＲＡＭ２２の所定領域に順次格納する。尚、この書換制御プログラムの受信と、それ以降の通信は、Ｓ３３０で変更されたボーレートで行われる。
【００６０】
そして、このＳ３４０で書換制御プログラムのＲＡＭ２２への格納が全て終了すると、続くＳ３５０にて、Ｓ３４０でＲＡＭ２２に格納した書込制御プログラムへジャンプする。
これにより、メモリ書換装置４から送信されて来た書込制御プログラムがＲＡＭ２２上で実行されて、Ｓ５００〜Ｓ５４０（更には、図５のＳ５５０〜Ｓ７４０）の処理が行われる。
【００６１】
即ち、まずＳ５００にて、メモリ書換装置４へ、書換制御プログラムの受信が終了した旨を示す受信終了信号を送信し、続くＳ５１０にて、前述した図２のＳ１６０でメモリ書換装置４から送信されて来るボーレート値要求を受信するまで待機する。そして、ボーレート値要求を受信すると、Ｓ５２０に進んで、次のＳ５３０で変更・設定される自己のボーレートを表す対応ボーレート値信号を、メモリ書換装置４に送信し、続くＳ５３０で、自己のボーレートを上記送信した対応ボーレート値信号の表す値に変更する。
【００６２】
すると、前述した図２のＳ２００でメモリ書換装置４からパケット化された書込データが上記変更後のボーレートで送信されて来るため、続くＳ５４０にて、フラッシュＲＯＭ２０ａ内のデータをメモリ書換装置４から送信されて来る書込データに書き換えるためのデータ書換処理を実行し、その後、当該ＥＣＵ２側の処理を終了する。
【００６３】
ここで、Ｓ５４０のデータ書換処理は、図５に示す手順で実行される。尚、このデータ書換処理におけるメモリ書換装置４との通信は、Ｓ５３０で変更されたボーレートで行われる。
即ち、図５に示すように、データ書換処理の実行が開始されると、まずＳ５５０にて、フラッシュＲＯＭ２０ａにおけるデータの書込先（書込アドレス）をカウントするためのアドレスカウンタに、フラッシュＲＯＭ２０ａにて新たなデータの書き込みを開始すべき先頭アドレスの値をセットし、続くＳ５６０にて、１パケット分（即ち、ｎバイト）の書込データに対する処理が終了したか否かを判定するためのパケットカウンタをリセットする。
【００６４】
そして、続くＳ５７０にて、前述した図３のパケット送信処理でメモリ書換装置４から送信されて来るシリアルデータを１バイト分受信し、続くＳ５８０にて、受信状態が正常であるか否かを判定する。そして、正常受信の場合には、Ｓ５９０に進み、Ｓ５７０で受信した１バイトのデータがフラッシュＲＯＭ２０ａに書き込むべき書込データであれば（換言すれば、ヘッダＨＤ及びチェックサムＣＳ以外のデータであれば）、その１バイトの書込データをＲＡＭ２２の所定領域に設定されたｎバイト分のバッファ領域に先頭から順に格納し、続くＳ６００にて、上記Ｓ５６０でリセットしておいたパケットカウンタをインクリメントする。
【００６５】
そして、続くＳ６１０にて、パケットカウンタの値が「ｎ」に達したか否かにより、１パケット分（ｎバイト）の書込データを受信してＲＡＭ２２のバッファ領域に格納できたか否かを判定し、１パケット分の受信及び格納が未だ終了していない場合には、Ｓ５７０〜Ｓ６００の処理を繰り返す。
【００６６】
一方、Ｓ６１０にて、パケットカウンタの値が「ｎ」に達したと判定した場合には、１パケット分の書込データを受信してバッファ領域に格納することができたことから、Ｓ６２０に進んで、パケットカウンタをリセットする。
そして、続くＳ６３０にて、バッファ領域の先頭から順に書込データを１バイト分だけ取り出し、続くＳ６４０にて、フラッシュＲＯＭ２０ａに対する１バイト分のデータ書込操作を何回行ったかをカウントするための書込パルス数カウンタをリセットする。
【００６７】
そして、続くＳ６５０にて、アドレスカウンタの現在値を書込アドレスとしてセットすると共に、Ｓ６３０でバッファ領域から取り出した１バイト分の書込データを、フラッシュＲＯＭ２０ａに今回書き込む１バイトデータとしてセットし、続くＳ６６０にて、Ｓ６５０でセットした書込アドレスにより指定されるフラッシュＲＯＭ２０ａのセルに対し、書込パルスを与える。
すると、Ｓ６５０でセットした１バイトデータが、同じくＳ６５０でセットした書込アドレスの領域に書き込まれることとなるが、書込パルスを１度与えただけではデータが正確に書き込めない可能性があるため、続くＳ６７０にて、Ｓ６３０でバッファ領域から今回取り出した書込データと、フラッシュＲＯＭ２０ａに実際に書き込まれている１バイトデータとを比較する、所謂ベリファイチェックを行う。
【００６８】
そして、Ｓ６７０のベリファイチェックにより、上記両データが一致していなければ（Ｓ６７０：ＮＯ）、Ｓ６８０に移行して、書込パルス数カウンタをインクリメントする。そして、続くＳ６９０にて、書込パルス数カウンタの値が所定値（本実施例では「１０」）に達しているか否を判定し、所定値に達していなければ、Ｓ６６０に戻って、再度、フラッシュＲＯＭ２０ａに書込パルスを与えることにより、Ｓ６３０でバッファ領域から今回取り出した書込データについて、データ書込操作を再び行う。
【００６９】
また、Ｓ６９０にて、書込パルス数カウンタの値が所定値に達していると判定した場合には、同じ１バイトデータについてＳ６６０のデータ書込操作を所定回数だけ行ったにも拘らず、そのデータを正確に書き込めなかったということから、何等かの異常があると判断して、Ｓ７００に進む。そして、このＳ７００にて、所定のエラー処理を行った後、当該データ書換処理から図４の処理に戻り、その後、ＥＣＵ２側の処理を終える。尚、Ｓ５８０にて、受信状態が正常でないと判定した場合にも、上記Ｓ７００のエラー処理を行った後、図４の処理に戻って、その後、ＥＣＵ２側の処理を終える。
【００７０】
一方、Ｓ６７０のベリファイチェックにより、上記両データが一致していたならば（Ｓ６７０：ＹＥＳ）、Ｓ７１０に移行して、アドレスカウンタとパケットカウンタとを夫々インクリメントし、続くＳ７２０にて、パケットカウンタの値が「ｎ」に達しているか否かにより、１パケット分の書込データをフラッシュＲＯＭ２０ａに書き込めたか否か（１パケット分の書き込みが終了したか否か）を判定する。そして、１パケット分の書き込みが終了していなければ、前述したＳ６３０〜Ｓ７１０の処理を繰り返し、このような処理の繰り返しにより、１パケット分の書き込みが終了した場合には、Ｓ７３０に進む。
【００７１】
そして、このＳ７３０にて、アドレスカウンタの値がフラッシュＲＯＭ２０ａにて新たなデータの書き込みを終了すべき最終アドレスの値に達したか否かにより、全アドレス（換言すれば全データ）の書き込みが終了したか否かを判定し、全アドレスの書き込みが終了していなければ、続くＳ７４０に進んで、メモリ書換装置へ次のパケットを要求するためのパケット要求を送信する。
【００７２】
すると、前述した図３の処理によりメモリ書換装置４から次のパケットが送信されて来るため、当該データ書換処理では、前述したＳ５６０〜Ｓ７４０の処理を繰り返す。そして、Ｓ７３０にて、全アドレスの書き込みが終了したと判定した場合には、当該データ書換処理から図４の処理に戻って、ＥＣＵ２側の処理を終える。
【００７３】
尚、本実施例では、Ｓ５６０〜Ｓ６１０が、データ取得手段としての機能を実現する処理に相当し、Ｓ５５０，Ｓ６２０〜Ｓ７２０が、データ書込手段としての機能を実現する処理に相当している。そして、Ｓ７２０の判定が、書込状態判定手段としての機能を実現する処理に相当し、Ｓ７４０が、要求信号送信手段としての機能を実現する処理に相当している。
【００７４】
つまり、本実施例のＥＣＵ２で実行される図５のデータ書換処理では、メモリ書換装置４からパケット化されて送信されて来るｎバイトの書込データを受信してＲＡＭ２２のバッファ領域に格納し（Ｓ５６０〜Ｓ６１０）、そのバッファ領域に格納されたｎバイトの書込データを、１バイトずつ順次取り出してフラッシュＲＯＭ２０ａに書き込むようにしており（Ｓ６２０〜Ｓ７２０）、バッファ領域内の書込データがフラッシュＲＯＭ２０ａに全て書き込まれると（Ｓ７２０：ＹＥＳ）、メモリ書換装置４へ、次に書き込むべきｎバイトの書込データを要求するためのパケット要求を送信するようにしている（Ｓ７４０）。
【００７５】
このため、メモリ書換装置４は、図３のパケット送信処理を実行することで、第２のＲＯＭ３６に格納された書込データをｎバイトずつパケット化してＥＣＵ２へ送信するようにしており、詳しくは図７に示すように、最初のパケットＰを送信した後は、当該ＥＣＵ２からのパケット要求Ｙを受信する度に次のパケットＰを送信する、といった手順で書込データをｎバイトずつ送信するようにしている。尚、図７において、左から右方向の矢印「→」は、メモリ書換装置４からＥＣＵ２へのパケットＰの送信を示しており、右から左方向の矢印「←」は、ＥＣＵ２からメモリ書換装置４へのパケット要求Ｙの送信を示している。
【００７６】
従って、このようなＥＣＵ２を備えたメモリ書換システム５によれば、従来技術のように、メモリ書換装置４が予め定められた時間間隔（即ち、ＥＣＵ２側にて受信したデータを書き込むのに要する最大時間よりも大きな時間間隔）で新たな書込データを順次送信する、といった送信方法を採る必要がなく、図７に例示するように、メモリ書換装置４側の送信間隔を、当該ＥＣＵ２側にてデータの書き込みに実際に要した時間ｔa ，ｔb ，ｔc ，ｔd ，…に応じて最適に変化させることができるため、書込データを受渡しする時間に無駄が生じることがなく、この結果、フラッシュＲＯＭ２０ａ内のデータを短い時間で書き換えることができる。
【００７７】
また、本実施例のＥＣＵ２においては、メモリ書換装置４から送信される書込データの１単位であってＲＡＭ２２のバッファ領域に一度に格納するデータ量（換言すれば、バッファ領域のサイズ）を、フラッシュＲＯＭ２０ａに一度に書き込むことが可能なデータのビット数（本実施例では１バイト）をｎ倍した値に設定しており、バッファ領域から１バイト分のデータを順次取り出して、フラッシュＲＯＭ２０ａに書き込むようにしている。
【００７８】
従って、当該ＥＣＵ２からメモリ書換装置４へパケット要求を送信する回数を減らして、その分、書換データを受渡しするのに必要な時間を短縮することができ、延いては、フラッシュＲＯＭ２０ａ内のデータをより短い時間で書き換えることが可能となる。つまり、メモリ書換装置４から書換データを１バイトずつ送信するようにしても良いが、この場合には、ＥＣＵ２からメモリ書換装置４へのパケット要求の送信回数が多くなり、その分だけ不利である。これに対して、本実施例のようにすれば、より大きな効果を得ることができるのである。
【００７９】
ところで、通常、本実施例の如きＥＣＵ２では、実装面積やコスト等の面からＲＡＭ２２の容量に制限があり、受信した書込データを格納しておくバッファ領域のサイズ（以下、バッファサイズという）にも自ずと限界が生じる。よって、ＥＣＵ２からメモリ書換装置４へのパケット要求の送信回数を減らすためとは言え、バッファサイズを際限なく大きな設定することはできない。
【００８０】
ここで、本実施例のＥＣＵ２について、バッファサイズ（即ち、メモリ書換装置４から送信する１パケット内に配置される書込データのデータ量）と、送信時間（即ち、メモリ書換装置４からＥＣＵ２へ全ての書込データを送信し終えるまでの時間であり、延いては、フラッシュＲＯＭ２０ａの書き換えに要するトータル時間）との関係を調べてみると、図８に示すように、通信速度（ボーレート）が低い場合には、バッファサイズを大きくするほど、送信時間を短縮できる効果が大きいが、通信速度が高くなってくると、バッファサイズをそれほど大きくしなくても、大きな効果を得ることができる。
【００８１】
尚、図８（ａ）は、メモリ書換装置４からＥＣＵ２へ合計９６ｋバイトの書込データを送信する場合の、送信時間（書換時間）の計算値であり、単位は「秒」である。また、ＥＣＵ２側にて受信したデータを書き込むのに要する時間は、８０μｓとして見積っている。そして、図８（ｂ）は、図８（ａ）の計算値をグラフ化したものである。
【００８２】
従って、このような観点から、バッファサイズと通信速度とを、許される範囲内において最適な値に設定することにより、最小の資源で最大の効果を得ることができる。例えば、本実施例では、バッファサイズを１２８バイトに設定するとすると共に、通信速度を３８．４ｋｂｐｓに設定しており、９６ｋバイト分のデータ送信時間を２７．２秒までに短縮している。
【００８３】
一方、本実施例のＥＣＵ２では、フラッシュＲＯＭ２０ａ内のデータをメモリ書換装置４から送信されて来る新たなデータに書き換える処理を行うための書換制御プログラムを、メモリ書換装置４から受信し、その書換制御プログラムを書き換え対象でないＲＡＭ２２に格納して実行することにより、フラッシュＲＯＭ２０ａの書き換えを行うようにしている。よって、書換制御プログラムを予め内蔵しておく必要がなく、メモリ容量を大幅に節約することができる。
【００８４】
一方更に、本実施例のＥＣＵ２は、メモリ書換装置４との間で行うデータ通信のボーレートを、所定の変更命令（図４のＳ３３０，Ｓ５３０）を実行することで該変更命令に応じた値に変更可能に構成されている。そして、メモリ書換装置４から送信されて来る書換制御プログラムには、図４のＳ５３０に示されるように、フラッシュＲＯＭ２０ａ内のデータをメモリ書換装置４から送信されて来る新たなデータに書き換えるデータ書換処理（図５）を行うための命令群の前に、ボーレートを変更するための変更命令が配置されている。
【００８５】
よって、本実施例のＥＣＵ２によれば、メモリ書換装置４から書換制御プログラムを所定のボーレートで送信し、この書換制御プログラムがＲＡＭ２２に格納されれば、書換制御プログラムにてデータ書換処理を行うための命令群の前に配置された変更命令（Ｓ５３０）が実行されることにより、メモリ書換装置４との間で行うデータ通信のボーレートが、上記変更命令に応じた値に変更される。そして、この変更後のボーレートにより、その後メモリ書換装置４から送信されて来る書込データ（パケット）の受信と、ポケット要求のメモリ書換装置４への送信とが行われる。
【００８６】
このため、メモリ書換装置４が書換制御プログラムを送信した後に、書込データをパケット化して送信する時には、そのパケット化したデータを、書換制御プログラムに配置した変更命令により設定されるボーレートで送信することができ、この変更命令により設定されるボーレートを、書換制御プログラムの通信を行う場合のボーレートよりも速く設定しておくことで、書込データをより速くＥＣＵ２側へ転送することができるようになる。
【００８７】
このように本実施例のＥＣＵ２によれば、メモリ書換装置４との間で行うデータ通信のボーレートを任意に高速化することができ、フラッシュＲＯＭ２０ａ内のデータを書き換えるのに要するトータル時間を、より一層短縮することが可能となる。
【００８８】
そして更に、本実施例のＥＣＵ２において、メモリ書換装置４から送信されて来る書換制御プログラムには、図４のＳ５２０に示されるように、Ｓ５３０の変更命令の前に、該変更命令により設定される当該ＥＣＵ２のボーレートを表す信号（対応ボーレート値信号）をメモリ書換装置４に送信する送信命令が配置されており、当該ＥＣＵ２は、その送信命令を実行することで、メモリ書換装置４に対応ボーレート値信号を送信するようにしている。
【００８９】
よって、当該ＥＣＵ２にてボーレートの変更が行われる前に、メモリ書換装置４へ、その後に設定される新たなボーレートを表す対応ボーレート値信号が、それまでのボーレート（即ち、書換制御プログラムの通信を行う場合のボーレート）で送信されることとなり、メモリ書換装置４は、図２のＳ１８０及びＳ１９０に示したように、当該ＥＣＵ２からの対応ボーレート値信号に応じて、自己のボーレートを自動的に切り替えることができる。従って、このような本実施例のＥＣＵ２によれば、メモリ書換装置４との間のデータ通信を確実に成立させることができるようになる。
【００９０】
尚、本実施例のＥＣＵ２では、図４に示したように、ブートプログラムのＳ３１０〜Ｓ３３０においても、書込制御プログラムのＳ５１０〜Ｓ５３０と全く同様のボーレート変更のための処理を行っており、これに対応して、メモリ書換装置４では、図２に示したように、Ｓ１００〜Ｓ１３０においても、Ｓ１６０〜Ｓ１９０と全く同様の処理を行っている。そして、これにより、メモリ書換装置４からＥＣＵ２へ書換制御プログラムを転送する際のボーレートをも、変更可能にしているのであるが、図４におけるＳ３１０〜Ｓ３３０の処理と、図２におけるＳ１００〜Ｓ１３０の処理とを省略して、書換制御プログラムを通信初期のボーレートである９６００ｂｐｓで転送するようにしても良い。
【００９１】
また、本実施例のＥＣＵ２は、電気的にデータの書き込みが可能な不揮発性メモリとして、フラッシュＲＯＭ２０ａを備えたものであったが、ＥＥＰＲＯＭを用いても良いし、少なくとも１つ以上の書き込み領域を持つＰＲＯＭ（例えばワンタイムＰＲＯＭ）を用いても良い。
【図面の簡単な説明】
【図１】  実施例の電子装置のメモリ書換システムの全体構成を表すブロック図である。
【図２】  実施例のメモリ書換装置側で実行される処理を表すフローチャートである。
【図３】  図２の処理中で実行される書込データのパケット送信処理を表すフローチャートである。
【図４】  実施例のエンジン制御装置（ＥＣＵ）側で実行される処理を表すフローチャートである。
【図５】  図４の処理中で実行されるデータ書換処理を表すフローチャートである。
【図６】  メモリ書換装置から送信されるデータのフォーマットを説明する説明図である。
【図７】  実施例の作用を説明する説明図である。
【図８】  実施例のメモリ書換システムによるデータの送信時間（書換時間）を説明する説明図である。
【図９】  従来技術の問題点を説明する説明図である。
【符号の説明】
２…エンジン制御装置（ＥＣＵ）    ４…メモリ書換装置
５…メモリ書換システム    ６…入力回路
８，３０…シングルチップマイクロコンピュータ（マイコン）
１０…出力回路    １８…ＣＰＵ    ２０…ＲＯＭ
２０ａ…フラッシュＲＯＭ    ２０ｂ…マスクＲＯＭ
２２…ＲＡＭ    ２４…Ｉ／Ｏ    ２５…通信回路    ３２…電源回路
３４…第１のＲＯＭ    ３６…第２のＲＯＭ    ３７…入力装置
３８，４０…ＩＣソケット    ４２Ｆ…雌コネクタ    ４２Ｍ…雄コネクタ
４４…通信線    ４６…電源供給線    ４８…信号線
ＳＷ…書換スイッチ    Ｌ…モード判定用信号ライン    Ｒ…抵抗器
【図１】
0003881069.tif 000002
【図２】
0003881069.tif 000003
【図３】
0003881069.tif 000004
【図４】
0003881069.tif 000005
【図５】
0003881069.tif 000006
【図６】
0003881069.tif 000007
【図７】
0003881069.tif 000008
【図８】
0003881069.tif 000009
【図９】
0003881069.tif 000010