(57)【特許請求の範囲】
【請求項１】
自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、前記二重化されたソフトウェアのうち一方を実行して使用する情報処理装置であって、
前記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新手段と、
前記記憶手段に記憶されている前記各ソフトウェアの更新状況を検出する更新状況検出手段と、を備え、
前記ソフトウェア更新手段は、前記更新状況検出手段による検出結果に応じて、前記記憶手段に記憶されており更新されている前記ソフトウェアを使用状態とし、当該使用状態となったソフトウェアのデータをコピーして前記記憶手段に記憶されており更新されていない前記ソフトウェアを更新する、
ことを特徴とする情報処理装置。
【請求項２】
前記ソフトウェアを更新する差分データを取得して前記記憶手段に記憶する差分データ取得手段を備え、
前記ソフトウェア更新手段は、前記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータと、前記記憶手段に記憶されている前記差分データと、に基づいて、前記記憶手段に記憶されており使用されていない他方のソフトウェアのデータを更新する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ソフトウェア更新手段は、前記記憶手段に記憶されており更新した前記他方のソフトウェアを使用状態とし、当該他方のソフトウェアのデータをコピーして前記記憶手段に記憶されている前記一方のソフトウェアを更新する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記各ソフトウェアの使用状態を検出する使用状態検出手段を備え、
前記ソフトウェア更新手段は、前記使用状態検出手段による検出結果に応じて、前記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新する、
ことを特徴とする請求項１，２又は３記載の情報処理装置。
【請求項５】
前記ソフトウェアは、情報処理装置の基本的な動作の制御を行い当該情報処理装置に組み込まれるファームウェアである、
ことを特徴とする請求項１，２，３又は４記載の情報処理装置。
【請求項６】
自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、前記二重化されたソフトウェアのうち一方を実行して使用する情報処理装置に、
前記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新手段と、
前記記憶手段に記憶されている前記各ソフトウェアの更新状況を検出する更新状況検出手段と、
を実現させると共に、
前記ソフトウェア更新手段は、前記更新状況検出手段による検出結果に応じて、前記記憶手段に記憶されており更新されている前記ソフトウェアを使用状態とし、当該使用状態となったソフトウェアのデータをコピーして前記記憶手段に記憶されており更新されていない前記ソフトウェアを更新する、
ことを実現させるためのプログラム。
【請求項７】
前記ソフトウェア更新手段は、前記記憶手段に記憶されており更新した前記他方のソフトウェアを使用状態とし、当該他方のソフトウェアのデータをコピーして前記記憶手段に記憶されている前記一方のソフトウェアを更新する、
ことを特徴とする請求項６記載のプログラム。
【請求項８】
自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、前記二重化されたソフトウェアのうち一方を実行して使用する情報処理装置におけるソフトウェア更新方法であって、
前記記憶手段に記憶されている前記各ソフトウェアの更新状況を検出すると共に、前記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新工程を有し、
前記ソフトウェア更新工程は、前記各ソフトウェアの更新状況の検出結果に応じて、前記記憶手段に記憶されており更新されている前記ソフトウェアを使用状態とし、当該使用状態となったソフトウェアのデータをコピーして前記記憶手段に記憶されており更新されていない前記ソフトウェアを更新する、
ことを特徴とするソフトウェア更新方法。
【請求項９】
前記ソフトウェア更新工程は、前記記憶手段に記憶されており更新した前記他方のソフトウェアを使用状態とし、当該他方のソフトウェアのデータをコピーして前記記憶手段に記憶されている前記一方のソフトウェアを更新する、
ことを特徴とする請求項８記載のソフトウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置にかかり、特に、実行するソフトウェアを更新する機能に特徴を有する情報処理装置に関する。
【背景技術】
【０００２】
近年の携帯通信端末は、非常に多くの機能を有して構成されている。そして、各機能は、当該機能用ソフトウェアが携帯通信端末に組み込まれることによって実現されることが多い。ところが、携帯通信端末は、販売後に種々の利用者にて使用されることによって明らかになり指摘される不具合も多い。かかる場合には、ソフトウェアの書換えによって対応を実施している。
【０００３】
一方で、携帯通信端末の場合、その構造上、内部にバッテリを持ち、また、バッテリはユーザ操作により取り外ししやすい場合が多い。そのため、上述したようにソフトウェアの書換えを行っている最中にバッテリの残量が無くなったり、取り外されたりしてバッテリ動作ができなくなる、という状態が発生する可能性がある。そして、プログラムコードの部分が完全に書き換えられる前にこのような現象が発生した場合、ソフトウェアによる機能の起動ができなくなってしまう、と言った障害が発生してしまう。
【０００４】
また、プログラムの高度化により、大容量のメモリが要求されるようになった。メモリとしては、安価なＮＡＮＤ型フラッシュメモリが主流となりつつあるが、このメモリは一定値以下のハードウェアとしての不良が許容されているため、万が一、使用中にプログラム部分の破損が発生した場合には、装置として機能しなくなる可能性がある。
【０００５】
これに対して、特許文献１には、端末にソフトウェアを二重化して記憶することが開示されている。そして、この文献では、二重化したソフトウェアのうち、使用されていないソフトウェアを先に更新する技術が開示されている。また、特許文献２には、移動端末装置内に当該移動端末装置の本体プログラムを２面化して記憶し、一方を更新する技術が開示されている。これによると、一方の更新に失敗した場合であっても、更新されていない他方のプログラムを使用して、更新前の本体プログラムの起動を可能としている。
【０００６】
【特許文献１】特開平３−３３９５９号公報
【特許文献２】特開２００７−１８９３３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献に開示の技術では、以下のような問題があった。まず、使用されていないソフトウェアを更新する場合には、当該更新対象となっている使用されていないソフトウェアが正常でないこともあり、この場合には、更新も正常に実行できない、という問題が生じる。また、使用されているソフトウェアを更新する場合には、使用されているソフトウェアの更新が失敗したときに、他方の使用されていないソフトウェアが正常でないと、正常に端末を起動ができない、という問題が生じうる。
【０００８】
このため、本発明の目的は、上述した課題である、ソフトウェアの更新時における情報処理端末の信頼性の向上を図ることにある。
【課題を解決するための手段】
【０００９】
そこで、本発明の一形態である情報処理装置は、自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、二重化されたソフトウェアのうち一方を実行して使用する情報処理装置である。そして、この情報処理装置は、記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新手段を備えている。
【００１０】
また、本発明の他の形態であるプログラムは、自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、二重化されたソフトウェアのうち一方を実行して使用する情報処理装置に、記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新手段、を実現させる、という構成を採っている。
【００１１】
さらに、本発明の他の形態であるソフトウェア更新方法は、自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、二重化されたソフトウェアのうち一方を実行して使用する情報処理装置におけるソフトウェア更新方法であって、記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新工程を有する、という構成を採っている。
【発明の効果】
【００１２】
本発明は、以上のように構成されるため、ソフトウェアを正常に更新することができ、当該ソフトウェアを実行する情報処理装置の信頼性の向上を図ることができる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１３】
本発明は、携帯電話端末などの情報処理端末に組み込まれるソフトウェアの更新処理において、書換え処理の途中でハードウェア故障が発生しない限り、より確実なソフトウェアの書換えを行うことを可能とする点に特徴を有する。
【００１４】
そして、本発明の一形態である情報処理装置は、自装置にて実行するソフトウェアのデータを二重化して記憶した記憶手段を備え、二重化されたソフトウェアのうち一方を実行して使用する情報処理装置であって、上記記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新するソフトウェア更新手段を備えた、という構成を採る。
【００１５】
また、上記情報処理装置は、ソフトウェアを更新する差分データを取得して記憶手段に記憶する差分データ取得手段を備え、上記ソフトウェア更新手段は、記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータと、記憶手段に記憶されている差分データと、に基づいて、記憶手段に記憶されており使用されていない他方のソフトウェアのデータを更新する、という構成を採る。
【００１６】
また、上記ソフトウェア更新手段は、記憶手段に記憶されており更新した他方のソフトウェアを使用状態とし、当該他方のソフトウェアのデータをコピーして記憶手段に記憶されている一方のソフトウェアを更新する、という構成を採る。
【００１７】
また、上記情報処理装置は、各ソフトウェアの使用状態を検出する使用状態検出手段を備え、上記ソフトウェア更新手段は、使用状態検出手段による検出結果に応じて、記憶手段に記憶されているソフトウェアのうち、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新する、という構成を採る。
【００１８】
さらに、上記情報処理装置は、記憶手段に記憶されている各ソフトウェアの更新状況を検出する更新状況検出手段を備え、上記ソフトウェア更新手段は、更新状況検出手段による検出結果に応じて、記憶手段に記憶されており更新されているソフトウェアを使用状態とし、当該使用状態となったソフトウェアのデータをコピーして記憶手段に記憶されており更新されていないソフトウェアを更新する、という構成を採る。
【００１９】
上記発明によると、情報処理装置は、二重化されたソフトウェアを、使用されている一方のソフトウェアのデータに基づいて、使用されていない他方のソフトウェアを更新する。具体的には、使用されている一方のソフトウェアのデータと、更新に必要な差分データとを使用して、使用されていない他方のソフトウェアを更新する。これにより、使用されていない他方のソフトウェアが正常ではない場合であっても、当該他方のソフトウェアが、使用されている正常な一方のソフトウェアを用いて、正常に更新される。従って、ソフトウェアを常に正常に更新することができ、当該ソフトウェアを実行する情報処理装置の信頼性の向上を図ることができる。特に、ソフトウェアが、情報処理装置の基本的な動作の制御を行い当該情報処理装置に組み込まれるファームウェアである場合には、より効果的である。
【００２０】
また、上述したように他方のソフトウェアの更新後には、当該更新された他方のソフトウェア自体をコピーして一方のソフトウェアを更新するため、当該一方のソフトウェアも正確に更新することが可能となる。その結果、情報処理装置の更なる信頼性の向上を図ることができる。
【００２１】
以下、本発明の具体的な構成を、実施形態にて説明する。なお、実施形態では、情報処理端末の一例として、通信可能な携帯端末を挙げて説明するが、いかなる情報処理端末にも適用可能である。
【００２２】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図７を参照して説明する。図１乃至図２は、携帯端末の構成を示すブロック図である。図３乃至図６は、携帯端末の動作を示すフローチャートである。図７は、携帯端末におけるソフトウェアの更新及び使用状態を示す表である。
【００２３】
［構成］
図１乃至図２に、本実施形態における携帯端末１の構成を示す。なお、図１は、携帯端末１全体の構成を示すブロック図であり、図２は、ＣＰＵとフラッシュＲＯＭの詳細な構成を示す機能ブロック図である。
【００２４】
図１に示すように、携帯端末１は、自端末の動作を制御する演算装置であるＣＰＵ２と、当該ＣＰＵ２にて処理を実行する際に使用するワークエリアとなるＲＡＭ４と、制御プログラムや各種フラグ、取り込んだ差分データの一時保存等を行うフラッシュＲＯＭ３（記憶手段）と、を備えている。また、通信事業者やＲＦＩＤなどのソフトウェアの差分データを持つ外部ネットワーク上のデータサーバ１００等と接続するための無線部９（ベースバンド部９１、ＲＦ部９２）と、各種情報を表示する表示部５と、データを入力するためのキー入力部６と、外部メモリ２００より差分データを取り込むためのメモリリーダ８と、を備えている。なお、無線部９、メモリリーダ８は、同時に実装をする必要はない。また、外部機器との接続端子である外部Ｉ／Ｆ７を備えていてもよく、この場合には、外部Ｉ／Ｆ７に外部機器であるメモリリーダ３００等を接続することで、外部メモリ２００から差分データを取り込むことが可能となる。
【００２５】
そして、本実施形態における携帯端末１は、さらに、以下の構成を備えている。具体的には、図２に示すように、ＣＰＵ２に本発明であるプログラムが組み込まれることによって構成された、差分データ取得部２１と、フラグ確認・設定部２２と、ソフトウェア更新部２３と、を備えている。また、フラッシュＲＯＭ３内には、差分データ記憶部３１と、フラグ記憶部３２と、ソフトウェア記憶部３３と、を備えている。以下、各構成について詳述する。
【００２６】
上記ソフトウェア記憶部３３は、携帯端末１のＣＰＵ２に組み込まれ、当該携帯端末１の各種機能を実現するためのソフトウェアを二重化して記憶している。このソフトウェアは、例えば、携帯端末１の基本的な動作の制御を行い当該情報処理装置に組み込まれるファームウェアである。但し、ソフトウェアは、ファームウェアであることに限定されず、携帯端末１の機能の一部を実現するためにファームウェア上に組み込まれるソフトウェアであってもよい。そして、上述したように、ソフトウェアは二重化されているため、初期状態では、「正データ」と、「副データ」と、といった同一内容のソフトウェアデータを記憶している。なお、ここでは、一例として、二重化されているソフトウェアデータのうち、一方を「正データ」と呼び、他方を「副データ」と呼ぶこととする。
【００２７】
そして、携帯端末１のＣＰＵ２は、上記「正データ」、「副データ」のうち、いずれか一方を読み出して実行し、使用する。なお、上記ソフトウェアは、ＣＰＵ２に上述した本発明の特徴となる機能である差分データ取得部２１と、フラグ確認・設定部２２と、ソフトウェア更新部２３と、を実現させるプログラムを含んでいてもよい。
【００２８】
また、フラグ記憶部３２は、以下の４つのフラグを記憶している。
１．正データ書換え完了フラグ（以下、「完了フラグ（正）」と記載する。
２．副データ書換え完了フラグ（以下、「完了フラグ（副）」と記載する。
３．有効データフラグ
４．書換え失敗フラグ
【００２９】
上記１．「完了フラグ（正）」と２．「完了フラグ（副）」は、二重化されたソフトウェアである「正データ」と「副データ」のそれぞれの書換えが終了したことを示すフラグである。これらフラグは、後述するように、差分データを取得すると、正副の両方が「未完了」を示すようリセットされ、ソフトウェアの更新が完了すると、完了したデータのフラグが「完了」を示すよう設定される。これら完了フラグを参照することで、各ソフトウェアの書換えがどこまで進んでいるかを検出することが可能である。
【００３０】
また、上記３．「有効データフラグ」は、正副のソフトウェアのうち、どちらが現在使用されているかを示すフラグである。このフラグは、ＣＰＵ２によるソフトウェアの使用状況によって変化する。これを参照することで、どちらが実際にＣＰＵ２によって使用されているかを検出することができる。また、上記４．「書換え失敗フラグ」は、書換えの最中にハードウェア不良により書換えができなくなった場合に設定されるフラグである。本フラグは起動時に判定され、有効の場合は通常起動は不可とし、場合によってはメーカ等でしか書き換えることのできない特殊書換えモードに遷移させるなどの処理を行うこととする。
【００３１】
次に、上記差分データ取得部２１について説明する。差分データ取得部２１（差分データ取得手段）は、上述したソフトウェア記憶部３３に記憶されている正データ及び副データを更新するための差分データを取得して、差分データ記憶部３１に記憶するよう機能する。なお、差分データの取得は、例えば、無線通信を介してデータサーバ１００から取得してもよく、あるいは、メモリリーダ８や外部Ｉ／Ｆ７を介して外部メモリ２００から取得してもよい。また、差分データ取得部２１は、ソフトウェアの差分データを取得すると、フラグ確認・設定部２２に、上記「完了フラグ（正）」、「完了フラグ（副）」を「未完了」に設定（リセット）するよう指示する。
【００３２】
次に、フラグ確認・設定部２２について説明する。フラグ確認・設定部２２は、ＣＰＵ２や差分データ取得部２１、ソフトウェア更新部２３からの指令などを受けて、フラグ記憶部３２に記憶されている各種フラグの状態の確認や、設定・リセット処理を行う。例えば、上述したように、差分データ取得部２１から「完了フラグ（正）」、「完了フラグ（副）」を「未完了」に設定（リセット）するよう指示を受けると、当該指示に従い、これらのフラグをリセットする。また、後述するソフトウェア更新部２３にてソフトウェアの更新が完了した旨の通知を受けると、完了したソフトウェアのフラグを「完了」に設定する。
【００３３】
また、フラグ確認・設定部２２は、例えば、ソフトウェア更新部２３からの指示に応じて、あるいは、予め設定されたタイミングにて、「完了フラグ（正）」、「完了フラグ（副）」を調べて、各ソフトウェアの更新状況が完了か未完了かを検出し、ソフトウェア更新部２３に通知する（更新状況検出手段）。一方で、更新が失敗した場合には、「書換え失敗フラグ」を設定する。
【００３４】
さらに、フラグ確認・設定部２２は、例えば、ＣＰＵ２にて使用されているソフトウェアを検出すると、当該使用されているソフトウェア（正または副）を「有効データフラグ」に設定する。そして、ソフトウェア更新部２３からの指示に応じて、あるいは、予め設定されたタイミングにて、上記「有効データフラグ」を調べて、正、副のどちらのソフトウェアが使用されているか（使用状態）を検出して、ソフトウェア更新部２３に通知する（使用状態検出手段）。
【００３５】
次に、ソフトウェア更新部２３について説明する。ソフトウェア更新部２３（ソフトウェア更新手段）は、上述したソフトウェア記憶部３３に記憶されているソフトウェアである「正データ」と「副データ」とを更新する機能を有する。具体的には、まず、上述したフラグ確認・設定部２２にて検出した各ソフトウェアの使用状況や更新状況を確認する。そして、「正データ」及び「副データ」の両ソフトウェアが更新されていない場合には、現在ＣＰＵ２にて使用されている一方のソフトウェアのデータをソフトウェア記憶部３３から読み出し、また、差分データ記憶部３１に記憶されている差分データを読み出し、これら読み出した使用されているソフトウェアのデータと差分データとを利用して、使用されていない他方のソフトウェアのデータを更新し、ソフトウェア記憶部３３に記憶する。
【００３６】
その後、ソフトウェア更新部２３は、更新してソフトウェア記憶部３３に記憶した他方のソフトウェアをＣＰＵ２にて使用し、上記一方のソフトウェアを使用していない状態とする。そして、更新してソフトウェア記憶部３３に記憶し、さらに現在使用状態となっている他方のソフトウェアのデータをコピーして、ソフトウェア記憶部３３に記憶されている現在は使用されていない一方のソフトウェアのデータを更新する。
【００３７】
なお、ソフトウェア更新部２３は、いずれか１つのソフトウェアが更新されていて、他のソフトウェアが更新されていない場合には、更新が完了しているソフトウェアを使用状態にし、当該ソフトウェアをコピーして、更新されていない他のソフトウェアを更新するよう作動する。
【００３８】
［動作］
次に、上記携帯端末１の動作を、図３乃至図６を参照して説明する。なお、図３は、後述するようにソフトウェアの書換え（更新）が完了した状態から説明する。まず、ソフトウェアの書換えが実施されると、フラグを「完了」に設定する（ステップＳ１）。ここで、設定されるフラグは、「完了フラグ（正）」と「完了フラグ（副）」の２つのフラグである。
【００３９】
その後、任意のタイミングにて、差分データの取得を行う（ステップＳ２）。なお、取得した差分データは、書換えが完了するまでの間、一時的にフラッシュＲＯＭ３内の差分データ記憶部３１に保持する。これは、書換え途中でバッテリが無くなった場合等に、再度データを取得しにいく処理をなくすことで、ネットワーク負荷の軽減、フェイルセーフ処理の高速化を行うためである。そして、このとき、「完了フラグ（正）」と「完了フラグ（副）」の２つのフラグが「未完了」に設定され、その後、書換え処理に移行する（ステップＳ３、ソフトウェア更新工程）。
【００４０】
続いて、図４を参照して、ソフトウェアの書換え処理に進むまでの具体的な動作を説明する。はじめに、正常にソフトウェアを更新されるときの動作を説明する。
【００４１】
まず、書換え完了フラグ（「完了フラグ（正）」、「完了フラグ（副）」）の確認を行い、現在の各ソフトウェアの書換えの状況を確認する（ステップＳ１１，Ｓ１２，Ｓ１７）。ここで、「正データ」及び「副データ」の両方のソフトウェアの書換えが完了していると判定されると（ステップＳ１１で「完」、ステップＳ１７で「完」）、そのまま通常起動を行う（ステップＳ２２）。
【００４２】
そして、「正データ」及び「副データ」の両方のソフトウェアの書換えが完了していない（未完了）と判定されると（ステップＳ１１で「未」、ステップＳ１２で「未」）、「有効データフラグ」の確認を行う（ステップＳ１３）。確認後、有効となっているデータを読み出すが（ステップＳ１４，Ｓ１８）、最初の書換え処理、もしくは、プログラム書換えのうち先に行う書換え処理でエラーとなり、一方のデータで読出しエラーが発生した場合は（ステップＳ１４でＹｅｓ，ステップＳ１８でＹｅｓ）、他方にデータに有効データを書き換えた上で（ステップＳ１５，Ｓ１６，Ｓ１９，Ｓ２０）、書換え処理を開始する（ステップＳ２１）。例えば、有効データが「正データ」である場合に（ステップＳ１３で「正」）、正データの読み出しエラーが発生すると（ステップＳ１４でＹｅｓ）、「有効データフラグ」を「副データ」に書き換えて（ステップＳ１５）、「副データ」が読み出せる状態で（ステップＳ１６でＮｏ）、書換え処理を開始する（ステップＳ２１）。但し、両方のデータが読み出しエラーとなってしまった場合には（ステップＳ１６でＹｅｓ，Ｓ２０でＹｅｓ）、起動不可となる（ステップＳ２３）。
【００４３】
続いて、図５のフローチャートを参照して、実際のソフトウェアの書換え処理について説明する。まず、「有効データフラグ」の確認を行うが（ステップＳ３１）、この確認は、上記図４のステップ１３やステップＳ１５、Ｓ１９の処理の結果を利用してもよい。
【００４４】
そして、有効データつまりＣＰＵ２にて「正データ」が読み出されて使用されている場合には（ステップＳ３１で「正」）、「副データ」を書き換えることになる。このとき、書換えに際しては、「副データ」は使用しない。これは、「副データ」は、この時点では使用されていないため、正常かどうかの判断ができないためである。従って、本実施形態では、現時点で問題なく起動できている「正データ」をベースに差分書換えを行う。
【００４５】
具体的に、ソフトウェアの更新処理は、まず、ＲＡＭ２にテンポラリエリアをとり、そこにソフトウェア記憶部３３に記憶している「正データ」をロードすると共に、差分データ記憶部３１に記憶されている差分データもロードする。そして、「正データ」と「差分データ」とを利用して、ソフトウェアの書換えを実行する。その後、書き換えたソフトウェアのデータを、「副データ」としてソフトウェア記憶部３３にかき戻す（ステップＳ３２）。書込み完了後は、チェックサム確認をするなど、書き込まれたデータの正当性を確認する（ステップＳ３３）。そして、正常に書き込めたことが確認されたら（ステップＳ３３でＹｅｓ）、「完了フラグ（副）」を「完了」に書き換える（ステップＳ３４）。さらに、その後、「有効フラグ」を「副データ」に書き換え（ステップＳ３５）、更新した「副データ」をＣＰＵ２にて使用する。これにより、「正データ」は、使用されていない状態となる。
【００４６】
続いて、「正データ」の書換えを行う。ここでは、既に書き換えられているソフトウェアの記憶部３３に記憶されている「副データ」を「正データ」としてコピーすればよい（ステップＳ３６）。そして、正当性の確認後（ステップＳ３７でＹｅｓ）、「完了フラグ（正）」を「完了」にし（ステップＳ３８）、「有効データフラグ」を「正」に書き換える（ステップＳ３９）。これにより、再度、「正データ」をＣＰＵ２にて使用している状態に戻す。
【００４７】
以上のように、全ての書換え処理が完了後、リセットをかけ再起動処理を行う（ステップＳ４０）。なお、この時点で「正データ」及び「副データ」共に、データが正常に書き込まれているため、ここでの有効データフラグの設定は省略してもよい。
【００４８】
なお、ステップＳ３３とステップＳ３７におけるデータ書込み後に、正常に書込みできていないと判断された場合には（ステップＳ３３及びＳ３７でＮｏ）、書換え失敗フラグを設定する（ステップＳ４１）。その後、リセット、再起動処理を実行する（ステップＳ４０）。
【００４９】
次に、図５のステップＳ３１の有効データフラグ確認で、現在使用されているデータが「副データ」であると判定されたとき（ステップＳ３１で「副」）の動作を、図６を参照して説明する。この場合には、「正データ」を書き換えることになる。従って、現時点で問題なく起動できている「副データ」をベースに差分書換えを行う。
【００５０】
具体的に、ソフトウェアの書換えは、まず、ＲＡＭ２にテンポラリエリアをとり、そこにソフトウェア記憶部３３に記憶している「副データ」をロードすると共に、差分データ記憶部３１に記憶されている差分データもロードする。そして、「副データ」と「差分データ」とを利用して、ソフトウェアの書換えを実行する。その後、書き換えたソフトウェアのデータを、「正データ」として、ソフトウェア記憶部３３に書き戻す（ステップＳ４２）。書込み完了後は、チェックサム確認をするなど、書き込まれたデータの正当性を確認する（ステップＳ４３）。そして、正常に書き込めたことが確認されたら（ステップＳ４３でＹｅｓ）、「完了フラグ（正）」を「完了」に書き換える（ステップＳ４４）。さらに、その後、「有効フラグ」を「正データ」に書き換え（ステップＳ４５）、更新した「正データ」をＣＰＵ２にて使用する。これにより、「副データ」は、使用されていない状態となる。
【００５１】
続いて、「副データ」の書換えを行う。ここでは、既に書き換えられているソフトウェアの記憶部３３に記憶されている「正データ」を「副データ」としてコピーすればよい（ステップＳ４６）。そして、正当性の確認後（ステップＳ４７でＹｅｓ）、「完了フラグ（副）」を「完了」にし（ステップＳ４８）、「有効データフラグ」を「副」に書き換える（ステップＳ４９）。これにより、再度、「副データ」をＣＰＵ２にて使用している状態に戻す。
【００５２】
以上のように、全ての書換え処理が完了後、リセットをかけ再起動処理を行う（ステップＳ５０）。なお、この時点で「正データ」及び「副データ」共に、データが正常に書き込まれているため、ここでの有効データフラグの設定は省略してもよい。
【００５３】
なお、ステップＳ４３とステップＳ４７におけるデータ書込み後に、正常に書込みできていないと判断された場合には（ステップＳ４３及びＳ４７でＮｏ）、書換え失敗フラグを設定する（ステップＳ５１）。その後、リセット、再起動処理を実行する（ステップＳ５０）。
【００５４】
次に、いずれか１つのデータ、つまり、「正データ」あるいは「副データ」のみの書換えが完了している場合の動作を説明する（図４のステップＳ１２で「完」、ステップＳ１７で「未」）。
【００５５】
例えば、「正データ」の更新が未完了で、「副データ」の更新が完了している場合には（図４のステップＳ１２で「完」）、まず更新されている「副データ」を「有効データ」としてＣＰＵ２にて使用されるよう設定する（図５のステップＳ３５）。そして、更新されている「副データ」をコピーして、更新されていない「正データ」を更新する（図５のステップＳ３６）。その後の処理は、上記同様である。
【００５６】
また、「正データ」の更新が完了で、「副データ」の更新が未完了である場合には（図４のステップＳ１７で「未」）、まず更新されている「正データ」を「有効データ」としてＣＰＵ２にて使用されるよう設定する（図６のステップＳ４５）。そして、更新されている「正データ」をコピーして、更新されていない「副データ」を更新する（ステップＳ４６）。その後の処理は、上記同様である。
【００５７】
次に、異常処理となった場合の動作について説明する。上述した一連のシーケンスの中で、バッテリが切れる、または、はずされるなど、書換え処理が途中で終了する場合がある。すると、書き換え中のファイルは異常状態となることがある。つまり、上述した図５のステップＳ４１及び図６のステップＳ５１で、書換え失敗フラグが設定される場合である。この場合には、その後、携帯端末１は、以下のように動作する。なお、以下では、先に書き換えるソフトウェアを「正データ」とした場合を説明する。
【００５８】
強制終了された場合、次の起動時の処理は、必ず図４の先頭からとなるが、強制終了した場所が「正データ」の書換えが終わった後の「完了フラグ（正）」の書換え（図６のステップＳ４４）を行う前後で動作が異なる。
【００５９】
まず、フラグ書換え（図６のステップＳ４４）の前に強制終了した場合は（ステップＳ４３でＮｏ）、「完了フラグ（正）」、「完了フラグ（副）」共に未完了状態となっており、かつ、「データ有効フラグ」が「副データ」となっていることから、最初の書換え時と同じ処理をたどることになる。つまり、この時点では、「正データ」のプログラムが異常状態となっている可能性が高いが、「副データ」をベースに書換えを行うため（図６のステップＳ４２）、「正データ」が異常であっても問題なく正常に当該「正データ」を書き換えることができる。
【００６０】
次に、フラグ書換え（図６のステップＳ４４）の後に強制終了した場合は（ステップＳ４７でＮｏ）、この時点でのフラグの状態は、「完了フラグ（正）」は「完了」、「完了フラグ（副）」は「未完了」、「有効データフラグ」は、「正もしくは副」となっている。すると、「完了フラグ（副）」の確認により（図４のステップＳ１７で「未」）、「有効データフラグ」を「正データ」にする書換え処理（図６のステップＳ４５）を開始する。これにより、書込みが完了している「正データ」をＣＰＵ２にて使用させることができ、当該「正データ」からコピーして書き換える「副データ」も（ステップＳ４６）、リセット、再起動が行えるようになる。
【００６１】
なお、正当性の確認でＮＧとなる場合は、ハードウェアに不良がない限り発生しえない。かかる場合には、「書換え失敗フラグ」を有効にして、図４のステップＳ２３に示すように、通常起動不可状態としてしまう。これにより、リセットの繰り返しが発生することを抑制し、ユーザにこの装置が異常状態にあることを早期通知することができる。また、過度の書込みをなくすことによる装置への負担を軽減することができる。また、異常状態での起動時に発生する可能性のある発熱等、二次障害の発生を抑制することができる。さらに、異常状態に入った直後の状態を保持することによる障害解析の容易化を図ることができる。
【００６２】
ここで、図７に、フローチャートの各ステップにおいて、強制終了されたときのフラグ、及び、データの状態を示す。この図に示すように、どの状態で強制終了された場合でも、リセット後には正常なデータが使用されていることが分かる。
【００６３】
以上により、本実施形態では、データを二重化した携帯端末でのソフト書換えにおいて、ハードウェア不良が発生しない限り確実にソフト書換えを行うことができる。その結果、当該ソフトウェアを実行する携帯端末の信頼性の向上を図ることができる。
【００６４】
ここで、上記では、「正データ」と「副データ」が均等に使用されることを前提としているが、ハードウェアによっては、使用時間にあわせて劣化していく可能性があり、一方のソフトウェアをバックアップとして残しておく使い方も想定される。その場合は「有効データフラグ」を制御することにより対応が可能である。例えば、出荷時、また書換えが完了した時点で、「有効データフラグ」を最後に「正データ」とすることで、基本的には、「正データ」のみが使用されることになる。そして、「正データ」に異常が発生した場合は、「有効データフラグ」を「副データ」に切り替えて一時的に動作させ、その間に「副データ」→「正データ」にコピー、及び、ベリファイ処理を行い、完了した時点で再度、「有効データフラグ」を「正データ」に切り替える。なお、このとき、「副データ」でも異常があった場合は、無理な回復は試みず、起動不可状態とする。
【００６５】
また、上記構成において、「正データ」のソフトウェアを使用している場合においても、「副データ」の正当性の確認を、一定期間毎に、また、この作業自体は動作への影響を考慮してユーザ処理が行われていない間に、実行することが望ましい。
【産業上の利用可能性】
【００６６】
本発明は、ファームウェアが組み込まれる携帯端末などの情報処理装置にて利用することが可能であり、産業上の利用可能性を有する。
【図面の簡単な説明】
【００６７】
【図１】携帯端末全体の構成を示すブロック図である。
【図２】携帯端末の構成を示す図であり、ＣＰＵとフラッシュＲＯＭの詳細な構成を示す機能ブロック図である。
【図３】携帯端末の動作を示すフローチャートである。
【図４】携帯端末の動作を示すフローチャートである。
【図５】携帯端末の動作を示すフローチャートである。
【図６】携帯端末の動作を示すフローチャートである。
【図７】携帯端末に記憶されているフラグ及びデータの状態を示す図である。
【符号の説明】
【００６８】
１  携帯端末
２  ＣＰＵ
３  フラッシュＲＯＭ
４  ＲＡＭ
５  表示部
６  キー入力部
７  外部Ｉ／Ｆ
８  メモリリーダ
９  無線部
２１  差分データ取得部
２２  フラグ確認・設定部
２３  ソフトウェア更新部
３１  差分データ記憶部
３２  フラグ記憶部
３３  ソフトウェア記憶部
９１  ベースバンド部
９２  ＲＦ部
１００  データサーバ
２００  外部メモリ
３００  メモリリーダ
【図１】
0005167936.tif 000002
【図２】
0005167936.tif 000003
【図３】
0005167936.tif 000004
【図４】
0005167936.tif 000005
【図５】
0005167936.tif 000006
【図６】
0005167936.tif 000007
【図７】
0005167936.tif 000008