(57)【要約】【課題】通常動作サービスプログラム書換えプログラムが起動することにより、リセットベクタ消去から書込み完了まで安定した通常動作サービスプログラムの書換え処理を実行するリセットベクタ消去時プログラム書換え方法とプログラムを提供する。【解決手段】ＣＰＵと電気的に消去可能な不揮発性メモリを備えるシステムのリセットベクタ消去を含むプログラム書換え方法であって、リセット発生時、電気的に消去可能な不揮発性メモリに実装されたリセットベクタの値が電気的に消去されたかを判別し、リセットベクタが消去されているとき、運用中消去不可能な領域に実装された消去状態時リセットベクタの示すアドレスから、通常動作時に実行されるプログラムであるサービスプログラムを書換えるプログラムを配置するリセットベクタ消去時プログラム書換え方法である。【選択図】図１
2009070303.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと電気的に消去可能な不揮発性メモリを備えるシステムのリセットベクタ消去を含むプログラム書換え方法であって、
リセット発生時、前記電気的に消去可能な不揮発性メモリに実装されたリセットベクタの値が電気的に消去されたかを判別し、
前記リセットベクタが消去されているとき、運用中消去不可能な領域に実装された消去状態時リセットベクタの示すアドレスから、通常動作時に実行されるプログラムであるサービスプログラムを書換えるプログラムを配置する、
ことを特徴とするリセットベクタ消去時プログラム書換え方法。
【請求項２】
通常動作時に実行される前記サービスプログラムを書換えるプログラムは、
前記リセットベクタと前記サービスプログラムを有する前記電気的に消去可能な不揮発性メモリブロックの消去をし、
前記サービスプログラムを書き込んだのち、前記リセットベクタを書込むことを特徴とする請求項１に記載のリセットベクタ消去時プログラム書換え方法。
【請求項３】
リセット発生時、前記リセットベクタの値が電気的に消去された値以外と認識された場合、ウォッチドッグタイマのクリアパターンとして、第１のウォッチドッグクリアパターンを選択し、
リセット発生時、前記リセットベクタの値が電気的に消去された値と認識された場合、ウォッチドッグタイマのクリアパターンとして、第２のウォッチドッグクリアパターンを選択することを特徴とする請求項２に記載のリセットベクタ消去時プログラム書換え方法。
【請求項４】
前記サービスプログラムの書換えプログラムは、
前記リセットベクタ値の読出し確認を行い、前記リセットベクタの値が電気的に消去された値以外と認識された場合、前記第１のウォッチドッグクリアパターンに基づいてウォッチドッグタイマをクリアし、
前記リセットベクタの値が電気的に消去された値と認識された場合、前記第２のウォッチドッグクリアパターンに基づいてウォッチドッグタイマをクリアする、
ことを特徴とする請求項３に記載のリセットベクタ消去時プログラム書換え方法。
【請求項５】
前記リセットベクタの消去状態であり、前記サービスプログラムの書換え中にリセットが発生したとき、前記サービスプログラムの書換えプログラムを起動可能とし、前記サービスプログラムの書換えを行うことを特徴とする請求項１に記載のリセットベクタ消去時プログラム書換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵとメモリを備えるシステムのメモリに記録されているプログラムの書換えに係り、特に、電気的に消去可能な不揮発性メモリに記録されているプログラム書換えの技術に関する。
【背景技術】
【０００２】
ＣＰＵとフラッシュメモリ（電気的に消去可能な不揮発性メモリ）を備えたシステムでは、処理開始前に、ＣＰＵがフラッシュメモリ内に記録されているリセットベクタに基づいて必要なプログラムを読み込み、そのプログラムに従って実行される。
【０００３】
このようなシステムの運用中にフラッシュメモリに記録されているプログラムの書換えが必要になる場合があり、書換え方法として次のような提案がされている。
特許文献１によれば、ディスクドライブ装置のディスクアクセスおよびインタフェース制御用の処理プログラムを含むアプリケーションプログラムの全部または一部を効率的に修正できるようにする提案がされている。
【０００４】
特許文献２によれば、ＥＰＲＯＭにはＢＯＯＴプログラム、運用プログラム、予備プログラムを格納する各プログラム領域および切替えフラグが設けられている。マイクロプロセッサはＲＯＭに格納されているプログラムに従って処理を実行し、内蔵するＲＡＭには、ＢＯＯＴプログラムおよび運用プログラムを起動するために参照される割込みベクタを設けている。切替回路は切替えフラグに基づくマイクロプロセッサからの切替え制御信号に応答して運用プログラム領域と予備プログラム領域のアドレスを交換する。ＢＯＯＴプログラムは、最新のプログラムをダウンロードするときは、割込みベクタをＢＯＯＴプログラム用に書き換えて予備プログラム領域にダウンロードするとともに切替えフラグを反転し、一方、通常動作時は割込みベクタを運用プログラム用に書き換える。通常処理を行いながらダウンロード処理を実施することを可能にする提案がされている。
【０００５】
特許文献３によれば、システムＲＯＭは、複数のブート可能なフラッシュ・イメージを格納するとともにプログラム不可能なブート・ブロックを含み、不揮発性ＲＡＭがフラッシュ・イメージのどれが選択されたかを示すステータス情報を格納する。ＣＰＵは、選択されたイメージの完全性をテストし、完全である場合に該イメージを実行し、不完全である場合に他のフラッシュ・イメージを選択する。そして、完全性をテストし、完全である場合に該イメージを実行する。これにより、不完全フラッシュ・イメージが実行されず、自動的にシステムのリカバリが可能となる。起動プロセス中に発生するシステム・エラーを適切に回復させる提案がされている。
【０００６】
しかしながら、特許文献１や特許文献２では電気的に消去可能な不揮発性メモリの一部へ割付けられているリセットベクタを書換えようとした場合、リセットベクタ領域の消去から書換え完了までの間にリセットが発生すると、リセットベクタの値が不定なため、プログラム書換え処理への移行ができなくなることやプログラムが暴走するという問題がある。
【０００７】
また、特許文献３ではリセット発生後、最初に動作させるプログラムを決定する場合、電源供給が必要な不揮発性ＲＡＭに対する電源供給が途絶えると不揮発性ＲＡＭの値が消え、リセット発生後、最初に起動させるプログラムを決定する情報（ＢＩＯＳパラメータ）の値が保障されないため、期待しているプログラムが起動できなくなるという問題がある。
【特許文献１】国際公開第９７／３８３６７号パンフレット
【特許文献２】特開２００５−３３２２２８号公報
【特許文献３】特開平１１−３１６６８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は上記のような実情に鑑みてなされたものであり、通常動作サービスプログラム書換えプログラムが起動することにより、リセットベクタ消去から書込み完了まで安定した通常動作サービスプログラムの書換え処理を実行するリセットベクタ消去時プログラム書換え方法とプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明であるＣＰＵと電気的に消去可能な不揮発性メモリを備えるシステムのリセットベクタ消去時プログラム書換え方法により、リセット発生時、前記電気的に消去可能な不揮発性メモリに実装されたリセットベクタの値が電気的に消去されたかを判別し、前記リセットベクタが消去されているとき、運用中消去不可能な領域に実装された消去状態時リセットベクタの示すアドレスから、通常動作時に実行されるプログラムであるサービスプログラムを書換えるプログラムを配置する。
【００１０】
好ましくは、通常動作時に実行される前記サービスプログラムを書換えるプログラムは、前記リセットベクタと前記サービスプログラムを有する前記電気的に消去可能な不揮発性メモリブロックの消去をし、前記サービスプログラムを書き込んだのち、前記リセットベクタを書き込んでもよい。
【００１１】
上記方法により、リセットベクタを含む電気的に消去可能な不揮発性メモリの消去から、リセットベクタ再書込み完了までの間にリセットが発生した場合でも、通常動作サービスプログラム書換えプログラムを再起動できるようにする。
【００１２】
好ましくは、リセット発生時、前記リセットベクタの値が電気的に消去された値以外と認識された場合、ウォッチドッグタイマのクリアパターンとして、第１のウォッチドッグクリアパターンを選択し、リセット発生時、前記リセットベクタの値が電気的に消去された値と認識された場合、ウォッチドッグタイマのクリアパターンとして、第２のウォッチドッグクリアパターンを選択してもよい。
【００１３】
好ましくは、前記サービスプログラムの書換えプログラムは、前記リセットベクタの示すアドレスからの読出し確認を行い、前記リセットベクタの値が電気的に消去された値以外と認識された場合、前記第１のウォッチドッグクリアパターンに基づいてウォッチドッグタイマをクリアし、前記リセットベクタの値が電気的に消去された値と認識された場合、前記第２のウォッチドッグクリアパターンに基づいてウォッチドッグタイマをクリアしてもよい。
【００１４】
上記方法によりリセットベクタが消去状態であった場合でも、想定外に残存するプログラムが動作し、第１のウォッチドッグクリアパターンを使用してウォッチドッグタイマをクリアしようとしても実際にはウォッチドッグタイマがクリアされない。つまり、ウォッチドッグタイマがオーバフローを繰返すことによりプログラムの書換えができたものと誤認識することを抑止する。
【００１５】
好ましくは、前記リセットベクタの消去状態であり、前記サービスプログラムの書換え中にリセットが発生したとき、前記サービスプログラムの書換えプログラムを起動し、前記サービスプログラムの書換えを行ってもよい。
【発明の効果】
【００１６】
本発明によれば、通常動作サービスプログラム書換えプログラムが起動することにより、リセットベクタ消去から書込み完了まで安定した通常動作サービスプログラムの書換え処理を実行することができる。
【発明を実施するための最良の形態】
【００１７】
（原理説明）
リセット発生時に、リセットベクタの値が、電気的に消去された値かを判別する。
例えば、電気的に消去可能な不揮発性メモリ（フラッシュメモリなど）において、メモリ内容が電気的な消去がされたかの判定は、メモリ上の値が全て「１」になることを利用して行う。リセット発生時にリセットベクタの値が消去値であると判定された場合、リセットベクタの代わりに使用される消去状態時リセットベクタを設け、消去状態時リセットベクタにプログラム開始アドレスを設定する（消去状態時リセットベクタには、電気的に消去可能な不揮発性メモリブロックの境界アドレスが格納される）。
【００１８】
また、消去状態時リセットベクタは、書換え不可能な領域（レジスタや運用中消去不可能なメモリなど）に実装される。
利用者は、消去状態時リセットベクタの指し示す先頭アドレスに、通常動作時に実行されるプログラムであるサービスプログラムを書換えるプログラム（通常動作サービスプログラム書換えプログラム）を配置する。
【００１９】
サービスプログラム（通常動作サービスプログラム）は、書換えに移行する条件が成立したかを定期的に監視して判定を行い、書換え条件成立時には、消去状態時リセットベクタ値と同じアドレスへジャンプする。また、ウォッチドッグタイマのクリアパターンとしてウォッチドッグクリアパターンＡ（第１のウォッチドッグクリアパターン）を使用する。
【００２０】
また、リセット発生時にリセットベクタの値が消去値以外であると判定された場合、ウォッチドッグタイマのクリアパターンとして、ウォッチドッグクリアパターンＡを選択する。
【００２１】
通常動作サービスプログラム書換えプログラムは、初期設定において、プログラム起動要因が、リセット発生かつ、リセットベクタの値が消去値であると判定された場合のみ有効なウォッチドッグタイマのクリアパターンとしてウォッチドッグクリアパターンＢ（第２のウォッチドッグクリアパターン）を使用する。
【００２２】
次に、通常動作サービスプログラムの書換え順序として、下記の処理を実施する。
リセットベクタを含む電気的に消去可能な不揮発性メモリブロックの消去をする。その後、通常動作サービスプログラムを消去する。次に、通常動作サービスプログラムの書込みをし、リセットベクタの書込みを行う。
【００２３】
上記のようにすることで、リセットベクタの書換えが可能となる。また、リセットベクタが期待外（消去値）であることによるプログラム開始アドレスの不定にともなうプログラム暴走、プログラム的な復旧不可状態に陥ることを抑止することが可能となる。
【００２４】
通常動作サービスプログラム書換えプログラムが再起動されることにより通常動作サービスプログラムの書換え処理を再度実行することができる。
また、プログラム書換え用の特別な回路および冶具が不要であることから、プログラムの書換えを大多数の製品取扱い拠点ごとにて実施することができ、コストを削減すること
ができる。
【００２５】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
（構成）
図１に示すオンボード基板１には、ＣＰＵ２（マイコンなど）、フラッシュメモリ３（電気的に消去可能な不揮発性メモリ）、通信インタフェース４などが実装されている。そして、オンボード基板１は、通信回線５を介して通信インタフェース接続装置６と接続されている。
【００２６】
ＣＰＵ２は、フラッシュメモリ３内に格納される通常動作サービスプログラムおよび、通常動作サービスプログラム書換えプログラムを実行する。
フラッシュメモリ３は、通常動作サービスプログラム、通常動作サービスプログラム書換えプログラムおよびリセットベクタが格納されている。また、電気的に消去可能な不揮発性メモリは、オンボード基板１上に実装されていてもかまわないし、ＣＰＵ２内部に設けられたものであってもよい。
【００２７】
通信インタフェース４はオンボード基板１と通信インタフェース接続装置６とを接続する。通常動作サービスプログラムの書換え時に、ＣＰＵ２により通信インタフェース４を介して通信インタフェース接続装置６との通信が制御され、通信インタフェース接続装置６から通常動作サービスプログラムを取得してフラッシュメモリ３の書換えを行う。
【００２８】
通信インタフェース接続装置６は、通常動作サービスプログラム書換え時に、通信回線５を介してオンボード基板１に通常動作サービスプログラムを送信する。
なお、通常動作サービスプログラムは、フラッシュメモリ３にマッピングされるユーザアプリケーションプログラムなどである。
（メモリマップ）
図２は、電気的に消去可能な不揮発性メモリのメモリマップの例を示す。
【００２９】
電気的に消去可能な不揮発性メモリブロック＃０から電気的に消去可能な不揮発性メモリブロック＃２（アドレス空間0x00400000〜0x009FFFFF）には、通常動作サービスプログラムが実装される。
【００３０】
電気的に消去可能な不揮発性メモリブロック＃３から電気的に消去可能な不揮発性メモリブロック＃４（アドレス空間0x00A00000〜0x00DFFFFF）には、通常動作サービスプログラム書換えプログラムが実装される。
【００３１】
電気的に消去可能な不揮発性メモリブロック＃５（アドレス空間0x00E00000〜0x00FFFFFF）は、リセットベクタ（アドレス空間0x00FFFFFC〜0x00FFFFFF）を含む領域である。
消去状態時リセットベクタは、リセット発生時に、電気的に消去可能な不揮発性メモリブロック＃５内のリセットベクタの値が消去値の場合に、リセットベクタの代わりに使用される。
【００３２】
消去状態時リセットベクタは、書換え不可能なレジスタなどの領域に実装され、消去状態時リセットベクタの値は、電気的に消去可能な不揮発性メモリの消去単位の境界を示す値である。図２では消去状態時リセットベクタの値は、電気的に消去可能な不揮発性メモリブロック＃３の先頭アドレス（0x00A00000）である。
【００３３】
また、電気的に消去可能な不揮発性メモリブロック＃５が電気的に未消去状態の場合には、電気的に消去可能な不揮発性メモリブロック＃０の先頭アドレス（0x00400000）を示すものとする。
【００３４】
電気的に消去可能な不揮発性メモリブロック＃５が電気的に消去状態の場合には、全ての値が「１」になる（0xFFFFFFFF）。
（リセット発生からプログラム開始までの動作説明）
図３は、リセット発生からプログラム開始までのハードウェアの動作を示す。
【００３５】
ステップＳ１では、リセットベクタ読出しリセットが発生した場合、ＣＰＵ２はプログラム開始アドレスを確定するため、リセットベクタ（実施例では、電気的に消去可能な不揮発性メモリブロック＃５内、0x00FFFFFC〜0x00FFFFFF番地）を読出した後、ステップＳ２へ遷移する。
【００３６】
ステップＳ２ではリセットベクタ値が消去値（0xFFFFFFFF）以外か判定する。リセットベクタの値が消去値以外であればステップＳ３に遷移する。読出したリセットベクタの値が消去値であればステップＳ５へ遷移する。
【００３７】
ステップＳ３では、ウォッチドッグクリアパターンとしてウォッチドッグクリアパターンＡ（例えば0x5555）を選択する。リセットベクタが未消去状態であった場合、ＣＰＵ２はウォッチドッグタイマのクリアパターンとして、ウォッチドッグクリアパターンＡを選択し、ステップＳ４へ遷移する。
【００３８】
ステップＳ４ではプログラム開始アドレスとしてリセットベクタを選択する。リセットベクタが未消去状態であった場合、ＣＰＵ２はプログラム開始アドレスとして、リセットベクタ値（実施例では、電気的に消去可能な不揮発性メモリブロック＃０（0x00400000番地））を選択し、ステップＳ７へ遷移する。
【００３９】
ステップＳ５では、ウォッチドッグクリアパターンとしてウォッチドッグクリアパターンＢ（例えば0xAAAA）を選択する。リセットベクタが消去状態であった場合、ＣＰＵ２はウォッチドッグタイマのクリアパターンとして、ウォッチドッグクリアパターンＢを選択し、ステップＳ６へ遷移する。
【００４０】
ステップＳ６では、プログラム開始アドレスとして消去状態時リセットベクタを選択する。リセットベクタが消去状態であった場合、ＣＰＵ２はプログラム開始アドレスとして、消去状態時リセットベクタ値（実施例では、電気的に消去可能な不揮発性メモリブロック＃３（0x00400000番地））を選択し、ステップＳ７に遷移する。
【００４１】
ステップＳ７では、リセットベクタの状態（消去または、未消去）によって選択されたプログラムの開始アドレスへジャンプする。
ここで、ウォッチドッグタイマクリアパターンは、ウォッチドッグタイマのクリアパターンとして、ウォッチドッグクリアパターンＡまたは、ウォッチドッグクリアパターンＢのどちらかを選択する。
【００４２】
また、リセットベクタが消去状態であった場合、想定外に残存するプログラムが動作し、通常使用するウォッチドッグクリアパターンＡによってウォッチドッグタイマをクリアができてしまうとプログラムの書換えをおこなったものと誤認識してしまう可能性がある。そこで、リセットベクタが消去状態であった場合のウォッチドッグクリアパターンＢを新たに設ける。
【００４３】
リセットベクタが消去状態であった場合、想定外に残存するプログラムが動作し、ウォッチドッグクリアパターンＡを使用してウォッチドッグタイマをクリアしようとしても実際にはウォッチドッグタイマがクリアされない。つまり、ウォッチドッグクリアパターン
Ｂを設けることにより、ウォッチドッグタイマがオーバフローを繰返すことによりプログラムの書換えができたものと誤認識することを抑止する。
【００４４】
また、通常動作サービスプログラム書換えプログラムを使用し、通常動作サービスプログラムを書換える処理において、リセットベクタを含む電気的に消去可能な不揮発性メモリの消去から、リセットベクタ再書込み完了までの間にリセットが発生した場合、リセットベクタ値が不定となり通常動作サービスプログラム書換えプログラムさえも再起動できない状況に陥る可能性がある。
【００４５】
そこで、消去状態時リセットベクタを新たに設け、リセットベクタが消去値である場合に消去状態時リセットベクタをリセットベクタの代わりにプログラム開始アドレスとする。
【００４６】
さらに、消去状態時リセットベクタ値として、通常動作サービスプログラム書換えプログラムの開始アドレスとすることにより、リセットベクタを含む電気的に消去可能な不揮発性メモリの消去から、リセットベクタ再書込み完了までの間にリセットが発生した場合でも、通常動作サービスプログラム書換えプログラムを再起動できるようにする。
（通常動作サービスプログラム書換えの動作説明）
図４Ａ〜図４Ｇは、通常動作サービスプログラム書換えプログラムの通常動作サービスプログラム書換えのフローを示す図である。
【００４７】
通常動作サービスプログラム書換えプログラムは、リセットベクタ消去状態でリセットが発生して消去状態時リセットベクタから起動するか、または通常動作サービスプログラムのプログラム書換えモード条件を検出したことのいずれかをきっかけとして起動される。
【００４８】
図２では、通常動作サービスプログラム書換えプログラムが電気的に消去可能な不揮発性メモリブロック＃３から電気的に消去可能な不揮発性メモリブロック＃４（アドレス空間0x00A00000〜0x00DFFFFF）の領域に実装されている。
【００４９】
図４ＡのステップＳ０１では初期設定を行う。通常動作サービスプログラム書換えプログラムが起動されると、最初に初期設定をして割込み禁止、通信インタフェース設定などを行う。
【００５０】
割込み禁止初期設定は、通常動作サービスプログラムに使用する割込みベクタの値が電気的に消去可能な不揮発性メモリ内に残存または、消去状態において割込みが発生した場合に、通常動作サービスプログラム書換えプログラムの動作および、通常動作サービスプログラム書換えが正しく行われなくなるのを防ぐために行う。
【００５１】
通信インタフェース初期設定は、通信インタフェース４と通信回線５を介して通信インタフェース接続装置６より通常動作サービスプログラムを受信可能にするために行う。
ステップＳ０２ではリセットベクタの読出しをする。つまり、通常動作サービスプログラムの書換えをするために、必要となるリセットベクタ値（0xFFFFFFFC〜0xFFFFFFFF番地）を読出す。
【００５２】
ステップＳ０３ではリセット情報レジスタの読出しをする。通常動作サービスプログラム書換えプログラムの起動要因を解析するために必要となるリセット情報レジスタを読出す。リセット情報レジスタには、リセット発生の有無、リセットの発生要因の情報が含まれる。
【００５３】
ステップＳ０４では、リセットベクタ値が消去値であって、かつリセット情報レジスタのリセットの発生要因が、リセットによるものか判定する。
読出したリセットベクタ値とリセット情報レジスタ値より、通常動作サービスプログラム書換えプログラムがどのようなきっかけで起動されたかを解析し、ウォッチドッグタイマのクリアパターンを導き出す。
【００５４】
リセットベクタ値が消去値であり、かつリセット情報レジスタ値の発生要因がリセットにより起動する場合に、ステップＳ０５へ遷移する。
リセットベクタ値が消去値以外、またはリセット情報レジスタ値の発生要因がリセットによる起動以外の場合には、ステップＳ０６へ遷移する。
【００５５】
ステップＳ０５では、ウォッチドッグクリアパターンとしてウォッチドッグクリアパターンＢをウォッチドッグクリアパターン変数へ設定する。
ステップＳ０６では、ウォッチドッグクリアパターンとしてウォッチドッグクリアパターンＡをウォッチドッグクリアパターン変数へ設定する。
【００５６】
上記のようにしてウォッチドッグタイマのクリアパターンをウォッチドッグクリアパターン変数に設定する。
図４Ｂに示すステップＳ０７では通常動作サービスプログラム書換えプログラムが使用する変数情報の無効設定を行う。
【００５７】
無効にする変数情報は、リセットベクタ書込み情報電文受信フラグ、最終データ電文受信フラグである。
リセットベクタ書込み情報電文受信フラグは、通信インタフェース接続装置６よりリセットベクタ書込み情報を受信無し（未受信状態）を設定する。
【００５８】
最終データ電文受信フラグは、通信インタフェース接続装置６より電気的に消去可能な不揮発性メモリ書込み情報の最終電文を受信無し(未受信状態)を設定する。
ステップＳ０８では、ＣＰＵ２（通常動作サービスプログラム書換えプログラムの実装）は、通信インタフェース４を制御し、通信インタフェース接続装置６に対して、通信回線５を経由して通信インタフェース接続確立要求電文を送信する。
【００５９】
ステップＳ０９では、ＣＰＵ２は、通信インタフェース接続装置６からの通信インタフェース接続確立応答電文の待ち状態となる。例えば、通信インタフェース接続確立応答電文の待ち状態ではループ処理により待ち受けをする。
【００６０】
ステップＳ１０では、ウォッチドッグクリアパターン変数を使用してウォッチドッグタイマをクリアする。
ステップＳ１１では、通信インタフェース接続装置６から送信された通信インタフェース接続確立応答電文の受信判定を行う。
【００６１】
通信インタフェース接続確立応答電文が、通常動作サービスプログラム書換えプログラムで受信された場合に、図４ＣのステップＳ１４へ遷移する。通信インタフェース接続確立応答電文が受信されなかった場合には、ステップＳ１２へ遷移する。
【００６２】
ステップＳ１２では、通信インタフェース接続装置６からの通信インタフェース接続確立応答電文の受信待ち時間のタイムアウトの判定を行う。
タイムアウト（受信期限切れ）の場合にはステップＳ０８へ遷移し、ステップＳ０８で再び通信インタフェース接続確立要求電文を送信する。
【００６３】
タイムアウトでない場合（受信期限切れ以外）の場合には、ステップＳ０９へ遷移する。
ステップＳ１３では、通信インタフェース接続装置６が通常動作サービスプログラム書換えプログラムのステップＳ０８で送信された通信インタフェース接続確立要求電文を受信すると、通信インタフェース接続確立応答電文を生成して通信回線５を介してＣＰＵ２へ送信する。これにより、ＣＰＵ２と通信インタフェース接続装置６間の接続が確立する。
【００６４】
図４ＣのステップＳ１４では、リセットベクタ領域を含む電気的消去可能メモリブロック＃５（アドレス空間0x00E00000〜0x00FFFFFF）の消去処理を起動し、ステップＳ１５へ遷移する。
【００６５】
最初に電気的消去可能メモリブロック＃５の電気的消去を行う理由は、リセットベクタを最初に消去してしまうことにより、以降リセットが発生しても、消去状態時リセットベクタにより通常動作サービスプログラム書換えプログラムが再起動できるようにするためである。
【００６６】
ステップＳ１５では、電気的に消去可能な不揮発性メモリの消去完了待ちループ処理となり、ウォッチドッグクリアパターン変数を使用し、ウォッチドッグタイマをクリアして、ステップＳ１６へ遷移する。
【００６７】
ステップＳ１６では、電気的に消去可能な不揮発性メモリの消去完了を監視する。
消去未完了の場合にはステップＳ１５へ遷移する。消去完了の場合には、ステップＳ１７へ遷移する。
【００６８】
ステップＳ１７では、通常動作サービスプログラム格納領域となる電気的消去可能メモリブロック＃０〜＃２（アドレス空間0x00400000〜0x009FFFFF）の消去を起動し、ステップＳ１８へ遷移する。
【００６９】
ステップＳ１８では、電気的に消去可能な不揮発性メモリの消去完了待ちループ処理となることから、ウォッチドッグクリアパターン変数を使用し、ウォッチドッグタイマをクリアしてステップＳ１９へ遷移する。
【００７０】
ステップＳ１９では、電気的に消去可能な不揮発性メモリの消去完了を監視する。
消去未完了の場合にはステップＳ１８へ遷移する。消去完了の場合には図４ＤのステップＳ２０へ遷移する。
【００７１】
図４ＤのステップＳ２０では、通信インタフェース４を制御し、通信インタフェース接続装置６に対して、通信回線５を経由して通常動作サービスプログラム書込み情報転送要求電文を送信する。
【００７２】
ステップＳ２１では、通信インタフェース接続装置６からの通常動作サービスプログラム書込み情報の応答待ち状態となる。通常動作サービスプログラム書込み情報転送応答電文の応答待ち状態では、ループ処理となりステップＳ２２へ遷移する。
【００７３】
ステップＳ２２では、ウォッチドッグクリアパターン変数を使用し、ウォッチドッグタイマをクリアして、ステップＳ２３へ遷移する。
ステップＳ２３では、通信インタフェース接続装置６からの通常動作サービスプログラム書込み情報転送応答電文が受信されたか判定を行う。ステップＳ２５によって送信された応答電文が、受信された場合には、図４ＥのステップＳ２６へ遷移する。受信されなか
った場合には、ステップＳ２４へ遷移する。
【００７４】
ステップＳ２４では、通信インタフェース接続装置６からの受信期限切れ判定を行う。
通常動作サービスプログラム書込み情報転送応答の受信期限切れの場合には、図４ＢのステップＳ０７へ遷移する。
【００７５】
通常動作サービスプログラム書込み情報転送応答の受信期限切れ以外の場合には、ステップＳ２１へ遷移する。
ステップＳ２５では、通信インタフェース接続装置６が、通常動作サービスプログラム書換えプログラムのステップＳ２０の通常動作サービスプログラム書込み情報転送要求電文送信処理によって送信された要求電文を受信した場合、ステップＳ２５で通常動作サービスプログラム書込み情報転送応答電文の生成をして電文送信を行う。
【００７６】
通常動作サービスプログラム書込み情報転送応答電文には、書込みアドレス、プログラムデータ、データ長、最終データ判定情報を有する。
書込みアドレスは、電気的に消去可能な不揮発性メモリの書込みアドレス情報である。
【００７７】
プログラムデータは、電気的に消去可能な不揮発性メモリへ書込まれる通常動作サービスプログラム本体データである。
データ長は、電気的に消去可能な不揮発性メモリへの書込みデータ長情報である。
【００７８】
最終データ判定情報は、通常動作サービスプログラム書込み情報転送応答電文の最終電文判定用情報である。
図４ＥのステップＳ２６では、ステップＳ２５の通常動作サービスプログラム書込み情報転送応答電文送信処理によって送信された応答電文の内容妥当性確認を実施する（書込みアドレス情報が、電気的消去可能メモリブロック領域外かなど）。
【００７９】
ステップＳ２７では、通常動作サービスプログラム書込み情報転送応答電文に異常があるか判定する。
ステップＳ２５の通常動作サービスプログラム書込み情報転送応答電文送信処理によって送信された応答電文に異常があった場合、図４ＢのステップＳ０７へ遷移する。
【００８０】
ステップＳ２５の処理によって送信された応答電文に異常がなかった場合、ステップＳ２８へ遷移する。
ステップＳ２８では、受信電文最終データ判定情報が最終データか判定する。
【００８１】
受信電文が最終データ情報の場合はステップＳ２９へ遷移する。受信電文が最終データ情報以外の場合はステップＳ３１へ遷移する。
ステップＳ２９では、最終データ電文受信フラグ情報が無効な場合、ステップＳ３０へ遷移する。最終データ電文受信フラグ情報が有効（多重最終データ電文受信）な場合、図４ＢのステップＳ０７へ遷移する。
【００８２】
ステップＳ３０では、最終データ電文正常受信と判断して最終データ電文正常受信ラグ情報を有効設定する。
ステップＳ３１では、通常動作サービスプログラム書込み情報転送応答電文が、リセットベクタ書込み情報か判定する。
【００８３】
受信電文がリセットベクタ書込み情報の場合、ステップＳ３２へ遷移する。受信電文がリセットベクタ書込み情報以外の場合、図４ＦのステップＳ３４へ遷移する。
ステップＳ３２では、リセットベクタ書込み情報電文受信フラグが無効な場合、ステッ
プＳ３３へ遷移する。
【００８４】
リセットベクタ書込み情報電文受信フラグ情報が有効な場合（多重リセットベクタ書込み電文を受信）、図４ＢのステップＳ０７へ遷移する。
ステップＳ３３では、リセットベクタ書込み情報電文受信フラグを有効に設定し、リセットベクタ書込み情報を退避する。
【００８５】
最終データ電文正常受信と判断しリセットベクタ書込み情報電文受信フラグを有効に設定し、電文内のリセットベクタ書込み情報を退避し、図４ＦのステップＳ３４へ遷移する。
【００８６】
ステップＳ３４では、最終データ電文受信フラグが有効設定であり、かつリセットベクタ書込み情報電文受信フラグが無効設定の場合に、最終データ電文を受信したがリセットベクタ書込み情報電文が受信できていない場合、図４ＢのステップＳ０７へ遷移する。
【００８７】
最終データ電文受信フラグが有効設定以外、またはリセットベクタ書込み情報電文受信フラグが無効設定以外の場合、ステップＳ３５へ遷移する。
ステップＳ３５では、最終データ電文受信フラグが無効設定であり、かつリセットベクタ書込み情報電文受信フラグが有効設定の場合、ステップＳ３６へ遷移する。
【００８８】
最終データ電文受信フラグが無効設定以外、またはリセットベクタ書込み情報電文受信フラグが有効設定以外の場合、ステップＳ３７へ遷移する。
ステップＳ３６では、受信電文がリセットベクタ書込みの場合、リセットベクタ領域を最後に書換えるため、次の電文受信処理となる図４ＤのステップＳ２０へ遷移する。
【００８９】
受信電文が、リセットベクタ書込み以外の場合、電気的に消去可能な不揮発性メモリ書込みのため、図４ＧのステップＳ３９へ遷移する。
ステップＳ３７では、最終データ電文受信フラグが有効設定であり、かつリセットベクタ書込み情報電文受信フラグが有効設定の場合、ステップＳ３８へ遷移する。
【００９０】
最終データ電文受信フラグが有効設定以外、またはリセットベクタ書込み情報電文受信フラグが有効設定以外の場合、図４ＧのステップＳ３９へ遷移する。
ステップＳ３８では、受信電文が、リセットベクタ書込みの場合、リセットベクタ領域の最終書換え条件が成立しているため、図４ＧのステップＳ４３の退避リセットベクタ書込みデータを電気的消去可能メモリへの書込み起動処理へ遷移する。
【００９１】
受信電文が、リセットベクタ書込み以外の場合、電気的に消去可能な不揮発性メモリ書込みのため、図４ＧのステップＳ３９へ遷移する。
ステップＳ３９では、電気的に消去可能な不揮発性メモリへの電文データ（通常動作サービスプログラム本体）の書込みを行う。
【００９２】
ステップＳ４０では、電気的に消去可能な不揮発性メモリへの書込み完了待ちループ処理となることから、ウォッチドッグクリアパターン変数を使用し、ウォッチドッグタイマをクリアする。
【００９３】
ステップＳ４１では、電気的に消去可能な不揮発性メモリへの書込み完了を監視する。
書込み未完了の場合には、ステップＳ４０へ遷移する。書込み完了の場合には、ステップＳ４２へ遷移する。
【００９４】
ステップＳ４２では、最終データ電文受信フラグが有効設定、かつ、リセットベクタ書
込み情報電文受信フラグが有効設定の場合、リセットベクタ領域の最終書換え条件成立と判断し、ステップＳ４３へ遷移する。最終データ電文受信フラグ有効設定以外、または、リセットベクタ書込み情報電文受信フラグが有効設定以外の場合、リセットベクタ領域の最終書換え条件不成立と判断し、次の電文受信処理となる図４ＤのステップＳ２０へ遷移する。
【００９５】
ステップＳ４３では、リセットベクタ書換え条件成立により、退避しておいたリセットベクタ書込みデータの書込みを行い、ステップＳ４４へ遷移する。
ステップＳ４４では、電気的に消去可能な不揮発性メモリへの書込み完了待ちループ処理となることから、ウォッチドッグクリアパターン変数を使用し、ウォッチドッグタイマをクリア、ステップＳ４５へ遷移する
ステップＳ４５では、通常動作サービスプログラム書換えプログラムは、電気的に消去可能な不揮発性メモリへの書込み完了を監視する。
【００９６】
書込み未完了の場合には、ステップＳ４４へ遷移する。書込み完了の場合には、ステップＳ４６へ遷移する。
ステップＳ４６では、全ての電文データ書込みが完了したため、通信インタフェース接続装置６に対して、全書込み終了電文を送信し、ステップＳ４７へ遷移する。
【００９７】
ステップＳ４７では、自身のプログラムが格納されているオンボード基板１へ自律リセット起動を行い、書込みが完了した通常動作サービスプログラムをリセットベクタより開始させ、処理を終了する。
【００９８】
なお、上記実施例のフローに示した制御処理は、その制御処理を遂行させる命令が記述されたプログラムをコンピュータに実行させることにより実現することができる。
このプログラムをＣＤ−ＲＯＭなどの記憶媒体に記憶しておけば、コンピュータ（ＣＰＵ、ＦＰＧＡ、ＣＰＬＤなどのプログラマブルな演算処理デバイス）に、そのプログラムをインストールすることにより、制御処理を実現することができる。また、このプログラムを通信ネットワークを介してコンピュータにダウンロードしてもよい。
【００９９】
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【図面の簡単な説明】
【０１００】
【図１】本発明における実施例にて動作するハードウェア構成を示す図である。
【図２】電気的に消去可能な不揮発性メモリのメモリマップの例を示す図である。
【図３】リセット発生から、プログラム開始に至るまでのハードウェア動作を示すフロー図である。
【図４Ａ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｂ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｃ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｄ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｅ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｆ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【図４Ｇ】本発明における実施例の通常動作サービスプログラム書換えプログラム動作を示すフロー図である。
【符号の説明】
【０１０１】
１  オンボード基板
２  ＣＰＵ
３  フラッシュメモリ
４  通信インタフェース
５  通信回線
６  通信インタスェース接続装置
【図１】
2009070303.tif 000003
【図２】
2009070303.tif 000004
【図３】
2009070303.tif 000005
【図４Ａ】
2009070303.tif 000006
【図４Ｂ】
2009070303.tif 000007
【図４Ｃ】
2009070303.tif 000008
【図４Ｄ】
2009070303.tif 000009
【図４Ｅ】
2009070303.tif 000010
【図４Ｆ】
2009070303.tif 000011
【図４Ｇ】
2009070303.tif 000012