説明

情報処理装置および情報処理方法

【課題】動作に重要なプログラムが書き込まれているフラッシュROM上の物理的な記憶領域のデータが不良になっている場合にもプログラムを実行できるようにする。
【解決手段】この情報処理装置は、複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有するフラッシュメモリと、前記フラッシュメモリの物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を、前記記憶領域の物理的な記憶位置から読み取った第1エラー訂正符号に基づいて第1のエラー訂正を行うことで修復する第1エラー訂正部と、前記第1エラー訂正手段によるエラー訂正の結果、前記エラー箇所が修復できなかった場合、前記フラッシュメモリから読み出した前記データに含まれる第2エラー訂正符号に基づいて第2のエラー訂正を行うことで前記エラー箇所を修復する第2エラー訂正部とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばフラッシュROMなどのフラッシュメモリにデータを書き込みおよび読み出し、処理を実行する情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
近年、微細加工の技術向上に伴い、例えばフラッシュROMなどのフラッシュメモリの微細化が進んでおり、大容量・安価なフラッシュメモリを製造可能になってきている。
【0003】
この半面、データ保持の信頼性は低下しており、フラッシュメモリに書き込んだデータが何らかの原因で破損し正しく読み出せなくなることが多くなっている。
【0004】
フラッシュメモリのデータに、例えば装置(システム)を起動するための起動プログラムが含まれていた場合、装置(システム)そのものが起動しなくなり、例えばデジタルテレビジョン受信装置などの家電機器の場合、起動を失敗すると画面に何も表示されないことから対応が困難になる。
【0005】
正しく読み出せなかったフラッシュメモリのデータをフラッシュメモリから正しく読み出す従来の技術としては、例えば異なる複数のブロックにブートプログラムを記憶しておき、はじめのブロックから読み出したデータに対してECC(Error Correcting Code)に基づく判定を行い、不良ブロックと判定した場合、次のブロックに記憶されたブートプログラムを読み込み、不良でないと判定したデータをCPUへ出力する技術が既に提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−215824号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述した従来の技術の場合、ブートプログラムが書き込まれている複数のブロックをECCに基づき判定した結果、不良ブロックであった場合、正しいデータをCPUに送れず、システムを起動できないという問題が解決せず、必ずしもよい方法とは言えない。
【0008】
本発明はこのような課題を解決するためになされたもので、動作に重要なプログラムが書き込まれているフラッシュROM上の物理的な記憶領域のデータが不良になっている場合にもプログラムを読み出して実行できる情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の情報処理装置は、複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有するフラッシュメモリと、前記フラッシュメモリの物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を、前記記憶領域の物理的な記憶位置から読み取った第1エラー訂正符号に基づいて第1のエラー訂正を行うことで修復する第1エラー訂正部と、前記第1エラー訂正手段によるエラー訂正の結果、前記エラー箇所が修復できなかった場合、前記フラッシュメモリから読み出した前記データに含まれる第2エラー訂正符号に基づいて第2のエラー訂正を行うことで前記エラー箇所を修復する第2エラー訂正部とを具備することを特徴とする。
【0010】
本発明の情報処理方法は、複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有するフラッシュメモリからデータを読み出して処理を行う情報処理方法において、前記フラッシュメモリの物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を前記記憶領域の物理的な記憶位置から読み取った第1エラー訂正符号に基づいて第1のエラー訂正を行うことで修復し、前記第1のエラー訂正の結果、前記エラー箇所が修復できなかった場合、前記フラッシュメモリから読み出した前記データに含まれる第2エラー訂正符号に基づいて第2のエラー訂正を行うことで前記エラー箇所を修復することを特徴とする。
【発明の効果】
【0011】
本発明によれば、動作に重要なプログラムが書き込まれているフラッシュROM上の物理的な記憶領域のデータが不良になっている場合にもプログラムを読み出して実行できる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態のTV装置の構成を示す図である。
【図2】フラッシュROMへ書き込むべき対象のデータの構成を示す図である。
【図3】フラッシュROMの記憶領域に対応して生成されるECCの模式図である。
【図4】このTV装置の起動動作を示すフローチャートである。
【図5】起動動作の中のECC訂正動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の情報処理装置に係る一つの実施の形態のテレビジョン受信装置(以下「TV装置」と称す)を詳細に説明する。図1はTV装置の本体1(以下「TV本体1」と称す)の構成を示す図である。
【0014】
図1に示すように、この実施形態のTV装置は、TV本体1に、パワーユニット10、マスクROM11、フラッシュROM12、ダイナミック・ランダム・アクセスメモリ13(以下「DRAM13」と称す)、キー操作部14、映像表示用のディスプレイ等の表示部15と、赤外線受信ユニット16、チューナー17、ビデオ処理部18、オーディオ処理部19、MPU20(マイクロ・プロセッシング・ユニット)などを有している。
【0015】
キー操作部14には、例えば電源キー、音量アップダウンキー、チャネル操作キー、方向キー、メニューキーなどが備えられている。
【0016】
パワーユニット10は、キー操作部14の電源キーなどがオンされると、商用電源から供給された100Vの交流電圧をAC/DC変換または減圧などを行い、TV本体1内の各部に電力を供給する。
【0017】
マスクROM11には、データの書き換えが不可能であり、電源投入と共にMPU20により読み出される起動プログラムおよび初期設定データなど書き換える事のない各種データが記憶されている。
【0018】
フラッシュROM12は、データの書き換えが可能な不揮発性メモリであり、一旦記憶されたデータは非通電時でも消去されないものの、近年のような微細化されたものはデータの保持性能に不安定要因が残る。このフラッシュROM12には、起動時に、MPU20により読みだされるプログラムが少し大きな単位で一旦格納される。少し大きな単位とは、フラッシュROM12の記憶領域に一回に書き込める量(約16KByte)をいう。すなわち、フラッシュROM12は、複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有する。
【0019】
DRAM13は、データ保持用の電力が供給されている間、データを保持する高速なメモリである。DRAM13には、MPU20により、フラッシュROM12から読み出された実行単位のプログラムデータ(起動プログラムおよび初期設定データなど)が書き込まれて、処理が実行される。
【0020】
赤外線受信ユニット16は、リモートコントローラ2(以下「リモコン2」と称す)またはTV本体1(装置本体)に設けられたキー操作部14からの電源キーオンによる起動信号を受け付ける。
【0021】
チューナー17は、アンテナから入力されたテレビジョン放送を受信し、受信した番組の映像をビデオ処理部18へ出力すると共に、音声をオーディオ処理部19へ出力する。チューナー17は、デジタルチューナーまたはアナログチューナーの少なくとも一方を備える。また、デジタルチューナーまたはアナログチューナーは、それぞれ複数実装されていてもよい。
【0022】
ビデオ処理部18は、チューナー17から入力される映像のデジタルデータまたはアナログ信号を表示部15に表示するための映像として再生する。
【0023】
オーディオ処理部19は、チューナー17から入力される音声のデジタルデータまたはアナログ信号をスピーカ(図示せず)から出力するための音声として再生する。
【0024】
MPU20は、フラッシュROM12から読み出した起動プログラムおよび初期設定データをDRAM13に展開し、フラッシュROM12の記憶領域の物理的な記憶位置から読み取ったチェックサムを用いて、データをブロック毎にエラーチェックし、データが正しい場合に起動処理を実行する。上記エラーチェックの結果、ブロック毎のデータの一部または全部が正しくない場合、MPU20は、フラッシュROM12の物理的な記憶位置から読み取ったエラー訂正符号(メモリ上の物理的な位置のECC(Error Correcting Code)であり「第1ECC」という)によるデータのエラー訂正(第1のエラー訂正)を行い、エラー箇所を修復する。なおエラーチェックとエラー修正を合わせてエラー修正処理という。
【0025】
またMPU20は、第1のエラー訂正でエラー箇所を修復できなかった場合、フラッシュROM12から読み取ったプログラムデータに含まれるECC(ソフトウエア上のECCであり「第2ECC」という)を用いてプログラムデータ自体を修正(修復)、つまり第2のエラー訂正を行い、フラッシュROM12の該当エラー箇所のデータを上書き(正しいデータを書き戻)した後、フラッシュROM13のプログラムデータを再度読み出してプログラムを実行、つまり起動処理を実行する。
【0026】
すなわち、MPU20は、フラッシュROM12の物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を、記憶領域の物理的な記憶位置から読み取った第1ECCに基づいて第1のエラー訂正を行うことで修復する第1エラー訂正部として機能する。
【0027】
またMPU20は、第1のエラー訂正の結果、エラー箇所が修復できなかった場合、フラッシュROM12から読み出したデータに付与された(含まれる)第2ECCに基づいて第2のエラー訂正を行うことでエラー箇所を修復する第2エラー訂正部として機能する。
【0028】
さらにMPU20は、エラー箇所が修復されたデータを、フラッシュROM12に書き戻した後、データをフラッシュROM12からDRAM13に読み出しプログラムを実行するプログラム実行部として機能する。
【0029】
以下、この実施形態のTV本体1の動作を説明する。まず図2を参照してフラッシュROM12に書き込むべきデータについて説明する。
【0030】
フラッシュROM12に書き込まれるデータは、図2に示すように、ヘッダ(16KByte)と、起動プログラム(16KByte×m)と、ECC(16KByte×m/512*3)と、その他のデータ(ユーザ設定データ、EPG(電子番組表)のデータ、画質調整データ等)から構成されている。
【0031】
起動プログラムのデータをさらに詳細にすると、ヘッダ、プログラムデータ1、プログラムデータ2、…プログラムデータn、ECC、ECCのチェックサム等に区分されている。ヘッダはプログラムのヘッダである。ECCは後述する図3の説明のようにして生成した第2ECCである。
【0032】
ヘッダはさらに識別子1、オフセット1、サイズ1、チェックサム1、識別子2、オフセット2、サイズ2、チェックサム2、…、識別子N、オフセットN、サイズN、チェックサムNおよびヘッダのチェックサムなどに細分される。オフセットはデータの先頭からのオフセットを示す。
【0033】
フラッシュROM12の物理的な記憶領域は、図3に示すように、通常、一定量(例えば約16KByte)毎に区切られたブロックが複数(例えば512ブロック)設けられている。これはデバイスのハードウエアとしての特徴である。ブロック内の1区画をカラムという。
【0034】
すなわち、このフラッシュROM12は、一方向(1列)に並べた複数のカラムを一単位とするブロックを、その方向と直交する方向に所定数(512個)並べて配置した記憶領域(第2ECCの訂正対象の領域)と、ブロック毎に計算したECCが記憶される記憶領域(第1ECC記憶領域)とを有するものである。なおフラッシュROM12に一回に書き込むデータをデータセットということにする。この例の場合、第1ECC記憶領域は16Byteである。
【0035】
このTV装置では、MPU20が、書き込み対象のデータセットをフラッシュROM12へ書き込む際に、フラッシュROM12の記憶領域の各ブロックに入れるデータのうち、所定のカラムの1Byte、例えば先頭のカラムの1Byteをそれぞれ抜き出し、ブロックの数分、つまり512Byteをエラー訂正符号計算対象データとし、エラー訂正符号計算を行うことで、3Byteのエラー訂正符号を生成し、データセットに付与する。そして、3Byteのエラー訂正符号を含むデータセットがフラッシュROM12へ書き込まれる。
【0036】
以下、図4のフローチャートを参照してこのTV装置の起動処理動作(情報処理方法)を説明する。このTV装置では、家庭の壁コンセントなどの商用電源に、ACコードなどを介してTV本体1が接続された状態で、TV本体1のキー操作部14の電源キーまたはリモコン2の電源スイッチがオン操作されると、パワーユニット10から動作用の電力がTV本体1内の各部に供給される。
【0037】
すると、MPU20は、起動対象のプログラムをマスクROM11上で実行し、第1ECC記憶領域の第1ECCを用いてエラー訂正処理(第1ECC訂正)を実行する(図4のステップS101)。
【0038】
この場合、MPU20は、始めにフラッシュROMからプログラムのヘッダをDRAM13上に展開し、ヘッダのデータに対するECC訂正処理を実行し(ステップS102)、ヘッダのデータを訂正する。
【0039】
続いて、ヘッダのチェックサムの正誤を検証、つまりチェックサムが正しいか否かを判定し、ヘッダのチェックサムのエラー訂正を行う(ステップS103)。
【0040】
エラー訂正後、MPU20は、カウンタの値Yを“0”に設定し(ステップS104)、そのカウンタの値Yをインクリメント(+1)し(ステップS105)、第1番目のプログラムデータをフラッシュROMから読み出してDRAM13上に展開し、エラーチェックとECC訂正を行い(ステップS106)、エラーが修復された場合(ステップS107のYes)はそのプログラムを実行する(ステップS110)。
【0041】
第1ECC訂正で、プログラムのデータを訂正した結果、エラーが修復できない場合(ステップS107のNo)、MPU20は、展開したプログラムデータが起動プログラムか否かをチェックする(ステップS108)。このチェックにはヘッダから得られる情報を利用するものとする。
【0042】
このチェックの結果、プログラムデータが起動プログラムである場合(ステップS108のYes)、MPU20は、プログラムデータに付与されている第2ECCを抽出して、第2ECCによるプログラムデータのエラー訂正処理(第2ECC訂正)を行う(ステップS109)。
【0043】
この処理では、MPU20は、まず、プログラムデータのチェックサムの正誤を検証、つまりチェックサムが正しいか否かを判定し、プログラムデータのチェックサムが正しくない場合、MPU20は、プログラムデータに対するECC訂正を行い、プログラムデータを訂正する。
【0044】
そして、MPU20は、第2ECC訂正により修復されたプログラムを実行する(ステップS110)。
【0045】
なお、上記判定ステップS108におけるチェックの結果、プログラムデータが起動プログラムでなければ(ステップS108のNo)、MPU20は、データの正誤に関わらず(エラー訂正などを行わず)、そのプログラムを実行する(ステップS110)。
【0046】
そして、読込対象のプログラム数Xに達するまで上記処理ステップS105〜S111のNoを繰り返し、プログラム数、つまりカウンタの値Yが、読込対象のプログラム数Xに達した場合(ステップS111のYes)、起動処理を終了する。
【0047】
次に、図5のフローチャートを参照して上記エラー訂正処理(ステップS109)の詳細について説明する。
【0048】
エラー訂正を行う場合、MPU20は、まずカラムの位置カウンタのカウント数(カラム数)mを0にセットする(ステップS201)。
【0049】
続いて、MPU20は、ブロックの位置カウンタのカウント数(ブロック数)nを0にセットする(ステップS202)。このようにして各位置カウンタのカウント数を初期化する。
【0050】
次に、MPU20は、第nブロック、第mカラムの位置にデータが存在するか否かを確認する(ステップS203)。
【0051】
ここで、確認元となる情報は、ヘッダのプログラム長情報から入手し、入手したヘッダのプログラム長情報から、ブロック,カラムの位置にデータが存在するか否かを確認する。
【0052】
その位置にデータが存在する場合(ステップS203のYes)、MPU20は、データ[ブロック]=フラッシュ[ブロック][カラム]とし(ステップS204)、ブロック数nをインクリメントする(ステップS206)。なお、ブロック=n、カラム=m、のフラッシュROM12内部のデータをフラッシュ[n][m]と表す。
【0053】
また、その位置にデータが存在しない場合(ステップS203のNo)、MPU20は、データ[ブロック]=0とし(ステップS205)、ブロック数nをインクリメントする(ステップS206)。なお、ブロック=n、カラム=m、のフラッシュROM12内部のデータをフラッシュ[n][m]と表す。
【0054】
ブロック数nが既定ブロック数Nよりも小さいうちは(ステップS207のYes)、上記ステップS203〜S206までの動作を繰り返す。
【0055】
そして、ブロック数nが既定ブロック数Nと同じになると(ステップS207のNo)、次に、MPU20は、ECC[カラム]を用いてデータ訂正を行う(ステップS208)。
【0056】
なお、ECC[カラム]は、カラムのデータチェック用のECC符号データを表すものとする。
【0057】
データ訂正後、カラム数mをインクリメントし(ステップS209)、インクリメントされたカラム数mがブロックサイズMよりも小さいうちは(ステップS210のYes)、上記ステップS202〜S209までの動作を繰り返す。
【0058】
そして、カラム数mがブロックサイズMと同じになると(ステップS210のYes)、次に、MPU20は、エラー訂正したデータをフラッシュROM12へ書き戻す(ステップS211)。
【0059】
以上のようにこの実施形態のTV装置によれば、TV本体1の電源を入れて、MPU20がフラッシュROM12から起動プログラムをDRAM13へ読み込み実行する際に、データのヘッダ部分について通常のエラーチェック(第1のECC訂正)を行ったときに、フラッシュROM12のプログラムが書き込まれているブロックにエラー箇所が検出された場合に、フラッシュROM12から読み出したプログラムデータに含まれる第2ECCによるエラー訂正により不良ブロックを正しいデータに修復し、修復した正しいデータを該当エラー箇所に書き込み、再度読み出すので、起動プログラムを正しく読み出して実行し、TV本体1のシステム(各部)を正常に起動することができる。すなわち、プログラムが書き込まれているブロックが不良ブロックであった場合にも起動動作を正常に行えるようになる。
【0060】
換言すると、動作に重要なプログラムが書き込まれているフラッシュROM12上の物理的な記憶領域のデータが、例えばブロック単位で不良になっている場合に、元の各ブロックから1Byteずつ抜き出して生成しデータに付与した第2ECCから、データのエラーを修復しプログラムを起動することができる。
【0061】
なお、本願発明は、上記実施形態のみに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形してもよい。上記実施形態で説明した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体:electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばCD−ROM等の記録媒体やフラッシュメモリ、リムーバブルメディア(Removable media)等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【0062】
1…TV本体、2…リモコン、10…パワーユニット、11…マスクROM、12…フラッシュROM、13…DRAM、15…表示部、16…赤外線受信部、17…チューナー、18…ビデオ処理部、19…オーディオ処理部、20…MPU。

【特許請求の範囲】
【請求項1】
複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有するフラッシュメモリと、
前記フラッシュメモリの物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を、前記記憶領域の物理的な記憶位置から読み取った第1エラー訂正符号に基づいて第1のエラー訂正を行うことで修復する第1エラー訂正部と、
前記第1エラー訂正手段によるエラー訂正の結果、前記エラー箇所が修復できなかった場合、前記フラッシュメモリから読み出した前記データに含まれる第2エラー訂正符号に基づいて第2のエラー訂正を行うことで前記エラー箇所を修復する第2エラー訂正部と
を具備することを特徴とする情報処理装置。
【請求項2】
前記エラー訂正符号は、
前記フラッシュメモリへ書き込むべき対象のデータのうち、前記フラッシュメモリの物理的な記憶領域の各ブロックの所定のカラムに記憶すべき1バイトのデータをそれぞれ抽出し、抽出したブロックの数分のデータから生成され、前記対象のデータに付与されたものであることを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記第2エラー訂正部は、
前記データがプログラムの場合にエラーチェックとエラー箇所のエラー訂正を行うことを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記プログラムは、起動プログラムであることを特徴とする請求項3記載の情報処理装置。
【請求項5】
前記第2エラー訂正部によりエラー箇所が修復されたデータを、前記フラッシュメモリに書き戻した後、前記データを前記フラッシュメモリからダイナミック・ランダム・アクセスメモリに読み出し前記プログラムを実行するプログラム実行部を具備することを特徴とする請求項3記載の情報処理装置。
【請求項6】
複数のカラムを一単位とするブロック単位にデータを記憶可能な物理的な記憶領域を有するフラッシュメモリからデータを読み出して処理を行う情報処理方法において、
前記フラッシュメモリの物理的な記憶領域からデータを読み出し、読み出したデータのエラー箇所を前記記憶領域の物理的な記憶位置から読み取った第1エラー訂正符号に基づいて第1のエラー訂正を行うことで修復し、
前記第1のエラー訂正の結果、前記エラー箇所が修復できなかった場合、前記フラッシュメモリから読み出した前記データに含まれる第2エラー訂正符号に基づいて第2のエラー訂正を行うことで前記エラー箇所を修復する
ことを特徴とする情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−210023(P2011−210023A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−77275(P2010−77275)
【出願日】平成22年3月30日(2010.3.30)
【特許番号】特許第4772909号(P4772909)
【特許公報発行日】平成23年9月14日(2011.9.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】