(57)【要約】【課題】ブロック単位に書き込みが行われる不揮発性メモリに対する差分ファイルによるソフト更新に適したメモリ管理方法およびこれを用いた携帯端末装置を提供する。【解決手段】  ブロック単位に書き込みが行われる不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのコード領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当てる。管理領域内の管理情報として、少なくとも、代替先の不良ブロックと代替領域のブロックとの対応情報を記憶する。不良ブロックの利用時に、前記対応情報に基づいて不良ブロックに代えて代替領域のブロックを用いる。【選択図】図８
2008040701.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、
前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのコード領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当て、
前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、
前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いる
ことを特徴とするメモリ管理方法。
【請求項２】
前記管理情報は、さらに、前記代替領域の使用済のブロック数または未使用のブロック数を含む請求項１記載のメモリ管理方法
【請求項３】
前記管理情報は、さらに、前記管理領域および／または前記代替領域の不良ブロックの情報を含む請求項１または２記載のメモリ管理方法。
【請求項４】
前記管理領域はそれぞれ管理情報を格納する少なくとも２個のブロックを用い、前記管理情報にはその世代を表す世代情報を含む請求項１記載のメモリ管理方法。
【請求項５】
前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の１ブロックを新たな管理領域とする請求項１または４記載のメモリ管理方法。
【請求項６】
前記代替領域のブロックはメモリアドレス上、前記干渉領域から遠い側から使用していく請求項１記載のメモリ管理方法。
【請求項７】
ブロック単位に書き込みが行われる不揮発性メモリと、
前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのコード領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当てて利用する制御手段とを備え、
前記制御手段は、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、
前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いる
ことを特徴とする携帯端末装置。
【請求項８】
前記プログラムコードを記憶可能なＲＡＭを備え、
前記制御手段は、前記不揮発性メモリ内のプログラムコードの実行に先だち、当該プログラムコードをブロック単位に前記ＲＡＭ上に転送して前記ＲＡＭ上で実行する請求項７記載の携帯端末装置。
【請求項９】
前記制御手段は、前記不揮発性メモリのコード領域内のいずれかのブロックにアクセスする際、前記管理情報を確認し、当該ブロックに対して前記代替領域のブロックが割り当てられているときには、当該ブロックに代えて前記代替領域のブロックを利用する請求項７記載の携帯端末装置。
【請求項１０】
前記管理情報は、さらに、前記代替領域の使用済のブロック数または未使用のブロック数を含む請求項７記載の携帯端末装置
【請求項１１】
前記管理情報は、さらに、前記管理領域および／または前記代替領域の不良ブロックの情報を含む請求項７または１０記載の携帯端末装置。
【請求項１２】
前記管理領域はそれぞれ管理情報を格納する少なくとも２個のブロックを用い、前記管理情報にはその世代を表す世代情報を含む請求項７記載の携帯端末装置。
【請求項１３】
前記制御手段は、前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の１ブロックを新たな管理領域とする請求項７または１２に記載の携帯端末装置。
【請求項１４】
前記制御手段は、前記代替領域のブロックを、メモリアドレス上、前記干渉領域から遠い側から使用していく請求項７記載の携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位に書き込みが行われる不揮発性メモリに関し、特にそのメモリ管理方法およびこれを用いた携帯端末装置に関する。
【背景技術】
【０００２】
携帯電話端末をはじめとする携帯端末装置（単に携帯端末ともいう）には、再書込可能な不揮発性の半導体メモリとして、フラッシュメモリが利用されている。フラッシュメモリには、ＮＡＮＤ型とＮＯＲ型がある。ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリともいう）は、大容量化に適し、単位容量当たりのコストが安価であるが、一定サイズのブロック単位での読み書きしかできず、ランダムアクセスが遅い、という特徴を有する。一方、ＮＯＲ型フラッシュメモリは、読み出し速度が高速で高速ランダムアクセスが可能であるが、高集積化に向かず、書込に大電流が必要である、という特徴を有する。
【０００３】
そこで、コスト、高集積化、消費電力の面で有利なＮＡＮＤメモリを携帯端末のプログラムの記憶に利用し、ＮＡＮＤメモリからＢｏｏｔ（起動）を行うような場合、一旦、ＮＡＮＤメモリからＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)等のＲＡＭにプログラム領域が転送されて、プログラムはＲＡＭ上で実行される。この為、プログラム本体はＮＡＮＤメモリ上に存在することになる。
【０００４】
ＮＡＮＤメモリには、出荷時に予め不良ブロックが含まれるのは通常となっている。また、ＮＡＮＤメモリは使用年月とともに劣化が発生し、初期の時点では良品であったブロックが不良になることを考慮する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、携帯端末等の電子機器のソフトウェア（単にソフトともいう）には、バグと呼ばれる不具合を修正したり、機能の追加や改善を行ったりするためにバージョンアップが行われるのが一般的である。
【０００６】
バージョンアップ時には、プログラムをＮＡＮＤメモリにローダ等にて格納する。この場合、不良ブロックはスキップしてＮＡＮＤメモリにプログラムをロードする方式が一般的である。
【０００７】
後発的に不良ブロックが発生した場合、プログラムの全領域をＮＡＮＤメモリにロードする場合は間題は発生しない。しかし、差分データを使用したソフト更新の様に、更新前・後の差分ファイルを生成するような場合、後発不良ブロックの発生に起因して更新前プログラムのアドレス連続性が損なわれ、更新用ファイルとの整合性が取れなくなり、プログラム更新が実施できなくなったり、できたとしてもそのブロック以降でブロック内容を１ブロック分ずらして再書込を行う必要が生じる。その結果、差分ファイルの更新だけで済まなくなり、差分ファイルによるソフト更新の利点が損なわれるという問題があった。
【０００８】
本発明はこのような背景において、ブロック単位に書き込みが行われる不揮発性メモリに対する差分ファイルによるソフト更新に適したメモリ管理方法およびこれを用いた携帯端末装置を提供するものである。
【課題を解決するための手段】
【０００９】
本発明によるメモリ管理方法は、ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのコード領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当て、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いることを特徴とする。
【００１０】
このメモリ管理方法では、不揮発性メモリの複数のブロックを「管理領域」と「コード領域」と「代替領域」と「干渉領域」とに分けて、前記管理領域と前記代替領域との間に前記干渉領域を配置する。この構成により、代替領域を管理領域とコード領域の両方に共通に利用可能とすることができる。また、不揮発性メモリ自体に管理領域を設けることにより、外部に特別なメモリ管理手段を設けることなく不良ブロックの代替管理を行うことができる。
【００１１】
より具体的な実施の形態として、前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の１ブロックを新たな管理領域とする。また、前記代替領域のブロックはメモリアドレス上、前記干渉領域から遠い側から使用していく。これにより、干渉領域が管理領域と代替領域との間の位置可変の境界として機能し、代替領域のブロックを管理領域と代替領域のいずれにも利用可能となる。
【００１２】
本発明による携帯端末装置は、ブロック単位に書き込みが行われる不揮発性メモリと、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのコード領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当てて利用する制御手段とを備え、前記制御手段は、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、不揮発性メモリに後発不良ブロックが発生した場合でもその不良ブロックを代替領域のブロックで代替することにより、差分による更新用ファイルをベースにしたソフト更新を行うことが容易に実現可能になる。
【００１４】
管理領域に後発不良ブロックが発生した場合でも干渉領域を代替領域側へずらして元の干渉領域を新たな管理領域として利用することにより、実質的に代替領域のブロックを管理領域とコード領域の両方が利用することができる。すなわち、代替領域の一定個数のブロックの用途を限ることなく、代替領域のすべてのブロックを有効に利用することが可能となる。
【００１５】
前記管理領域としてそれぞれ管理情報を格納する少なくとも２個のブロックを用いることにより、管理情報を外部にバックアップする必要がなくなる。
【００１６】
また、代替領域のブロックによる不良ブロックの代替に関する管理情報を不揮発性メモリの少なくとも１ブロック内に格納して利用することにより、ＭＭＵ等の特別な論理・物理アドレス変換手段を設ける必要がなくなる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の好適な実施の形態について図面を参照しながら、詳細に説明する。
【００１８】
図１は、本発明による実施の形態に係る携帯端末１０の概略のハードウェア構成を示している。携帯端末１０は、制御部１１、音声処理部１２、マイク１３、スピーカ１４、記憶部１５、通信部１６、アンテナ１７、操作部１８、表示部１９を備える。
【００１９】
制御部１１は、ＣＰＵ(Central Processing Unit)やＤＳＰ(Digital Signal Processor)などのプロセッサを有し、携帯端末１０の処理および各部の制御を司る。音声処理部１２は制御部１１の制御下で通話や音楽再生等の音声処理を行い、マイク１３からの音声入力、スピーカ１４への音声出力を行う。
【００２０】
記憶部１５は、プログラムやデータを記憶する部位であり、本実施の形態ではＳＤＲＡＭ１５ａ、およびＮＡＮＤメモリ１５ｂを有する。
【００２１】
ＮＡＮＤメモリ１５ｂは、制御部１１が実行するプログラムを格納する再書込可能な不揮発性メモリである。ＮＡＮＤメモリ１５ｂにはプログラム本体のコード（プログラムコード）を格納するＣｏｄｅ（コード）領域２１と更新用ファイルを格納するＳｔｏｒａｇｅ（ストレージ）領域２２が存在する。Ｓｔｏｒａｇｅ領域２２には、プログラムの他、電話帳、電子メール、ウェブコンテンツ、音楽、画像、等の各種のデータを格納することができる。
【００２２】
Ｃｏｄｅ領域２１は、Ｂｏｏｔ時にＳＤＲＡＭ１５ａへ展開され、プログラムはＳＤＲＡＭ１５ａ上で実行される。より具体的には、制御部１１および記憶部１５に電源が供給されると、制御部１１の組み込みロジックによってＮＡＮＤメモリ１５ｂのＢｏｏｔ領域の内容が制御部内蔵のメモリ領域に読み込まれて実行される。このプログラムには本発明で定める不良ブロック管理方法が組み込まれており、このプログラムによって実行対象プログラムコードがＮＡＮＤメモリ１５ｂからＳＤＲＡＭ１５ａへと展開され、プログラム２５がＳＤＲＡＭ１５ａ上で実行される。更新用ファイルは事前に、携帯端末１０の外部で専用ＴＯＯＬで作成され、通信部１６を介して、専用サーバからダウンロードされ、Ｓｔｏｒａｇｅ領域２２に格納される。
【００２３】
また、本発明ではＮＡＮＤメモリ上の連続領域に管理領域を設け、ここに管理情報を記憶して不良ブロックの管理および後述するブロック代替管理を行う。なお、本明細書における「ブロック」とはメモリデバイス毎に定められる特定サイズのまとまった単位領域のことをいう。
【００２４】
通信部１６は、制御部１１の制御下で、アンテナ１７を介して基地局（図示せず）と無線による送受信を行う部位である。操作部１８は、テンキーや各種の制御キー等を有し、ユーザによる指示や情報を制御部１１に入力する機能を有する。表示部１９は、例えばＬＣＤ、有機ＥＬ等の表示デバイスを有し、ユーザに対してテキスト、画像（静止画、動画）等の可視情報を表示する機能を有する。
【００２５】
上述したように、ＮＡＮＤメモリ１５ｂからＢｏｏｔ処理を起動する場合、プログラムはＮＡＮＤメモリ１５ｂからＳＤＲＡＭ１５ａ上へ展開され、プログラムはＳＤＲＡＭ１５ａ上で実行される。図２ではＮＡＮＤメモリ１５ｂのＢｌｏｃｋ３からこれ以降のブロックにプログラム領域を格納している例を示している。ＮＡＮＤメモリ１５ｂに対してプログラムを書き込む際に、図２（ｂ）に示すように、仮にある「ブロックＮ」が不良であった場合、その不良ブロックは使用せず、次の正常な「ブロックＮ＋１」にプログラムを書き込む。プログラムはＳＤＲＡＭ１５ａ上で実行されるのでこれで足りる。
【００２６】
ＮＡＮＤメモリ１５ｂのＢｌｏｃｋＮで不良が検出された場合、プログラムはＢｌｏｃｋＮを飛ばして、ＢｌｏｃｋＮ＋１へ格納される。この方式は、プログラム全体を更新するものである。しかしながらこの方式は、更新用ファイル（差分ファイル）を使用したソフト更新を行う際には不都合を生じる。
【００２７】
更新用ファイル３３は、図３に模式的に示すように、更新前プログラム３１と更新後プログラム３２とを比較して、差分ファイルとして生成される。通常、この更新用ファイル３３は、更新後プログラム３２に比べてサイズ（データ量）が小さく、更新後プログラム３２全体に比べて、ダウンロードや更新処理に要する時間が短縮されるという利点がある。
【００２８】
図４に示すように、更新用ファイル３３はソフト更新実行時、携帯端末内部のＮＡＮＤメモリ１５ｂのＳｔｏｒａｇｅ領域２２に格納され、この更新用ファイルに基づいて、ＮＡＮＤメモリ１５ｂのＣｏｄｅ領域２１に格納されている更新前プログラム３１に対して、ソフト更新エンジン２３が更新処理を行い、ＮＡＮＤメモリ上に更新後プログラム３２を生成する。ソフト更新エンジン２３は、例えば、ＮＡＮＤメモリ１５ｂ内に格納されており、更新処理時、更新エンジン２３を、一旦、ＲＡＭ１５ａに展開（コピー）し、このＲＡＭ１５ａ内のソフト更新エンジン２３を実行することによりソフト更新を実現することができる。
【００２９】
プログラムはＮＡＮＤメモリに格納される為、従来方式ではＮＡＮＤメモリの全ブロックが正常の場合は問題ないが、図５に示すように、後発的に不良ブロックＮが発生した場合は、更新前プログラムのアドレス連続性が損なわれ、更新用ファイルとの整合性が取れなくなり、プログラム更新が実施できなくなったり、できたとしても、当該不良ブロック以降のブロックについてプログラムをずらして記憶させるために、本来必要でないブロックの書込が必要となる。
【００３０】
本実施の形態では予め、ＮＡＮＤメモリの不良ブロックに対応付け可能な代替ブロックを準備し、不良ブロックと代替ブロックの物理アドレスを論理アドレスで管理することにより、ＮＡＮＤメモリのアドレス連続性を確保することができ、連続アドレスを前提として作成された、ソフト更新前と更新後の更新用ファイル（差分ファイル）を用いて、ＮＡＮＤメモリに不良ブロックが後発した場合でもソフト更新を実行することが可能になる。
【００３１】
以下、更新前プログラムを格納したＮＡＮＤメモリに後発不良ブロックが発生した場合でもソフト更新を可能にする手法について説明する。
【００３２】
図６は、本実施の形態におけるＮＡＮＤメモリ１５ｂのメモリ空間としての内部構成例を示している。ＮＡＮＤメモリ１５ｂは複数の単位データ量に対応するブロックに分割され、各ブロックは図示のようにその機能が割り当てられる。図６の機能の割当状態は初期の割当状態であり、後述するように、この状態は変化しうる。
【００３３】
ＮＡＮＤメモリ１５ｂの先頭ブロック（Ｂｌｏｃｋ０）にはブートコードが配置される。Ｂｌｏｃｋ１以降のブロックを使用して本実施の形態の動作が行われる。
【００３４】
図示の例では、Ｂｌｏｃｋ０に続くＢｌｏｃｋ１，Ｂｌｏｃｋ２の二つのブロックを「管理領域１」および「管理領域２」として用いている。「管理領域」はＮＡＮＤメモリの不良ブロックおよび代替ブロックを管理するための管理情報を記憶する領域である。管理情報の詳細については後述する。管理領域はＮＡＮＤメモリの書込時の電源断などによる管理情報の消失（破損）の対策として、複数組用意している。
【００３５】
「管理領域２」に続いて「干渉領域１」および「干渉領域２」がそれぞれＢｌｏｃｋ３，４に設けられている。「干渉領域」は、管理領域と代替領域の境界を識別する為に使用する領域である。
【００３６】
「干渉領域２」のＢｌｏｃｋ４に続いてＢｌｏｃｋ５〜Ｂｌｏｃｋ１４までを代替領域としている。代替領域は不良ブロックを代替するための領域として確保されている。図の例では代替領域として１０個のブロックを確保しているが、このブロック数は使用するＮＡＮＤメモリの容量を考慮して最適な値に調整される。
【００３７】
代替領域の次のブロック（Ｂｌｏｃｋ１５）から以降のブロックは、実際のプログラムが格納してあるＣｏｄｅ領域が続く。
【００３８】
ここで、図７により、本実施の形態における管理領域の内部構成およびその記憶情報について説明する。管理領域の１つのブロック１５０には、次のような情報が記憶される。
（１）チェックデジット１５１：  １つの管理領域（ブロック）内のデータの破損等をチェックするためのチェックサム等のチェック用データである。これにより、データ書込中に電源断となったような場合のブロック内の不完全な書込状態を判別することができる。
（２）世代数１５２：  管理領域（ブロック）内の管理情報が更新されていく際の世代を表す世代情報であり、例えば次第に増加していく番号である
（３）代替領域の使用数１５３：  代替領域として用意された複数のブロックのうち使用済のブロックの個数である。これに代えて、未使用のブロックの個数を用いてもよい。代替領域の当初のブロック数は既知の値（ここでは１０）なので、使用済のブロック数と未使用のブロック数とはいずれか一方が分かれば他方が分かる。なお、後述するように代替領域のブロックが不良となる場合もあり、このような不良ブロックは「使用済」に該当する。
（４）代替先の対応情報１５４：  代替領域の正常な未使用ブロックが特定のブロックの代替先として割り当てられた場合、その対応関係を表す情報であり、ここでは、不良ブロックのブロック番号と代替領域のブロック番号とを対応づけて記憶している。この例では、最大１０個の対応情報を格納可能である。
（５）管理用領域（Block1-14）内の不良ブロック情報１５５：  管理領域、干渉領域、および代替領域（図６の例ではＢｌｏｃｋ１〜１４）は管理用領域であり、これらのいずれかのブロックが不良となった場合に記録されるその不良ブロックを特定する情報（ここではブロック番号）である。ある管理用領域のブロックを利用しようとして、そのブロックが管理用領域のブロックが不良として記録されていた場合には、そのブロックを飛ばして次のブロックを利用する。
【００３９】
図８により、ブロック書込実行時（ソフト更新時）に、後発的な不良ブロックが検出された場合の動きを説明する。今、ＢｌｏｃｋＮ＋３に不良が検出され書込が不可であることが判明したとする。このＢｌｏｃｋＮ＋３はＢａｄブロックとしてマーキングされ、以降使用は禁止される。ＢｌｏｃｋＮ＋３に書込を行う予定であったＣｏｄｅは、次のＢｌｏｃｋＮ＋４ではなく、代替領域１０に代替して書き込まれる。この代替情報は「管理領域１」に記憶する。この例では、代替領域１０がＢｌｏｃｋＮ＋３を代替するような代替情報が記憶する。
【００４０】
このように管理情報で不良ブロックと代替ブロックの管理を行うことで、実際の物理アドレスを論理アドレスに対応づけ、論理アドレスを物理アドレスへ変換するアドレス変換を行うことが可能になる。また、論理アドレスを参照することでメモリアドレスの連続性を確保することができる。このような管理領域に記憶された代替情報による論理アドレスの物理アドレスによる変換によれば、外部に既知のメモリ管理ユニット（ＭＭＵ）等の特別なアドレス変換手段を設ける必要がない。
【００４１】
次に図９により、管理領域が不良ブロックになった場合の動作を説明する。本実施の形態では、上述のように、管理領域は「管理領域１」と「管理領域２」により、正・副の２面管理される。「管理領域１」と「管理領域２」は交互に利用され、利用される側が「正」となり、他方が「副」となる。管理領域への情報の格納は、１つの部録に１世代分の管理情報を格納する方法と、１つのブロックに複数世代の管理情報を追記して行き、正領域への追記が不可能になった場合に「正」「副」の切り替えを行う方法とがある。ここでは、説明の簡便のために、前者の方法について説明する。
【００４２】
なお、２面用意する理由は次のとおりである。本発明を適用するメモリの特性上、既に情報が記入されている場所に新たに情報を記録する場合、一度、そのブロックの消去操作を行い、記録されている情報を削除する必要がある。仮に、１面のみで管理領域を更新する場合、管理領域を消去した際に電源断などの何らかの障害が発生した場合に現在の管理情報が失われてしまうことになる。このような不具合を防止するため、最新の情報を保持するブロックと、消去操作を行い新たに更新された管理情報を書込ブロックとを分離する。具体的な管理領域の更新動作では、管理領域の更新が必要となった場合、「副」領域を消去し、「正」領域から読み出した情報を更新し「副」領域に新しい世代数で書き込む。この書込終了時点で、正・副の領域の交換が完了し、旧「副」領域が「正」領域へ、旧「正」領域が「副」領域へと変更されることになる。
【００４３】
なお、管理情報の書込は、事前にＲＡＭ上へ読み出していた「正」の管理領域のコピーを更新し、それまで「副」であった管理領域に書き込むことにより行われる（なお、更新の手法としては、管理領域の更新が必要になった時点で「正」領域からメモリへのコピーを作成する方法もありうるが、本実施の形態では実行時の効率を考慮して、予め最新の管理情報のコピーがメモリ上に読み出されて常駐しているものとする）。また、管理情報の正・副の区別は、管理情報に付けられた世代数（１５２）の比較を行い、より最近に記録された領域を「正」として扱う。
【００４４】
図９（ａ）の状態でＲＡＭ上で更新した新しい管理情報を「副」領域に書き込もうとした際に、図９（ｂ）に示すようにＢｌｏｃｋ２が不良ブロックとなった場合、図９（ｃ）に示すように、Ｂｌｏｃｋ３の干渉領域を新たな「管理領域２」として確保する。元の「管理領域２」は不良としてＲＡＭ上の管理情報に記録され、Ｂｌｏｃｋ２が不良であると更新された管理情報が新たに確保された「管理領域２」へと書き込まれる。これにより、元の「管理領域１」が「副」となり、新たに書き込まれた「管理領域２」が「正」となる。
【００４５】
Ｂｌｏｃｋ３が管理領域となった結果、干渉領域１，２を１ブロック分ずらして、Ｂｌｏｃｋ４，５に移動させる。干渉領域には予め０ｘＡＡ等の所定のデータで書込を行っておき、Ｃｏｄｅ領域２１と管理領域の境界を明示するための領域とする。なお、本実施の形態では、代替領域の未使用ブロックも干渉領域と同じ所定のデータを書き込んであり、このような場合には、ブロック内のデータ上は干渉領域と代替領域とは区別が付かず、「干渉領域１，２を１ブロック分ずら」すといっても、管理情報が変わるのみで、特に代替領域の１ブロックを新たな干渉領域とするために当該代替領域ブロックに特別な書き込み処理等を行う必要はない。
【００４６】
上述したように、代替領域はＣｏｄｅ領域の不良ブロックを代替するのみならず、図９に示したように、管理領域の代替にも利用することができる。但し、管理領域の代替の仕方はＣｏｄｅ領域の不良ブロックの代替とは異なり、干渉領域をずらすことにより行う。このように、ＮＡＮＤメモリ１５ｂ内のメモリ空間において管理領域と代替領域との間に干渉領域を挟み込む形式で各ブロックの機能の割当を行うことにより、代替領域を有効に利用することができる。
【００４７】
この代わりに、管理領域に専用の固定数の代替領域と、Ｃｏｄｅ領域に専用の固定数の代替領域を設ける実装形態も考えられるが、管理領域とＣｏｄｅ領域の不良ブロックの発生具合によって、一方の代替領域が無駄となる場合がありうる。これに対して、本実施の形態のように、代替領域を動的に管理領域とＣｏｄｅ領域のいずれにも利用できる形態としたので、代替領域のすべてのブロックを無駄なく有効に利用することができる。
【００４８】
本実施の形態では、代替処理は干渉領域が２面（２ブロック）分とれなくなる時点まで代替処理を継続できる。代替領域１まで使用後、次の代替領域は干渉領域であることを検出して、代替動作を停止する。これにより、管理領域と代替領域がオーバーラップすることが防止される。
【００４９】
なお、図９等において、領域の割当の変更時に各領域の番号を１から付け直すようにリナンバリングを行っているが、これは説明の便宜上であり、各領域に付した番号は特に重要ではない。
【００５０】
図８に示したとおり、代替領域によるＣｏｄｅ領域の不良ブロックの代替は干渉領域から最も遠い代替領域のブロックから利用されていく。
【００５１】
図１０は、このようにしてＣｏｄｅ領域の不良ブロックが代替領域に代替されていき、代替領域が残り１ブロックとなり、かつ、その時点でＣｏｄｅ領域内のＢｌｏｃｋＬ（図示省略）に不良が発生し、代替領域を使い切った状態を示している。すなわち、干渉領域２に隣接した代替領域１まで「使用済」となっている。また、同図のＢｌｏｃｋ１１に示すように、代替領域内のブロックが不良となる場合もある。この場合には、このブロックを利用しないように、管理用領域内の不良ブロック情報１５５（図７）に記憶されて管理される。
【００５２】
以上の構成により、管理領域にて論理アドレスを管理することにより、ＮＡＮＤメモリ内のプログラムのアドレスの連続性を保つことが実現される。このためＮＡＮＤメモリに不良ブロックがあった場合でも、ソフト更新エンジンが管理領域を参照することにより更新用ファイルをベースにソフト更新を行うことが可能になる。
【００５３】
図１１は、不良ブロックが発見された後に実行される不良ブロック代替処理の概略処理を表すフローチャートである。なお、後発的な不良ブロックは、後述する図１２のステップＳ２３，Ｓ２４およびこの図１１のステップＳ１８で検出されうる。
【００５４】
図１１の処理において、まず、代替領域に未使用の正常ブロックが存在するか否かをチェックする（Ｓ１１）。存在しなければ、この処理を終了する。この際、エラーメッセージ等の何らかのメッセージを表示部に表示するようにしてもよい。
【００５５】
未使用の正常ブロックが存在する場合、不良ブロックが管理領域のブロックであるかかどうかをチェックする（Ｓ１２）。管理領域のブロックでなければ、ステップＳ１５へ進む。管理領域のブロックであれば、現在の干渉領域１を新たな管理領域とし（Ｓ１３）、現在の代替領域１を新たな干渉領域２とする（Ｓ１４）。
【００５６】
ステップＳ１５では、不良ブロックがＣｏｄｅ領域のブロックであるか否かをチェックする。Ｃｏｄｅ領域のブロックでない場合は、そのブロック（代替領域のブロック）を不良として管理情報を更新し（Ｓ１７）、ステップＳ１８へ進む。
【００５７】
Ｃｏｄｅ領域のブロックである場合、干渉領域から最も遠い代替領域の未使用正常ブロックで不良ブロックを代替する（Ｓ１６）。
【００５８】
その後、ＮＡＮＤメモリ１５ｂの管理領域のブロックの内容を更新する（Ｓ１８）。
【００５９】
図１２は、ＮＡＮＤメモリ１５ｂ内のプログラムを更新用ファイルに基づいて更新する処理を表したフローチャートである。
【００６０】
まず、ＮＡＮＤメモリ１５ｂにプログラムを書き込む際に（Ｓ２１）、書込対象ブロックが代替領域に代替されているかを管理領域（正）の管理情報から判断する（Ｓ２２）。
【００６１】
代替されている場合には、管理情報で指定された対象代替領域（代替ブロック）ヘプログラムの書込を行う（Ｓ２３）。代替されていない場合には、その書込対象ブロックに対してプログラムの書込を行う（Ｓ２４）。
【００６２】
図１３は、不良ブロックの代替の結果によるＮＡＮＤメモリの物理アドレスに対応する実際のブロックと論理アドレスに対応するＣｏｄｅ領域との関係を示す図である。
【００６３】
管理領域の管理情報によるＮＡＮＤメモリ１５ｂの物理アドレスと論理アドレスの対応付けにより、更新前プログラムのＮＡＮＤメモリに不良ブロックがあった場合でも、論理アドレスは連続性が確保され、更新用ファイルにより、ＮＡＮＤメモリ１５ｂ内のブロックの内容をずらす必要なく、プログラムの更新が可能となる。
【００６４】
また、ＮＡＮＤメモリ１５ｂからＳＤＲＡＭ１５ａヘプログラムを転送する場合も、同様に代替領域の利用があるかどうかをチェックすることにより、正しくプログラムをＳＤＲＡＭへ転送することが可能となる。
【００６５】
図１４は、ＮＡＮＤメモリ１５ｂの読み出し処理を表したフローチャートである。まず、読み出し対象ブロックが代替されているかを管理情報に基づいてチェックする（Ｓ３１）。代替されていなければ、読み出し対象ブロックをそのまま読み出す（Ｓ３２）。代替されていれば、その代替先ブロックを読み出す（Ｓ３３）。他の読み出し対象ブロックがあれば（Ｓ３４）、ステップＳ３１へ戻り、上記の処理を繰り返す。
【００６６】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。例えば、携帯電話端末を例に説明したが、電話端末に限るものではない。
【００６７】
本発明は、ソフトウェアの差分更新を主な応用としてあげたが、ソフトウェアの差分更新に限らず、一般にＮＡＮＤメモリの一部のブロックの内容を他のブロックに影響を与えずに書き換える必要がある場合に適用することができる。
【００６８】
本発明はＮＡＮＤ型フラッシュメモリに適用して好適であるが、ＮＯＲ型フラッシュメモリへの適用を排除するものではない。
【図面の簡単な説明】
【００６９】
【図１】本発明による実施の形態に係る携帯端末１０の概略のハードウェア構成を示す図である。
【図２】図１内に示したＮＡＮＤメモリの特定のＢｌｏｃｋからこれ以降のブロックにプログラム領域を格納している例を示す図である。
【図３】更新前プログラムと更新後プログラムとを比較して差分ファイルとしての更新用ファイルが生成される様子を模式的に示す図である。
【図４】更新用ファイルに基づくソフト更新エンジンによる更新前プログラムの更新の様子を模式的に示す図である。
【図５】ＮＡＮＤメモリに不良ブロックが発生した場合の、更新用ファイルによるＮＡＮＤメモリ内のプログラム更新時の問題を説明するための図である。
【図６】本発明の実施の形態におけるＮＡＮＤメモリのメモリ空間としての内部構成例を示す図である。
【図７】本発明の実施の形態における管理領域の内部構成およびその記憶情報について説明するための図である。
【図８】代替領域によるＣｏｄｅ領域の不良ブロックの代替の様子を説明するための図である。
【図９】本発明の実施の形態において管理領域が不良ブロックになった場合の動作を説明するための図である。
【図１０】本発明の実施の形態においてＮＡＮＤメモリ内の代替領域を使い切った状態を示す図である。
【図１１】本発明の実施の形態において、不良ブロックが発見された後に実行される不良ブロック代替処理の概略処理を表すフローチャートである。
【図１２】本発明の実施の形態において、ＮＡＮＤメモリ内のプログラムを更新用ファイルに基づいて更新する処理を表したフローチャートである。
【図１３】本発明の実施の形態において、不良ブロックの代替の結果によるＮＡＮＤメモリの物理アドレスに対応する実際のブロックと論理アドレスに対応するＣｏｄｅ領域との関係を示す図である。
【図１４】本発明の実施の形態において、ＮＡＮＤメモリの読み出し処理を表したフローチャートである。
【符号の説明】
【００７０】
１０…携帯端末、１１…制御部、１２…音声処理部、１３…マイク、１４…スピーカ、１５…記憶部、１５ａ…ＳＤＲＡＭ、１５ｂ…ＮＡＮＤメモリ、１６…通信部、１７…アンテナ、１８…操作部、１９…表示部、２１…Ｃｏｄｅ領域、２２…Ｓｔｏｒａｇｅ領域、２３…ソフト更新エンジン、３１…更新前プログラム、３２…更新後プログラム、３３…更新用ファイル、１５０…ブロック、１５１…チェックデジット、１５２…世代数、１５３…代替領域の使用数、１５４…代替先の対応情報、１５５…管理用領域（Bｌｏｃｋ１〜１４）内の不良ブロック情報
【図１】
2008040701.tif 000003
【図２】
2008040701.tif 000004
【図３】
2008040701.tif 000005
【図４】
2008040701.tif 000006
【図５】
2008040701.tif 000007
【図６】
2008040701.tif 000008
【図７】
2008040701.tif 000009
【図８】
2008040701.tif 000010
【図９】
2008040701.tif 000011
【図１０】
2008040701.tif 000012
【図１１】
2008040701.tif 000013
【図１２】
2008040701.tif 000014
【図１３】
2008040701.tif 000015
【図１４】
2008040701.tif 000016