(57)【要約】【課題】更新途中で電源が遮断されても電源復帰後に更新を完結させるプログラム更新機能の信頼性を高める。【解決手段】電子機器に組み込まれたプログラムを部分的に変更するプログラム更新に際して、電子機器が第１電源からの電力によって作動可能な状態において、プログラムの一部であるブロックを差分データに基づいて書き換えるとともに、書換えの進行段階を示す情報を第２電源およびメモリを有しかつ第２電源からの電力によってメモリに対するリードライト動作をするメモリ回路によって記憶し、第１電源からの電力供給の停止に伴って中断された前記プログラムの一部の書換えを、第１電源からの電力供給が再開されたときに、メモリ回路が記憶する情報に基づいて、未完の段階から再開する。【選択図】図１
2010225012.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに従う動作をする電子機器であって、
第１電源によって電力を供給する電源回路と、
第２電源およびメモリを有し、前記第２電源からの電力によって前記メモリに対するリードライト動作をするメモリ回路と、
前記プログラムを記憶するプログラム記憶部と、
前記プログラムの一部である少なくとも一つのブロックの変更内容を示す差分データを記憶する差分データ記憶部と、
前記電源回路が電力を供給する状態において、前記ブロックを前記差分データに基づいて書き換えるプログラム更新部と、
前記電源回路が電力を供給する状態において、前記プログラム更新部による書換えの進行段階を示す情報を前記メモリ回路に記憶させる更新管理部と、
前記電源回路が電力を供給しない状態から供給する状態になったときに、前記メモリ回路が記憶する情報を参照して、前記ブロックの書換えを未完の段階から再開する更新補助部と、を備える
ことを特徴とする電子機器。
【請求項２】
前記プログラム更新部は、前記プログラムの複数のブロックを変更する場合には、前記複数のブロックを１つずつ順に書き換え、
前記更新補助部は、前記複数のブロックのうちの書き換えられていないブロックから書換えを再開する
請求項１記載の電子機器。
【請求項３】
さらに、復旧用記憶部を有し、
前記プログラム更新部は、前記ブロックの書換えに先立って、当該ブロックを前記復旧用記憶部に記憶させ、
前記更新補助部は、前記情報が前記プログラム記憶部への書き込みの途中を示す場合には、前記復旧用記憶部が記憶する前記ブロックに前記差分データを適用して当該ブロックの書換えを行う
請求項１または２記載の電子機器。
【請求項４】
前記プログラム更新部は、前記ブロックを前記復旧用記憶部に記憶させる第１段階の処理と、前記ブロックを作業用メモリ領域に複写する第２段階の処理と、前記作業用メモリ領域において前記差分データに基づいて書換え用データを作成する第３段階の処理と、前記書換え用データを前記ブロックに代えて前記プログラム記憶部に記憶させる第４段階の処理とを実行し、
前記更新管理部は、第１、第２、第３および第４の段階の各処理について、実行中および完了を示すように前記情報を逐次更新する
請求項３記載の電子機器。
【請求項５】
前記プログラム更新部は、前記メモリ回路からの前記情報の更新完了を示す通知を受けてから次の段階の処理を実行する
請求項４記載の電子機器。
【請求項６】
前記第１電源は、前記電源回路に対する着脱が可能な電池である
請求項５記載の電子機器。
【請求項７】
さらに、無線通信によって前記差分データを取得して前記差分データ記憶部に記憶させるダウンロード部を備える
請求項６記載の電子機器。
【請求項８】
電子機器に組み込まれたプログラムを部分的に変更するプログラム更新方法であって、
前記電子機器が第１電源からの電力によって作動可能な状態において、前記プログラムの一部であるブロックを差分データに基づいて書き換えるとともに、書換えの進行段階を示す情報を第２電源およびメモリを有しかつ前記第２電源からの電力によって前記メモリに対するリードライト動作をするメモリ回路によって記憶し、
前記第１電源からの電力供給の停止に伴って中断された前記プログラムの一部の書換えを、前記第１電源からの電力供給が再開されたときに、前記メモリ回路が記憶する情報に基づいて、未完の段階から再開する
ことを特徴とするプログラム更新方法。
【請求項９】
前記プログラムの複数のブロックを１つずつ順に変更する一連の書換えが前記第１電源からの電力供給の停止に伴って中断された場合には、前記第１電源からの電力供給が再開されたときに、前記複数のブロックのうちの書き換えられていない部分から書換えを再開する
請求項８記載のプログラム更新方法。
【請求項１０】
電子機器が有するコンピュータのためのコンピュータプログラムであって、
前記コンピュータによって実行されたときに、
第１電源による電力供給が行われる状態において、当該コンピュータプログラムの一部であるブロック差分データに基づいて書き換えるプログラム更新手段と、
前記第１電源による電力供給が行われる状態において、前記プログラム更新部による書換えの進行段階を示す情報を、第２電源およびメモリを有しかつ前記第２電源からの電力によって前記メモリに対するリードライト動作をするメモリ回路に記憶させる更新管理手段と、
前記第１電源による電力供給が停止した状態から電力供給が行われる状態になったときに、前記メモリ回路が記憶する情報を参照して、前記ブロックの書換えを未完の段階から再開するプログラム更新補助手段と、を前記コンピュータに実現させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに従う動作をする電子機器および電子機器に組み込まれたプログラムを更新する方法に関する。
【背景技術】
【０００２】
携帯電話機は、通話、電子メール送受、撮影、ウェブサイトのブラウジング、ゲームなどの多くの機能をもつ電子機器である。これら機能を実現するため、携帯電話機にはデータ量が５０〜１００Ｍバイトまたはそれ以上のプログラムが組み込まれている。一般に、プログラムの記憶には書換え可能な不揮発性メモリが用いられているので、組み込まれているプログラムを改良や修正をしたプログラムに更新することができる。
【０００３】
近年の携帯電話機は自動的にプログラムを更新する、いわゆるエアーダウンロード機能を有している。この機能は、サーバが配信する更新用のデータを無線通信によって受信し、不揮発性メモリが記憶するプログラムを受信したデータに基づいて部分的に書き換える。更新中はユーザによる操作が受け付けられず、操作の有無に係わらず更新のための処理が強制的に実行される。このため、ユーザへの配慮として、通常は携帯電話機の使用が統計的に少ない深夜の時間帯に更新が行われ、前もって電子メールによって更新の予定日時がユーザに通知される。
【０００４】
しかし、ユーザがプログラムの自動更新を途中で止めようとして携帯電話機から電池を取り外してしまうことがある。システムダウンによって自動更新が中止されると、その後に電池が装着されて電源が復帰しても携帯電話機が正常に動作しない場合が起こり得る。プログラムの一部が消失したり記憶状態が不安定になったりすることがその原因である。この場合のプログラムの復旧は販売店やサービスセンタにて行われる。
【０００５】
プログラムの自動更新に関して、書換えの前にプログラムをバックアップしておき、プログラムを記憶する不揮発性メモリ内に書換え中を示すフラグを設定してから書換えを開始する先行技術がある（特許文献１）。更新途中で電源が遮断されても、フラグは書換え中を示し続ける。電源復帰後にフラグがチェックされ、フラグが書換え中を示していれば、バックアップデータを用いて更新開始前のプログラムを記憶したメモリ状態が復元される。それによって更新のやり直しが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２１５８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の先行技術には、プログラムの書換え中か否かを示すフラグ自体を書き換える最中に電源が遮断された場合に、フラグのビット値が不安定になる問題がある。書換え中を示すべきものが書換え完了を示したり、逆に書換え完了を示すべきものがそうでなかったりすると、プログラムを正しく更新することができない。
【０００８】
本発明は、このような事情に鑑み、更新途中で電源が遮断されても電源復帰後に更新を完結させるプログラム更新機能の信頼性を高めることを目的としている。
【課題を解決するための手段】
【０００９】
上記目的を達成する電子機器は、プログラムに従う動作をする電子機器であって、第１電源によって電力を供給する電源回路と、第２電源およびメモリを有し、前記第２電源からの電力によって前記メモリに対するリードライト動作をするメモリ回路と、前記プログラムを記憶するプログラム記憶部と、前記プログラムの一部である少なくとも一つのブロックの変更内容を示す差分データを記憶する差分データ記憶部と、前記電源回路が電力を供給する状態において、前記ブロックを前記差分データに基づいて書き換えるプログラム更新部と、前記電源回路が電力を供給する状態において、前記プログラム更新部による書換えの進行段階を示す情報を前記メモリ回路に記憶させる更新管理部と、前記電源回路が電力を供給しない状態から供給する状態になったときに、前記メモリ回路が記憶する情報を参照して、前記ブロックの書換えを未完の段階から再開する更新補助部と、を備える。
【００１０】
上記目的を達成する方法は、電子機器に組み込まれたプログラムを部分的に変更するプログラム更新方法であって、前記電子機器が第１電源からの電力によって作動可能な状態において、前記プログラムの一部であるブロックを差分データに基づいて書き換えるとともに、書換えの進行段階を示す情報を第２電源およびメモリを有しかつ前記第２電源からの電力によって前記メモリに対するリードライト動作をするメモリ回路によって記憶し、前記第１電源からの電力供給の停止に伴って中断された前記プログラムの一部の書換えを、前記第１電源からの電力供給が再開されたときに、前記メモリ回路が記憶する情報に基づいて、未完の段階から再開する。
【００１１】
メモリ回路は第２電源からの電力によってリードライト動作をするので、プログラム更新部による書換えの進行段階を示す情報をメモリ回路内のメモリに書き込んでいる最中に第１電源による電力供給が停止しても、情報の書き込みに支障はない。書き込まれた情報は、メモリが不揮発性であるか第２電源により記憶状態が保たれるかしてメモリ回路内で保持される。第１電源による電力供給が再開されたとき、メモリ回路内の情報を参照することにより、プログラム更新部による書換えがどの段階まで終わったかを判断し、未完の段階から書換えを再開することができる。プログラム更新部による書換えを最初からやり直す必要はない。
【発明の効果】
【００１２】
本発明によれば、プログラムの更新の進行段階を正しく示す情報を記憶させることができるので、更新途中で電源が遮断されても電源復帰後に更新を完結させるプログラム更新機能の信頼性が高まる。
【図面の簡単な説明】
【００１３】
【図１】プログラム更新の手順の概要を示す図である。
【図２】書換え状態フラグと電源復帰後に行う処理との関係を示す図である。
【図３】携帯電話機のハードウェア構成を示す図である。
【図４】携帯電話機に内蔵されたＩＣチップのハードウェア構成を示す図である。
【図５】ＩＣチップにおけるファイル構造の一例を示す図である。
【図６】携帯電話機の要部の機能構成を示す図である。
【図７】電源復帰後の起動処理のフローチャートである。
【図８】更新の再開処理のフローチャートである。
【図９】メモリ復旧用バッファの準備処理のフローチャートである。
【図１０】差分反映バッファの準備処理のフローチャートである。
【図１１】差分書換え処理のフローチャートである。
【図１２】プログラム動作メモリ書換え処理のフローチャートである。
【図１３】ＩＣチップの動作を示すフローチャートである。
【図１４】書換え状態フラグと電源復帰後に行う処理との関係の他の例を示す図である。
【図１５】更新の再開処理の変形例のフローチャートである。
【発明を実施するための形態】
【００１４】
プログラムを更新する電子機器の一例として携帯電話機を挙げる。ただし、動作を制御するプログラムの組み込まれる電子機器であれば、以下に説明するプログラム更新機能は有用である。携帯電話機はプログラムの更新の内容を示すデータを無線通信によって取得する。無線通信機能を有していない電子機器においては、オンライン通信やリムーバブルメモリデバイスを用いる方法によって更新内容を示すデータの授受が行われる。
【００１５】
図１に示されるように、更新の対象となるプログラムは書換え可能なＲＯＭ１６のメモリ領域の一部であるプログラム格納領域６０に書き込まれている。携帯電話機の動作のほぼ全般がこのプログラムに従う。言い換えれば、プログラムは携帯電話機１の動作を制御する。プログラム更新はプログラム格納領域６０を占めるプログラムのうちの一部分を対象とするものであり、予め定められた一定データ量のアドレス空間を単位としてプログラム格納領域６０のビットデータを書き換える。以下では、プログラムのうち、書換えの１単位分のアドレス空間に書き込まれている部分を“ブロック”と呼称する。通常、更新は複数のブロックについて行われる。複数のブロックのうちの幾つかのアドレスが連続している場合もあれば、全てのブロックのアドレスが互いの間で連続していない場合もあり得る。いずれにしても１ブロックずつ順に更新される。
【００１６】
図１の例では３個のブロック６１，６２，６３が更新の対象である。ただし、実際には４個以上のブロックが対象となることが多い。３個のブロック６１，６２，６３のうち、１番目のブロック６１については既に更新が終わっており、２番目のブロック６２が現時点の更新対象である。３番目のブロック６３はブロック６２の更新が終わった後に書換えが予定されている次の更新対象である。
【００１７】
各ブロックの更新において、基本的には４段階の処理が行われる。図中、各段階が[１]、[２]、[３]、[４]で表わされている。
【００１８】
第１段階の処理[１]は、ＲＯＭ１６内にバックアップ用に設けられたメモリ復旧用バッファ６５に、プログラム格納領域６０から現在の更新対象である１個のブロック６２を複写する。
【００１９】
第２段階の処理[２]は、ＲＡＭ１７内に作業用メモリ領域として設けられた差分反映バッファ７５に、プログラム格納領域６０（またはメモリ復旧用バッファ６５）からブロック６２を複写する。
【００２０】
第３段階の処理[３]は、予めサーバから無線通信によりダウンロードされてＲＯＭ１６内のメモリ領域６４に格納されている差分データを差分反映バッファ７５のブロック６２に適用する。すなわち、差分反映バッファ７５においてプログラム格納領域６０への書込み用データ（書込みイメージ）を作成する。差分データは圧縮されているので、第３段階ではデータの伸長が行われる。
【００２１】
第４段階の処理[４]は、プログラム格納領域６０のブロック６２に代えて、差分反映バッファ７５内の書込み用データを記憶させる。すなわち、プログラム格納領域６０のブロック６２を書込み用データに書き換える。書換えが完了した時点でブロック６２についての更新が終わる。
【００２２】
これら４段階の処理の進行状況を管理するために書換え状態フラグ５が用いられる。書換え状態フラグ５の内容は、各段階の処理の開始時点および完了時点で更新される。書換え状態フラグ５を参照すれば、各ブロックの更新がどの段階まで進んだかが分かる。
【００２３】
本実施形態においては、書換え状態フラグ５は携帯電話機に内蔵されるＩＣチップ２内の不揮発性メモリ２６に記憶される。ＩＣチップ２に記憶させることにより、後述のように書換え状態フラグ５の信頼性が高まるので、ＲＯＭ１６に記憶させるのとは違って、複数のフラグを設けてフラグ状態の真偽を確認するといった複雑な制御が不要となる。
【００２４】
書換え状態フラグ５を記憶させるのは、複数のブロックを順に書き換える一連の更新の途中で主電源の電池による電力供給が停止する事態への対策である。一連の更新は電池の蓄電量が十分であることを確認してから開始されるので、更新途中で電力が不足することは通常は起こらないが、携帯電話機のユーザが電池を取り外す可能性がある。電力供給が停止すると、その時点で必然的に更新のための処理の実行が止まる。ＲＯＭ１６の内容は保持されるが、差分反映バッファ７５の内容は消失する。その後、電池が再び装着された主電源が復帰したとき、電源断で中断した更新を完結させなければプログラム格納領域６０内で新旧のプログラムが混在し、そのために携帯電話機の動作に支障の生じるおそれがある。そこで、書換え状態フラグ５が利用される。主電源が復帰したとき書換え状態フラグ５を参照すれば、更新を未完の段階から再開して完結させることができる。
【００２５】
図２は主電源が復帰したときに４段階のうちのどの段階から再開すればよいかを示す。書換え状態フラグ５が、「初期状態」または「メモリ復旧用バッファ書換え中」であれば、第１段階の前または途中で電源が遮断されたことを示すので、この場合は第１段階の処理[１]から再開する。書換え状態フラグ５が、「メモリ復旧用バッファ書換え完了」、「差分反映バッファ書換え中」、「差分反映バッファ書換え完了」、「差分書換え中」または「差分書換え完了」であれば、第２段階の処理[２]から再開する。そして、書換え状態フラグ５が「プログラム動作メモリ書換え中」であれば、第４段階の途中で電源が遮断されたことを示す。この場合はメモリ復旧用バッファ６５にバックアップしておいたブロック６２をプログラム格納領域６０に複写してプログラム格納領域６０を復旧する処理[５]を行った後に、再び処理[１]〜[４]を行う。ただし、メモリ復旧用バッファ６５にブロック６２が既にバックアップされているので、処理[２]を省略することができる。処理[２]を省略せずに処理[１]からやり直すのには、処理の管理を単純化することができるという利点がある。なお、復旧する処理[５]を行う理由は、処理[４]の途中での電源断によってプログラム格納領域６０におけるブロック６２に対応したデータが壊れている可能性があるからである。
【００２６】
以下、携帯電話機の構成をさらに詳しく説明する。
【００２７】
図３のように、携帯電話機１は通話や電子メールを含む種々の機能を実現する主要部である本体１Ａと、電子マネーに代表される付加機能に係るＩＣ（Integrated Circuit）チップ２を備える。ＩＣチップ２は、本体１Ａの回路基板に固定的に組み付ける形で携帯電話機１に内蔵されている。
【００２８】
本体１Ａは、ＣＰＵ１０、表示回路１１、無線通信回路１３、電源回路１４、上述のＲＯＭ１６、上述のＲＡＭ１７、非接触リードライタ１９、およびアクセスＬＥＤ（Light Emitting Diode）１９を備える。
【００２９】
ＣＰＵ１０は、ＲＯＭ１６に書き込むことで携帯電話機１に組み込まれているプログラムを実行し、携帯電話機１の動作を制御する。ＣＰＵ１０によって携帯電話機１の機能が実現される。携帯電話機１の機能には、プログラムの差分データを配信するサーバと通信してプログラムを自動的に更新する機能が含まれる。
【００３０】
表示回路１１は、液晶ディスプレイ１２を有し、待ち受け画面を含む各種の操作画面を表示する。プログラムの更新に関する表示には、前もって更新の日時を知らせるメッセージや更新中を知らせるメッセージの表示がある。
【００３１】
無線通信回路１３は、通話およびデータ通信における送受信を担う。プログラムの差分データは、無線通信回路１３によってサーバからダウンロードされる。
【００３２】
電源回路１４は、第１電源としての充電型の電池１５からの電力を、ＣＰＵ１０をはじめとする本体１Ａ内の電力消費要素に供給する。また、外部電源が接続されたときには、電源回路１４は電池１５を充電する。電池１５は本体１Ａに対して着脱可能である。これにより交換が容易であるものの、プログラムの更新動作中にユーザによって電池１５が取り外されてしまう事態が起こり得る。
【００３３】
ＲＯＭ１６は不揮発性のメモリデバイスである。本実施形態では、ＲＯＭ１６としてＮＯＲ型のフラッシュメモリが用いられている。これにより、ＣＰＵ１０はプログラムを実行するためにＲＯＭ１６からＲＡＭ１５へプログラムをロードすることなく、ＲＯＭ１６を直接にアクセスしてプログラムを実行することができる。すなわち、ＲＯＭ１６はいわゆるプログラム動作メモリである。ただし、ＮＡＮＤ型フラッシュメモリや他の不揮発性メモリデバイスをＲＯＭ１６に代えてプログラムの格納に用いることができる。
【００３４】
非接触リードライタ１９は、ＩＣチップ２にアクセスするためのインタフェースである。ＣＰＵ１０がＩＣチップ２にアクセスしているときアクセスＬＥＤ１９が点灯する。プログラムの更新に際しては、書込み状態フラグ５を逐次書き換えるために頻繁にアクセスされる。一般に、多くのユーザがアクセスＬＥＤ１９が点灯しているときには操作を控えた方がよいとの認識をもっている。このことから、プログラムの更新中のアクセスＬＥＤ１９の点灯は、ユーザによる電池１５の取り外しを抑制する効果をもつ。
【００３５】
一方、ＩＣチップ２は、図４のように、ＣＰＵ２０、誘導電流発電部２４、蓄電部２５、不揮発性メモリ２６、および非接触リードライタ２８を備える。ＩＣチップ２は、第２電源としての蓄電部２５からの電力によってリードライト動作をするメモリ回路である。ＩＣチップ２には、本体１Ａおよび携帯電話機１の付加サービスに係る外部機器からデータの読出しまたは書込みを要求するコマンドが入力される。
【００３６】
ＣＰＵ２０は、非接触リードライタ２８を介して受けたアクセス要求に応えて、不揮発性メモリ２６にアクセスするリードライト動作の制御に特化した制御プログラムを実行する。アクセスに必要な電力は蓄電部２５から供給される。
【００３７】
蓄電部２５は、本体１Ａでの通電を利用して発電する誘導電流発電部２４によって充電される。ＣＰＵ２０が不揮発性メモリ２６にアクセスしている間だけ電力を供給できれば、記憶しているデータの信頼性が保てる。したがって、蓄電部２５の容量は本体１Ａでの通電が停止しても例えば数秒程度だけアクセスを可能にするだけの容量でよい。
【００３８】
ＩＣチップ２の不揮発性メモリ２６には、図５のように電子マネー用ファイル４およびプログラム更新のための書換え状態フラグファイル５が記憶される。電子マネー用ファイル４は、付加機能である電子マネー決済のためのファイルであり、残高や取引履歴などを示す。ＩＣチップ２が携帯電話機１に内蔵される重要な目的は、この電子マネー用ファイル４のような付加機能に係るデータを安全に記憶することである。付加機能を有する携帯電話機はＩＣチップを内蔵するので、付加機能のためのＩＣチップを利用して書換え状態フラグファイル５を記憶することにより、部品点数を増やすことなくプログラム更新の信頼性を高めることができる。
【００３９】
図６は携帯電話機１におけるプログラムの更新に関係する機能構成を示している。図６のように、携帯電話機１の本体１Ａは、エアーダウンロード部１０１、プログラム管理部１０２、および通信部１０３を有している。これらは、ＣＰＵ１０が制御プログラムを実行することによって実現される機能要素である。この制御プログラムも、ＲＯＭ１６におけるプログラム記憶部としての上述したプログラム格納領域６０に書き込まれている。また、ＩＣチップ２は通信部２０３を有している。これはＣＰＵ２０が制御プログラムを実行することによって実現される機能要素である。
【００４０】
エアーダウンロード部１０１は、無線通信回路１３を制御してプログラムの更新内容を示す差分データを外部のサーバから取得し、差分データ記憶部としての上記メモリ領域６４（図１参照）に記憶させる。
【００４１】
プログラム管理部１０２は、プログラムの実行を総括的に管理する。プログラム管理部１０２は、更新部１２１、更新管理部１２２、および更新補助部１２３を有する。プログラム更新部１２１は、電池１５が装着されて電源回路１４が電力を供給する状態において、更新対象のブロック６１，６２，６３をそれぞれ差分データに基づいて書き換える。更新管理部１２２は、電源回路１４が電力を供給する状態において、プログラム更新部１２１による書換えの進行段階を示す情報である書換え状態フラグファイル５をＩＣチップ２に記憶させる。すなわち、書換え状態フラグファイル５の更新を更新管理部１２２が担う。更新補助部１２３は、電源回路１４が電力を供給しない状態から供給する状態になったとき、例えば外された電池１５が装着位置に戻されたときに、ＩＣチップ２が記憶するその時点の書換え状態フラグファイル５を参照して、ブロック６１，６２，６３の書換えを未完の段階から再開する。
【００４２】
本体１Ａの通信部１０３およびＩＣチップ２の通信部２０３は、書換え状態フラグファイル５へのアクセスに係るコマンドやデータの送受を制御する。
【００４３】
以下、フローチャートを参照して、プログラムの更新機能に係る携帯電話機１の動作を説明する。
【００４４】
放電状態の電池１５が充電されるか、または装着されていなかった電池１５が装着されて電力供給が始まると、図７の起動処理がプログラム管理部１０２により実行される。
【００４５】
まず、更新管理部１２２は、通信部１０３と連携してＩＣチップ２にアクセスし、書換え状態フラグファイル５の内容を取り込む。詳しくは、ファイルＩＤを“書換え状態フラグ”としたファイル選択コマンドを送る（＃１０）。ファイルを選択した旨の応答を待って、読出しコマンドを送る（＃１１、＃１２）。
【００４６】
次に更新管理部１２２は、ＩＣチップ２から読み出された書換え状態フラグファイル５の内容を分析する（＃１３）。書換え状態フラグが更新中を示すものでなければ、プログラム管理部１０２によって通常起動処理が実行される（＃２０）。これによりディスプレイ１２に待ち受け画面が表示される。一方、書換え状態フラグが更新中を示す場合は、プログラム更新の途中で電力供給が停止した場合である。この場合は、更新補助部１２３に処理が引き継がれる。
【００４７】
更新補助部１２３は、復旧が不要か否かをチェックする（＃１４）。具体的には書換え状態フラグが「プログラム動作メモリ書換え中」（図２参照）であるか否かをチェックする。復旧が必要であれば、更新補助部１２３はメモリ復旧用バッファ６５にバックアップされているブロックをプログラム格納領域６０の所定位置に複写する復旧処理（上述の処理[５]）を行う（＃１５）。復旧が不要である場合は、更新補助部１２３は更新の再開処理を実行する（＃１６）。更新の再開処理は、更新が中断された時点の現在の更新対象である１個のブロックについて、未完の段階から更新を再開して当該ブロックの更新を終える処理である。詳細は後述する。更新の再開処理が終わると、更新補助部１２３からプログラム更新部１２１へ処理が引き継がれる。
【００４８】
処理を引き継いだプログラム更新部１２１は、更新の完結処理を実行する（＃１７）。この処理は、更新すべきで且つ未処理のブロックがある場合に、そのブロックについての更新のための処理[１]〜[４]を実行して複数のブロックを対象とした一連の更新を完結させる処理である。
【００４９】
更新の完結処理が終わると、更新管理部１２２によって書換え状態フラグファイル５の初期化が行われ（＃１８）、プログラム管理部１０２によって再起動処理が実行される（＃１９）。
【００５０】
図８のように、更新の再開処理においては、書換え状態フラグファイル５の内容に応じて、処理[１]〜[４]のうちの未完の処理が行われる。書換え状態フラグファイル５の内容と行うべき処理との関係は図２を参照して説明したとおりである。
【００５１】
図９は処理[１]であるメモリ復旧用バッファの準備処理の手順を示す。メモリ復旧用バッファの準備処理は図７における＃１６の更新の再開処理の一部として更新補助部１２３および更新管理部１２２により、または＃１７の更新の完結処理の一部としてプログラム更新部１２１および更新管理部１２２により実行される。
【００５２】
更新補助部１２３または更新管理部１２２により１個のブロックがプログラム格納領域６０からメモリ復旧用バッファ６５へ複写される（＃４５）。これに先立って、更新管理部１２２は、ＩＣチップ２にアクセスして書換え状態フラグファイル５を「メモリ復旧用バッファ書換え中」に設定する（＃４１〜＃４４）。また、ブロックの複写が終わるのに呼応して、更新管理部１２２は、書換え状態フラグファイル５を「メモリ復旧用バッファ書換え完了」に設定する（＃４６〜＃４８）。更新管理部１２２は、ＩＣチップ２にコマンドを送ると、次にコマンドを送る前に必ずＩＣチップ２からの応答の有無を確認し、正常応答の通知を受けてから次のコマンドを送る。これにより、本体１Ａでの更新の進行段階とＩＣチップ２における書換え状態フラグファイル５が示す進行段階とをより確実に一致させることができる。
【００５３】
図１０は処理[２]である差分反映バッファの準備処理の手順を示す。差分反映バッファの準備処理は図７における＃１６の更新の再開処理の一部として更新補助部１２３および更新管理部１２２により、または＃１７の更新の完結処理の一部としてプログラム更新部１２１および更新管理部１２２により実行される。
【００５４】
更新補助部１２３または更新管理部１２２により１個のブロックがプログラム格納領域６０からＲＡＭ１７の差分反映バッファ７５へ複写される（＃５５）。これに先立って、更新管理部１２２は、ＩＣチップ２にアクセスして書換え状態フラグファイル５を「差分反映バッファ書換え中」に設定する（＃５１〜＃５４）。また、ブロックの複写が終わるのに呼応して、更新管理部１２２は、書換え状態フラグファイル５を「差分反映バッファ書換え完了」に設定する（＃５６〜＃５８）。このルーチンにおいても更新管理部１２２は、ＩＣチップ２にコマンドを送ると、次にコマンドを送る前に必ずＩＣチップ２からの応答の有無を確認し、正常応答の通知を受けてから次のコマンドを送る。
【００５５】
図１１は処理[３]である差分書換え処理の手順を示す。差分書換え処理は図７における＃１６の更新の再開処理の一部として更新補助部１２３および更新管理部１２２により、または＃１７の更新の完結処理の一部としてプログラム更新部１２１および更新管理部１２２により実行される。
【００５６】
更新補助部１２３または更新管理部１２２により、メモリ領域６４内の差分データに基づいて、差分反映バッファ７５において書換え用のデータ（書換えイメージ）を作成する差分書換えが行われる（＃６５）。これに先立って、更新管理部１２２は、ＩＣチップ２にアクセスして書換え状態フラグファイル５を「差分書換え中」に設定する（＃６１〜＃６４）。また、差分書換えが終わるのに呼応して、更新管理部１２２は、書換え状態フラグファイル５を「差分書換え完了」に設定する（＃６６〜＃６８）。このルーチンにおいても更新管理部１２２は、ＩＣチップ２にコマンドを送ると、次にコマンドを送る前に必ずＩＣチップ２からの応答の有無を確認し、正常応答の通知を受けてから次のコマンドを送る。
【００５７】
図１２は処理[４]であるプログラム動作メモリ書換え処理の手順を示す。プログラム動作メモリ書換処理は図７における＃１６の更新の再開処理の一部として更新補助部１２３および更新管理部１２２により、または＃１７の更新の完結処理の一部としてプログラム更新部１２１および更新管理部１２２により実行される。
【００５８】
更新補助部１２３または更新管理部１２２により、、差分反映バッファ７５内の書換え用のデータがＲＯＭ１６のプログラム格納領域６０における現在の更新対象のブロックを記憶する位置に上書きする形で複写される（＃７５）。これに先立って、更新管理部１２２は、ＩＣチップ２にアクセスして書換え状態フラグファイル５を「プログラム動作メモリ書換え中」に設定する（＃７１〜＃７４）。また、複写が終わるのに呼応して、更新管理部１２２は、書換え状態フラグファイル５を「プログラム動作メモリ書換え完了」に設定する（＃７６〜＃７８）。このルーチンにおいても更新管理部１２２は、ＩＣチップ２にコマンドを送ると、次にコマンドを送る前に必ずＩＣチップ２からの応答の有無を確認し、正常応答の通知を受けてから次のコマンドを送る。
【００５９】
図１３はＩＣチップ２の動作を示す。ＩＣチップ２はＣＰＵ２０により実現される機能要素としてコマンド受信部とファイル管理部とコマンド送信部とを有する。コマンド受信部が非接触リードライタ２８を介して受けたコマンドを分析し、ファイル管理部がコマンドに応じて不揮発性メモリ２６を制御し、コマンド送信部が応答通知を送信する。
【００６０】
分析したコマンドがファイル選択（SELECT-FILE）であれば、コマンドに付加されるファイルＩＤに従って、不揮発性メモリ２６における該当ファイルの先頭アドレスにメモリアクセスポイントを設定する（＃９１、＃９２、＃９３、＃９４）。そして、ファイルへのアクセスが可能な状態である旨を通知する（＃９５）。
【００６１】
分析したコマンドがファイル更新（UPDATE）である場合は、ファイル選択の状態をチェックする（＃９６、＃９７）。ファイルへのアクセスが可能な状態でなければ、異常である旨を通知する（＃９８）。ファイルへのアクセスが可能な状態であれば、コマンドに付加されたデータを不揮発性メモリ２６にメモリアクセスポイントから書き込む（＃９９）。そして、書き込みが完了した旨を通知する（＃１００）。
【００６２】
分析したコマンドが読出し（READ）である場合も、ファイル選択の状態をチェックする（＃１０１、＃１０２）。ファイルへのアクセスが可能な状態でなければ、異常である旨を通知する（＃１０３）。ファイルへのアクセスが可能な状態であれば、コマンドに付加されたデータを不揮発性メモリ２６のメモリアクセスポイントから順にデータを読み出す（＃１０４）。そして、読み出したデータを要求元へ送る（＃１０５）。
【００６３】
分析したコマンドがファイル選択、ファイル更新および読出しのいずれでもない他のコマンドであれば、そのコマンドに応じた処理をする（＃１０６）。
【００６４】
上述の実施形態においては、書換え状態フラグファイル５を処理の進行に合わせて逐次に変更するので、一連の更新の対象である複数のブロックの全てをバックアップしておく必要がなく、１つのブロックのみをバックアップしておけばよい。このことは、ＲＯＭ１６の必要容量の低減に貢献する。
【００６５】
上述の実施形態では、差分反映バッファ７５を揮発性のＲＡＭ１７に設けたが、不揮発性メモリに差分反映バッファ７５を設けて書込みイメージを作成する場合には、電源復帰後に行う処理と書込み状態フラグ５の内容の関係は図１４のようになる。この場合における更新の再開の手順は図１５に示される。
【符号の説明】
【００６６】
１    携帯電話機（電子機器）
２    ＩＣチップ（メモリ回路）
１４    電源回路
１５    電池（第１電源）
２５    蓄電部（第２電源）
２６    不揮発性メモリ
６０    プログラム格納領域（プログラム記憶部）
６４    メモリ領域（差分データ記憶部）
１２１    プログラム更新部
１２２    更新管理部
５    書換え状態フラグファイル（書換えの進行段階を示す情報）
１２３    更新補助部
６１，６２，６３    ブロック
６５    メモリ復旧用バッファ（復旧用記憶部）
７５    差分反映バッファ（作業用メモリ領域）
１０１    エアーダウンロード部（ダウンロード部）
【図１】
2010225012.tif 000003
【図２】
2010225012.tif 000004
【図３】
2010225012.tif 000005
【図４】
2010225012.tif 000006
【図５】
2010225012.tif 000007
【図６】
2010225012.tif 000008
【図７】
2010225012.tif 000009
【図８】
2010225012.tif 000010
【図９】
2010225012.tif 000011
【図１０】
2010225012.tif 000012
【図１１】
2010225012.tif 000013
【図１２】
2010225012.tif 000014
【図１３】
2010225012.tif 000015
【図１４】
2010225012.tif 000016
【図１５】
2010225012.tif 000017