(57)【要約】【課題】ソフトウェアを外部に待避することなく更新処理を行うことができ、更新処理の失敗時にも、端末の使用が長時間制限されることのないようにする。【解決手段】本体プログラム＃１、＃２を保持するメモリ領域２１ｂ，２１ｄを２面設ける。本体プログラムのバージョンアップ等のためのソフト更新時には１面の本体プログラムを更新対象としてソフト更新処理を実行する。この更新失敗時には、他面の本体プログラムを用いて移動端末装置の動作を行うことができる。また、他面の本体プログラムを更新対象として、ソフト更新を再度実行することができる。【選択図】図４
2007189332.tif 000002
【特許請求の範囲】
【請求項１】
通信機能を有する移動端末装置のソフトウェア更新方法であって、
不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、
ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、
前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、
前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データにより当該本体プログラムを更新し、
更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、
更新が失敗したとき、更新失敗を示すフラグを設定し、
次の装置起動時に前記更新失敗を示すフラグを認識して、前記更新対象とした本体プログラムの他方の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とするソフトウェア更新方法。
【請求項２】
通信機能を有する移動端末装置のソフトウェア更新方法であって、
不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、
ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、
前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、
前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、
更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、
更新が失敗したとき前記作業用メモリ領域内の更新エンジン内に含めたダウンロード機能により他方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、
前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、
更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とするソフトウェア更新方法。
【請求項３】
通信機能を有する移動端末装置のソフトウェア更新方法であって、
不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、
ソフトウェア更新時に前記第１および第２のメモリ領域内のいずれかの本体プログラムを用いて、両方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの両差分データをダウンロードし、
前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、
前記作業用メモリ領域内の更新エンジンを実行して、一方の差分データで当該本体プログラムを更新し、
更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、
更新が失敗したとき、前記作業用メモリ領域内の更新エンジンを実行して、他方の差分データで当該本体プログラムを更新し、
更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とするソフトウェア更新方法。
【請求項４】
前記更新エンジンに発信・着信を含む基本電話機能を含ませることを特徴とする請求項３記載のソフトウェア更新方法。
【請求項５】
通信機能を有する移動端末装置であって、
ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を有する不揮発性メモリと、
作業用メモリと、
前記不揮発性メモリおよび作業用メモリにアクセスする制御手段とを備え、
前記制御手段は、ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき、更新失敗を示すフラグを設定し、次の装置起動時に前記更新失敗を示すフラグを認識して、前記更新対象とした本体プログラムの他方の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とする移動端末装置。
【請求項６】
通信機能を有する移動端末装置であって、
ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を有する不揮発性メモリと、
作業用メモリと、
前記不揮発性メモリおよび作業用メモリにアクセスする制御手段とを備え、
前記制御手段は、ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行して、前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき前記作業用メモリ領域内の更新エンジン内に含めたダウンロード機能により他方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記作業用メモリ領域内の更新エンジンを実行して、前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とする移動端末装置。
【請求項７】
通信機能を有する移動端末装置であって、
ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を有する不揮発性メモリと、
作業用メモリと、
前記不揮発性メモリおよび作業用メモリにアクセスする制御手段とを備え、
前記制御手段は、ソフトウェア更新時に前記第１および第２のメモリ領域内のいずれかの本体プログラムを用いて、両方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの両差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行して、一方の差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき、前記作業用メモリ領域内の更新エンジンを実行して、他方の差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択する
ことを特徴とする移動端末装置。
【請求項８】
前記更新エンジンに発信・着信を含む基本電話機能を付加したことを特徴とする請求項６または７に記載の移動端末装置。
【請求項９】
前記第１および第２のメモリ領域内の両本体プログラムが有効である場合、ユーザにいずれかの本体プログラムを選択させる手段を備えたことを特徴とする請求項６または７に記載の移動端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信機能を有する移動端末装置およびそのソフトウェア更新方法に関するものである。
【背景技術】
【０００２】
現在、移動端末装置の一種である携帯電話機は、通話、電子メール、ウェブ閲覧、個人情報管理、メモ、カメラ撮影、等種々の機能を有し、多くのユーザにより携帯されている。また、最近ではラジオやテレビの放送受信、音楽再生等の機能を搭載した機種まで現れている。
【０００３】
このような機能の多寡によらず、すべての携帯電話機はコンピュータプログラム（広義にはソフトウェア）により制御されている。そのようなコンピュータプログラムは、携帯電話機に内蔵されたメモリ内に不揮発的に格納されている。
【０００４】
ソフトウェア（以下、単にソフトともいう）は、バグと呼ばれる不具合を修正したり、機能の追加や改善を行ったりするためにバージョンアップが行われるのが一般的である。
【０００５】
通常、電子機器のソフトウェアの更新は、新しいバージョンのソフトウェアを記録した媒体から当該ソフトウェアを電子機器内にインストールしたり、内蔵ＲＯＭを交換したりすることにより行われるが、コンピュータの知識のないユーザも多い携帯電話機では、ユーザにそのような作業を行わせることができない。
【０００６】
そのため最近では、携帯電話機のソフトウエアをＯＴＡ（Ｏｖｅｒ  Ｔｈｅ  Ａｉｒ）で書き換える機能が搭載された機種が販売されている。「ＯＴＡで」とは、携帯電話機の通信機能を利用して、無線でという意味である。これにより、ユーザや販売店等に特別の負担を掛けることなく、ソフトウェアの更新を行うことができる。具体的には、ソフトウェアの書き換えは、バージョンアップソフトと携帯電話機の本体プログラムの差分ファイルをダウンロードし、その差分のみ携帯電話機本体のソフトを更新する方法で実現されている。
【０００７】
従来、ソフト更新機能の実装にあたり種々の問題点が存在した。例えば、ソフト更新実行開始後は、本体プログラムの書き換えが実施されるので、更新が成功した場合は新しいバージョンとして携帯電話機は機能するが、更新に失敗した場合携帯電話機は電源ＯＮすることもできなくなる。すなわち、メモリデバイス不良や書き込み失敗によりソフト更新が失敗すると、復旧できなくなる。復旧させる為には従来のシリアルケーブル経由でのソフトロードを実行する必要があり、一般ユーザでは実行が困難となる。
【０００８】
ファームウェアにより動作を制御する電子機器においては、外部接続インタフェースを介して受信したファームウェアの更新データによりプログラムを更新する際、更新処理失敗時に破壊や消失したプログラムを即時に元の機能が利用できる状態に復旧させるために、更新対象プログラムオブジェクトを外部サーバへ待避させ、更新処理後に、処理に失敗した場合に、待避させておいた更新前オブジェクトを外部サーバから受信し、ＲＯＭに書き戻す技術が提案されている（特許文献１参照）。
【０００９】
また、各々、ソフトウェア更新プログラムを格納した二つの領域における両更新プログラムの一方が、応用ソフトウェアと他方の更新プログラムを所定の通信手段経由のダウンロードにより更新する端末装置において、予期せぬ停止で更新が失敗したり、更新でダウンロードした新しいプログラムに障害があっても、更新処理を行った側の古い更新プログラムが無傷で残るため再度起動時等にこれにより更新をやり直すことができる技術が提案されている（特許文献２参照）。
【特許文献１】特開２００５−２３５１１０号公報
【特許文献２】特開２００５−２８４９０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記特許文献１に記載の技術では、更新が失敗したときに、先に待避されたプログラムが書き戻されるまでは、一時的に端末内に正常なプログラムが存在しない状態となり、携帯電話機のような端末装置においては好ましくない。
【００１１】
また、上記特許文献２に記載の技術では、更新プログラムは二重に用意されているが、同文献中で「応用ソフトウェア」と呼ばれている端末装置の機能を実現するためのプログラム自体は単体でしか用意されていない。そのため、応用ソフトウェアの更新処理が失敗してその記憶領域が障害を受けたような場合、再度の更新処理が成功するまでは装置動作が全く行えないという問題がある。
【００１２】
本発明はこのような背景において、ソフトウェアを外部に待避することなく更新処理を行うことができ、更新処理の失敗時にも、端末の使用が長時間制限されることのない、通信機能を有する移動端末装置のソフトウェア更新方法および端末装置を提供しようとするものである。
【課題を解決するための手段】
【００１３】
本発明によるソフトウェア更新方法は、通信機能を有する移動端末装置のソフトウェア更新方法であって、不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき、更新失敗を示すフラグを設定し、次の装置起動時に前記更新失敗を示すフラグを認識して、前記更新対象とした本体プログラムの他方の本体プログラムを現用の本体プログラムとして選択することを特徴とする。
【００１４】
この構成により、第１および第２のメモリ領域の一方の本体プログラムについてのソフトウェア更新が失敗したときには、他方の本体プログラムを用いて移動端末装置の動作を行うことができる。そのために、新たに本体プログラムを外部から読み込む必要はない。ソフトウェア更新は新旧バージョンの差分データをダウンロードして行うので、本体プログラム全体の書き換えに比べてデータ量が少なく、通信および更新処理に要する時間が短くて済む。
【００１５】
本発明による第２のソフトウェア更新方法は、通信機能を有する移動端末装置のソフトウェア更新方法であって、不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、ソフトウェア更新時に、一方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき前記作業用メモリ領域内の更新エンジン内に含めたダウンロード機能により他方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードし、前記作業用メモリ領域内の更新エンジンを実行することによって前記差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択することを特徴とする。
【００１６】
この構成では、更新が失敗したとき前記作業用メモリ領域内の更新エンジン内に含めたダウンロード機能により他方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの差分データをダウンロードすることにより、一方のメモリ領域での本体プログラムの更新が失敗しても他方のメモリ領域での本体プログラムの更新を連続して行うことができる。
【００１７】
本発明による第３のソフトウェア更新方法は、通信機能を有する移動端末装置のソフトウェア更新方法であって、不揮発性メモリ内に、各々、ソフトウェア更新のための更新エンジンを含む本体プログラムを格納する第１および第２のメモリ領域を設け、ソフトウェア更新時に前記第１および第２のメモリ領域内のいずれかの本体プログラムを用いて、両方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの両差分データをダウンロードし、前記第１および第２のメモリ領域の一方の更新エンジンを作業用メモリ領域に展開し、前記作業用メモリ領域内の更新エンジンを実行して、一方の差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択し、更新が失敗したとき、前記作業用メモリ領域内の更新エンジンを実行して、他方の差分データで当該本体プログラムを更新し、更新が成功したとき当該更新後の本体プログラムを現用の本体プログラムとして選択することを特徴とする。
【００１８】
この構成では、ソフトウェア更新時に前記第１および第２のメモリ領域内の両方の本体プログラムのバージョンと新たな本体プログラムのバージョンとの両差分データをダウンロードするので、一方の差分データによる当該本体プログラムの更新が失敗したとき、他方の差分データを新たにダウンロードすることなく、直ちに他方の本体プログラムの更新に行うことができる。これは特に第１および第２のメモリ領域内の本体プログラムのバージョンが異なる場合に有用である。
【００１９】
上記いずれかのソフトウェア更新方法において、前記更新エンジンに発信・着信を含む基本電話機能を含ませるようにすれば、更新処理の途中においても端末装置の利用が可能となる。
【００２０】
本発明はまた、上記各ソフトウェア更新方法を実施する移動端末装置を提供する。
【発明の効果】
【００２１】
本発明によれば、本体プログラムを格納するメモリ領域を二重化することにより、更新対象の本体プログラムを外部に待避することなく更新処理を行うことができ、更新処理の失敗時にも、更新対象としなかった方の本体プログラムを用いて移動端末装置の動作を行うことができる。したがって、端末の使用が長時間制限されることがない。また、更新対象としなかった方の本体プログラムについて、再度、更新処理を行うことができる。
【００２２】
一方の本体プログラムの更新が成功した場合であっても、更新対象としなかった他方の本体プログラムが有効であれば、ユーザに、当該他方の本体プログラムを現用の本体プログラムとして選択させることも可能となる。
【００２３】
更新エンジンに発信・着信を含む基本電話機能を含ませるようにすれば、更新処理の途中においても端末装置の利用が可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
【００２５】
図１は、本発明の実施の形態に係る携帯電話機の概略のハードウェア構成を示している。
【００２６】
携帯電話機１０は、制御部１１、音声処理部１２、マイク１３、スピーカ１４、記憶部１５、通信部１６、アンテナ１７、操作部１８、表示部１９を備える。
【００２７】
制御部１１は、ＣＰＵやＤＳＰなどのプロセッサを有し、携帯電話機１０の各部の制御を司る。音声処理部１２は制御部１１の制御下で通話や音楽再生等の音声処理を行い、マイク１３からの音声入力、スピーカ１４への音声出力を行う。記憶部１５は、プログラムやデータを記憶する部位であり、本実施の形態では第１フラッシュ（Ｆｌａｓｈ）メモリ１５ａ、ＲＡＭ１５ｂ、第２フラッシュメモリ１５ｃを有する。第１フラッシュメモリ１５ａは、制御部１１が実行するプログラムを格納する再書き込み可能な不揮発性メモリである。ＲＡＭ１５ｂはプログラムやデータを一時的に格納し、制御部１１により利用されるメモリである。本実施の形態ではＲＡＭ１５ｂは、後述するように第１フラッシュメモリ１５ａ内のプログラムの更新時に、第１フラッシュメモリ１５ａ内の更新プログラムをＲＡＭ１５ｂ内にコピーしてこれを実行するために利用される。第２フラッシュメモリ１５ｃは、電話帳、電子メール、ウェブコンテンツ、音楽、画像、等の各種のデータを格納する再書き込み可能な不揮発性メモリである。通信部１６は、制御部１１の制御下で、アンテナ１７を介して基地局（図示せず）と無線による送受信を行う部位である。操作部１８は、テンキーや各種の制御キー、ジョグダイヤル等を有し、ユーザによる指示や情報を制御部１１に入力する機能を有する。表示部１９は、例えばＬＣＤ、有機ＥＬ等の表示デバイスを有し、ユーザに対してテキスト、画像（静止画、動画）等の可視情報を表示する機能を有する。
【００２８】
図２に、第１フラッシュメモリ１５ａのメモリ構成を示す。携帯電話機に実装されるプログラムはこの第１フラッシュメモリ１５ａに格納され、そのメモリ空間２１内のメモリアドレスの先頭のブート領域（Boot Area)２１ａにはブート（Ｂｏｏｔ）と呼ばれる電源投入時（起動時）に処理されるコードが格納される。また、ブート領域２１ａに続く領域２１ｂには本体プログラムが格納される。フラッシュメモリには、領域２１ｂに続く予備の領域２１ｃがあってもよい（但し、以降の図では特に図示しないが、同様である）。通常、Ｂｏｏｔ処理から本体プログラムに処理が分岐され、携帯電話機の動作が開始される。ソフト更新では本体プログラムの部分が更新(書き換え)対象となっている。「本体プログラム」とは、本実施の形態では、携帯電話機の出荷時に内蔵メモリ内に予め格納してあるプログラムであり、販売後にユーザが追加するアプリケーションプログラムのようなソフトウェアは含まない。
【００２９】
また、ソフト更新における、本体プログラムの書き換えはブロック単位で行う。その際、あるブロックでデバイス不良や、書き込み失敗といった現象が発生した場合、本体プログラム自体が更新途中であるブロックが存在し、実行不能といった状態に陥る。例えば、図２の例では、ブロック１、ブロック２は正常に更新が完了したが、ブロック３で書き換えが失敗した場合を示している。このとき、本体プログラムはブロック３の実行中に暴走することになる。
【００３０】
図３に示すように、ソフト更新エンジン部分は本体プログラムの一部として実装されている。すなわち、ソフト更新に先だって、フラッシュメモリ内の本体プログラムの一部である更新ソフトとしての更新エンジンを、一旦、ＲＡＭ内にコピーし、このＲＡＭ内の領域内の更新エンジンを実行することによりソフト更新を実現する。例えば、バージョンＶ１．０からＶ１．２への更新を実行する場合は、Ｖ１．０→Ｖ１．２への差分ファイルをダウンロードし更新エンジンをＲＡＭ上に展開してソフト更新を実行する。
【００３１】
本実施の形態では、図４（ａ）に示すように、携帯電話機の本体プログラムの記憶領域を２面（領域２１ｂと領域２１ｄ）持つことにより、ソフト更新失敗時の復旧を可能とする。すなわち、メモリ領域の２面化を実施した場合、本体プログラムのためのメモリ容量は２倍必要になるが、ソフト更新に失敗した場合、更新されていない領域を使用して更新前の本体プログラムの起動が可能となる。領域２１ｂ，２１ｄに格納される本体プログラム＃１，＃２は当初は同じバージョンのものであるが、更新に伴って、両者のバージョンが異なってくる場合がありうる。
【００３２】
ソフト更新処理によりプログラム＃１の処理に失敗したことは把握できるので、プログラム＃１の処理に失敗した場合はフラグ（更新失敗フラグ）をセットし、図４（ｃ）に示すように、Ｂｏｏｔ処理にて当該更新失敗フラグを参照して本体プログラム＃２へジャンプするように実装する。フラグの記憶領域は利用可能な任意の不揮発的な記憶領域に設けることができる。このような構成により、ソフト更新が失敗した場合でも携帯電話機として正常に使用することが可能となる。すなわち、この例では、更新失敗フラグのセットにより、以降、本体プログラム＃２を現用の本体プログラムとして選択することができる。初期的には、更新失敗フラグはリセットされており、本体プログラム＃１が現用の本体プログラムとなる。
【００３３】
なお、ソフト更新の契機は、通信事業者等から携帯電話機へのソフト更新の通知またはユーザ操作による携帯電話機から通信事業者等への問合せによりソフト更新有りの返答があった場合である。前者の場合、自動的にまたはユーザの確認を条件として、ソフト更新処理が起動される。また、後者の場合には、ユーザの指示に従ってソフト更新処理が起動される。
【００３４】
図５に、本実施の形態におけるソフト更新時の処理フローを示す。
【００３５】
まず、サーバから更新用差分データをダウンロードする（Ｓ１１）。この場合、携帯電話機に現在格納されている本体プログラムのバージョン情報をサーバへ送り、このバージョンから更新先のバージョンへの差分データを特定する。後述するように、２面のバージョンが異なる場合には、その一方のバージョンについてのみ差分データをダウンロードする態様と、両方のバージョンについての差分データをダウンロードする態様がありうる。いずれの態様を採用するかは予め定めておいてもよいし、ユーザが選択できるようにしてもよい。いずれか一方のバージョンのみ差分データをダウンロードする場合、新旧いずれのバージョンを更新の対象とするかは、所定の条件にしたがって予めいずれかに定めておいてもよいし、ユーザが選択できるようにしてもよい。
【００３６】
ダウンロードが終わったら、携帯電話機を一旦リセットし、ついでブート処理にて更新用ファイル（上記差分データ）が存在するかを確認する（Ｓ１２）。これは、更新ファイルそのものの存在のチェック、フラグの設定およびチェック、等によって行うことができる。
【００３７】
更新用ファイルが存在する場合には、第１フラッシュメモリ１５ａ内のいずれかの本体プログラム内の更新処理エンジンをＲＡＭ１５ｂ上に展開する（Ｓ１３）。そこで、制御を本体プログラムからＲＡＭ上の更新処理エンジンに移し、ＲＡＭ上で更新処理を起動し（Ｓ１４）、ソフト更新処理を実行する（Ｓ１５）。
【００３８】
携帯電話機の本体プログラムは、不具合等の修正が必要となる毎にバージョンアップされていく。本実施の形態では、サーバにはソフト更新用に差分ファイルのみが置かれる。このように差分ファイルの更新を実行することでダウンロードするファイルサイズが小さくなり、その結果、ダウンロード時間およびソフト更新時間が短くて済む。例えば、ファイルサイズの目安としては本体プログラム３２Ｍバイトに対して、差分ファイル５１２Ｋバイト程度で本体プログラムの更新が可能となる。
【００３９】
ここで、例えば本体プログラムがＶ１．０から、Ｖ１．１へ、さらにＶ１．２へとバージョンアップされていると仮定する。この場合、サーバには下記３つのファイルが置かれる。
Ｖ１．０→Ｖ１．１への差分ファイル（１）
Ｖ１．０→Ｖ１．２への差分ファイル（２）
Ｖ１．１→Ｖ１．２への差分ファイル（３）
【００４０】
携帯電話機の出荷ソフトバージョンがＶ１．０であり、図６に示すように、携帯電話機に保持されている本体プログラムのバージョンも２面ともＶ１．０であった場合、携帯電話機は最新ソフトであるＶ１．２への差分ファイル（３）を１面にダウンロードしてソフト更新を実行する。
【００４１】
次にソフトウェアＶ１．３がリリースされた場合を考える。この場合、サーバには以下のファイルが置かれることになる。
Ｖ１．０→Ｖ１．１への差分ファイル（１）
Ｖ１．０→Ｖ１．２への差分ファイル（２）
Ｖ１．１→Ｖ１．２への差分ファイル（３）
Ｖ１．０→Ｖ１．３への差分ファイル（４）
Ｖ１．１→Ｖ１．３への差分ファイル（５）
Ｖ１．２→Ｖ１．３への差分ファイル（６）
【００４２】
このとき、図７に示すように、携帯電話機はソフト更新の際には、現在保持している本体プログラムのバージョンの一方から最新バージョンへの差分ファイル（例えばＶ１．２からＶ１．３への差分ファイル（６））をダウンロードしてソフト更新を実行する。
【００４３】
２面に異なるバージョンの本体プログラムが有効に存在する際に、新旧いずれのバージョンを更新の対象とするかを、所定の条件にしたがって予めいずれかに定める場合、その所定の条件としては次のようなものが考えられる。
ａ）新しい方のバージョンを更新対象とする。通常、新しいバージョンの方が最新バージョンとの差分データが少なくて済むことが多いので、この方法は、差分データ量の観点からは有利である。
ｂ）古い方のバージョンを更新対象とする。新しいバージョンの方のみを更新対象とする場合、古い方がいつまでの更新されず、２面のバージョンが大きく離れてしまうことが考えられる。この方法は、このような弊害を防止することができる。
ｃ）上記方法ａ）ｂ）の折衷として、２面のバージョン差が所定数（例えば、１、２等）の場合には新しい方のバージョンを更新対象とし、現在の差が当該所定数を越えている場合には古い方のバージョンを更新対象とする。この方法によれば、方法ａ）ｂ）の両方の利点を享受できる。
【００４４】
ソフト更新が失敗した場合(これはメモリ破壊による原因が大きい）は、他方の面について上記の更新処理を実行することができる。この場合、そのメモリ領域は使用不可となる。図８に示すように、本体プログラム＃１の面の書き換え（Ｖ１．２→Ｖ１．３）に失敗した場合、他方の面のＶ１．０の本体プログラム＃２を更新することになる。このエリア更新の為には、Ｖ１．０→Ｖ１．３への差分ファイル（４）が新たに必要となる。そのために、Ｖ１．０の本体プログラムを起動させて、新規にＶ１．０→Ｖ１．３の差分ファイル（４）をダウンロードする。
【００４５】
このように、１面の更新に失敗したとしても、もう一面の更新を実施することができ、ユーザとしては更新動作を中断させることなくソフト更新が実行できる。
【００４６】
以上の説明では、ソフト更新に際して、携帯電話機側で現在保持している本体プログラムのバージョンに対しての最新バージョンとの差分データを携帯電話機が取得時にサーバから抽出し、所定の差分データのみをサーバからダウンロードしてソフト更新することを想定した。
【００４７】
次に、このような動作の変形例について説明する。
【００４８】
この辺敬礼では、Ｖ１．２→Ｖ１．３への差分ファイルをダウンロードする際に、Ｖ１．０→Ｖ１．３への差分ファイルも一緒にダウンロードし、Ｖ１．２→Ｖ１．３への更新が失敗した時点で、Ｖ１．０→Ｖ１．３の差分ファイルを使用するようにする。
【００４９】
ソフト更新によりバージョンアップが成功した後にも、何らかの理由でバージョンを元に戻す必要があれば、ユーザの指示に従って、ソフト更新後でも元のバージョンにバージョンダウンできるようにすることも可能である。例えば、図９（ａ）に示すように本体プログラム＃１としてバージョンＶ１．１、本体プログラム＃２としてバージョンＶ１．０が格納されている場合、図９（ｂ）に示すように、通常起動においては本体プログラム＃１が実行される。しかし、バージョンアップがユーザの意図に反した内容だった場合或いは何らかの理由によりバージョンを元に戻す必要が生じたと仮定する。この場合ユーザ操作にて本体プログラム＃２（古いバージョン）を指定するようにフラグ（古バージョン使用フラグ）を設定することができるようにする。（この古バージョン使用フラグは前述した更新失敗フラグとは異なる)。図９（ｃ）に示すように、次回電源投入時、Ｂｏｏｔコードが上記古バージョン使用フラグを判断し、本体プログラム＃２を実装するようその飛び先へジャンプすることで、一つ前のバージョンに戻すことが可能となる。
【００５０】
なお、ソフト更新の際に古いバージョンに戻すことを許容するか否かを示す制限情報もサーバ側から送信し、所定の記憶領域に記憶しておき、この制限情報に基づいてユーザにより古バージョン使用フラグをセットできるように制御するようにしてもよい。このような制限情報は、バグ修正やデータ更新などにより古バージョンの使用が好ましくない場合に有用である。
【００５１】
また、従来、ソフト更新はユーザの意図しない状況で実行されるので、ユーザにはソフトが更新されたのかどうかは分からなかった。現在稼働中の本体プログラムがどのバージョンなのか知ることもできなかった。そこで、本実施の形態では、第１および第２のメモリ領域内の両本体プログラムが有効である場合、ユーザにいずれかの本体プログラムを選択させる。そのため、選択メニューの中に携帯電話機バージョン情報を追加することで、ユーザによるバージョン選択が可能とする。ユーザが、稼働中の本体プログラムのバージョン情報を認識することができる。但し、より古いバージョンの選択については、古バージョン使用フラグにより古バージョンの使用が好ましくない場合の規制を行うことが可能である。
【００５２】
なお、書き換え実行中はソフト更新処理のみが実行される為、ソフト更新が完了するまでは一切電話機能は使用不可となる。更新時間は差分データがどの程度あるかに依存するが、通常２〜５分は必要であり、その時間での着信や発信が一切不可となるため、ユーザは機会損失の可能性を有する。
【００５３】
しかし、携帯電話機の本体メモリは比較的大容量が必要とされるが、電話機能のみならばさほど大きくはない。携帯電話機の本体プログラムは現状３２Ｍバイト程度となっているが、電話機としての基本機能実現のためであれば１Ｍバイト程度の容量にて実現が可能である。そこで、更新エンジンに発信・着信を含む基本電話機能を付加することで、ソフト更新中であっても基本電話機能が動作可能となり、ユーザは更新時間を意識する必要がなくなる。ソフト更新中の電話基本機能の実行は、ソフト更新処理を一時的に停止させるか、または時分割で両処理を並列に実行する。
【００５４】
このため、図１０に示すように、更新エンジンに電話機の基本機能を実装することにより、ソフト書き換え中でも基本的機能動作が実現できる。ソフト更新はメイン処理はフラッシュメモリヘの書き込みであり、電話機基本機能と共存して実行される。更新エンジンに基本電話機能を内包させてソフト更新中にも電話基本機能を実行可能とする構成自体には、本体プログラム領域の２面化は必要ない。
【００５５】
本実施の形態によれば、次のような効果が得られる。
１）差分データによるソフト更新を行うので、ダウンロードのための通信時間および更新処理時間が短くて済む。
２）本体プログラムの２面構成の採用により、ソフト更新によりバージョンアップ後、何らかの理由で更新に失敗した面の他方の面の本体プログラムを利用して、動作を継続できる。
３）同じく本体プログラムの２面構成の採用により、１面での本体プログラムの更新に失敗しても、他面での本体プログラムの更新が可能である。
４）ソフト更新によるバージョンアップが成功した後も、条件付きで古いバージョンに戻すことができる。また、条件を付けることで、通信事業者側に不都合な場合には古いバージョンへの復帰を抑止することができる。
５）更新エンジンに基本電話機能を付加することで、ソフト更新中であっても、電話機の基本機能が使用できる。これはソフト本体が１面の場合でも有効となる。また、ソフト本体を２面管理した場合、ソフト更新に１面が失敗しても、連続して、２面目のソフト更新を実行することができる。
【００５６】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。例えば、Ｂｏｏｔ処理で上記の更新失敗フラグを参照することで、どちらかの本体プログラムが破壊されていた場合、更新処理は起動させないようにすることも可能である。(この処理により本体プログラムが２面とも壊れる可能性を排除することができる。)
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態に係る携帯電話機の概略のハードウェア構成を示す図である。
【図２】図１の携帯電話機において用いられている第１フラッシュメモリのメモリ構成を示す図である。
【図３】ソフト更新エンジン部分が本体プログラムの一部として実装されている様子を示す図である。
【図４】本発明の実施の形態において、本体プログラムの２面化による、ソフト更新失敗時の復旧を説明するための図である。
【図５】本発明の実施の形態におけるソフト更新時の処理フローを示す図である。
【図６】本発明の実施の形態において、２面の本体プログラムのバージョンが同じ場合のソフト更新の様子を示す図である。
【図７】図６のソフト更新が失敗した様子を示す図である。
【図８】図７に続いて、他方の面の本体プログラムの更新の様子を示す図である。
【図９】本発明の実施の形態において、ソフト更新によりバージョンアップが成功した後のバージョンダウンの説明図である。
【図１０】本発明の実施の形態の変形例の説明図である。
【符号の説明】
【００５８】
１０…携帯電話機、１１…制御部、１２…音声処理部、１３…マイク、１４…スピーカ、１５…記憶部、１５ａ…第１フラッシュメモリ、１５ｂ…ＲＡＭ、１５ｃ…第２フラッシュメモリ、１６…通信部、１７…アンテナ、１８…操作部、１９…表示部、２１…メモリ空間、２１ａ…ブート領域、２１ｂ…領域、２１ｃ…領域、２１ｄ…領域
【図１】
2007189332.tif 000003
【図２】
2007189332.tif 000004
【図３】
2007189332.tif 000005
【図４】
2007189332.tif 000006
【図５】
2007189332.tif 000007
【図６】
2007189332.tif 000008
【図７】
2007189332.tif 000009
【図８】
2007189332.tif 000010
【図９】
2007189332.tif 000011
【図１０】
2007189332.tif 000012