(57)【要約】【課題】バッファメモリを搭載することなくプログラムの更新が可能な電子制御ユニット及びプログラム書き換え方法を提供すること。【解決手段】第１のプログラム１１ａを記憶した不揮発メモリ４００と、ＣＰＵが不揮発メモリよりも優先的に第１のプログラムの読み出し対象とするキャッシュメモリ１７と、第１のプログラムの代わりに不揮発メモリ４００に記憶される第２のプログラム１１ｂを外部から受信する受信手段１４と、を有する電子制御ユニット１００において、第１のプログラム１１ａを第２のプログラム１１ｂに書き換える際、キャッシュメモリ１７の一部又は全てを、第２のプログラム１１ｂを不揮発メモリ４００に書き込む前に第２のプログラム１１ｂを一時的に記憶するバッファメモリに切り替える切り替え手段３１、３４、４５、を有することを特徴とする。【選択図】図２
2010286897.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを記憶した不揮発メモリと、
ＣＰＵが前記不揮発メモリよりも優先的に第１のプログラムの読み出し対象とするキャッシュメモリと、
第１のプログラムの代わりに前記不揮発メモリに記憶される第２のプログラムを外部から受信する受信手段と、を有する電子制御ユニットにおいて、
第１のプログラムを第２のプログラムに書き換える際、前記キャッシュメモリの一部又は全てを、第２のプログラムを前記不揮発メモリに書き込む前に第２のプログラムを一時的に記憶するバッファメモリに切り替える切り替え手段、
を有することを特徴とする電子制御ユニット。
【請求項２】
前記切り替え手段は、
第１のプログラムを第２のプログラムに書き換える際、バッファメモリに切り替えられた前記キャッシュメモリの一部又は全てに対しプログラムをキャッシュすることを禁止する、
ことを特徴とする請求項１記載の電子制御ユニット。
【請求項３】
前記キャッシュメモリから前記不揮発メモリへ、断接可能なデータ書き込み線を有し、
前記切り替え手段は、
第１のプログラムを第２のプログラムに書き換える際、前記データ書き込み線を前記キャッシュメモリから前記不揮発メモリへ接続する、
ことを特徴とする請求項１又は２記載の電子制御ユニット。
【請求項４】
当該電子制御ユニットを搭載した車両の状況が第１のプログラムの書き換えが可能な状況か否かを判定する判定手段から、書き換えの許可信号が入力された場合、
前記切り替え手段は、前記キャッシュメモリの一部又は全てをバッファメモリに切り替える、
ことを特徴とする請求項１〜３いずれか１項記載の電子制御ユニット。
【請求項５】
前記キャッシュメモリの一部がバッファメモリに切り替えられた際、
前記キャッシュメモリの残りの領域には、第１のプログラムを第２のプログラムに書き換える書き換えプログラムが記憶される、
ことを特徴とする請求項１〜４いずれか１項記載の電子制御ユニット。
【請求項６】
バッファメモリに切り替えられた前記キャッシュメモリの一部又は全てを、前記書き換えプログラムが占有する排他制御手段を有する、
ことを特徴とする請求項５項記載の電子制御ユニット。
【請求項７】
前記書き換えプログラムは、
前記受信手段が受信した第２のプログラムを、バッファメモリに切り替えられたキャッシュメモリの物理アドレスを指定して、キャッシュメモリに書き込む、
ことを特徴とする請求項５項記載の電子制御ユニット。
【請求項８】
前記書き換えプログラムは、
バッファメモリに書き込まれた第２のプログラムを前記不揮発メモリに書き込むよう、フラッシュメモリコントローラに要求する、
ことを特徴とする請求項７項記載の電子制御ユニット。
【請求項９】
第１のプログラムを記憶した不揮発メモリと、
ＣＰＵが前記不揮発メモリよりも優先的に第１のプログラムの読み出す対象とするキャッシュメモリと、
第１のプログラムの代わりに前記不揮発メモリに記憶される第２のプログラムを外部から受信する受信手段と、を有する電子制御ユニットのプログラム書き換え方法において、
第１のプログラムの書き換え要求を受信するステップと、
切り替え手段が、前記キャッシュメモリの一部又は全てを、第２のプログラムを前記不揮発メモリに書き込む前に第２のプログラムを一時的に記憶するバッファメモリに切り替えるステップと、
を有することを特徴とするプログラム書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行して車載装置を制御する電子制御ユニット等に関し、特に、プログラムの書き換えが可能な電子制御ユニット及びプログラム書き換え方法に関する。
【背景技術】
【０００２】
車両に搭載されているＥＣＵ（Electronic  Control  Unit）の例えばＥＥＰＲＯＭやフラッシュメモリ（以下、単にフラッシュメモリという）にはプログラムが記憶されているが、バージョンアップなどの理由でこのプログラムを書き換える必要が生じる場合がある。
【０００３】
図１は、バッファメモリ５００を備えたＥＣＵの構成図の一例を示す。例えばディーラーやサービス工場に車両を持ち込むと、サービスマンが書き換えツール２００を車両側のコネクタ１３に接続して、書き換えツールから新しいプログラム１１ｂをＥＣＵ１００に送信することができる。
【０００４】
書き換え時にまず、ＥＣＵ１００は、書き換えツール２００からの書き換え指示信号を受信して、書き換えプログラム１２を起動する。書き換えツール２００は通信速度などの制約の下、順次、新しいプログラム１１ｂをコネクタ１３経由でＥＣＵ１００に送信する。書き換えツール２００から送信されたプログラム１１ｂはＥＣＵ１００のＣＯＭ１４で受信される。ＣＰＵ１５はプログラム１１ｂを受け取り、作業領域としてのＲＡＭ１６に記憶し、バッファメモリ５００に空きが生じるとＲＡＭ１６のプログラム１１ｂをバッファメモリ５００に転送する。このようにＥＣＵ１００は、確実なプログラム１１ｂの書き込み等の要請から、受信したプログラム１１ｂをバッファメモリ５００に一度、記憶する。そして、バッファメモリ５００に配置されたフラッシュメモリコントローラ（ＦＭＣ）がバッファメモリ５００のプログラム１１ｂを、書き込み単位毎にフラッシュメモリ４００に記憶させる。
【０００５】
このような、書き込みプロセスにおいて、書き換えプログラム１２がプログラム１１ｂの送信速度の変更を書き換えツール２００に要求することで、プログラム１１ｂを効率よく送信する技術が考えられている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１１１８６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１記載の書き込み技術のようにＥＣＵ１００にバッファメモリ５００を搭載しておくと、コスト増や省スペース化が困難であるという問題がある。バッファメモリ５００は、フラッシュメモリ４００を書き換える際にしか利用されず、また、車両のライフタイム（例えば１０〜１５年）において、プログラム１１ａを書き換える機会は数回程度である。したがって、バッファメモリ５００をＥＣＵ１００に搭載しておくことは、費用対効果が極めて悪く、また、ＥＣＵ１００のサイズの低減を阻害することにもなっていた。
【０００８】
本発明は、上記課題に鑑み、バッファメモリを搭載することなくプログラムの更新が可能な電子制御ユニット及びプログラム書き換え方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、第１のプログラムを記憶した不揮発メモリと、ＣＰＵが不揮発メモリよりも優先的に第１のプログラムの読み出し対象とするキャッシュメモリと、優先的に前記キャッシュメモリから第１のプログラムを読み出し、キャッシュメモリに第１のプログラムが記憶されていない場合に前記不揮発メモリから第１のプログラムを読み出すＣＰＵと、第１のプログラムの代わりに前記不揮発メモリに記憶される第２のプログラムを外部から受信する受信手段と、を有する電子制御ユニットにおいて、第１のプログラムを第２のプログラムに書き換える際、前記キャッシュメモリの一部又は全てを、前記不揮発メモリに書き込む前に第２のプログラムを一時的に記憶するバッファメモリに切り替える切り替え手段（例えば、制御線３１、ライト線３４、書き換えスイッチ４５）、を有することを特徴とする。
【発明の効果】
【００１０】
バッファメモリを搭載することなくプログラムの更新が可能な電子制御ユニット及びプログラム書き換え方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】バッファメモリを備えたＥＣＵの構成図の一例である（従来図）。
【図２】ＥＣＵのハードウェア構成図の一例である。
【図３】書き換え時におけるＥＣＵの機能ブロック図の一例である。
【図４】プログラムの書き換え手順を示すシーケンス図の一例である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について説明する。
本実施形態のＥＣＵ（Electronic  Control  Unit）１００は、アプリケーションプログラム（以下、プログラム１１ａという）１１ａの実行速度の高速化のために使用されるキャッシュメモリ１７を一時的にバッファメモリとして使用し、書き換えツール２００から送信されるプログラム１１ｂをキャッシュメモリ１７に記憶する。そして、キャッシュメモリ１７からフラッシュメモリ４００に、プログラム１１ｂを書き込むことを特徴とする。こうすることで、書き換え専用のバッファメモリが不要になるので、バッファメモリやその付け捨てコストの削減、及び、ＥＣＵ１００の省スペース化を可能にすることができる。
【００１３】
〔ハードウェア構成〕
図２は、ＥＣＵ１００のハードウェア構成図の一例を示す。ＥＣＵ１００は車両に搭載されている。車両の例えば運転席の周囲には書き換えツールを接続するコネクタ１３が設けられており、このコネクタ１３に書き換えツール２００を接続することで、車載ネットワーク（ＣＡＮ等）を介して、書き換えツール２００とＥＣＵ１００が通信可能となる。なお、書き換えツール２００を物理的にＥＣＵ１００に接続するのでなく、例えば、携帯電話網や無線ＬＡＮなど、無線通信で接続し、所定のサーバからプログラム１１ａを書き換えてもよい。
【００１４】
ＥＣＵ１００に設けられたインターフェイス２１はドライバ１０のＣＡＮ側の端子２２と、ドライバ１０のマイコン側の端子２３はマイコン６０の入出力端子２４と、それぞれ接続されている。また、マイコン６０の出力端子２５とＩＣ５０の入力端子２７が、マイコン６０の入力端子２６とＩＣ５０の出力端子２８が、それぞれ接続されている。
【００１５】
ドライバ１０は、ＣＡＮ通信のネットワークレイヤにおける物理層の通信制御を提供する。ドライバ１０は物理的な電気信号の変換を担い、例えば書き換えツール２００の信号の電圧と、マイコン６０側の電圧を違いを吸収するため、相互に電圧変換する。
【００１６】
マイコン６０は、バス１８に接続されたＣＯＭ１４、ＣＰＵ１５、Ｐｏｒｔ１９、及び、キャッシュメモリ１７、フラッシュメモリ４００、ＲＡＭ１６を有する。ＣＰＵ１５とＲＡＭ１６は、リード線とライト線を含む接続線３５で、ＣＰＵ１５とキャッシュメモリ１７は、リード線とライト線を含む接続線３６でそれぞれ接続されている。ＣＰＵ１５はＲＡＭ１６又はキャッシュメモリ１７に対しデータの読み出し／書き込みが可能になっている。また、キャッシュメモリ１７は、リード線３３を介してフラッシュメモリ４００と接続され、また、さらにキャッシュメモリ１７は、ライト線３４を介してフラッシュメモリ４００と接続されている。キャッシュメモリ１７とフラッシュメモリ４００を接続するこのライト線３４を有することが本実施形態のＥＣＵ１００の特徴の一つとなる。
【００１７】
ＣＯＭ１４はマイコン６０の入出力端子２４と接続され、Ｐｏｒｔ１９は出力端子２５と接続されている。また、マイコン６０の入端子２６は、キャッシュメモリ１７及びフラッシュメモリ４００と制御線３１、３２を介して接続されている。入力端子２６とキャッシュメモリ１７を接続する制御線３１を有することが本実施形態のＥＣＵ１００の特徴の一つとなる。
【００１８】
ＣＯＭ１４は、ＣＡＮプロトコルに従って書き換えツール２００から書き込み対象のプログラム１１ｂを受信する。ＣＯＭ１４は二本の信号線の差動電圧をデジタル信号に変換し、定められたフォーマットのフレームデータを受信する。フレームデータには、ＩＤフィールド、ＤＬＣフィールド、ＤＡＴＡフィールド等の各フィールドが定められており、ＣＯＭ１４はＩＤフィールドを参照して、書き換えツール２００から自分宛に送信されたフレームデータであることを検出する。ＤＬＣフィールドにはデータ長が格納され、ＤＡＴＡフィールドにプログラム１１ｂが格納される。ＤＬＣフィールドのデータ長には制約があるので、通常、プログラム１１ｂは複数のフレームデータに分けて送信される。
【００１９】
ＣＰＵ１５は、フラッシュメモリ４００に記憶されたプログラム１１ａを実行して、センサの検出した信号の処理、車両制御用の演算、アクチュエータの制御、等を実行する。また、プログラム１１ａを書き換える際は、ＣＰＵ１５がフラッシュメモリ４００に記憶された書き換えプログラム１２を実行して、一連の書き換え処理を統合的に制御する。ＲＡＭ１６は、ＣＰＵ１５がプログラム１１ａを実行する際の作業メモリであり、プログラム１１ａの実行に必要なデータやプログラム１１ａを一時的に記憶する。
【００２０】
キャッシュメモリ１７は、フラッシュメモリ４００に記憶されたプログラム１１ａの一部のコピーを記憶する高速小容量の記憶素子（例えば、ＳＲＡＭ（Static  RAM)）である。ＣＰＵ１５は、例えばＭＭＵ（Memory  Management  Unit）を介してキャッシュメモリ１７にアクセスし、キャッシュメモリ１７に所望のプログラムがない場合、フラッシュメモリ４００からプログラム１１ａを読み出すと共にキャッシュメモリ１７に読み直す。すなわち、キャッシュメモリ１７は、ＣＰＵ１５の動作速度に対しフラッシュメモリ４００からの読み出し速度が桁違いに遅いために生じるボトルネックを解消するものである。
【００２１】
図２では、キャッシュメモリ１７にＷａｙ１〜４が図示されているが、これらはページフォールトの際の書き換えブロックである。Ｗａｙ１〜４には、それぞれフラッシュメモリ４００の所定範囲のアドレスのプログラム１１ａが記憶される。
【００２２】
本実施形態のＥＣＵ１００が単なるＲＡＭ１６ではなく、キャッシュメモリ１７をバッファメモリとして利用するのは、キャッシュメモリ１７には、通常、キャッシュ・ロックという機能が備わっているためである。キャッシュ・ロックとは、プログラムＡがロックした領域（例えば、書き換えブロック）には、他のプログラムＢがアクセスすることを禁止することをいう。この機能によりキャッシュメモリ１７の書き換えブロックの内容に対し、セキュリティを確保できる。この点、ＲＡＭ１６のように任意のタイミングで他のプログラム（例えば、ウィルスやスパイウェア）がプログラム１１ｂを改ざんしうる記憶媒体であるのに対し、キャッシュメモリ１７をバッファメモリに使用することでプログラム１１ｂの改ざんを確実に防止できる。
【００２３】
なお、図２では説明のためにＣＰＵ１５の外部にキャッシュメモリ１７を図示したが、キャッシュメモリ１７という場合、一般にはＣＰＵ１５に内蔵されたメモリ（１次キャッシュ〜例えば３次キャッシュと呼ばれることがある）を指すことが多い。当然ながら、図示するように、ＣＰＵ１５の外部のキャッシュメモリ１７をバッファメモリとして利用してもよい。以上から、本実施形態のキャッシュメモリ１７を定義すれば、プログラム１１ａの実行の際に、プログラム１１ａが一部コピーされるメモリであり、キャッシュ・ロックが可能であるメモリをいう。したがって、ＣＰＵ１５の内外のいずれにキャッシュメモリ１７が配置されているは問わない。
【００２４】
フラッシュメモリ４００は、例えばＮＡＮＤ型又はＮＯＲ型のいずれでもよく、フラッシュメモリを用いないＥＥＰＲＯＭ等、書き換え可能な不揮発メモリであればよい。また、書き換え可能な不揮発メモリであればよいので、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）等でもよい。フラッシュメモリ４００をハードディスクドライブとしてもよいが、この場合、ＲＡＭ１６から直接プログラム１１ｂを書き込むとしてもよい。
【００２５】
従来と同様に、フラッシュメモリ４００に接続された制御線３２の信号が「H（＝Ｈｉｇｈ）」になると、フラッシュメモリ４００にプログラム１１ｂを書き込むことが可能になる。
【００２６】
キャッシュメモリ１７又はフラッシュメモリ４００、又は、両者を接続するライト線３４の一部に、フラッシュメモリコントローラ３７が配置される。フラッシュメモリコントローラ３７は、ＣＰＵ１５からの指示によりフラッシュメモリ４００へのプログラム１１ｂの書き込み制御を行う。例えば、フラッシュメモリコントローラ３７は、書き換え用のプログラム１１ｂを不図示のバッファに蓄積し、蓄積したプログラム１１ｂを読み出してＡＴＡ変換した後、フラッシュメモリ４００へ転送する。
【００２７】
フラッシュメモリコントローラ３７は、ＣＰＵ（書き換えプログラム１２）１５が指示すると、キャッシュメモリ１７に記憶されたプログラム１１ｂを、フラッシュメモリ４００の書き込み単位毎にフラッシュメモリ４００に書き込む。書き換えプログラム１２がフラッシュメモリ４００の転送先のアドレスを指定してもよいし、フラッシュメモリコントローラ３７が、単にフラッシュメモリ４００のアドレス順にプログラム１１ｂを書き込んでもよい。
【００２８】
ここで、フラッシュメモリコントローラ３７が、フラッシュメモリ４００にプログラム１１ｂを書き込むには、キャッシュメモリ１７に接続された制御線３１の信号が「H」であることが条件になる。制御線３１の信号が「Ｈ」であることで、書き換えスイッチ４５が「オン」になる。書き換えスイッチ４５は、プログラム１１ａの書き換えのため、キャッシュメモリ１７の回路構成を次のように変更する。
・リード線３３からキャッシュメモリ１７のＷａｙ４への書き込みを禁止する
・スイッチ回路をオンにして、ライト線３４をフラッシュメモリ４００まで接続する
すなわち、書き換えスイッチ４５は、「オフ」の場合にキャッシュメモリ１７をプログラム１１ａの実行用に利用することを許可し、「オン」の場合にキャッシュメモリ１７をバッファメモリとして利用することを許可する。図２では、書き換えスイッチ４５が「オン」の場合、キャッシュメモリ１７のうちＷａｙ４のみに対し、フラッシュメモリ４００からの書き込みを禁止している。こうすることで、後述するようにＷａｙ１〜３には書き換えプログラム１２をキャッシュできる。書き換えスイッチ４５がオンになると、例えば、ＭＭＵはキャッシュメモリ１７のＷａｙ４に対し、書き換えプログラム１２のキャッシュができなくなる。
【００２９】
Ｐｏｒｔ１９は、マイコン６０が書き換え可能な状態の場合に「Ｈ」信号を出力端子２５からＩＣ５０に送信する。ＣＰＵ（プログラム１１ａ）１５は、マイコン６０がプログラム１１ａの書き換えが可能な状態か否かを判定し、書き換え可能な場合にＰｏｒｔ１９に「H」信号の出力を要求する。なお、プログラム１１ａは、エンジンが始動していない状態で書き換えられるため、書き換え可能な状態とは、マイコン６０に所定の電圧が供給されていること（バッテリ電圧が所定値以上であること）、スタートキーが操作されていないこと（イグニッションがオンでないこと）等であり、書き換え条件はプログラム１１ａに予め定められている。
【００３０】
続いてＩＣ５０について説明する。ＩＣ５０は、図示する判定回路２９、時計（ＲＴＣ）やリセット回路など複数の機能を１チップに集積したものである。このうち、判定回路２９は、マイコン６０がプログラム１１ａの書き換えが可能な状態か否かを判定する回路である。ＣＰＵ１５も、マイコン６０が書き換え可能な状態か否かを判定すると説明したが、判定回路２９も独自にマイコン６０が書き換え可能な状態か否かを判定する。書き換え可能な状態については、マイコン６０が判定する場合と同じである。
【００３１】
判定回路２９は、マイコン６０から「Ｈ」信号が入力されると、マイコン６０がプログラム１１ａの書き換えが可能な状態か否かを判定し、プログラム１１ａの書き換え可能な状態であると「Ｈ」信号を出力端子２８から出力する。判定回路２９は、例えばバッテリ電圧と閾値との比較結果と、＋Ｂ端子とを入力とする論理回路である。この「Ｈ」信号は、キャッシュメモリ１７とフラッシュメモリ４００に供給される。
【００３２】
〔機能ブロックについて〕
図３は、書き換え時におけるＥＣＵ１００の機能ブロック図の一例を示す。例えば、ＡＣＣ（アクセサリー）がオンになり、ＥＣＵ１００に電力が供給されると、ＣＰＵ１５が既にフラッシュメモリ４００に記憶されているプログラム１１ａを読み出す。プログラム１１ａは、上述したようにセンサの検出した信号に基づく、各種のアクチュエータの制御や、情報処理などを実行する標準処理部４１の他に、判定部４２と書き換え部起動部４３を有する。
【００３３】
標準処理部４１は「書き換え指示信号」を書き換えツール２００から受信すると、例えばサブルーチンとして実装された判定部４２を呼び出す。判定部４２は、マイコン６０の状況がプログラム１１ａの書き換え条件を満たすか否か判定し、満たす場合にはＰｏｒｔ１９に「Ｈ」信号の出力を要求する。これにより、ＩＣ５０から「Ｈ」信号が入力され、書き換えスイッチ４５がオンとなる。
【００３４】
また、判定部４２は、プログラム１１ａの書き換え条件を満たすと判定した場合、書き換え部起動部４３を呼び出す。書き換え部起動部４３は、プログラム１１ａを終了させ、フラッシュメモリ４００から書き換えプログラム１２をキャッシュメモリ１７のＷａｙ１〜３に読み出す。そして、ＣＰＵ１５のＰＣ（プログラムカウンタ）にキャッシュメモリ１７における書き換えプログラム１２のアドレスをセットする。こうすることで、ＣＰＵ１５が書き換えプログラム１２を実行でき、書き換え部４４が実現される。なお、書き換えプログラム１２をＷａｙ１〜３で実行するのは、フラッシュメモリ４００に記憶したまま実行すると、プログラム１１ａと共に書き換えられてしまうからである。
【００３５】
また、通常、アプリケーションプログラムは、キャッシュメモリ１７の物理アドレスを指定して実行しないので、書き換え部４４にとってキャッシュメモリ１７のＷａｙ４の物理アドレスは既知でないことが多い。本実施形態の書き換え部４４は、予めキャッシュメモリ１７のＷａｙ４の物理アドレスを記憶しているか、又は、ＭＭＵに問い合わせることで、Ｗａｙ４へのアクセスを可能とする。
【００３６】
また、書き換え部４４は、Ｗａｙ４のロックフラグ４６をオンにすることでＷａｙ４をキャッシュ・ロックする。こうすることで、Ｗａｙ４に、他のいかなるプログラムもアクセスすることができなくなり、プログラム１１ｂの改ざんを防止できる。
【００３７】
書き換え部４４は、ＣＡＮ経由で受信したフレームデータのＩＤフィールドを参照して、それが書き換え用のプログラム１１ｂであること検出し、ＤＡＴＡフィールドからデータ長分のプログラム１１ｂを抽出する。
【００３８】
書き換え部４４は、書き変えツール２００から送信されるプログラム１１ｂを作業メモリであるＲＡＭ１６に格納していき、随時、キャッシュメモリ１７のＷａｙ４に移動する。書き換え部４４は、１つのフレームデータを受信する毎に同じデータをエコーするなどして、書き換えツール２００に受信したことを通知する。
【００３９】
そして、書き換え部４４は、Ｗａｙ４に空き容量がなくなると、フラッシュメモリコントローラ３７に、プログラム１１ｂをフラッシュメモリ４００に移動するよう要求する。フラッシュメモリコントローラ３７は、プログラム１１ｂをアドレス順にフラッシュメモリ４００に格納していく。プログラム１１ｂの書き換えは、プログラム１１ａの変更が一部でも、通常、フラッシュメモリ４００の全てに対して行われるので、書き換え部４４は、書き換えツール２００から終了通知を受け取るまでこの動作を繰り返せばよい。プログラム１１ｂが、フラッシュメモリ４００の容量未満のサイズの場合は、例えば、プログラム１１ｂにはＮＵＬＬデータが格納されている。なお、フラッシュメモリ４００の全体を書き換えるため、書き換えツール２００はプログラム１１ｂに続いて書き換えプログラム１２もＥＣＵ１００に転送する。
【００４０】
〔書き換え手順〕
図４は、プログラム１１ａの書き換え手順を示すシーケンス図の一例である。まず、サービスマン等がＡＣＣがオンにすると、ＣＰＵ１５がプログラム１１ａを読み出す（Ｓ１０、Ｓ２０）。標準処理部４１が起動する。
【００４１】
ついで、書き換えツール２００が、書き換え指示信号をＣＡＮ経由でＥＣＵ１００に送信する（Ｓ３０）。書き換え指示信号を受信した標準処理部４１は、判定部４２を呼び出し、判定部４２は、マイコン６０の状況がプログラム１１ａを書き換えてよい状況か否かを判定する。判定の結果、書き換えてよい状況であれば、判定部４２は「Ｈ」信号をＩＣ５０に出力する（Ｓ４０）。
【００４２】
「Ｈ」信号を受信したＩＣ５０の判定回路２９も、同様にマイコン６０の状況がプログラム１１ａを書き換えてよい状況か否かを判定する。判定の結果、書き換えでよい状況であれば、判定回路２９は「Ｈ」信号をマイコン６０に出力する（Ｓ５０）。これにより、キャッシュメモリ１７とフラッシュメモリ４００に「Ｈ」信号が入力される。したがって、書き換えスイッチ４５がオンになる（Ｓ６０）、
「Ｈ」信号を送信した判定部４２は、続いて、書き換え部起動部４３を呼び出す。書き換え部起動部４３は書き換え部４４を起動させる（Ｓ７０）。書き換えプログラム１２がキャッシュメモリ１７のＷａｙ１〜３に記憶され、ＣＰＵ１５が実行することで書き換え部４４が起動する。
【００４３】
書き換え部４４は、Ｗａｙ４をキャッシュ・ロックする（Ｓ８０）。また、書き換えスイッチ４５のオンにより、キャッシュメモリ１７のＷａｙ４をバッファメモリとして使用することができるようになっている。また、キャッシュ・ロックすることで、プログラム１１ｂの改ざんを防止できる。
【００４４】
ついで、例えば、書き換え部４４がプログラム１１ｂの送信を書き換えツール２００に要求することで、書き換えツール２００がプログラム１１ｂの送信を開始する（Ｓ９０）。書き換え部４４は、プログラム１１ｂを受信し（Ｓ１００）、キャッシュメモリ１７のＷａｙ４に記憶していく。そして、キャッシュメモリ１７のＷａｙ４に空き容量がなくなると、フラッシュメモリコントローラ３７にプログラム１１ｂの書き込みを要求する。これを繰り返すことで、プログラム１１ｂがフラッシュメモリ４００に記憶される（Ｓ１１０）。
【００４５】
書き換え部４４は、書き換えツール２００から終了通知を受け取るまでこの動作を繰り返し、終了通知を受け取ると、終了処理を実行する（Ｓ１２０）。すなわち、Ｐｏｒｔ１９に「Ｌ」信号を出力するよう要求する。これにより、判定回路２９からキャッシュメモリ１７及びフラッシュメモリ４００に出力される信号も「Ｌ」となり、書き換えスイッチ４５もオフになる。また、書き換え部４４は、終了通知を受け、Ｗａｙ４のキャッシュ・ロックを解除する。
【００４６】
以上で、フラッシュメモリ４００に新しいプログラム１１ｂが記憶されたことになる。例えば、書き換えツール２００からマイコン６０にリセット信号を入力したり、ＡＣＣをオフ→オンとすることで、ＣＰＵ１５はフラッシュメモリ４００から新しいプログラム１１ｂを読み出し、実行することができる。
【００４７】
本実施形態のＥＣＵ１００は、プログラム１１ａの高速化のために使用されるキャッシュメモリ１７を一時的にバッファメモリとして使用し、キャッシュメモリ１７からフラッシュメモリ４００に新しいプログラム１１ｂを転送することで、プログラム１１ａの書き換え時にバッファメモリを不要にすることができる。キャッシュメモリ１７は、ＣＰＵ１５に内蔵されていることが多いのでコスト増とならず、また、ＲＡＭ１６と異なり排他制御できるのでプログラム１１ｂの改ざんを確実に防止することができる。
【符号の説明】
【００４８】
１１ａ、１１ｂ  プログラム
１２      書き換えプログラム
１５      ＣＰＵ
１６      ＲＡＭ
１７      キャッシュメモリ
４５      書き換えスイッチ
６０      マイコン
１００    ＥＣＵ
２００    書き換えツール
４００    フラッシュメモリ
【図１】
2010286897.tif 000003
【図３】
2010286897.tif 000004
【図４】
2010286897.tif 000005
【図２】
2010286897.tif 000006