(57)【要約】【課題】データ更新中に機器の電源遮断が発生した場合でも、確実にデータ更新を完了させる。【解決手段】フラッシュメモリ２０は、アプリケーションプログラム等のデータ更新対象格納エリアＡ１と、ＣＰＵ１０の初期化等のために最低限必要なブートプログラムやデータ更新プログラム、制御モード判断プログラム、を格納する非更新対象格納エリアＡ２と、を備える。受信データは、一時的に格納エリアＡ３にすべて格納され、正当性が確認されると、データ更新フラグがセットされ、格納エリアＡ１に転送されると、フラグはクリアされる。ＣＰＵのリセット後は、リカバリー処理においてデータ更新フラグがチェックされ、セットされていれば、格納エリアＡ３の受信データに基づいて、データ更新を完了させる。【選択図】図２
2005115614.tif 000002
【特許請求の範囲】
【請求項１】
データ処理手段と、
前記データ処理手段の処理を規定し更新対象となる第１のデータと、前記データ処理手段の更新処理を規定し更新対象とならない第２のデータと、更新状態データとを記憶する記憶手段と
を有し、
前記データ処理手段は、
前記更新処理が行われている期間内に更新中を示し、それ以外の期間に非更新中を示すように前記記憶手段に記憶される前記更新状態データを設定し、
前記第１のデータで規定された処理の実行に先立って、前記記憶手段に記憶されている前記第２のデータで規定された前記更新処理を行って前記更新状態データを検証し、
前記更新状態データが前記更新中を示す場合に、前記記憶手段に記憶されている前記第１のデータの前記更新処理を行い、
前記更新状態データが前記非更新中を示す場合に、前記記憶手段に記憶されている前記第１のデータで規定された処理を実行する
データ処理装置。
【請求項２】
前記記憶手段は、前記更新処理により前記第１のデータとなる第３のデータをさらに記憶し、
前記データ処理手段は、
前記記憶手段に記憶された前記第３のデータを検証してその正当性を確認すると前記更新状態データを更新中を示すように設定し、続いて、前記第３のデータで前記第１のデータを更新し、更新後の前記第１のデータと前記第２のデータとの一致を確認すると前記更新状態データを非更新中を示すように設定する
請求項１に記載のデータ処理装置。
【請求項３】
前記更新処理を行う更新モードと、前記更新処理を行わない非更新モードとのうち一方を選択する制御モード選択部
をさらに有し、
前記データ処理部は、
起動時に、前記制御モード選択部によって前記更新モードが選択されていることを条件に前記更新処理を行う
請求項１記載のデータ処理装置。
【請求項４】
データ処理を規定する第１のデータを更新処理するデータ処理方法であって、
前記更新処理が行われている期間内に更新中を示し、それ以外の期間に非更新中を示すように更新状態データを設定する第１の工程と、
前記第１のデータで規定された処理の実行に先立って、前記更新処理の対象とならない第２のデータで規定された前記更新処理を行って前記更新状態データを検証する第２の工程と、
前記第２の工程で前記更新状態データが前記更新中を示す場合に、前記第１のデータの前記更新処理を行う第３の工程と、
前記第２の工程で前記更新状態データが前記非更新中を示す場合に、前記第１のデータで規定された処理を実行する第４の工程と
を有するデータ処理方法。
【請求項５】
前記第１の工程は、
前記更新処理により前記第１のデータとなる第２のデータを検証してその正当性を確認すると前記更新状態データを更新中を示すように設定し、更新後の前記第１のデータと前記第２のデータとの一致を確認すると、前記更新状態データを非更新中を示すように設定する
請求項４に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの更新処理を行なうためのデータ処理装置およびデータ処理方法に関するものである。
【背景技術】
【０００２】
電気的に書き換え可能であって、電源を切った後でもデータの保持が可能な不揮発性メモリとして、ＥＥＰＲＯＭやフラッシュメモリ等が知られている。
特にフラッシュメモリは、高集積化が可能であるため、大容量のデータを格納でき、またオンボード上での書き換えも可能であることから、広範な用途に利用されている。たとえば、頻繁にアプリケーションプログラムをバージョンアップ（更新）する用途では、そのアプリケーションプログラムを通常オンボードでの書き換えが難しいＣＰＵに搭載されたＲＯＭ等に書き込まずに、フラッシュメモリ上に格納し、バージョンアップに応じて、アプリケーションプログラムを通信装置によって書き換える（更新する）ことが行われている。
その際、ＲＡＭのように単にメモリに対してアクセスするだけではデータの更新ができず、専用の書き込みフロー（データ更新モード）が必要となる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、受信したデータに基づいて、フラッシュメモリやＥＥＰＲＯＭ上のデータを書き換えている間に、メモリが搭載されている機器の電源が遮断し、または、電源ラインに重畳したサージ電圧の影響によりリセットがかかると、メモリ上でデータは破壊される可能性があり、一度破壊されると再度当該機器の電源を立ち上げてリセットをかけても、メモリ上のデータが回復されないという問題があった。
また、更新するデータが通常使用するアプリケーションプログラムであって、更新後にバグ等があるために正常動作しない場合には、そのアプリケーションプログラムを更新するためのデータ更新モードに入れないときがあり、最悪の場合、フラッシュメモリを作成しなおさなければならなかった。
【０００４】
したがって、本発明の目的は、更新中に、データ処理を規定するデータの更新が電源遮断などの要因で適切に終了しなかった場合に、次に上記データ処理を開始する際に、そのデータ処理の動作を保証することができるデータ処理装置およびその方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の第１の観点は、データ処理手段と、前記データ処理手段の処理を規定し更新対象となる第１のデータと、前記データ処理手段の更新処理を規定し更新対象とならない第２のデータと、更新状態データとを記憶する記憶手段とを有し、前記データ処理手段は、前記更新処理が行われている期間内に更新中を示し、それ以外の期間に非更新中を示すように前記記憶手段に記憶される前記更新状態データを設定し、前記第１のデータで規定された処理の実行に先立って、前記記憶手段に記憶されている前記第２のデータで規定された前記更新処理を行って前記更新状態データを検証し、前記更新状態データが前記更新中を示す場合に、前記記憶手段に記憶されている前記第１のデータの前記更新処理を行い、前記更新状態データが前記非更新中を示す場合に、前記記憶手段に記憶されている前記第１のデータで規定された処理を実行する。
【０００６】
好適には、前記記憶手段は、前記更新処理により前記第１のデータとなる第３のデータをさらに記憶し、前記データ処理手段は、前記記憶手段に記憶された前記第３のデータを検証してその正当性を確認すると前記更新状態データを更新中を示すように設定し、続いて、前記第３のデータで前記第１のデータを更新し、更新後の前記第１のデータと前記第２のデータとの一致を確認すると前記更新状態データを非更新中を示すように設定する。
【０００７】
上記課題を解決するための本発明の第２の観点は、データ処理を規定する第１のデータを更新処理するデータ処理方法であって、前記更新処理が行われている期間内に更新中を示し、それ以外の期間に非更新中を示すように更新状態データを設定する第１の工程と、前記第１のデータで規定された処理の実行に先立って、前記更新処理の対象とならない第２のデータで規定された前記更新処理を行って前記更新状態データを検証する第２の工程と、前記第２の工程で前記更新状態データが前記更新中を示す場合に、前記第１のデータの前記更新処理を行う第３の工程と、前記第２の工程で前記更新状態データが前記非更新中を示す場合に、前記第１のデータで規定された処理を実行する第４の工程とを有する。
【発明の効果】
【０００８】
更新中に、データ処理を規定するデータの更新が電源遮断などの要因で適切に終了しなかった場合に、次に上記データ処理を開始する際に、そのデータ処理の動作を保証することができるという利点がある。
【発明を実施するための最良の形態】
【０００９】
本発明の実施形態
以下、本発明の第１の実施形態について説明する。
図１は、本実施形態を説明するためのブロック図である。
データ処理装置１は、ＣＰＵ１０と、フラッシュメモリ２０と、ディップスイッチ３０とを有し、外部のデータ通信装置１００と通信ラインにより接続され、データやプログラムを受信する。受信したこれらのデータやプログラムにより、データ処理装置１がすでに有しているデータやプログラムが更新される。
このようなデータやプログラムは、データ処理装置１００から、たとえば放送電波を通して定期的に更新するために送出されるほか、データやプログラムの更新が成功しなかった場合等に、ユーザがデータ処理装置１を操作して発信する更新要求信号に応じて送出される。
以下の説明においては、更新のために受信するデータやプログラムを、更新用プログラムと言うことにする。また、データ処理装置１が後述する格納エリアＡ１に有しており、後述するデータ更新プログラムの実行により、更新用プログラムにとって代えられるデータやプログラムを、アプリケーションプログラムまたは単にプログラムと言うことにする。
受信する更新用プログラムには、データの正当性をデータ処理装置１によりチェックできるようなチェック用データ（たとえば、ＣＲＣやチェックサムのためのデータ）が含まれている。
【００１０】
なお、本発明のデータ処理手段は、本実施形態におけるＣＰＵ１０に対応する。
本発明の第１のデータは、本実施形態におけるアプリケーションプログラムに対応する。
本発明の第２のデータは、本実施形態におけるデータ更新プログラムに対応する。
本発明の第３のデータは、本実施形態における更新用プログラムに対応する。
本発明の更新状態データは、本実施形態におけるデータ更新フラグに対応する。
本発明の記憶手段は、本実施形態におけるフラッシュメモリ２０に対応する。
【００１１】
ＣＰＵ１０は、データ処理装置１が起動すると、通常、後述するフラッシュメモリ２０の格納エリアＡ２に格納されたプログラム群から実行し、その後、後述する格納エリアＡ１に格納されたアプリケーションプログラムを実行する。
ＣＰＵ１０には、通常動作モードとデータ更新モードの２つの制御モードを有しており、ＣＰＵの初期化（ハードウエア設定等）を行うブートプログラムの実行の後に、制御モードの判断を行う。
これらの制御モードの切替えは、データ通信装置１００から送出される所定の専用コマンドをＣＰＵ１０が受信する、または、ディップスイッチ３０の操作を通してＣＰＵ１０の専用ポートがアクティブ等にされ、そのポートのレベルをチェックすることにより行われる。
通常動作モードでは、更新対象であるアプリケーションプログラムを実行する。
データ更新モードは、通常動作中（通常動作モード）に実行されるアプリケーションプログラムを更新するための専用モードである。
【００１２】
フラッシュメモリ２０は、電気的書き換えが可能であり、また、電源を切った後でもデータの保持が可能な不揮発性メモリである。後述するように、格納エリアＡ１〜４の４つの領域から構成される。
ディップスイッチ３０は、手動で操作できる機械式スイッチである。なお、これとは別にデータ処理装置１００からの信号線、または、コマンド指示でも切替えられるようになっている。
ディップスイッチ３０は、ＯＮ−ＯＦＦの１接点のスイッチであり、そのスイッチをＯＮにすると、ＣＰＵ１０の専用ポートをアクティブにする等により、そのポートレベルがチェックされることで、データ更新モードに選択することが可能となるように構成されている。
【００１３】
図２は、本実施形態におけるフラッシュメモリ２０の格納エリアを示すブロック図である。本実施の形態においては、図２に示すとおり、フラッシュメモリ２０は大きく４つの格納エリアに分かれている。
ここで、各格納エリアは、フラッシュメモリ２０の消去単位であるセクタ単位（たとえば、６４Ｋｂｙｔｅ）で構成されている。
以下、４つの格納エリアについて、その構成を説明する。
【００１４】
まず、格納エリアＡ１は、アプリケーションプログラムが格納されるエリアである。
ＣＰＵ１０は、ブートプログラム等を実行した後に、この格納エリアＡ１に格納されるアプリケーションプログラムにアクセスする。
格納エリアＡ１に格納されるプログラムが、本実施形態におけるデータ更新対象であり、データ通信装置１００からデータ処理装置１が受信する更新用プログラムに基づいて、ＣＰＵ１０がデータ更新プログラムを実行することにより、データ更新を行う。
一般に、フラッシュメモリは、データのコピーを行うときは、消去単位であるセクタ毎に、まずコピー先のデータを消去してから新しいデータを書き込む必要があるので、本実施の形態においては、後述する格納エリアＡ３に一時的に格納した受信データを格納エリアＡ１にコピーするときには、格納エリアＡ１の内容をすべて消去（イレーズ）してから行われる。たとえば、格納エリアＡ１が３セクタで構成されている場合、３セクタ分すべてイレーズする。
【００１５】
格納エリアＡ２は、ハードウエアの設定等ＣＰＵ１０が動作するために必要な最低限の作業を司るブートプログラムと、データ更新が途中でフェイルした場合にＣＰＵ１０のリセットによりデータ更新を完了させるリカバリープログラム（リカバリー処理）と、データ更新モードおよび通常動作モードのいずれかのモードであるかを判断するプログラム（制御モード判断プログラム）と、格納エリアＡ１のプログラムを更新するためのデータ更新プログラムが格納される。
ここで、これらのプログラムを格納エリアＡ２に格納する理由は、格納エリアＡ１の更新に失敗した場合には更新エリアＡ１のアプリケーションプログラムが破壊されている可能性が高く、このような場合に、データ更新モードに入ることができないとすれば、そのアプリケーションプログラムをもはや更新することができなくなるおそれがあるためである。したがって、データ更新モードに入るためのプログラム群を、データ更新対象である格納エリアＡ１と分離して配置する必要がある。
そうすることで、アプリケーションプログラムの更新に失敗した場合であっても、ＣＰＵ１０のリセットにより、制御モードが判断されるため、データ更新モードへ移行することが可能となる。
リカバリープログラムとデータ更新プログラムについては後述する。
【００１６】
格納エリアＡ３は、データ更新のためのワークエリアであり、本実施形態においては、データ通信装置１００から受信した更新用プログラムを直接格納エリアＡ１に格納せず、一時的に、この格納エリアＡ３に保持する。
また、格納エリアＡ３は、格納エリアＡ１と同数のセクタで構成されている。たとえば、コピー元の格納エリアＡ１が３セクタで構成されていれば、コピー先の格納エリアＡ３も３セクタで構成される。
受信した更新用プログラムを格納エリアＡ１へコピーする場合は、コピー先である格納エリアＡ１のデータをすべて一括して消去（イレーズ）した後に、格納エリアＡ３の全データが一括してコピーされる。
【００１７】
格納エリアＡ４は、リカバリープログラムの実行に必要な後述するデータ更新フラグを格納する。格納エリアＡ４は、消去単位の１セクタで構成される。
但し、本実施形態においては、受信単位で１セクタにつき１フラグのデータ更新フラグを設定するので、受信する更新用プログラムがデータとプログラムの２種類のデータを含む場合は、格納エリアＡ４は２セクタで構成し、各受信単位（データ，プログラム）毎にそれぞれデータ更新フラグが設定される。
すなわち、格納エリアＡ１およびＡ３において、データとプログラムがそれぞれ３セクタずつの計６セクタ分存在する場合には、３セクタ分のデータと３セクタ分のプログラムのそれぞれに対して、各１フラグを設定するため、格納エリアＡ４は、計２セクタで構成される。
以下説明する本実施形態においては、プログラムのみを受信するための１セクタ１フラグの場合の例を示す。
このように、１セクタをすべて使用してデータ更新フラグを設定する理由は、データ更新フラグを変更する場合も消去単位であるセクタ単位でイレーズする必要があることから、セクタを部分的にデータ更新フラグのために割り当てる意味がないためである。
また、１セクタに複数のフラグを設定した場合には、セクタ内のどのフラグを変更した場合でも、そのセクタのイレーズ処理が必要であり、その際に電源遮断が起こった場合には各フラグデータの復旧が非常に困難となるが、１セクタに１フラグであれば、そのような電源遮断が起こった場合でも、容易に適切な処置を取ることが可能となる利点がある。
【００１８】
上述したように、アプリケーションプログラムの更新が失敗する可能性を考慮して、データ更新対象である格納エリアＡ１と分離してブートプログラム等を配置させるため、図２に示すように、格納エリアＡ２は、格納エリアＡ１と別の物理領域が割り当てられている。したがって、格納エリアＡ２は、データ更新対象とはならない。
もちろん、格納エリアＡ２に格納するブートプログラム、リカバリープログラム、制御モード判断プログラムおよびデータ更新プログラムにバグがあれば、以降のデータ更新ができないおそれがあるので、これらのプログラムは十分にテストを行い、検証しておくことが前提となることは言うまでもない。
【００１９】
以下に、本実施形態におけるデータ処理装置１において、データ通信装置１００から更新用プログラムを受信して、格納エリアＡ１に格納されるプログラムを更新するの動作について説明する。この動作は、格納エリアＡ２に格納されるデータ更新プログラムに基づいてＣＰＵ１０により実行される。
【００２０】
図３は、データ更新モードにおけるデータ更新プログラムのフローチャートである。
以下に、図３のフローチャートの各ステップについて説明する。
【００２１】
ステップＳＴ１０：
まず、ＣＰＵ１０は、データ通信装置１００から更新用プログラムの受信を開始する。
前述したように、更新用プログラムは、データ処理装置１００から、たとえば放送電波を通して定期的に更新するために送出されるほか、更新用プログラムによる更新が成功しなかった場合等に、ユーザがデータ処理装置１を操作して発信する更新要求信号に応じて送出される。
データの受信は、ＣＰＵ１０に備えられた通信制御部の指示により、ＩＩＣやＲＳ２３
２Ｃなどの通信インターフェースを備えた通信専用ＩＣ部（図示しない）を通して行われる。
なお、データ通信装置１００からの受信動作が失敗した場合は、更新用プログラムが、データ処理装置１００から、たとえば放送電波を通して定期的に更新するために送出されている場合は、ＣＰＵ１０は、次回の送出時に受信動作を行うものとする。また、たとえば、データ通信装置１００は、ユーザがデータ処理装置１を操作して発信する更新要求信号に応じて再度更新用プログラムを送出する場合は、ＣＰＵ１０はこれを受信するものとする。
【００２２】
ステップＳＴ１１：
ステップＳＴ１０で行われた受信動作が最初の受信動作であるか否かが確認される。
一般にフラッシュメモリに格納されるデータの更新を行うためには、格納対象領域を消去（イレーズ）しなければならないため、以前に受信動作がなされてフラッシュメモリ２０の格納エリアＡ３にデータが格納されている場合には、そのデータを消去する必要がある。
【００２３】
ステップＳＴ１２：
ステップＳＴ１１において、今回のデータ受信が最初であることが確認された場合には、更新ワークエリアである格納エリアＡ３に格納されるデータを消去する（イレーズ処理）。データ通信装置１００から一回に送られてくるデータサイズは、セクタサイズと同サイズではなく、通常はより小さい場合が多い。したがって、セクタ全部をイレーズすると、すでに受信してセクタに格納された分も含めて消去されるおそれがあるため、データ受信を最初に行なったときに、格納エリアＡ３をすべてイレーズ処理することとしている。
そして、ステップＳＴ１１において、今回のデータ受信が最初でないことが確認された場合には、本ステップはスキップされる。
【００２４】
ステップＳＴ１３：
次に、受信した更新用プログラムがフラッシュメモリ２０の格納エリアＡ３（更新ワーク）に書き込まれる。
ステップＳＴ１４：
受信した更新用プログラム（受信データ）のデータ量が大きい場合は、複数回に分けて
受信が行われる。したがって、受信データがまだ存在する場合には、ステップＳＴ１０に戻り、以上のステップＳＴ１０〜１３のステップが繰返し行われる。
【００２５】
ステップＳＴ１５：
更新用プログラムをデータ処理装置１００からすべて受信して、受信した更新用プログラム（受信データ）がすべて格納エリアＡ３に格納されると、その受信データが正当であるか否かがチェックされる。受信データには、たとえばＣＲＣやチェックサムなどの正当性の確認のために必要なデータが含まれている。
たとえば、送信側であるデータ通信装置１００が送信データの一部に基づいてＣＲＣやチェックサムの演算を行ない、その演算結果を送信データに付加し、一方、受信側のＣＰＵ１０は、同様に受信データの一部に基づいてＣＲＣやチェックサムの演算を行なった結果、受信データに付加された演算結果と一致した場合は、受信データが正当であると判断する。
その結果、受信データが正当でないと判断された場合は、エラー処理が行われる。エラー処理において、チェックサム計算プログラム等が正しいか否か等分析が行われる。
【００２６】
ステップＳＴ１６：
ステップＳＴ１５において、受信した更新用プログラム（受信データ）が正当であると判断された場合は、格納エリアＡ４に格納されるデータ更新フラグをセットする。
データ更新フラグは２値をとり、本実施形態においては、格納エリアＡ１のデータ更新中でない場合には「０」を、データ更新中であって、格納エリアＡ３に正当な受信データが格納された場合は「１」を示す。したがって、受信動作を行っていない場合、または、受信動作を行っている場合であっても、すべての正当な受信データが格納エリアＡ３に格納されるまでは、データ更新フラグは「０」であり、すべての受信データが格納エリアＡ３に格納され、受信データの正当性が確認されて、はじめてデータ更新フラグは「１」にセットされる。
本ステップにおいては、データ更新フラグは「１」にセットされる。
【００２７】
ステップＳＴ１７：
次に、更新対象である格納エリアＡ１（更新エリア）に受信データを転送する前に、格納エリアＡ１のデータ内容を消去する（イレーズ処理）。上述したとおり、一般にフラッシュメモリに格納されるデータの更新を行うためには、格納対象領域を消去（イレーズ）しなければならないためである。
ステップＳＴ１８：
格納対象エリアである格納エリアＡ１がイレーズ処理されると、ワークエリアである格納エリアＡ３に一時的に格納した受信データを、格納エリアＡ１に転送する（コピー処理）。
【００２８】
ステップＳＴ１９：
格納エリアＡ３に格納するすべての受信データを格納エリアＡ１に転送する処理（コピー）が終了すると、転送処理が正しく実行されたか否かを確認するために、格納エリアＡ３の受信データと格納エリアＡ１の転送データが一致するか否かを比較する。
ステップＳＴ２０：
ステップＳＴ１９において、受信データと転送データが一致しない場合は、エラー処理が行われる。エラー処理においては、本ステップに係るデータ更新プログラムのバグ修正等が検討される。
【００２９】
ステップＳＴ２１：
ステップＳＴ２０において、受信データと転送データが一致する場合は、受信データが格納エリアＡ１に正しく転送できたと判断できるので、データ更新フラグを「０」（格納エリアＡ１は更新中でないことを示す）として、これによりデータの更新が終了する（ステップＳＴ２２）。
【００３０】
ここで、ステップＳＴ１６において、いったん受信データの正当性が確認されてデータ更新フラグが「１」にセットされた後のデータ更新中に、たとえばデータ処理装置１の電源電圧の遮断によりＣＰＵ１０にリセットが発生した場合は、データ更新フラグは「１」が維持される。これにより、後述するリセット後のリカバリープログラム（リカバリー処理）の実行により、データ更新フラグが「１」であることが認識されるので、正当性が確認された受信データに基づいて、データの更新完了が可能となる。
【００３１】
以上、データ更新プログラムに基づいて、フラッシュメモリ２０のデータを更新するフローを説明した。
【００３２】
次に、図４を用いて、データ処理装置１の電源電圧の遮断等よりＣＰＵ１０にリセットが発生した場合のデータ処理装置１のＣＰＵ１０の動作について説明する。
【００３３】
ステップＳＴ３０：
データ処理装置１の起動または電源電圧の遮断により、データ処理装置１のＣＰＵ１０にリセットが発生する。
ステップＳＴ３１：
リセット後、ＣＰＵ１０は、フラッシュメモリ２０の格納エリアＡ２に格納されるブートプログラムから実行する。そして、格納エリアＡ１に格納するアプリケーションプログラムは、ブートプログラムをはじめとするリカバリー処理、制御モード判断の後に、実行される。
【００３４】
ブートプログラムは、ＣＰＵ１０の初期化、ハードウエアの設定などＣＰＵ１０が機能するための最低限の設定のみを行う。これにより、データ更新モードに移行させることが可能となる。
本実施形態においては、ブートプログラムを更新対象であるアプリケーションプログラムを格納する格納エリアＡ１と分離し、非更新対象である格納エリアＡ２に配置させているので、更新に失敗して格納エリアＡ１のアプリケーションプログラムが破壊された場合であっても、ＣＰＵ１０のリセット後は、ブートプログラムの実行により、制御モードをデータ更新モードに移行させることが可能となる。
なお、本ステップの内容は、制御モードが通常動作モードであるか、データ更新モードであるかに関わらず、実行される。
【００３５】
ステップＳＴ３２：
次に、格納エリアＡ４に格納されるデータ更新フラグ（１：格納エリアＡ３の受信データ正当，０：格納エリアＡ１が更新中でない）がチェックされる。
データ更新フラグは、すでに述べたとおり、データ処理装置１００から受信したデータ（更新用プログラム）を格納エリアＡ３（ワークエリア）に一時的に保持した後に、受信データの正当性があることが確認されてから「１」にセットされ、格納対象である格納エリアＡ１に受信データが格納されてワークエリアのデータと一致していることが確認されて、「０」に戻される。
したがって、ＣＰＵ１０のリセット後に、データ更新フラグがまだ「１」にセットされているということは、データ更新中の電源遮断等により、前回のデータ更新が正しく終了しなかったことを意味しているので、次のステップにおいてリカバリー処理が実行される。
【００３６】
ステップＳＴ３３：
ステップＳＴ３２において、データ更新フラグが「１」にセットされている場合には、リカバリー処理が行われる。
図２に示すとおり、リカバリー処理のためのリカバリープログラムは、更新対象ではない格納エリアＡ２に格納されているので、格納エリアＡ１に格納される前回の更新データが完全でない場合でも、実行が可能である。
リカバリー処理は、データ更新プログラムの実行の際に行われるステップＳＴ１７〜２１までの各処理が行われる。すなわち、以下の処理が順に行われる。
【００３７】
（１）イレーズ処理
更新対象である格納エリアＡ１に受信データを転送する前に、格納エリアＡ１のデータ内容を消去する（イレーズ処理）。
（２）コピー処理
格納対象エリアである格納エリアＡ１のイレーズ処理されると、ワークエリアである格納エリアＡ３に一時的に格納した受信データの転送処理を行う（コピー処理）。
（３）データの同一性確認処理
格納エリアＡ３に格納する受信データについて、格納エリアＡ１への転送処理が終了すると、転送処理が正しく実行されたか否かを確認するために、格納エリアＡ３と格納エリアＡ１のデータが一致するか否かを比較する。
（４）データ更新フラグのセット
ステップＳＴ１９において、受信データと転送データが一致する場合は、受信データが格納エリアＡ１に正しく転送できたと判断できるので、データ更新フラグを「０」（格納エリアＡ１は更新中でないことを示す）とする。これにより、データの更新が完了する。  
【００３８】
前述したように、以上の処理は、データ更新モードであるか、または通常動作モードであるかにかかわらず、ＣＰＵ１０のリセットにより常に実行される。したがって、データ更新中に電源遮断等によりデータの更新が完全になされず、格納エリアＡ１のアプリケーションプログラムが破壊されてしまった場合であっても、その後のＣＰＵ１０のリセットにより、データ更新フラグをチェックして、正当性が確認された格納エリアＡ３に格納された受信データ（更新用プログラム）に基づいて、確実にデータ更新を完了させることが可能となる。
本ステップの動作をデータ処理装置１のユーザの観点から見ると、ユーザは、リカバリー処理のために特別な操作を行う必要はなく、またリカバリー処理が行われたことを意識することもない。
【００３９】
また、データ更新フラグがフラグの更新中に、電源遮断等によりＣＰＵ１０のリセットが発生した場合でも、データ更新フラグは２値（１または０）で構成しているため、フラッシュデータ２０がハードウエアとして破壊されていない限り、「１」または「０」の値をとることになる。したがって、上述したリカバリー処理により、データ更新フラグが「１」であれば、データ更新が完了される。データ更新フラグが「０」の場合、格納エリアＡ１に正当な受信データが完全なコピーされた後にはじめて「０」に戻るように構成したため、格納エリアＡ１には、少なくとも更新前または更新後のアプリケーションプログラムが格納されているので、後述する通常動作モードにおいてアプリケーションプログラムを実行することが可能となる。
【００４０】
ステップＳＴ３４：
次に、制御モードが判断される。
制御モードには、すでに述べたとおり、格納エリアＡ１に格納されるアプリケーションプログラムを実行する通常動作モードと、そのアプリケーションプログラムのデータ更新を行うためのデータ更新モードとの２つのモードがある。
制御モードがデータ更新モードであると判断した場合には、図３において説明したステップＳＴ１０〜２２のデータ更新処理が行われる。
ステップＳＴ３５：
ステップＳＴ３４において、制御モードが通常動作モードであると判断した場合には、格納エリアＡ１に格納されたアプリケーションプログラムを実行する。
【００４１】
以上、図３および４のフローチャートを用いて説明したように、本実施形態におけるフラッシュメモリ２０は、通常モードで実行されるアプリケーションプログラムを格納する格納エリアＡ１（更新対象エリア）と、受信した更新用プログラムが格納され、データ更新のための一時的ワークエリアとしての格納エリアＡ３と、ＣＰＵの初期化等のために最低限必要なブートプログラムやリカバリープログラム、制御モード判断プログラム、およびデータ更新プログラム、を格納する格納エリアＡ２（非更新対象エリア）と、データ更新状況を管理するデータ更新フラグをセクタ単位で格納する格納エリアＡ４と、を備え、更新対象である格納エリアＡ１と非更新対象である格納エリアＡ２を、フラッシュメモリ２０のそれぞれ異なる物理領域に格納するように構成し、格納エリアＡ２に格納するデータ更新プログラムが実行されることにより、データ処理装置１００から受信した受信データをワークエリア（格納エリアＡ３）に一時的に保持し、正当性を検証した後にデータ更新フラグを「１」にセットして、格納対象エリア（格納エリアＡ１）に転送し、完全に転送した時点でデータ更新フラグを「０」に戻す。
そして、ＣＰＵ１０のリセット後は、アプリケーションプログラムを実行する前に、ブートプログラムに続いて実行されるリカバリー処理において、常にデータ更新フラグがチェックされ、データ更新フラグが「１」の場合は、前回のデータ更新に失敗した可能性があると判断して、格納エリアＡ３に格納され、正当性が確認された受信データに基づいて更新動作を完了させるので、以下の効果を得ることができる。
【００４２】
すなわち、電源遮断等により受信データによるアプリケーションプログラムの更新が途中で中断されて、アプリケーションプログラムが破壊された場合であっても、その後のＣＰＵ１０のリセットにより、更新非対象エリアに格納されるブートプログラムによりＣＰＵ１０の初期化が行われ、さらにリカバリー処理が実行されることにより、ワークエリアの受信データに基づいて、データの更新を完了させるので、電源が遮断された場合でも確実に更新動作を完了させることが可能となる。そして、この更新動作完了は、ユーザが意識することなく、また、特別な操作をすることなく行われるので、データ更新の利便性が高い。
さらに、１セクタをすべて使用してデータ更新フラグ（１フラグ）を設定しているので、データ更新フラグの信頼性が高い。すなわち、１セクタに複数のフラグを設定した場合には、セクタ内のどのフラグを変更した場合でも、そのセクタのイレーズ処理が必要であり、その際に電源遮断が起こった場合には各フラグデータの復旧が非常に困難となるが、１セクタに１フラグであれば、そのような電源遮断が起こった場合でも、容易に適切な処置を取ることが可能となる。
また、正常に受信動作が完了したアプリケーションプログラムにバグ等があり、正常にアプリケーションプログラムが動作しない場合でも、ＣＰＵ１０は、アプリケーションプログラムを実行する前に、制御モードを判断するので、データ更新プログラムを実行することにより、問題のあるアプリケーションプログラムを確実に更新させることもできる。  
【００４３】
本発明の実施形態は上述した内容に拘泥されることなく、様々な変更が可能である。
たとえば、本実施形態におけるフラッシュメモリは、オンボードでデータの更新が可能な不揮発性メモリであればよく、ＥＥＰＲＯＭ等でもよい。
また、更新対象とならない格納エリアＡ２に格納されるプログラム群は、必ずしもフラッシュメモリ２０の中に存在する必要はなく、データ処理装置１の中に別に設けられるフラッシュメモリ等（図示しない）に格納するようにしてもよい。
また、制御モードを移行させるためには、ディップスイッチ３０でなくても、ハードウエアとしてＣＰＵに直接入力されるデータ通信装置１００からの信号線でもよい。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施形態を説明するためのブロック図である。
【図２】本発明の実施形態におけるフラッシュメモリの構成を示す図である。
【図３】本発明の実施形態におけるフラッシュメモリ上のデータ更新動作を示すフローチャートである。
【図４】本発明の実施形態におけるＣＰＵのリセット時の動作を示すフローチャートである。
【符号の説明】
【００４５】
１…データ処理装置、１０…ＣＰＵ、２０…フラッシュメモリ、３０…ディップスイッチ、１００…データ通信装置
【図１】
2005115614.tif 000003
【図２】
2005115614.tif 000004
【図３】
2005115614.tif 000005
【図４】
2005115614.tif 000006