説明

電子機器およびそのプログラム起動制御方法

【課題】不揮発性メモリからプログラムを読み出して電子機器を起動する場合の信頼性を向上させるプログラム起動制御方法および電子機器を提供する。
【解決手段】電子機器は、表示部12と、操作部13と、起動するための同一の起動用プログラムを格納した複数のNANDフラッシュメモリ102,103とを有し、メモリ102から読み出した第1起動用プログラムのデータ誤りを検出すると(S203;Y)、メモリ103から第2起動用プログラムを読み出し(S204)、第1起動用プログラムを第2起動用プログラムで書き換えるか否かの選択メッセージを表示部12に表示させ(S205)、操作部13を通して書き換えが選択されると(S206;Y,S207;Y)、書き換えを実行する(S208−S211)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム制御プロセッサを有する電子機器に係り、特にフラッシュメモリのような不揮発性メモリからプログラムを読み出して起動するための制御方法に関する。
【背景技術】
【0002】
NANDフラッシュメモリは、NORフラッシュメモリよりも半導体構造が簡単でコスト削減が可能になることから多くの電子機器で採用されている。しかしながら構造上データエラーが発生しやすいために、エラー検出・訂正(ECC:Error Checking and Correction)を併用するものが一般的である。特に、近年採用されている低コストのMLC(Multiple Level Cell)型NANDフラッシュメモリはSLC(Single Level Cell)型よりもエラーが発生しやすい。
【0003】
さらに、フラッシュメモリでは、選択したメモリセルのデータ消去や書込み時に印加される高電圧が非選択メモリセルに影響してデータエラーの原因となるディスターブ現象が知られている(特許文献1を参照)。特に、フラッシュメモリに格納したプログラムを読み出して起動する携帯通信機器では、ディスターブ現象により訂正不能のエラーが発生すると携帯通信機器が起動しなくなるという重大な問題が生じる。そこで、フラッシュメモリの信頼性を十分に高めることが強く要請されており、そのための方法が種々提案されている。
【0004】
たとえば、特許文献1に開示された記憶装置では、プログラムデータを複数の物理アドレス領域に多重化して格納しておき、電源投入時にエラー検出・訂正を実行し、エラーのない領域のデータを用いて訂正不能のエラーが発生している領域のデータを修復する。これによって記録データの信頼性を向上させるとともに、データ修復中に電源断となっても正常データの破壊を回避できることが認識されている。
【0005】
特許文献2に開示された半導体装置によれば、フラッシュメモリ内の複数ブロックに同一のブートプログラムを格納しておき、あるブロックから読み出したデータの判定結果が不良であれば、次のブロックから読み出して同様の判定を行い、判定が不良でなければ当該データをCPUへ出力する。
【0006】
特許文献3に開示されたフラッシュメモリシステムによれば、データのコピーがフラッシュメモリの異なる位置に記憶され、これらコピーデータから最良の部分を選択してシステムを起動する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−122640号公報
【特許文献2】特開2005−215824号公報
【特許文献3】特表2007−518166号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述したように、NANDフラッシュメモリはMLCの採用によりデータの信頼性が十分高いとはいえない状況にある。このために、複数ブロックに同一データを格納したり、複数データから良好部分を選択して使用したりする方法では十分な信頼性を確保できない可能性がある。
【0009】
また、予備プログラムが動作するうちに、もとのプログラムが復旧できればよいが、NANDフラッシュメモリへのデータの書き込みには時間がかかる。したがって、この間に携帯機器のバッテリ切れが発生した場合あるいはユーザが誤って電源供給を停止した場合には、NANDフラッシュメモリのデータが異常となり、その後の読出しだけでは復旧できない状態となる。
【0010】
さらに、ユーザがNANDフラッシュメモリの特性についての知識を持たないのが一般的であるから、携帯電話機などの携帯通信機器では、通常、メモリ管理をユーザに見えない状態で実施している。しかしながら、このことは、修復に失敗するとプログラムが起動しなくなる恐れがある重大な処理をユーザが知らないうちに実行しているということである。このために、ユーザが知らずに何らかの操作をする可能性があり、その操作により電源断となってプログラムの修復が失敗する可能性もないとはいえない。
【0011】
このように、上記特許文献に開示された起動制御方式では、フラッシュメモリの修復時に電源断の可能性を排除できないために起動に十分な信頼性を得ることができない。
【0012】
そこで本発明の目的は、不揮発性メモリからプログラムを読み出して電子機器を起動する場合の信頼性を向上させるプログラム起動制御方法およびそれを用いた電子機器を提供することにある。
【課題を解決するための手段】
【0013】
本発明による電子機器は、表示部と操作部とを有する電子機器であって、前記電子機器を起動するための同一の起動用プログラムを格納した複数の不揮発性記憶手段と、第1不揮発性記憶手段から読み出した第1起動用プログラムのデータ誤りを検出する誤り検出手段と、前記第1起動用プログラムのデータ誤りが検出されると、第2不揮発性記憶手段から第2起動用プログラムを読み出し、前記第1起動用プログラムを前記第2起動用プログラムで書き換えるか否かの選択メッセージを前記表示部に表示させ、前記操作部を通して書き換えが選択されると前記書き換えを実行するプログラム実行手段と、を有することを特徴とする。
【0014】
本発明によるプログラム起動制御方法は、表示部と、操作部と、同一の起動用プログラムを格納した複数の不揮発性記憶手段と、を有する電子機器におけるプログラム起動制御方法であって、誤り検出手段が第1不揮発性記憶手段から読み出した第1起動用プログラムのデータ誤りを検出し、プログラム実行手段が、前記第1起動用プログラムのデータ誤りが検出されると、第2不揮発性記憶手段から第2起動用プログラムを読み出し、前記プログラム実行手段が、前記第1起動用プログラムを前記第2起動用プログラムで書き換えるか否かの選択メッセージを前記表示部に表示させ、前記プログラム実行手段が、前記操作部を通して書き換えが選択されると前記書き換えを実行する、ことを特徴とする。
【発明の効果】
【0015】
本発明によれば、不揮発性記憶手段からプログラムを読み出して電子機器を起動する場合の信頼性を向上させることができる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施形態による電子機器の機能的構成を示すブロック図である。
【図2】NANDフラッシュメモリの一般的なデータ構造を示す模式図である。
【図3】本発明の第1実施例によるプログラム起動制御方法を示すフローチャートである。
【図4】第1実施例による携帯通信機器の表示部に表示されるメッセージ例を示す携帯通信機器の平面図である。
【図5】本発明の第2実施例によるプログラム起動制御方法を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、電子機器の一例として携帯通信機器を取り上げ、本発明の実施形態について詳細に説明する。携帯通信機器には、携帯電話機や通信機能を有する携帯情報端末が含まれる。ただし、本発明による電子機器は、これに限定されるものではなく、フラッシュメモリのような不揮発性メモリに格納された起動用プログラムをプログラム実行手段で実行する機器であればよく、携帯電話器やPDA(Personal Digital Assistants)の他に、ポータブル音楽プレーヤ、電子手帳、ラップトップPCあるいは携帯トランシーバなども含まれる。
【0018】
1.機能構成
図1に示すように、本発明の一実施形態による携帯通信機器は、制御部10により制御される送受信部11、表示部12、操作部13、電源部14およびその他図示しない機能部(送受話器として機能するスピーカやマイクロフォンなど)を有するものとする。電源部14はバッテリ(図示せず。)から機器全体に電力を供給するが、制御部10によって電源電圧がモニタされている。送受信部11は、たとえば携帯電話システムの基地局と無線通信するための無線通信回路を含む。表示部12は種々の情報をユーザに可視表示するためのモニタであり、操作部13はキーパッドあるいはタッチパネル等であり、ユーザの手動操作を可能にする。
【0019】
制御部10は、プログラム実行手段であるプログラム制御プロセッサ(ここではCPU(中央処理装置))101と、CPU101に共通バスで接続されたNANDフラッシュメモリ(#1)102およびNANDフラッシュメモリ(#2)103と、CPU101に別のバスで接続されたランダムアクセスメモリ(RAM)104と、を含む。NANDフラッシュメモリ102および103には同じ起動用プログラムがそれぞれ格納されているが、ここでは「#1」と記されたNANDフラッシュメモリ102が初期設定されたプログラム読み出しメモリであり、「#2」と記されたNANDフラッシュメモリ103が予備のメモリであるものとする。CPU101は、後述する手順に従って、プログラムをページ単位でNANDフラッシュメモリ102または103からRAM104に転送し、転送されたプログラムを実行することにより携帯通信機器を起動する。
【0020】
図2に示すように、NANDフラッシュメモリ102および103のデータはページ単位で構成され書き込み/読出しが行われる。ここではプログラムの大きさやメモリ配置によりnページ分のプログラムが1ブロックとして記憶され、各ページにはプログラムデータとそのECCデータとが格納されている。たとえばページ0には、プログラムデータP0とそのプログラムP0から計算されたECCデータE0とが格納されている。CPU201はプログラムデータを読み出すときに、そのECCデータも読み出し、プログラムにエラーがないか否かを確認する。プログラムはそれが実現する機能に従ってページ使用量が異なり、使用量が多い機能の場合には複数ブロックにわたることもある。
【0021】
NANDフラッシュメモリ102または103に格納された起動用プログラムが実行されることで本実施形態のシステムが起動する。電源投入により起動用プログラムを実行する場合、まず、CPU101は所定のNANDフラッシュメモリ102のプログラムをECCデータとともに読み出し、ECCデータを用いてデータのエラーの有無を判定する。エラーが検出された場合、CPU101は、プログラム読み出し元を所定のNANDフラッシュメモリ102から予備のNANDフラッシュメモリ103へ変更し、NANDフラッシュメモリ103からプログラムをRAM104へ転送して実行する。
【0022】
本実施形態によれば、他方のNANDフラッシュメモリ103からプログラムを起動した後、携帯通信機器にエラーが発生したことをユーザに通知し、ユーザ操作によりエラーが発生した側のNANDフラッシュメモリ102に格納されているプログラムの再書込みが選択可能である。さらに、プログラム再書き込みが選択された場合には、バッテリ電源の状態を考慮して再書き込みを実行するか否かを判定することも可能である。以下、本発明の実施例を詳細に説明する。
【0023】
2.第1実施例
図3および図4を参照しながら本発明の第1実施例を詳細に説明する。
【0024】
図3において、CPU101は起動動作を開始すると、予め定められたNANDフラッシュメモリ(#1)102に格納された起動用プログラムをそのECCデータと共にRAM104へ転送する(ステップS201)。CPU101は、当該ECCデータを用いてプログラムデータのエラーチェックを開始する(ステップS202)。読み出されたプログラムにエラーがないと判定された場合(ステップS203;N)、制御は図3のフローを出て、RAM104に転送されたプログラムで携帯通信機器を起動する。
【0025】
読み出されたプログラムにエラーがあると判定された場合(ステップS203;Y)、CPU101は別のNANDフラッシュメモリ(#2)103からプログラムを読み出してRAM104へ転送する(ステップS204)。この時、ECCデータも同時に読み出してエラー検出・訂正を行ってもよい。ただし、通常使用されるNANDフラッシュメモリ(#1)102に比べて、NANDフラッシュメモリ(#2)103は書込/消去回数が少ないのでエラーが生じにくく、十分な信頼性を保持しうる。NANDフラッシュメモリ(#2)103からRAM104にプログラムが転送されると、CPU101は、携帯通信機器の表示部12にメンテナンスを行うか否かをユーザに問いかけるメッセージを表示する(ステップS205)。具体的には、図4(A)に示すようなメッセージを表示部12に表示し、ユーザによる操作部13の操作入力を待つ(ステップS206)。この表示によって、ユーザにECCエラーが検出されたことを知らせると共に、ユーザにメモリ#1の書き換えの可否を選択させることができる。
【0026】
ユーザ操作入力があり、それがメンテナンス実行(図4(A)の例では「START」)を選択するものであれば(ステップS206;Y、ステップS207;Y)、ユーザがNANDフラッシュメモリ(#1)のメンテナンスを希望するものと判断し、表示部12に図4(B)に示すような「メンテナンス中」を意味する表示を行いユーザに電源供給を停止しないように注意を喚起する(ステップS208)。この表示を出した後、CPU101はメンテナンスの動作としてNANDフラッシュメモリ(#1)102のデータを消去し(ステップ209)、正常に動作したNANDフラッシュメモリ(#2)103のデータをNANDフラッシュメモリ(#1)102に書き込む(ステップS210)。NANDフラッシュメモリ(#2)103からNANDフラッシュメモリ(#1)102へのデータ書き込みが終了すると(ステップS211;Y)、CPU101はRAM104に転送されたプログラムで携帯通信機器を起動する。
【0027】
なお、ユーザ操作入力があり、それがメンテナンス不実行(図4(A)の例では「END」)を選択するものであれば(ステップS206;Y、ステップS207;N)、ユーザがNANDフラッシュメモリのメンテナンスを希望しないものと判断して、CPU101はNANDフラッシュメモリ(#1)102のプログラムを書き換えることなしに、NANDフラッシュメモリ(#2)103からRAM204に転送されたプログラムで携帯通信機器を起動する。
【0028】
以上説明したように、本実施例においては、以下に記載するような効果がある。
【0029】
第1の効果は、プログラムが格納されたNANDフラッシュメモリ(#1)102がディスターブ現象などでエラーが発生する状態となっても、ECCチェックなどでエラーを検出することで別のNANDフラッシュメモリ(#2)103のプログラムを用いて携帯通信機器を起動することができる。
【0030】
第2の効果は、NANDフラッシュメモリ(#2)103のプログラムで起動した後、NANDフラッシュメモリ(#1)102を消去してからNANDフラッシュメモリ(#2)103のデータを書き込むことで、次回からNANDフラッシュメモリ(#1)102で起動可能となる。
【0031】
第3の効果は、リカバーのためNANDフラッシュメモリ(#1)102の消去/書込みを開始する前に、表示部12にメンテナンスが必要な旨を表示することにより、NANDフラッシュメモリの専門知識がないユーザにも注意を喚起することができ、ユーザの操作に起因するデータ修復失敗を回避できる。
【0032】
第4の効果は、メンテナンスを行うか否かをユーザに選択させ、さらに、メンテナンス動作が行われている旨を表示することにより、携帯通信機器の状況をユーザに強く印象付けることができる。それによって、NANDフラッシュメモリの消去/書き込み中に電源供給を停止する操作を防止でき、NANDフラッシュメモリに格納されたプログラムデータが破壊されプログラムが起動しなくなる事態を確実に回避できる。
【0033】
3.第2実施例
図5を参照しながら本発明の第2実施例を詳細に説明する。ただし、図3と同じステップには同じ参照符号を付して説明は簡略化する。
【0034】
図5において、CPU101は起動動作を開始すると、予め定められたNANDフラッシュメモリ(#1)102に格納されたプログラムをそのECCデータと共にRAM104へ転送する(ステップS201)。CPU101は、当該ECCデータを用いてプログラムデータのエラーチェックを開始する(ステップS202)。読み出されたプログラムにエラーがないと判定された場合(ステップS203;N)、制御は図3のフローを出て、RAM104に転送されたプログラムで携帯通信機器を起動する。読み出されたプログラムにエラーがあると判定された場合(ステップS203;Y)、CPU101は別のNANDフラッシュメモリ(#2)103からプログラムデータを読み出してRAM104へ転送する(ステップS204)。
【0035】
NANDフラッシュメモリ(#2)103からRAM104にプログラムが転送されたら、CPU101は、携帯通信機器の表示部12にメンテナンスを行うか否かをユーザに問いかけるメッセージを表示し、ユーザによるメンテナンス実行の可否の選択入力を待つ(ステップS401)。メンテナンス実行(図4(A)の例では「START」)が選択されると(ステップS401;Y)、CPU101は電源部14の電源電圧を所定閾値Vthと比較してバッテリ残量を推定する(ステップS402)。バッテリ残量がプログラム書き換えに十分であれば(ステップS402;Y)、上述したステップS208−S211を実行することでNANDフラッシュメモリ(#1)102のプログラムを書き換える。
【0036】
バッテリ残量がプログラム書き換えに不十分であれば(ステップS402;N)、CPU101は表示部12に充電の必要性を表示してユーザに注意を喚起し、NANDフラッシュメモリ(#1)102のプログラムを書き換えることなしに、NANDフラッシュメモリ(#2)103からRAM204に転送されたプログラムで携帯通信機器を起動する。
【0037】
上述した第2実施例においても、上述した第1実施例と同様の効果を得ることができ、さらに、NANDフラッシュメモリの消去/書き込み中にバッテリ切れで電源供給が停止し、NANDフラッシュメモリに格納されたプログラムデータが破壊されプログラムが起動しなくなる事態を確実に回避できる。
【0038】
4.その他の実施例
本発明は上記実施例に限定されるものではなく、以下のような変形例を含むものと解すべきである。たとえば、図1ではNANDフラッシュメモリ102とNANDフラッシュメモリ103とが分けて記載されているが、これらは1つのNANDフラッシュメモリの別領域(別ブロック)で構成することも可能である。
【0039】
またNANDフラッシュメモリ103はプログラムを格納しておく用途であるから、不揮発性メモリであればよく、CPU101とのインタフェースが特定のNANDフラッシュ102と異なる方式でもあってもよい。また、NORフラッシュメモリやPRAM(Phase Change RAM)など種類の異なるメモリであっても同様の効果となる。NANDフラッシュメモリ103は脱着式のメモリカードであってもよい。
【0040】
さらに、上記第1および第2実施例ではCPU201がプログラムデータのエラーチェックを行うが、NANDフラッシュメモリにはECCエラーチェック機能を内蔵しているものもあり、それらを使ってCPU101自身がECC計算を行わず、エラー確認だけを行っても同様の効果を得ることができる。
【0041】
なお、図4に示す表示部12のメッセージは一例であり、同様の内容を指示するものであれば任意の形態であってもよい。また、操作部13のボタンの配置などの割付も任意である。
【産業上の利用可能性】
【0042】
本発明は、携帯電話器、PDA、ポータブル音楽プレーヤ、電子手帳、ラップトップPC、トランシーバなどの携帯機器に適用可能である。
【符号の説明】
【0043】
10 制御部
11 送受信部
12 表示部
13 操作部
14 電源部
101 CPU
102 NANDフラッシュメモリ
103 NANDフラッシュメモリ
104 RAM

【特許請求の範囲】
【請求項1】
表示部と操作部とを有する電子機器であって、
前記電子機器を起動するための同一の起動用プログラムを格納した複数の不揮発性記憶手段と、
第1不揮発性記憶手段から読み出した第1起動用プログラムのデータ誤りを検出する誤り検出手段と、
前記第1起動用プログラムのデータ誤りが検出されると、第2不揮発性記憶手段から第2起動用プログラムを読み出し、前記第1起動用プログラムを前記第2起動用プログラムで書き換えるか否かの選択メッセージを前記表示部に表示させ、前記操作部を通して書き換えが選択されると前記書き換えを実行するプログラム実行手段と、
を有することを特徴とする電子機器。
【請求項2】
前記プログラム実行手段は、前記書き換えが選択され実行されると、書き換え中であることを示すメッセージを前記表示部に表示させることを特徴とする請求項1に記載の電子機器。
【請求項3】
前記書き換え中であることを示すメッセージには電源停止を禁止する文言が含まれることを特徴とする請求項2に記載の電子機器。
【請求項4】
前記電子機器の電源となるバッテリの残量を推定する電源監視手段をさらに有し、
前記プログラム実行手段は、前記バッテリの残量が所定閾値より少ないときには前記書き換えを実行せずに、充電を促すメッセージを前記表示部に表示させることを特徴とする請求項1−3のいずれかに記載の電子機器。
【請求項5】
表示部と、操作部と、同一の起動用プログラムを格納した複数の記憶手段と、を有する電子機器におけるプログラム起動制御方法であって、
誤り検出手段が第1不揮発性記憶手段から読み出した第1起動用プログラムのデータ誤りを検出し、
プログラム実行手段が、前記第1起動用プログラムのデータ誤りが検出されると、第2不揮発性記憶手段から第2起動用プログラムを読み出し、
前記プログラム実行手段が、前記第1起動用プログラムを前記第2起動用プログラムで書き換えるか否かの選択メッセージを前記表示部に表示させ、
前記プログラム実行手段が、前記操作部を通して書き換えが選択されると前記書き換えを実行する、
ことを特徴とするプログラム起動制御方法。
【請求項6】
前記プログラム実行手段が、前記書き換えが選択され実行されると、書き換え中であることを示すメッセージを前記表示部に表示させる、
ことを特徴とする請求項5に記載のプログラム起動制御方法。
【請求項7】
前記書き換え中であることを示すメッセージには電源停止を禁止する文言が含まれることを特徴とする請求項6に記載のプログラム起動制御方法。
【請求項8】
電源監視手段が前記電子機器の電源となるバッテリの残量を推定し、
前記プログラム実行手段が、前記バッテリの残量が所定閾値より少ないときには前記書き換えを実行せずに、充電を促すメッセージを前記表示部に表示させる、
ことを特徴とする請求項5−7のいずれかに記載のプログラム起動制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate