JP2914360B2 - 外部記憶装置及びデータ処理方法 - Google Patents

外部記憶装置及びデータ処理方法

Info

Publication number
JP2914360B2
JP2914360B2 JP26717797A JP26717797A JP2914360B2 JP 2914360 B2 JP2914360 B2 JP 2914360B2 JP 26717797 A JP26717797 A JP 26717797A JP 26717797 A JP26717797 A JP 26717797A JP 2914360 B2 JP2914360 B2 JP 2914360B2
Authority
JP
Japan
Prior art keywords
data
block
boot
stored
management information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP26717797A
Other languages
English (en)
Other versions
JPH11110141A (ja
Inventor
博明 布施
哲 佐々
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP26717797A priority Critical patent/JP2914360B2/ja
Priority to MYPI98004400A priority patent/MY121756A/en
Priority to SG1998003896A priority patent/SG71848A1/en
Priority to US09/162,332 priority patent/US6330634B1/en
Priority to AU87138/98A priority patent/AU753121B2/en
Priority to DE69809527T priority patent/DE69809527T2/de
Priority to EP98118439A priority patent/EP0910020B1/en
Priority to KR1019980041922A priority patent/KR100642529B1/ko
Priority to CNB981258174A priority patent/CN1229724C/zh
Publication of JPH11110141A publication Critical patent/JPH11110141A/ja
Application granted granted Critical
Publication of JP2914360B2 publication Critical patent/JP2914360B2/ja
Priority to US09/968,296 priority patent/US6981136B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データの消去が所
定のブロック単位で行われる記憶手段を備えた外部記憶
装置、並びにそのような外部記憶装置に格納するデータ
についてのデータ処理方法に関する。
【0002】
【従来の技術】パーソナルコンピュータやデジタルスチ
ルカメラ等のようなデータ処理装置に用いられる外部記
憶装置として、いわゆるフラッシュメモリを備えた外部
記憶装置がある。
【0003】フラッシュメモリを備えた外部記憶装置
は、記憶領域を複数のブロックに分割し、データ領域の
管理をブロック単位で行う。すなわち、例えば、データ
の消去を行う際は、ブロック単位で行う。また、例え
ば、記憶領域内に回復不能なエラーが生じたときには、
当該エラーが生じた領域を含むブロックを使用しないよ
うにする。なお、以下の説明では、このようなブロック
のことを使用不可ブロックと称する。
【0004】そして、このような外部記憶装置では、当
該外部記憶装置にアクセスするために必要な情報等が含
まれるブートデータを、予め所定のブロックに格納して
おく。そして、当該外部記憶装置を起動する際は、最初
にブートデータを読み出し、その後、このブートデータ
に基づいて当該外部記憶装置へのアクセスを行い、デー
タの書き込みや読み出しを行う。
【0005】このような外部記憶装置において、ブート
データには、通常、当該外部記憶装置へのアクセスに不
可欠な情報が含まれており、ブートデータが読み出せな
くなってしまうと、当該外部記憶装置へのアクセスが不
可能となってしまう。したがって、ブートデータには、
非常に高い信頼性が要求される。
【0006】
【発明が解決しようとする課題】従来、ブートデータが
格納されるブロック(以下、ブートブロックと称す
る。)は、予め設定された所定位置のブロックとされて
いた。そして、通常使用するブートブロックが使用不可
ブロックとなってしまっても、ブートデータを読み出せ
るように、ブートデータをコピーしたものを他のブロッ
クにも格納しておくようにしていた。そして、従来の外
部記憶装置では、信頼性をより高めるために、ブートデ
ータのコピーを多数用意し、それらをそれぞれ異なるブ
ロックに格納しておくようにしていた。しかしながら、
ブートデータのコピーを多数用意しておく手法は、記憶
容量の有効利用の点では好ましくない。
【0007】また、従来は、ブートデータが更新された
ときに、ブートデータのコピー全てが正しく最新のブー
トデータに更新されたかを判別するようにはしていなか
った。したがって、何らかの利用により、ブートデータ
のコピーが正しく最新のブートデータに更新されなかっ
たりすると、最新の正しいブートデータを読み出せなく
なって、外部記憶装置に対する正常なアクセスができな
くなってしまうような場合があった。
【0008】また、従来は、ブートデータのコピーを用
意していたとしても、それらのコピーは、オリジナルの
ブートデータの読み出しに失敗したときに使用されるだ
けであった。したがって、従来は、オリジナルのブート
データが格納されたブートブロックの一部のビットが反
転してしまったりして、オリジナルのブートデータの内
容が正しくなくなっていたとしても、当該ブートデータ
を読み出すことさえできれば、当該ブートデータがその
まま使用されてしまうという問題があった。
【0009】本発明は、以上のような従来の実情に鑑み
て提案されたものであり、記憶領域を有効に利用しなが
らも、ブートデータ読み出し時にエラーが発生し難く、
信頼性の高い外部記憶装置を提供することを目的として
いる。また、本発明は、そのような外部記憶装置を実現
するデータ処理方法を提供することも目的としている。
【0010】
【課題を解決するための手段】本発明に係る外部記憶装
置は、データの消去を所定のブロック単位で行うととも
に、起動時に最初に読み出されるブートデータを格納す
るブロックを有する外部記憶装置である。そして、ブー
トデータがそれぞれ格納された複数の異なるブロックを
備えるとともに、ブートデータが格納された各ブロック
に、それらのブロックに格納されたブートデータの新旧
を示す識別番号が格納される識別番号格納部を備えてい
ることを特徴としている。
【0011】この外部記憶装置は、例えば、起動時に、
上記識別番号に基づいて、上記複数の異なるブロックに
格納された各ブートデータのうち、最新のブートデータ
が読み出され、当該ブートデータを用いて起動される。
【0012】また、この外部記憶装置は、例えば、起動
時に、上記識別番号に基づいて、上記複数の異なるブロ
ックに格納された各ブートデータの新旧が判別され、古
いブートデータがある場合には当該ブートデータが最新
のブートデータに書き換えられる。
【0013】一方、本発明に係るデータ処理方法は、デ
ータの消去を所定のブロック単位で行う外部記憶装置
に、当該外部記憶装置の起動時に最初に読み出されるブ
ートデータを格納する際に、複数の異なるブロックにブ
ートデータをそれぞれ格納するとともに、ブートデータ
が格納された各ブロックに、それらのブロックに格納さ
れたブートデータの新旧を示す識別番号を格納すること
を特徴とする。
【0014】このデータ処理方法では、例えば、上記外
部記憶装置を起動する際に、上記識別番号に基づいて、
上記複数の異なるブロックに格納された各ブートデータ
のうち、最新のブートデータを読み出して、当該ブート
データを用いて外部記憶装置を起動する。
【0015】また、このデータ処理方法では、例えば、
上記外部記憶装置を起動する際に、上記識別番号に基づ
いて、上記複数の異なるブロックに格納された各ブート
データの新旧を判別し、古いブートデータがある場合に
は当該ブートデータを最新のブートデータに書き換え
る。
【0016】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。
【0017】本発明が適用されるシステムの一例につい
て、その全体構成を図1に示す。このシステムは、ホス
ト側システムとなるデータ処理装置1と、シリアルイン
ターフェースを介してデータ処理装置1に接続される外
部記憶装置であるメモリカード2とから構成される。
【0018】なお、ここでは、データ処理装置1とメモ
リカード2との間でのデータのやり取りをシリアルイン
ターフェースによって行うシステムを例に挙げるが、本
発明は、データのやり取りをパラレルインターフェース
によって行うシステムに対しても適用可能である。
【0019】データ処理装置1は、演算処理装置(CP
U)3と、内部メモリ4と、補助記憶装置5と、シリア
ルインターフェース回路6とを備え、これらがバス7に
よって相互に接続されてなる。このデータ処理装置1
は、例えば、補助記憶装置5に格納されているプログラ
ムを読み出して、当該プログラムを、内部メモリ4をワ
ークエリアとして使用して、CPU3により実行する。
このとき、必要に応じて、シリアルインターフェース回
路6を介してメモリカード2との間でデータのやり取り
を行う。
【0020】なお、本発明が適用されるシステムに使用
されるデータ処理装置は、外部記憶装置との間でデータ
のやり取りが可能なものであるならば特に限定されるも
のではなく、本発明は、パーソナルコンピュータ、デジ
タルスチルカメラ、デジタルビデオカメラ等、種々のデ
ータ処理装置に適用可能である。
【0021】データ処理装置1とメモリカード2とは、
シリアルインターフェースによって接続されており、具
体的には、少なくとも3本のデータ線SCLK,Sta
te,DIOによって接続される。すなわち、データ処
理装置1とメモリカード2とは、少なくとも、データ伝
送時にクロック信号を伝送する第1のデータ線SCLK
と、データ伝送時に必要なステータス信号を伝送する第
2のデータ線Stateと、メモリカード2に書き込む
データ又はメモリカード2から読み出すデータ等をシリ
アルに伝送する第3のデータ線DIOとによって接続さ
れ、これらを介して、データ処理装置1とメモリカード
2との間でのデータのやり取りを行う。
【0022】データ処理装置1とメモリカード2との間
でのデータのやり取りは、通常、ヘッダーと実データと
から構成されるファイル単位で行われる。なお、ファイ
ルのヘッダーには、例えば、ファイルにアクセスするた
めの情報や、データ処理装置1で実行されるプログラム
で必要とされる情報等が格納される。
【0023】メモリカード2は、図2に示すように、い
わゆるコントロールICからなるコントローラ11と、
コントローラ11によって管理されるフラッシュメモリ
12とを備えている。
【0024】コントローラ11は、シリアル/パラレル
変換やパラレル/シリアル変換等を行うシリアル/パラ
レル・パラレル/シリアル・インターフェース・シーケ
ンサ13(以下、S/P&P/S・インターフェース・
シーケンサ13と称する。)と、フラッシュメモリ12
へのインターフェースを司るフラッシュメモリ・インタ
ーフェース・シーケンサ14と、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶するページバッファ15と、エ
ラー訂正の処理を行うエラー訂正回路16と、フラッシ
ュメモリ12へのアクセスを制御する制御コマンドの生
成等を行うコマンドジェネレータ17と、このメモリカ
ード2のバージョン情報や各種属性情報等が格納されて
いるコンフィグレーションROM18と、各回路に対し
てそれらの動作に必要なクロック信号を供給する発振器
19とを備えている。
【0025】S/P&P/S・インターフェース・シー
ケンサ13は、少なくとも上述した3本のデータ線SC
LK,State,DIOを介して、データ処理装置1
のシリアルインターフェース回路6に接続され、これら
のデータ線SCLK,State,DIOを介して、デ
ータ処理装置1との間でデータのやり取りを行う。すな
わち、S/P&P/S・インターフェース・シーケンサ
13は、ページバッファ15から送られてきたパラレル
データをシリアルデータに変換して、データ処理装置1
のシリアルインターフェース回路6へ送出する。また、
S/P&P/S・インターフェース・シーケンサ13
は、データ処理装置1のシリアルインターフェース回路
6から送られてきたシリアルデータをパラレルデータに
変換して、ページバッファ15へ送出する。
【0026】このS/P&P/S・インターフェース・
シーケンサ13とデータ処理装置1との間でのシリアル
データの伝送は、第1のデータ線SCLKによってデー
タ処理装置1から送られてくるクロック信号によって同
期を取りながら、第3のデータ線DIOによって行われ
る。このとき、第3のデータ線DIOによってやり取り
されるシリアルデータのデータ種別は、第2のデータ線
Stateによって伝送されるステータス信号によって
判別される。ここで、シリアルデータの種別には、例え
ば、フラッシュメモリ12に書き込むべきデータ、フラ
ッシュメモリ12から読み出されたデータ、又はこのメ
モリカード2の動作を制御するための制御データ等があ
る。なお、ステータス信号は、メモリカード2の状態を
示すためにも使用される。ステータス信号によって示さ
れるメモリカード2の状態には、例えば、メモリカード
2が何らかの処理の最中でデータ処理装置1からのデー
タ入力を受け付けない状態や、メモリカード2の側での
処理が終了してデータ処理装置1からのデータ入力を待
っている状態等がある。
【0027】また、S/P&P/S・インターフェース
・シーケンサ13は、データ処理装置1から送られてき
たデータがメモリカード2の動作を制御するための制御
データである場合には、当該制御データをコマンドジェ
ネレータ17に送出する。
【0028】コマンドジェネレータ17は、データ処理
装置1からS/P&P/S・インターフェース・シーケ
ンサ13を介して送られてきた制御データに基づいて、
フラッシュメモリ12へのアクセスを制御する制御コマ
ンドを生成し、当該制御コマンドをフラッシュメモリ・
インターフェース・シーケンサ14へ送出する。フラッ
シュメモリ・インターフェース・シーケンサ14は、後
述するように、この制御コマンドに基づいて、フラッシ
ュメモリ12にデータを書き込んだり、フラッシュメモ
リ12からデータを読み出したりする。
【0029】なお、このコマンドジェネレータ17に
は、誤消去防止スイッチ20が接続されている。そし
て、この誤消去防止スイッチ20がオンになっていると
きには、フラッシュメモリ12に書かれているデータを
消去するように指示する制御データがデータ処理装置1
から送られてきたとしても、コマンドジェネレータ17
は、フラッシュメモリ12に書かれているデータを消去
するような制御コマンドを生成しない。すなわち、この
メモリカード2は、誤消去防止スイッチ20によって、
フラッシュメモリ12に保存されているデータの消去が
行えない状態と、フラッシュメモリ12に保存されてい
るデータの消去が行える状態とを切り換えることが可能
となっている。
【0030】S/P&P/S・インターフェース・シー
ケンサ13とフラッシュメモリ・インターフェース・シ
ーケンサ14との間に配されたページバッファ15は、
いわゆるバッファメモリであり、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶する。
【0031】すなわち、S/P&P/S・インターフェ
ース・シーケンサ13からフラッシュメモリ・インター
フェース・シーケンサ14へ送られるデータは、先ず、
S/P&P/S・インターフェース・シーケンサ13か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正符号が付けられる。そして、エラー
訂正符号が付けられたデータは、ページバッファ15か
ら所定のページ単位毎(例えば1ページ=512バイト
とされる。)に、フラッシュメモリ・インターフェース
・シーケンサ14へと送られる。
【0032】或いは、フラッシュメモリ・インターフェ
ース・シーケンサ14からS/P&P/S・インターフ
ェース・シーケンサ13へ送られるデータは、先ず、フ
ラッシュメモリ・インターフェース・シーケンサ14か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正処理が施される。そして、エラー訂
正処理が施されたデータは、ページバッファ15から所
定のページ単位毎に、S/P&P/S・インターフェー
ス・シーケンサ13へと送られる。
【0033】フラッシュメモリ・インターフェース・シ
ーケンサ14は、コマンドジェネレータ17からの制御
コマンドに基づいて、フラッシュメモリ12へのデータ
の書き込みや、フラッシュメモリ12からのデータの読
み出し等を行う。すなわち、フラッシュメモリ・インタ
ーフェース・シーケンサ14は、コマンドジェネレータ
17からの制御コマンドに基づいて、フラッシュメモリ
12からデータを読み出して、当該データを上述のよう
にページバッファ15を介して、S/P&P/S・イン
ターフェース・シーケンサ13へと送出する。或いは、
フラッシュメモリ・インターフェース・シーケンサ14
は、コマンドジェネレータ17からの制御コマンドに基
づいて、S/P&P/S・インターフェース・シーケン
サ13からのデータを、上述のようにページバッファ1
5を介して受け取り、当該データをフラッシュメモリ1
2に書き込む。
【0034】コンフィグレーションROM18には、こ
のメモリカード2のバージョン情報や各種属性情報等が
格納されている。コンフィグレーションROM18に格
納された情報は、必要に応じて、S/P&P/S・イン
ターフェース・シーケンサ13を介してコマンドジェネ
レータ17によって読み出されて使用される。すなわ
ち、コマンドジェネレータ17は、必要に応じて、コン
フィグレーションROM18に格納されている情報を読
み出し、この情報に基づいてメモリカード2に関する各
種設定を行う。
【0035】以上のようなメモリカード2に対して、フ
ラッシュメモリ12に書き込まれるデータが、上述した
3本のデータ線SCLK,State,DIOを介し
て、データ処理装置1からシリアルデータとして送られ
てくると、先ず、S/P&P/S・インターフェース・
シーケンサ13は、当該シリアルデータをパラレルデー
タに変換し、当該パラレルデータをページバッファ15
へ送出する。ページバッファ15は、S/P&P/S・
インターフェース・シーケンサ13から送られてきたデ
ータを一時的に記憶する。このとき、ページバッファ1
5に記憶されたデータには、エラー訂正回路16によっ
てエラー訂正符号が付けられる。そして、エラー訂正符
号が付けられたデータは、所定のページ単位毎にフラッ
シュメモリ・インターフェース・シーケンサ14に送出
される。そして、フラッシュメモリ・インターフェース
・シーケンサ14は、ページバッファ15から送られて
きたデータを、コマンドジェネレータ17からの制御コ
マンドに基づいて、フラッシュメモリ12に書き込む。
以上の処理により、データ処理装置1から送られてきた
データが、フラッシュメモリ12に書き込まれる。
【0036】また、以上のようなメモリカード2からデ
ータを読み出す際は、先ず、コマンドジェネレータ17
からの制御コマンドに基づいて、フラッシュメモリ・イ
ンターフェース・シーケンサ14によって、フラッシュ
メモリ12からデータが読み出される。そして、フラッ
シュメモリ・インターフェース・シーケンサ14は、フ
ラッシュメモリ12から読み出したデータをページバッ
ファ15に送出する。ページバッファ15は、フラッシ
ュメモリ・インターフェース・シーケンサ14から送ら
れてきたデータを一時的に記憶する。このとき、ページ
バッファ15に記憶されたデータには、エラー訂正回路
16によってエラー訂正処理が施される。そして、エラ
ー訂正処理が施されたデータは、所定のページ単位毎に
S/P&P/S・インターフェース・シーケンサ13に
送出される。そして、S/P&P/S・インターフェー
ス・シーケンサ13は、ページバッファ15から送られ
てきたデータを、シリアルデータに変換した上で、上述
した3本のデータ線SCLK,State,DIOを介
して、データ処理装置1へと送出する。以上の処理によ
り、フラッシュメモリ12から読み出されたデータが、
データ処理装置1へと送出される。
【0037】なお、データの書き込みや読み出しを行う
際は、フラッシュメモリ12に書き込まれるデータやフ
ラッシュメモリ12から読み出されたデータのやり取り
が行われるだけでなく、そのやり取りを制御するための
制御データも、データ処理装置1からメモリカード2の
S/P&P/S・インターフェース・シーケンサ13へ
送られる。この制御データは、S/P&P/S・インタ
ーフェース・シーケンサ13からコマンドジェネレータ
17に送られる。そして、コマンドジェネレータ17
は、S/P&P/S・インターフェース・シーケンサ1
3から送られてきた制御データに基づいて、フラッシュ
メモリ12へのアクセスを制御する制御コマンドを生成
する。そして、この制御コマンドは、フラッシュメモリ
・インターフェース・シーケンサ14に送られ、フラッ
シュメモリ・インターフェース・シーケンサ14は、こ
の制御コマンドに基づいてフラッシュメモリ12にアク
セスして、データの書き込みやデータの読み出しを行
う。
【0038】なお、メモリカード2は、上述した3本の
データ線SCLK,State,DIOを備えるだけで
なく、その他に、電圧供給用の配線や、通常は使用しな
いリザーブの配線等を備えていてもよい。例えば、図2
並びに後掲する図3では、上述した3本のデータ線SC
LK,State,DIOの他に、4本の電源用の配線
VSS1,VSS2,VCC,INTと、3本のリザー
ブの配線RSV1,RSV2,RSV3とをメモリカー
ド2に設けた例を挙げている。
【0039】つぎに、以上のようなメモリカード2の具
体的な外形について、図3を参照して説明する。
【0040】メモリカード2は、合成樹脂等からなり平
面形状が長方形とされる薄肉のカード状のケース21
に、上述したコントローラ11やフラッシュメモリ12
等が内蔵されてなる。そして、このメモリカード2は、
当該メモリカード2を装着する装着機構を備えたデータ
処理装置1に装着されて使用される。
【0041】このメモリカード2のケース21の前端部
には、斜めに切り欠かれた切り欠き部22が形成されて
おり、更に当該切り欠き部22が形成された部分に、1
0個の凹状部23が形成されている。そして、これらの
凹状部23の内部には、メモリカード2がデータ処理装
置1の装着装置に装着されたときに、データ処理装置1
の接続端子に接続される外部接続用端子が、それぞれ配
されている。すなわち、このメモリカード2は、外部接
続用端子として10本の端子24a,24b,24c,
24d,24e,24f,24g,24h,24i,2
4jを備えている。これらの外部接続用端子の内訳は、
3本のデータ線用の端子24b,24d,24h、4本
の電源用端子24a,24f,24i,24j、及び3
本のリザーブ端子24c,24e,24gである。
【0042】また、このメモリカード2のケース21の
上面には、誤消去防止部材25が取り付けられている。
誤消去防止部材25は、ケース21の内部に収納された
上記誤消去防止スイッチ20に係合されており、この誤
消去防止部材25をスライド操作することにより、誤消
去防止スイッチ20のオン/オフの切り換えを行えるよ
うになっている。
【0043】このメモリカード2には、データ処理装置
1の装着装置に装着された際にメモリカード2がデータ
処理装置1から脱落しないようにするため、ケース20
の側面の一方に円弧状の第1のロック用切欠部26が形
成され、ケース20の側面の他方に矩形状の第2のロッ
ク用切欠部27が形成されている。そして、このメモリ
カード2がデータ処理装置1の装着装置に装着される
と、メモリカード2が脱落しないように、これらのロッ
ク用切欠部26,27が、データ処理装置1の装着装置
に係合される。
【0044】なお、図3に示したメモリカード2は、本
発明が適用される外部記憶装置の一例に過ぎない。すな
わち、本発明は、外部記憶装置の外形に依存することな
く、どんな外形の外部記憶装置にも適用可能である。
【0045】つぎに、以上のようなメモリカード2に搭
載されるフラッシュメモリ12の記憶領域の構造につい
て説明する。なお、以下に説明する記憶領域の構造は、
本発明が適用される外部記憶装置の記憶領域の構造の一
例に過ぎない。
【0046】すなわち、本発明は、データ消去の単位と
なる複数のブロックに記憶領域が分割されてなるととも
に、ブートデータが格納されるブートブロックを備えた
外部記憶装置に対して広く適用可能であり、その記憶領
域の構造は、以下に説明するような構造でなくてもよ
い。
【0047】このフラッシュメモリ12の記憶領域は、
図4(a)に示すように、データ消去の単位となる複数
のブロックに分割されてなる。なお、これらのブロック
には、このメモリカード2が起動されたときにデータ処
理装置1によって最初に読み込まれるデータであるブー
トデータが格納されるブートブロックと、任意のデータ
が書き込まれるデータブロックとがある。各ブロックに
は、それぞれ固有の物理アドレスが付けられている。こ
れらのブロックは、データ消去の単位であると同時に、
ファイル管理上の最小単位でもある。すなわち、ファイ
ルは1つ又は複数のブロックに格納され、1つのブロッ
クを複数のファイルで利用することはできない。
【0048】そして、各ブロックは、「1」又は「0」
を示す2つの状態を取りうる複数のビットからなり、初
期状態では、全てのビットが「1」とされており、ビッ
ト単位での変更は「1」から「0」へだけが可能となっ
ている。すなわち、「1」及び「0」からなるデータを
書き込む際、「1」については該当するビットをそのま
ま保持し、「0」については該当するビットを「1」か
ら「0」に変更する。
【0049】そして、一度書き込んだデータを消去する
際は、ブロック単位で一括して初期化処理を行い、当該
ブロックの全ビットを「1」とする。これにより、当該
ブロックに書き込まれたデータが一括して消去され、そ
のブロックは再びデータの書き込みが可能な状態とな
る。
【0050】なお、本発明は、上述のように各ビットが
2つの状態だけを取りうるフラッシュメモリ(いわゆる
2値型のフラッシュメモリ)だけでなく、各ビットが3
つ以上の状態を取りうるフラッシュメモリ(いわゆる多
値型のフラッシュメモリ)にも適用可能である。
【0051】また、上記フラッシュメモリ12の各ブロ
ックは、図4(b)に示すように、データの書き込みや
読み出しの単位となる複数のページから構成される。す
なわち、このフラッシュメモリ12にデータを書き込む
際は、上述したように、ページ単位にてページバッファ
15から送られてきたデータが、フラッシュメモリ・イ
ンターフェース・シーケンサ14によってページ単位に
てフラッシュメモリ12に書き込まれる。また、このフ
ラッシュメモリ12からデータを読み出す際は、フラッ
シュメモリ・インターフェース・シーケンサ14によっ
てページ単位毎にデータが読み出されて、ページバッフ
ァ15へと送られる。
【0052】各ページは、データエリアと、冗長エリア
とを有している。データエリアは、任意のデータが書き
込まれる領域である。冗長エリアは、データエリアに書
き込まれるデータの管理に必要な情報が格納される領域
である。
【0053】具体的には、図4(c)に示すように、ブ
ロックの先頭ページの冗長エリアには、当該ブロックを
管理するために必要な情報として、いわゆる分散管理情
報が格納される。また、ブロックの2ページ目以降の各
ページの冗長エリアにも、予備の分散管理情報として、
先頭ページの冗長エリアに格納された分散管理情報と同
じものが格納される。ただし、最終ページの冗長エリア
には、分散管理情報ではなく、分散管理情報だけでは管
理しきれない追加情報として、いわゆる追加管理情報が
格納される。
【0054】このように、このフラッシュメモリ12で
は、各ブロック内の冗長エリアに分散管理情報が格納さ
れる。分散管理情報は、当該分散管理情報が格納された
ブロックを管理するための情報である。この分散管理情
報により、例えば、当該ブロックがファイルの先頭とな
るブロックであるか否かについての情報や、複数のブロ
ックからファイルが構成される場合にはそれらのブロッ
クの繋がりを示す情報等を得ることができる。なお、こ
の分散管理情報については、後で詳細に説明する。
【0055】そして、このメモリカード2では、各ブロ
ックの分散管理情報を集めることにより、フラッシュメ
モリ全体を管理するための情報として、いわゆる集合管
理情報を作成して、この集合管理情報をファイルとして
フラッシュメモリ12に格納しておくようにする。
【0056】そして、通常は、集合管理情報によって、
各ブロックにアクセスするために必要な情報を得るよう
にする。すなわち、データ処理装置1とメモリカード2
との間でデータのやり取りを行う際、データ処理装置1
は、集合管理情報をメモリカード2から読み出して内部
メモリ4に展開し、この集合管理情報に基づいてメモリ
カード2にアクセスする。これにより、データアクセス
の都度、個々のブロックに格納された分散管理情報にア
クセスするような必要がなくなり、より高速なデータア
クセスが可能となる。
【0057】つぎに、分散管理情報、追加管理情報、集
合管理情報について、更に詳細に説明する。
【0058】分散管理情報は、当該分散管理情報が格納
されたブロックを管理するための情報であり、16バイ
トの冗長エリアに書き込まれてなる。具体的には、図5
に示すように、1バイトの可/不可フラグと、1バイト
のブロックフラグと、4ビットの最終フラグと、4ビッ
トの参照フラグと、1バイトの管理フラグと、2バイト
の論理アドレスと、2バイトの連結アドレスと、3バイ
トのリザーブ領域と、2バイトの分散管理情報用エラー
訂正符号と、3バイトのデータ用エラー訂正符号とから
なる。
【0059】可/不可フラグは、ブロックが使用可能状
態か使用不可能状態かを示すフラグであり、具体的に
は、「使用可」と「使用不可」の2つの状態を示す。
「使用可」は、当該ブロックが使用可能な状態を示し、
「使用不可」は、当該ブロックが使用不可能な状態であ
ることを示す。例えば、ブロック内に回復不能なエラー
が生じたようなときに、この可/不可フラグが「使用不
可」に設定され、当該ブロックが使用不可とされる。
【0060】ブロックフラグは、ブロックの状態を示す
フラグであり、具体的には、「未使用」「先頭使用」
「使用」「未消去」の4つの状態を示す。「未使用」
は、当該ブロックが未使用又は消去済みで、初期状態
(全ビットが「1」の状態)とされており、直ぐにデー
タの書き込みが可能な状態を示す。「先頭使用」は、当
該ブロックがファイルの先頭で使用されている状態を示
す。なお、ブートデータが格納されたブートブロックに
おいて、ブロックフラグは「先頭使用」とされる。「使
用」は、当該ブロックがファイルの先頭以外で使用され
ている状態を示す。ブロックフラグが「使用」のとき、
当該ブロックは、他のブロックから連結されていること
となる。「未消去」は、当該ブロックに書かれていたデ
ータが不要となった状態を示す。例えば、データの消去
を行うときに、取りあえずブロックフラグを「未消去」
にしておき、処理時間に余裕があるときに、ブロックフ
ラグが「未消去」になっているブロックを消去するよう
にする。これにより、消去処理をより効率良く行うこと
が可能となる。
【0061】最終フラグは、ファイルが終わっているか
否かを示すフラグであり、具体的には、「ブロック連
続」「ブロック最終」の2つの状態を示す。「ブロック
連続」は、次のブロックへの連結があることを示す。す
なわち、「ブロック連続」は、当該ブロックに格納され
たファイルにはまだ続きがあり、当該ファイルが他のブ
ロックに続いていることを示す。「ブロック最終」は、
最終ブロックであることを示す。すなわち、「ブロック
最終」は、当該ブロックに格納されたファイルが、この
ブロックで終了していることを示す。
【0062】参照フラグは、追加管理情報の参照を指定
するためのフラグであり、具体的には、「参照情報な
し」「参照情報あり」の2つの状態を示す。「参照情報
なし」は、ブロックの最終ページの冗長領域に、有効な
追加管理情報が存在しないことを示す。「参照情報あ
り」は、ブロックの最終ページの冗長領域に、有効な追
加管理情報が存在していることを示す。
【0063】管理フラグは、ブロックの属性等を示すフ
ラグである。例えば、この管理フラグによって、当該ブ
ロックが読み出し専用ブロックか、或いは書き込みも可
能なブロックであるかが示される。また、例えば、この
管理フラグによって、当該ブロックがブートブロックで
あるか、或いはデータブロックであるかが示される。
【0064】論理アドレスは、文字通りそのブロックの
論理アドレスを示す。この論理アドレスの値は、データ
の書き換えを行うときなどに必要に応じて更新される。
なお、論理アドレスの値は、正常に処理が行われている
限り、同じ論理アドレスの値を同時に複数のブロックが
持つことがないように設定される。
【0065】連結アドレスは、当該ブロックに連結する
ブロックの論理アドレスを示す。すなわち、ブロックに
格納されたファイルにはまだ続きがあり、当該ファイル
が他のブロックに続いている場合、連結アドレスには、
そのファイルの続きが格納された次のブロックの論理ア
ドレスの値が設定される。
【0066】分散管理情報用エラー訂正符号は、分散管
理情報のうち、管理フラグ、論理アドレス、連結アドレ
ス及びリザーブ領域に書き込まれデータを対象としたエ
ラー訂正符号である。なお、可/不可フラグ、ブロック
フラグ、最終フラグ及び参照フラグは、分散管理情報用
エラー訂正符号によるエラー訂正の対象となっていな
い。したがって、可/不可フラグ、ブロックフラグ、最
終フラグ及び参照フラグは、分散管理情報用エラー訂正
符号を更新することなく書き換えることが可能となって
いる。
【0067】データ用エラー訂正符号は、当該データ用
エラー訂正符号が格納されているページのデータエリア
に書き込まれたデータを対象としたエラー訂正符号であ
る。
【0068】なお、分散管理情報用エラー訂正符号やデ
ータ用エラー訂正符号は、メモリカード2の内部に配さ
れたエラー訂正回路16によって使用される。したがっ
て、これらのエラー訂正符号を用いてのエラー訂正は、
データ処理装置1に依存することなく、メモリカード2
に依存した任意の手法を使用することができる。
【0069】追加管理情報は、ブロックの最終ページの
16バイトの冗長エリアに格納される情報であり、分散
管理情報だけでは管理しきれない追加情報を含んでい
る。
【0070】具体的には、追加管理情報は、図6に示す
ように、1バイトの可/不可フラグと、1バイトのブロ
ックフラグと、4ビットの最終フラグと、4ビットの参
照フラグと、1バイトの識別番号と、2バイトの有効デ
ータサイズと、5バイトのリザーブ領域と、2バイトの
追加管理情報用エラー訂正符号と、3バイトのデータ用
エラー訂正符号とからなる。
【0071】ここで、可/不可フラグ、ブロックフラ
グ、最終フラグ、参照フラグ、リザーブ領域及びデータ
用エラー訂正符号については、分散管理情報の場合と同
様である。また、追加管理情報用エラー訂正符号は、分
散管理情報における分散管理情報用エラー訂正符号に相
当するものであり、追加管理情報のうち、識別番号、有
効データサイズ及びリザーブ領域に書き込まれデータを
対象としたエラー訂正符号である。
【0072】そして、識別番号及び有効データサイズと
が、分散管理情報だけでは管理しきれない追加情報とし
て、追加管理情報に含まれている。
【0073】識別番号は、エラー処理用の情報であり、
ブロックのデータを書き換える度に、この識別番号の値
がインクリメントされる。この識別番号は、何らかのエ
ラーが発生して、同じ論理アドレスを持つブロックが複
数存在するようになってしまった場合に、それらのブロ
ックに書き込まれたデータの新旧を識別するために使用
される。なお、識別番号には1バイトの領域が使用さ
れ、その値の範囲は「0」から「255」までであり、
その初期値は「0」とされる。なお、識別番号が「25
5」を越えたときには「0」に戻される。そして、同じ
論理アドレスを持つデータブロックが複数存在する場合
には、この識別番号の値が小さい方のデータブロックを
有効とする。また、後で詳細に説明するように、同じ論
理アドレスを持つブートブロックが複数存在する場合に
は、この識別番号の値が大きい方のブートブロックを有
効とする。
【0074】また、有効データサイズは、ブロック内の
有効なデータのサイズを示す。すなわち、当該ブロック
のデータエリアに空きがある場合、有効データサイズに
は、当該データエリアに書き込まれたデータのサイズを
示す値が設定される。このとき、分散管理情報の参照フ
ラグは「参照情報あり」に設定される。なお、ブロック
のデータエリアに空きがない場合、有効データサイズに
は、当該データエリアに空きがないことを示す値とし
て、「0xffff」が設定される。
【0075】なお、以上のような分散管理情報及び追加
管理情報は、ブロック内のデータが更新される毎に、常
に最新情報となるように更新される。
【0076】集合管理情報は、上述したように、各ブロ
ックの分散管理情報を集めて作成されてなる情報であ
り、ファイルとしてフラッシュメモリ12に格納され
る。すなわち、図7に示すように、各ブロックの分散管
理情報から、全ブロックをまとめて管理するための情報
である集合管理情報のファイルが作成され、この集合管
理情報が所定のブロックのデータエリアに格納される。
なお、集合管理情報は、1つのブロックに格納されるも
のであっても、複数のブロックにわたって格納されるも
のであってもよい。そして、データ処理装置1は、通常
は、この集合管理情報によって、各ブロックにアクセス
するために必要な情報を得るようにする。
【0077】このメモリカード2の起動時には、先ず、
データ処理装置1によって、ブートブロックからブート
データが読み込まれるが、このブートデータには、集合
管理情報が格納されているブロックの物理アドレスが指
定されている。そこで、データ処理装置1は、当該物理
アドレスに対応したブロックに格納されている集合管理
情報を読み出して内部メモリ4に展開し、この集合管理
情報に基づいてメモリカード2にアクセスする。なお、
フラッシュメモリ12から集合管理情報を正常に読み出
せなかった場合、データ処理装置1は、全てのブロック
の分散管理情報を読み込み、集合管理情報を再構築して
使用する。
【0078】そして、データ処理装置1は、データの書
き換え等を行う毎に、内部メモリ4に展開した集合管理
情報を、フラッシュメモリ12の実際の状態と整合する
ように(すなわち、分散管理情報の内容と整合するよう
に)、随時更新していく。一方、フラッシュメモリ12
にファイルとして格納されている集合管理情報は、デー
タの書き換え等を行う毎に更新するのではなく、適当な
タイミングにて、その変更内容が一括して更新される。
なお、ここでの適当なタイミングとは、例えば、電源を
落とす前や、メモリカード2へのアクセスが所定時間以
上なされなかったときや、データの書き換えが所定回数
以上行われたときなどである。
【0079】一般にフラッシュメモリ12の書き換え可
能回数には上限があるが、このようにフラッシュメモリ
12にファイルとして格納されている集合管理情報の書
き換えをある程度まとめて一括して行うようにすること
で、集合管理情報が格納されているブロックの書き換え
回数を削減することができ、メモリカード2の長寿命化
を図ることができる。
【0080】つぎに、本発明のポイントとなるブートブ
ロックの取り扱いについて詳細に説明する。
【0081】ブートデータは、メモリカード2を起動し
たときにデータ処理装置1によって最初に読み込まれる
データであり、ブートデータには、メモリカード2にア
クセスするために必要不可欠な情報が含まれている。し
たがって、ブートデータが格納されたブートブロックに
エラーが生じて、ブートデータを正常に読み出すことが
できなくなると、メモリカード2へのアクセスが不可能
になってしまう。したがって、ブートブロックには、非
常に高い信頼性が要求される。
【0082】そこで、本発明を適用したメモリカード2
では、常にブートデータをフラッシュメモリ12の先頭
の有効な2ブロックにそれぞれ格納しておくようにす
る。なお、「有効なブロック」とは、使用可能状態にあ
るブロックのことである。換言すれば、「有効なブロッ
ク」とは、可/不可フラグが「使用可」に設定されてい
るブロックである。すなわち、ブートデータをブロック
に格納する際に、有効でないブロック(すなわち、可/
不可フラグが「使用不可」に設定されているブロック)
は、使用することなく飛ばして、有効なブロックにブー
トデータを格納してブートブロックとする。
【0083】このように、本発明を適用したメモリカー
ド2では、固定された特定のブロックをブートブロック
にするのではなく、有効でないブロックが生じたときに
は、ブートデータを格納するブロックを変更して、有効
な2つのブロックに常にブートデータが格納されるよう
にする。すなわち、例えば、メモリカード2の先頭のブ
ロックにエラーが生じたとしても、常にブートデータは
有効なブロックに二重に保持される。したがって、本発
明を適用したメモリカード2の信頼性は非常に高いもの
となる。
【0084】また、本発明を適用したメモリカード2で
は、追加管理情報に含まれている識別番号を、データブ
ロックの場合とブートブロックの場合とで区別して使用
する。
【0085】すなわち、データブロックの場合には、同
じ論理アドレスのブロックが複数あったときに、それら
のブロックに格納されているデータの新旧を識別するた
めに識別番号を使用する。ここで、同じ論理アドレスを
持つデータブロックが複数存在するのは、多くの場合、
データブロック更新時に何らかのエラーが発生したため
であり、このとき、識別番号の値が小さい方のデータブ
ロックに格納されているデータが更新前のデータであ
る。そこで、同じ論理アドレスを持つデータブロックが
複数存在する場合には、データを更新する前の状態に戻
すために、識別番号の値が小さい方のデータブロックを
選択し、当該データブロックに格納されているデータを
有効なデータとして採用する。
【0086】なお、データブロックの識別番号は、デー
タブロックに対して論理アドレスが新規に割り当てられ
たときに初期化されて「0」とされる。また、この識別
番号は、データブロックの更新時に1インクリメントさ
れる。なお、上述したように、識別番号が「255」を
越えた場合には「0」に戻される。
【0087】一方、ブートブロックの場合には、上述し
たようにフラッシュメモリ12の先頭の有効な2ブロッ
クに格納されたブートデータについて、それらの新旧を
識別するために識別番号を使用する。ブートデータは、
メモリカード2へのアクセスに必要不可欠な情報であ
り、常に最新の情報を用いる必要がある。そして、2つ
のブートブロックの識別番号が異なるのは、多くの場
合、ブートブロックの更新時に何らかのエラーが発生し
たためであり、このとき、識別番号の値が大きいブート
ブロックに格納されているブートデータが、より新しい
情報を含むブートデータである。そこで、2つのブート
ブロックについて、それらの識別番号が異なる場合に
は、識別番号の値が大きい方のブートブロックを選択
し、当該ブートブロックに格納されているデータをブー
トデータとして採用する。
【0088】なお、このメモリカード2は、最初に使用
するときにフォーマットされるが、このフォーマット時
に、ブートブロックの識別番号は初期化され「0」とさ
れる。そして、この識別番号は、ブートブロックに格納
されているブートデータを更新した時に1インクリメン
トされる。なお、ブートブロックの場合も、データブロ
ックのときと同様に、識別番号が「255」を越えた場
合には「0」に戻される。
【0089】つぎに、以上のようにフラッシュメモリ1
2の先頭の有効な2ブロックをブートブロックにすると
ともに、それらのブートブロックの新旧を識別番号を用
いて管理する際の手順について、更に詳細に説明する。
【0090】(1)フォーマット時の手順 上述したように、このメモリカードは、最初に使用する
ときにフォーマットされる。そして、このフォーマット
時にブートブロックが作成される。そこで、まず、フォ
ーマット時のブートブロック作成の手順について説明す
る。
【0091】フォーマット時に、データ処理装置1は、
先ず、メモリカード2のコンフィグレーションROM1
8に格納されている情報を読み出し、この情報等に基づ
いてブートブロックに格納するデータ(すなわちブート
データ)を作成する。なお、このデータには、当該デー
タを読み出したときに、そのデータがブートデータであ
ることが分かるように、当該データがブートデータであ
ることを示す情報(以下、ブート識別子と称する。)も
含めておく。
【0092】次に、作成したブートデータを、フラッシ
ュメモリ12の先頭の2ブロック(すなわち、物理アド
レスの値が最も小さいブロックと、物理アドレスの値が
その次に小さいブロック)にそれぞれ書き込み、ブート
ブロックと予備のブートブロックとを作成する。このと
き、ブートデータが書き込まれるブロックの追加管理情
報の識別番号を「0」に設定する。エラーなく終了すれ
ば、ブートブロックの作成を終了する。
【0093】ここでのブートデータの書き込みは、具体
的には、先ず、該当するブロックに対して消去処理を施
し、その後、当該ブロックに対してブートデータを書き
込むことによって行う。このとき、当該ブロックに対し
て消去処理が正常に行えなかった場合や、消去処理が施
されたブロックに対してブートデータを正常に書き込め
なかった場合には、当該ブロックの可/不可フラグが
「使用不可」に設定され、当該ブロックは使用不可状態
とされる。このとき、可/不可フラグを「使用不可」に
設定できなかった場合には、可/不可フラグを「使用不
可」に設定する処理を何度かリトライする。それでも設
定できない場合には、データ処理装置1はメディア異常
と判断し、そのメモリカード2を受け付けないようにす
る。なお、消去処理が施されたブロックに対してブート
データを正常に書き込めなかった場合には、当該ブロッ
クに途中まで書き込んだブートデータが残ってしまった
りするようなことがないように、可/不可フラグを「使
用不可」に設定する前に、当該ブロックに対して消去処
理を施しておく。
【0094】そして、本発明を適用したメモリカード2
では、ブートブロックにしようとしたブロックにエラー
が発生した場合には、次に使用可能なブロックに対し
て、同様にブートデータの書き込みを試みる。そして、
正常で且つ内容が同一のブートブロックが2個作成され
るまで、この処理を続ける。これにより、内容が同一の
ブートデータがフラッシュメモリ12の先頭の有効な2
ブロックにそれぞれ格納され、先頭の有効な2ブロック
がブートブロック及び予備のブートブロックとなる。
【0095】ただし、ブートデータの書き込みは、対象
となるブロックの物理アドレスが所定の値Mになった
ら、内容が同一のブートブロックが2個作成されていな
くても、処理を終了する。この所定の値Mは、フラッシ
ュメモリ12の特性等に応じて予め規定しておく。そし
て、対象となるブロックの物理アドレスが所定の値Mに
なったら、ブートブロックが1つだけしか作成されてい
なくても、ブートブロックの作成を終了する。また、対
象となるブロックの物理アドレスが所定の値Mになって
も、ブートブロックが1つも作成されない場合には、メ
ディア異常と判断し、そのメモリカード2を受け付けな
いようにする。
【0096】ところで、一般にフラッシュメモリ12
は、書き換え回数が多いブロックでエラーが発生する可
能性が高く、一旦エラーが出始めると、その後もエラー
が生じる確率が高い。そこで、以前ブートブロックとし
て使用されたが、エラーになって使用不可になったブロ
ックは、たとえそのエラーが一時的なものであったとし
ても、そのブロックの再利用はしないようにする。この
ような規則を採用することにより、非常に重要な情報で
あるブートデータは、より信頼性の高いブロックに格納
されることとなり、ブートブロックの信頼性の向上を図
ることができる。なお、この規則は、先頭のブロックか
ら2つめのブートブロックまでの間にだけ、或いは2つ
めのブートブロックが無い場合には物理アドレスが上記
所定の値Mに至るまでの間にだけ適用する。すなわち、
この規則は、高い信頼性が要求されるブートブロックに
ついてだけ適用し、それ以降のブロック(すなわちデー
タブロック)に対しては適用しない。これにより、記憶
領域のより有効な利用を図ることができる。
【0097】なお、ブートブロックの読み込み時にエラ
ーが発生した場合、当該ブートブロックを直ぐに使用不
可にするようなことはしない。例えば、ブートブロック
の書き換え中にメモリカード2がデータ処理装置1から
抜かれた場合、ブートブロックの書き換えが中途半端に
終了している可能性が高い。このようなとき、そのブー
トブロックを次に読み込んだ場合にエラーが発生する
が、そのブロックは再利用が可能であるので、当該ブロ
ックを使用不可にする必要はない。
【0098】しかしながら、データ処理装置1は、この
ような読み込みエラーと、フラッシュメモリ12で回復
不能な障害が発生したために起きた読み込みエラーとを
区別して検出することができない。そこで、ブートブロ
ックの読み込み時にエラーが発生した場合は、当該ブー
トブロックを消去して改めてブートデータを書き込む。
もし、フラッシュメモリ12で回復不能な障害が発生し
ている場合は、ブロック消去やデータ書き込み時にもエ
ラーが発生することとなる。そこで、このようにブロッ
ク消去やデータ書き込み時にエラーが生じたときにだ
け、そのブロックを使用不可とする。
【0099】(2)ブートブロック更新時の手順 ブートデータは、常に同じデータとは限らず、メモリカ
ード2の使用に伴い、その内容を変更する必要が生じ
る。したがって、ブートブロックを更新して、ブートデ
ータを書き換える場合がある。このブートデータの書き
換えは、以下に示すルールに基づいて行う。
【0100】・ブートデータの書き換えを行うようなと
きには、集合管理情報の内容を変更する必要がある。そ
こで、ブートデータの書き換えを行う前に、フラッシュ
メモリ12にファイルとして格納されている集合管理情
報を無効にする。なお、次に集合管理情報を用いるとき
は、改めて分散管理情報から構築し直す。
【0101】・ブートデータの内容を書き換える際は、
現在ブートデータが格納されているブートブロックに対
して消去処理を施し、そのブロックに新たなブートデー
タを書き込む。すなわち、ブートデータを書き換えると
きは、別のブロックを使用することなく、同一ブロック
の内容を更新する。ただし、ブートブロックの更新時に
エラーが発生し、当該ブロックが使用不可になった場合
は、この限りではない。
【0102】・新しいブートデータに書き換える場合
は、上述したように2つ作成したブートブロックのう
ち、物理アドレスが小さい方から行う。このとき、内容
を更新したブートブロックの識別番号を1インクリメン
トする。ただし、書き換え前の識別番号の値が「25
5」の場合は「0」とする。
【0103】・予備のブートブロック(すなわち物理ア
ドレスの大きいほうのブートブロック)を更新して、も
うひとつのブートブロックと同一の内容となるように、
新しいブートデータに書き換えたときは、当該予備のブ
ートブロックの識別番号を、もうひとつのブートブロッ
クの識別番号と同じ値にする。
【0104】以上のようなルールに基づいて、ブートブ
ロックを更新する際の手順について、図8を参照して説
明する。
【0105】なお、図8では、物理アドレス「1」のブ
ロックが通常使用されるブートブロック(以下、第1の
ブートブロックと称する。)とされ、物理アドレス
「2」のブロックが予備のブートブロック(以下、第2
のブートブロックと称する。)とされている例を示して
いる。また、図8では、ブートデータが正常に書き込ま
れており、当該ブートデータの読み出しが可能な状態の
ことを「OK」として示している。また、ブートデータ
書き換えの最中等により、ブートデータの読み出しが不
可能になっている状態のことを「NG」として示してい
る。
【0106】図8(a)は、ブートブロック書き換え前
の正常な状態を示している。このとき、第1のブートブ
ロックの識別番号と、第2のブートブロックの識別番号
とは、同じ値である。具体的には、図8(a)の例で
は、第1のブートブロックの識別番号が「10」であ
り、第2のブートブロックの識別番号も同じ「10」と
されている。
【0107】ブートブロックを更新する際は、先ず、図
8(b)に示すように、物理アドレスの小さいほうのブ
ートブロック、すなわち第1のブートブロックのほうか
ら、ブートデータの書き換えを行う。このとき、第1の
ブートブロックは、ブートデータの書き換えの最中であ
るので、ブートブロックとしては使用できない「NG」
状態となる。
【0108】もしもこの段階で、メモリカード2がデー
タ処理装置1から強制的に抜かれてしまったりして、処
理が中断されてしまった場合、再起動時に、第1のブー
トブロックをブートブロックとして使用することはでき
ない。このときは、予備のブートブロックである第2の
ブートブロックに格納されているブートデータを読み出
してメモリカード2を起動する。また、このときは、第
2のブートブロックから読み出されたブートデータに基
づいて、第1のブートブロックを再構築する。
【0109】そして、第1のブートブロックが更新され
ると、図8(c)に示すように、第1のブートブロック
の識別番号が1インクリメントされ、本例ではその値が
「11」とされる。この段階では、第1のブートブロッ
クには新しいブートデータが格納され、第2のブートブ
ロックには古いブートデータが格納された状態となる。
【0110】したがって、もしもこの段階で、メモリカ
ード2がデータ処理装置1から強制的に抜かれてしまっ
たりして、処理が中断されてしまった場合、再起動時に
は、第1のブートブロックに格納されている新しいブー
トデータ(すなわち、識別番号の値が大きいほうのブー
トブロックに格納されているブートデータ)を読み出し
てメモリカード2を起動する。また、このときは、識別
番号の値が大きいほうのブートブロック(すなわち第1
のブートブロック)に格納されているブートデータに基
づいて、識別番号の値が小さいほうのブートブロック
(すなわち第2のブートブロック)のブートデータを更
新する。
【0111】そして、第1のブートブロックの更新が完
了したら、次に、図8(d)に示すように、物理アドレ
スの大きいほうのブートブロック、すなわち第2のブー
トブロックの更新を行う。このとき、第2のブートブロ
ックは、ブートデータの書き換えの最中であるので、ブ
ートブロックとしては使用できない「NG」状態とな
る。
【0112】もしもこの段階で、メモリカード2がデー
タ処理装置1から強制的に抜かれてしまったりして、処
理が中断されてしまった場合、再起動時には、第1のブ
ートブロックのブートデータを使用してメモリカード2
は起動されるが、予備のブートブロックが存在しない状
態となる。したがって、このときは、第1のブートブロ
ックから読み出されたブートデータに基づいて、予備の
ブートブロックである第2のブートブロックを再構築す
る。
【0113】そして、第2のブートブロックが更新され
ると、図8(e)に示すように、第2のブートブロック
の識別番号が1インクリメントされ、本例ではその値が
「11」とされる。これにより、第1のブートブロック
の識別番号と、第2のブートブロックの識別番号とが等
しい値となる。以上の処理により、第1のブートブロッ
クにも第2のブートブロックにも新しいブートデータが
格納された状態となる。
【0114】(3)メモリカード起動時のブートブロッ
ク読み込みの手順 ブートブロックに格納されたブートデータは、メモリカ
ード2がデータ処理装置1に接続され起動されたとき
に、データ処理装置1に最初に読み込まれる。そこで、
つぎに、メモリカード起動時における、データ処理装置
1によるブートブロック読み込みの手順について詳細に
説明する。
【0115】正常な状態では、同一識別番号を持ち且つ
同一内容を持つブートブロックが2つ存在する。そこ
で、このことを確認する処理を、メモリカード起動時に
必ず行う。具体的には、先頭ブロックから順番に、以下
に示すような流れで処理を行い、ブートブロックを調べ
ていく。
【0116】・先頭ページの分散管理情報が正常に読め
るかを確認する。
【0117】・可/不可フラグが「使用可」になってい
るかを確認する。
【0118】・ブロックフラグが「先頭使用」になって
いるかを確認する。
【0119】・ブート識別子を検出して、格納されてい
るデータがブートデータであるかを確認する。
【0120】・最終ページに格納されている追加管理情
報が正常に読めるかを確認する。
【0121】・識別番号を読み出す。このとき、1個目
のブートブロックの場合には、その値を保存する。2個
目のブートブロックの場合には、1個目のブートブロッ
クの識別番号と値が一致するかを確認する。
【0122】・ブートブロック内のデータを読み出す。
1個目のブートブロックの場合、読み出したデータは保
存しておく。2個目のブートブロックの場合、読み出し
たデータと保存しておいた1個目のブートブロックのデ
ータとが一致するかを確認する。
【0123】以上のような処理を先頭ブロックから順次
行い、同一識別番号を持ち且つ同一内容を持つブートブ
ロックが2つ確認された時点で、ブートブロックの読み
込みを終了する。このように、メモリカード2の起動時
に2つのブートブロックの確認を行うことにより、メモ
リカード2の信頼性を非常に高めることができる。
【0124】なお、物理アドレスが上述した所定の値M
になるまで調べた時点で、ブートブロックが1つしか存
在しない場合には、当該ブートブロックに格納されてい
るブートデータを使用してメモリカード2を起動する。
このとき、先頭からM番目までのブロックに使用可能な
ブロックがある場合には、当該ブロックにブートデータ
を書き込んで、改めて予備のブートブロックを作成す
る。先頭からM番目までのブロックに使用可能なブロッ
クがない場合には、ブートブロックが1つの状態のまま
でメモリカード2を動作させる。また、M番目のブロッ
クまで調べた時点で、ブートブロックが存在しなかった
場合には、データ処理装置1はメディア異常と判断し、
そのメモリカード2を受け付けないようにする。
【0125】なお、2つのブロックにそれぞれブートデ
ータが正常に書かれていても識別番号が異なっている場
合には、識別番号の大きいほうのブロックを正当なブー
トブロックとして選択し、メモリカード2の起動には、
識別番号の大きいほうのブロックに格納されているブー
トデータを使用する。ただし、一方の識別番号が「25
5」で他方の識別番号が「0」の場合には、識別番号が
「0」のほうのブロックを正当なブートブロックとして
選択し、当該ブロックのブートデータを使用する。ま
た、1つのブロックにだけブートデータが正常に書かれ
ているときには、そのブロックがブートブロックとして
使用される。
【0126】つぎに、以上のようなメモリカード起動時
のブートブロック読み込みの手順について、図9乃至図
12に示すフローチャートを参照して、更に詳細に説明
する。なお、ここでは、変数としてI,WB,IDA,
IDBを使用する。変数I,WBは、物理アドレスが入
力される変数であり、変数IDA,IDBは、識別番号
の値が入力される変数である。
【0127】メモリカードの起動時には、図9に示すよ
うに、先ず、ステップS1において、変数Iに「0」を
代入する。また、変数IDA,IDBに「0」を代入す
る。次に、ステップS2へ進む。
【0128】ステップS2では、処理の対象となるブロ
ックを、変数Iが示す物理アドレスのブロックとする。
次に、ステップS3へ進む。
【0129】ステップS3では、現在処理の対象となっ
ているブロックから、分散管理情報を読み出せるかを判
別する。分散管理情報を読み出せれば、ステップS4へ
進み、分散管理情報を読み出せなければ、ステップS2
5へ進む。
【0130】ステップS4では、現在処理の対象となっ
ているブロックの可/不可フラグが「使用可」になって
いるかを判別する。「使用可」になっていれば、ステッ
プS5へ進み、「使用可」になっていなければ、ステッ
プS22へ進む。
【0131】ステップS5では、現在処理の対象となっ
ているブロックのブロックフラグが「先頭使用」になっ
ているかを判別する。「先頭使用」になっていれば、ス
テップS6へ進み、「先頭使用」になっていなければ、
ステップS24へ進む。
【0132】ステップS6では、現在処理の対象となっ
ているブロックに格納されているデータに、ブート識別
子が設定されているかを判別する。すなわち、当該デー
タがブートデータであるかを判別する。ブートデータで
あれば、ステップS7へ進み、ブートデータでなけれ
ば、ステップS28へ進む。
【0133】ステップS7では、現在処理の対象となっ
ているブロックから、追加管理情報を読み出せるかを判
別する。追加管理情報を読み出せれば、ステップS8へ
進み、追加管理情報を読み出せなければ、ステップS2
5へ進む。
【0134】ステップS8では、変数IDAに、現在処
理の対象となっているブロックの識別番号の値を代入す
る。次に、ステップS9へ進む。
【0135】ステップS9では、現在処理の対象となっ
ているブロックから、ブートデータを読み出せるかを判
別する。ブートデータを読み出せれば、ステップS10
へ進み、ブートデータを読み出せなければ、ステップS
25へ進む。
【0136】ステップS10では、現在処理の対象とな
っているブロックからブートデータを読み出し、当該ブ
ートデータを保存する。次に、ステップS11へ進む。
【0137】ステップS11では、変数WBに変数Iの
値を代入するとともに、変数Iの値を1インクリメント
する。次に、図10のステップS12へ進む。
【0138】ステップS12では、処理の対象となるブ
ロックを、変数Iが示す物理アドレスのブロックとす
る。次に、ステップS13へ進む。
【0139】ステップS13では、現在処理の対象とな
っているブロックから、分散管理情報を読み出せるかを
判別する。分散管理情報を読み出せれば、ステップS1
4へ進み、分散管理情報を読み出せなければ、ステップ
S32へ進む。
【0140】ステップS14では、現在処理の対象とな
っているブロックの可/不可フラグが「使用可」になっ
ているかを判別する。「使用可」になっていれば、ステ
ップS15へ進み、「使用可」になっていなければ、ス
テップS29へ進む。
【0141】ステップS15では、現在処理の対象とな
っているブロックのブロックフラグが「先頭使用」にな
っているかを判別する。「先頭使用」になっていれば、
ステップS16へ進み、「先頭使用」になっていなけれ
ば、ステップS31へ進む。
【0142】ステップS16では、現在処理の対象とな
っているブロックに格納されているデータに、ブート識
別子が設定されているかを判別する。すなわち、当該デ
ータがブートデータであるかを判別する。ブートデータ
であれば、ステップS17へ進み、ブートデータでなけ
れば、ステップS35へ進む。
【0143】ステップS17では、現在処理の対象とな
っているブロックから、追加管理情報を読み出せるかを
判別する。追加管理情報を読み出せれば、ステップS1
8へ進み、追加管理情報を読み出せなければ、ステップ
S32へ進む。
【0144】ステップS18では、変数IDBに、現在
処理の対象となっているブロックの識別番号の値を代入
する。次に、ステップS19へ進む。
【0145】ステップS19では、変数IDAの値と変
数IDBの値とを比較する。変数IDAの値と変数ID
Bの値とが等しければ、ステップS20へ進み、変数I
DAの値と変数IDBの値とが等しくなければ、ステッ
プS32へ進む。
【0146】ステップS20では、現在処理の対象とな
っているブロックから、ブートデータを読み出せるかを
判別する。ブートデータを読み出せれば、ステップS2
1へ進み、ブートデータを読み出せなければ、ステップ
S32へ進む。
【0147】ステップS21では、現在処理の対象とな
っているブロックからブートデータを読み出し、当該ブ
ートデータと、先に読み出して保存しておいたブートデ
ータとが一致しているかを判別する。それらのブートデ
ータが一致しているのは、2つのブートブロックからの
ブートデータの読み出しが正常に行われたときであるの
で、これで処理を終了する。一方、それらのブートデー
タが一致していなければ、ステップS32へ進む。
【0148】一方、図9に示すように、ステップS4で
可/不可フラグが「使用可」になっていなかった場合に
は、上述したようにステップS22へ進む。
【0149】ステップS22では、変数Iの値と、上述
した所定の値Mとを比較する。そして、変数Iの値が所
定の値Mよりも小さければ、ステップS23へ進む。ス
テップS22において、変数Iの値が所定の値M以上と
なるのは、M番目のブロックまで調べてもブートデータ
が得られなかった場合であり、このときは、エラーとし
て処理を終了する。
【0150】ステップS23では、変数Iの値を1イン
クリメントする。そして、ステップS2へ戻って処理を
繰り返す。
【0151】また、ステップS5でブロックフラグが
「先頭使用」になっていなかった場合は、上述したよう
にステップ24へ進む。このステップS24では、当該
ブロックフラグが「未使用」になっているかを判別す
る。「未使用」になっていれば、図11のステップS3
6へ進み、「未使用」になっていなければ、ステップ2
5へ進む。
【0152】ステップS25では、現在処理の対象とな
っているブロックに対して消去処理を施す。次に、ステ
ップS26へ進む。
【0153】ステップS26では、ステップS25での
消去処理が正常に完了したかを判別する。消去処理が正
常に完了していれば、図11のステップS36へ進み、
消去処理が正常に完了していなければ、ステップ27へ
進む。
【0154】ステップS27では、現在処理の対象とな
っているブロックの可/不可フラグを「使用不可」に設
定し、その後、ステップS22へ進んで上述した処理を
行う。
【0155】また、ステップS6でデータがブートデー
タでなかった場合には、上述したようにステップS28
へ進む。
【0156】このステップS28では、処理の対象とな
るブロックを他のブロックに移動する。その後、ステッ
プS25へ進んで上述した処理を行う。
【0157】また、ステップS3で分散管理情報が読み
出せなかった場合、ステップS7で追加管理情報を読み
出せなかった場合、及びステップS9でブートデータを
読み出せなかった場合にも、上述したようにステップS
25へ進んで、上述した処理を行う。
【0158】また、図10に示すように、ステップS1
4で可/不可フラグが「使用可」になっていなかった場
合には、上述したようにステップS29へ進む。このス
テップS29では、変数Iの値と、上述した所定の値M
とを比較する。そして、変数Iの値が所定の値Mよりも
小さければ、ステップS30へ進む。一方、ステップS
29において変数Iの値が所定の値M以上となるのは、
M番目のブロックまで調べても2つめのブートデータが
得られなかった場合であり、このときは、ここでブート
データ読み出しの処理を終了し、先に読み出して保存し
ておいたブートデータを使ってメモリカード2を起動す
る。
【0159】ステップS30では、変数Iの値を1イン
クリメントする。そして、ステップS12へ戻って処理
を繰り返す。
【0160】また、ステップS15でブロックフラグが
「先頭使用」になっていなかった場合は、上述したよう
にステップ31へ進む。このステップS31では、当該
ブロックフラグが「未使用」になっているかを判別す
る。「未使用」になっていれば、図12のステップS4
7へ進み、「未使用」になっていなければ、ステップ3
2へ進む。
【0161】ステップS32では、現在処理の対象とな
っているブロックに対して消去処理を施す。次に、ステ
ップS33へ進む。
【0162】ステップS33では、ステップS32での
消去処理が正常に完了したかを判別する。消去処理が正
常に完了していれば、図12のステップS47へ進み、
消去処理が正常に完了していなければ、ステップ34へ
進む。
【0163】ステップS34では、現在処理の対象とな
っているブロックの可/不可フラグを「使用不可」に設
定し、その後、ステップS29へ進んで上述した処理を
行う。
【0164】また、ステップS16でデータがブートデ
ータでなかった場合には、上述したようにステップS3
5へ進む。このステップS35では、処理の対象となる
ブロックを他のブロックに移動する。その後、ステップ
S32へ進んで上述した処理を行う。
【0165】また、ステップS13で分散管理情報が読
み出せなかった場合、ステップS17で追加管理情報を
読み出せなかった場合、ステップS19で変数IDAの
値と変数IDBの値とが一致しなかった場合、ステップ
S20でブートデータを読み出せなかった場合、及びス
テップS21でブートデータが一致しなかった場合に
も、上述したようにステップS32へ進んで、上述した
処理を行う。
【0166】また、図11に示すように、ステップS3
6では、変数WBに変数Iの値を代入するとともに、変
数Iの値を1インクリメントする。次に、ステップS3
7へ進む。
【0167】ステップS37では、処理の対象となるブ
ロックを、変数Iが示す物理アドレスのブロックとす
る。次に、ステップS38へ進む。
【0168】ステップS38では、現在処理の対象とな
っているブロックから、分散管理情報を読み出せるかを
判別する。分散管理情報を読み出せれば、ステップS3
9へ進み、分散管理情報を読み出せなければ、ステップ
S45へ進む。
【0169】ステップS39では、現在処理の対象とな
っているブロックの可/不可フラグが「使用可」になっ
ているかを判別する。「使用可」になっていれば、ステ
ップS40へ進み、「使用可」になっていなければ、ス
テップS45へ進む。
【0170】ステップS40では、現在処理の対象とな
っているブロックに格納されているデータに、ブート識
別子が設定されているかを判別する。すなわち、当該デ
ータがブートデータであるかを判別する。ブートデータ
であれば、ステップS41へ進む。
【0171】ステップS41では、現在処理の対象とな
っているブロックから、追加管理情報を読み出せるかを
判別する。追加管理情報を読み出せれば、ステップS4
2へ進む。
【0172】ステップS42では、現在処理の対象とな
っているブロックから、ブートデータを読み出せるかを
判別する。ブートデータを読み出せれば、ステップS4
3へ進む。
【0173】ステップS43では、現在処理の対象とな
っているブロックからブートデータを読み出し、当該ブ
ートデータを保存する。次に、ステップS44へ進む。
【0174】ステップS44では、変数WBが示す物理
アドレスのブロックに、ステップS43で読み出して保
存しておいたブートデータを書き込む。このときは、こ
こでブートデータ読み出しの処理を終了し、ステップS
43で読み出して保存しておいたブートデータを使って
メモリカード2を起動する。
【0175】また、ステップS38で分散管理情報が読
み出せなかった場合、及びステップS39で可/不可フ
ラグが「使用可」になっていなかった場合には、上述し
たようにステップS45へ進む。このステップS45で
は、変数Iの値と、上述した所定の値Mとを比較する。
そして、変数Iの値が所定の値Mよりも小さければ、ス
テップS46へ進む。ステップS45において、変数I
の値が所定の値M以上となるのは、M番目のブロックま
で調べてもブートデータが得られなかった場合であり、
このときは、エラーとして処理を終了する。
【0176】ステップS46では、変数Iの値を1イン
クリメントする。そして、ステップS37へ戻って処理
を繰り返す。
【0177】また、ステップS40でデータがブートデ
ータではなかった場合、ステップS41で追加管理情報
を読み出せなかった場合、及びステップS42でブート
データを読み出せなかった場合には、エラーとして処理
を終了する。これは、2つのブートブロックのいずれか
らもブートデータが読み出せなかった場合である。
【0178】また、図12に示すように、ステップS4
7では、変数IDBの値が「0xffff」であるかを判別す
る。変数IDBの値が「0xffff」でなければステップS
48へ進み、変数IDBの値が「0xffff」であればステ
ップS49へ進む。
【0179】ステップS48では、変数IDAの値と、
変数IDBの値に「1」を加えた値とを比較する。これ
らの値が等しければ、ステップS49へ進み、等しくな
ければ、ステップS51へ進む。
【0180】ステップS49では、変数WBに変数Iの
値を代入する。次に、ステップS50へ進む。
【0181】ステップS50では、変数WBが示す物理
アドレスのブロックに、先に読み出して保存しておいた
ブートデータを書き込む。このときは、ここでブートデ
ータ読み出しの処理を終了し、先に読み出して保存して
おいたブートデータを使ってメモリカード2を起動す
る。
【0182】ステップS51では、変数IDBの値と、
変数IDAの値に「1」を加えた値とを比較する。これ
らの値が等しければ、ステップS50へ進み上述した処
理を行う。
【0183】一方、ステップS51において、変数ID
Bの値と、変数IDAの値に「1」を加えた値とが等し
くないと判別されるのは、2つのブートブロックの識別
番号が、等しくなく且つ連続番号でもない場合である。
このような状態となるのは、メモリカード2に何らかの
異常があったときである。しかしながら、ブートデータ
が読み出せなくなっているわけではないので、このとき
は、例えば手動復旧モードとして、データ処理装置1の
側で適切な処理を行うようにする。
【0184】以上がメモリカード起動時のブートブロッ
ク読み込みの手順である。このように手順により、メモ
リカード2の起動時に2つのブートブロックの確認を行
うことで、メモリカード2の信頼性を非常に高めること
ができる。
【0185】
【発明の効果】以上詳細に説明したように、本発明によ
れば、複数の異なるブロックにブートデータをそれぞれ
格納するようにしているので、たとえブートデータが格
納されたブロックのうちのいずれかが使用不可能になっ
たとしても、他のブロックのブートデータを用いて、外
部記憶装置を起動することができる。
【0186】しかも、それらのブロックにはブートデー
タの新旧を示す識別番号を格納するようにしているの
で、常に最新のブートデータを使用するようにすること
ができる。すなわち、本発明によれば、たとえ新しいブ
ートデータと古いブートデータとが混在するような状態
になったとしても、常に最新のブートデータを使用する
ようにすることができ、データの一貫性を保証できる。
【0187】したがって、本発明によれば、ブートデー
タ読み出し時にエラーが発生し難く、信頼性の高い外部
記憶装置を提供することができる。
【図面の簡単な説明】
【図1】本発明が適用されるシステムの全体構成を示す
図である。
【図2】本発明を適用したメモリカードの構成を示すブ
ロック図である。
【図3】本発明を適用したメモリカードの外観を示す斜
視図である。
【図4】本発明を適用したメモリカードの記憶領域の構
造を示す図である。
【図5】分散管理情報の構成を示す図である。
【図6】追加管理情報の構成を示す図である。
【図7】各ブロックの分散管理情報から集合管理情報を
構築する様子を示す図である。
【図8】ブートブロックを更新する際の手順を示す図で
ある。
【図9】メモリカード起動時のブートブロック読み込み
の手順を示すフローチャートである。
【図10】メモリカード起動時のブートブロック読み込
みの手順を示すフローチャートである。
【図11】メモリカード起動時のブートブロック読み込
みの手順を示すフローチャートである。
【図12】メモリカード起動時のブートブロック読み込
みの手順を示すフローチャートである。
【符号の説明】
1 データ処理装置、 2 メモリカード、 3 演算
処理装置、 4 内部メモリ、 5 補助記憶装置、
6 シリアルインターフェース回路、 7 バス、 1
1 コントローラ、 12 フラッシュメモリ、 13
シリアル/パラレル・パラレル/シリアル・インター
フェース・シーケンサ、 14 フラッシュメモリ・イ
ンターフェース・シーケンサ、 15 ページバッフ
ァ、 16エラー訂正回路、 17 コマンドジェネレ
ータ、 18 コンフィグレーションROM、 19
発振器、 20 誤消去防止スイッチ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭63−73439(JP,A) 特開 昭64−81028(JP,A) 特開 平5−265873(JP,A) 特開 平5−314019(JP,A) 特開 平6−324857(JP,A) 特開 平7−64795(JP,A) 特開 平7−93097(JP,A) 特開 平8−255084(JP,A) 特開 平8−328844(JP,A) 特開 平8−328845(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 3/06 301 G06F 3/08 G06F 9/06 G06F 12/16 G11C 16/02

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 データの消去を所定のブロック単位で行
    うとともに、起動時に最初に読み出されるブートデータ
    を格納するブロックを有する外部記憶装置であって、 ブートデータがそれぞれ格納された複数の異なるブロッ
    クを備えるとともに、 ブートデータが格納された各ブロックに、それらのブロ
    ックに格納されたブートデータの新旧を示す識別番号が
    格納される識別番号格納部を備えていることを特徴とす
    る外部記憶装置。
  2. 【請求項2】 データの消去を所定のブロック単位で行
    う外部記憶装置に、当該外部記憶装置の起動時に最初に
    読み出されるブートデータを格納する際に、 複数の異なるブロックにブートデータをそれぞれ格納す
    るとともに、 ブートデータが格納された各ブロックに、それらのブロ
    ックに格納されたブートデータの新旧を示す識別番号を
    格納することを特徴とするデータ処理方法。
  3. 【請求項3】 上記外部記憶装置を起動する際に、上記
    識別番号に基づいて、上記複数の異なるブロックに格納
    された各ブートデータのうち、最新のブートデータを読
    み出して、当該ブートデータを用いて外部記憶装置を起
    動することを特徴とする請求項2記載のデータ処理方
    法。
  4. 【請求項4】 上記外部記憶装置を起動する際に、上記
    識別番号に基づいて、上記複数の異なるブロックに格納
    された各ブートデータの新旧を判別し、古いブートデー
    タがある場合には当該ブートデータを最新のブートデー
    タに書き換えることを特徴とする請求項2記載のデータ
    処理方法。
JP26717797A 1997-09-30 1997-09-30 外部記憶装置及びデータ処理方法 Expired - Lifetime JP2914360B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP26717797A JP2914360B2 (ja) 1997-09-30 1997-09-30 外部記憶装置及びデータ処理方法
MYPI98004400A MY121756A (en) 1997-09-30 1998-09-25 External storage apparatus and data processing method
SG1998003896A SG71848A1 (en) 1997-09-30 1998-09-25 External storage apparatus and data processing method
US09/162,332 US6330634B1 (en) 1997-09-30 1998-09-28 External storage apparatus having redundant boot blocks, and data processing method therefor
DE69809527T DE69809527T2 (de) 1997-09-30 1998-09-29 Externe Speichervorrichtung und Datenverarbeitungsverfahren
EP98118439A EP0910020B1 (en) 1997-09-30 1998-09-29 External storage apparatus and data processing method
AU87138/98A AU753121B2 (en) 1997-09-30 1998-09-29 External storage apparatus and data processing method
KR1019980041922A KR100642529B1 (ko) 1997-09-30 1998-09-30 외부기억장치및데이터처리방법
CNB981258174A CN1229724C (zh) 1997-09-30 1998-09-30 外部存储设备和数据处理方法
US09/968,296 US6981136B2 (en) 1997-09-30 2001-10-01 External storage apparatus having redundant boot blocks, and data processing method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26717797A JP2914360B2 (ja) 1997-09-30 1997-09-30 外部記憶装置及びデータ処理方法

Publications (2)

Publication Number Publication Date
JPH11110141A JPH11110141A (ja) 1999-04-23
JP2914360B2 true JP2914360B2 (ja) 1999-06-28

Family

ID=17441184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26717797A Expired - Lifetime JP2914360B2 (ja) 1997-09-30 1997-09-30 外部記憶装置及びデータ処理方法

Country Status (9)

Country Link
US (2) US6330634B1 (ja)
EP (1) EP0910020B1 (ja)
JP (1) JP2914360B2 (ja)
KR (1) KR100642529B1 (ja)
CN (1) CN1229724C (ja)
AU (1) AU753121B2 (ja)
DE (1) DE69809527T2 (ja)
MY (1) MY121756A (ja)
SG (1) SG71848A1 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6786417B1 (en) * 1997-06-04 2004-09-07 Sony Corporation Memory card with write protection switch
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
US6601140B1 (en) * 1999-04-07 2003-07-29 Sony Corporation Memory unit, data processing unit, and data processing method using memory unit type
US6704865B1 (en) * 1999-12-23 2004-03-09 Delphi Technologies, Inc. Microprocessor conditional deterministic reset vector method
JP3838840B2 (ja) * 2000-01-06 2006-10-25 Necエレクトロニクス株式会社 コンピュータ
JP2001209543A (ja) * 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd フラッシュ・マイコンにおけるプログラム書き換え方法
JP2001306543A (ja) * 2000-04-19 2001-11-02 Nec Corp マイクロコンピュータ及びフラッシュメモリのデータ書換え方法
JP3627915B2 (ja) * 2000-05-30 2005-03-09 シャープ株式会社 ブートブロックフラッシュメモリ制御回路、およびそれを備えたicメモリカードと半導体記憶装置、並びにブートブロックフラッシュメモリの消去方法
JP2002091494A (ja) * 2000-09-13 2002-03-27 Tdk Corp ディジタル式記録再生装置
US6859876B2 (en) * 2000-12-29 2005-02-22 Hewlett-Packard Development Company, L.P. System and method for detecting and using a replacement boot block during initialization by an original boot block
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4731020B2 (ja) * 2001-01-24 2011-07-20 富士通セミコンダクター株式会社 半導体記憶装置、セクタアドレス変換回路、アドレス変換方法及び半導体記憶装置の使用方法
EP1355267B1 (en) * 2001-01-26 2011-03-09 Sony Corporation Ic card and ic card adaptor
KR100921851B1 (ko) * 2001-06-28 2009-10-13 소니 가부시끼 가이샤 전자 장치, 정보 처리 장치, 어댑터 장치 및 정보 교환시스템
CN1122281C (zh) * 2001-06-30 2003-09-24 深圳市朗科科技有限公司 一种多功能半导体存储装置
TW539946B (en) * 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
TW516000B (en) * 2001-09-12 2003-01-01 Winbond Electronics Corp Method for security protection of digital processing device and apparatus thereof
US20030109252A1 (en) * 2001-12-10 2003-06-12 Koninklijke Philips Electronics N.V. System and method of codec employment in a cellular telephone
US7562208B1 (en) * 2002-02-07 2009-07-14 Network Appliance, Inc. Method and system to quarantine system software and configuration
EP1372068A3 (en) * 2002-06-11 2006-02-08 Seiko Epson Corporation System, method and program for rewriting a flash memory
CN1300707C (zh) * 2002-07-23 2007-02-14 华为技术有限公司 外部sdram读写处理方法
DE10319778A1 (de) * 2002-12-30 2004-07-15 Databay Ag Tragbare Speicherkarte mit einer Schnittstelle, System aus Datenverarbeitungsgerät und entsprechender Speicherkarte sowie Verfahren zum Betrieb eines derartigen Systems
TW200428284A (en) * 2003-06-03 2004-12-16 Hon Hai Prec Ind Co Ltd System and method for bootstrap with backup boot-code in single flash ROM
JP2005190288A (ja) * 2003-12-26 2005-07-14 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US7197634B2 (en) * 2004-01-16 2007-03-27 Dell Products L.P. System and method for updating device firmware
JP4534498B2 (ja) * 2004-01-28 2010-09-01 ソニー株式会社 半導体装置およびその起動処理方法
JP2005275907A (ja) 2004-03-25 2005-10-06 Toshiba Corp 電子機器および同機器の記憶媒体ユニット制御方法
EP1607865B1 (en) * 2004-06-14 2013-08-14 Micron Technology, Inc. Data control unit capable of correcting boot errors, and corresponding method
KR100684876B1 (ko) * 2005-01-03 2007-02-20 삼성전자주식회사 독출 시간을 단축시킬 수 있는 플래시 메모리 장치 및 방법
KR100698655B1 (ko) 2005-01-04 2007-03-23 주식회사 팬택앤큐리텔 이동통신 단말기의 파일 업데이트 시스템과, efs 영역헤더 손실로 인한 치명적인 에러를 방지하는 이동통신단말기의 부팅 관리 시스템과, 이동통신 단말기의 파일업데이트 방법 및 efs 영역 헤더 손실로 인한 치명적인에러를 방지하는 이동통신 단말기의 부팅 방법
JP4245585B2 (ja) 2005-06-13 2009-03-25 Tdk株式会社 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
TWI267861B (en) * 2005-09-06 2006-12-01 Alcor Micro Corp Method and device for loading configuration values of nonvolatile memory
CN1937083B (zh) * 2005-09-23 2010-05-05 安国国际科技股份有限公司 非挥发性存储器设定值加载方法与其存储器装置
JP4999325B2 (ja) * 2005-12-21 2012-08-15 ルネサスエレクトロニクス株式会社 フラッシュメモリ
US7831854B2 (en) * 2006-03-21 2010-11-09 Mediatek, Inc. Embedded system for compensating setup time violation and method thereof
US20080040544A1 (en) * 2006-08-08 2008-02-14 Jason Caulkins Computer System For Reading And Writing Data
US8086791B2 (en) * 2006-08-08 2011-12-27 Dataram, Inc. Solid state memory device with PCI controller
JP4791286B2 (ja) * 2006-08-09 2011-10-12 富士通株式会社 ディスク装置および電子装置
JP4883570B2 (ja) * 2006-09-27 2012-02-22 ルネサスエレクトロニクス株式会社 半導体記憶装置、不揮発性半導体記憶装置、及びそれらの動作方法
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US8351290B1 (en) 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
US8151101B2 (en) * 2008-11-06 2012-04-03 Lenovo (Singapore) Pte. Ltd. Method, apparatus, and system for quiescing a boot environment
CN101710253B (zh) * 2009-11-25 2012-06-13 安凯(广州)微电子技术有限公司 嵌入式***的深度休眠方法
JP5707695B2 (ja) * 2009-12-08 2015-04-30 沖電気工業株式会社 フラッシュディスク装置
JP5728982B2 (ja) * 2010-02-26 2015-06-03 株式会社Jvcケンウッド 処理装置および書込方法
TWI449414B (zh) 2010-12-29 2014-08-11 Altek Corp 影像擷取裝置及其開機方法
CN108139917A (zh) * 2015-08-20 2018-06-08 美光科技公司 从nand媒体快速引导的固态存储装置
US11288181B2 (en) * 2019-03-07 2022-03-29 Silicon Motion, Inc. Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2776929B2 (ja) 1989-03-29 1998-07-16 株式会社日立製作所 カードデータ処理システム及びカードデータの処理方法
IT1254937B (it) * 1991-05-06 1995-10-11 Aggiornamento dinamico di memoria non volatile in un sistema informatico
US5410703A (en) 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
EP0596198B1 (en) 1992-07-10 2000-03-29 Sony Corporation Flash eprom with erase verification and address scrambling architecture
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5522076A (en) * 1993-05-13 1996-05-28 Kabushiki Kaisha Toshiba Computer system having BIOS (basic input/output system)-ROM (Read Only Memory) writing function
JPH0764795A (ja) * 1993-08-30 1995-03-10 Toshiba Corp コンピュータシステム
JP3011035B2 (ja) * 1994-12-08 2000-02-21 株式会社日立製作所 計算機システム
GB2295908A (en) 1994-12-09 1996-06-12 Plessey Telecomm Updating EPROMs
US5568641A (en) 1995-01-18 1996-10-22 Hewlett-Packard Company Powerfail durable flash EEPROM upgrade
DE19501707C1 (de) * 1995-01-20 1996-06-05 Texas Instruments Deutschland Elektrisches Bauelement und Verfahren zum Abgleichen der inneren Laufzeit eines solchen elektrischen Bauelements
JP3583829B2 (ja) 1995-04-13 2004-11-04 株式会社日立製作所 外部記憶サブシステムの制御方法および制御装置
JPH08328845A (ja) * 1995-06-02 1996-12-13 Hioki Ee Corp Romの制御プログラム書替え方法
KR100281869B1 (ko) * 1995-07-28 2001-02-15 윤종용 보안 기능을 갖는 개인용 컴퓨터, 그의 보안 방법 및 그 보안 장치의 설치 및 제거방법
US5701492A (en) * 1996-03-29 1997-12-23 Canon Kabushiki Kaisha Fail-safe flashing of EPROM
US5822582A (en) * 1996-07-19 1998-10-13 Compaq Computer Corporation Boot drive selection and hibernation file detection
US6282675B1 (en) * 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming
US6560701B1 (en) * 1997-02-10 2003-05-06 International Business Machines Corporation Alternate boot record
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
JP3884839B2 (ja) * 1997-10-17 2007-02-21 株式会社ルネサステクノロジ 半導体記憶装置
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
US6205548B1 (en) * 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory

Also Published As

Publication number Publication date
CN1220424A (zh) 1999-06-23
EP0910020B1 (en) 2002-11-20
US6330634B1 (en) 2001-12-11
CN1229724C (zh) 2005-11-30
AU8713898A (en) 1999-04-22
DE69809527D1 (de) 2003-01-02
KR100642529B1 (ko) 2008-01-30
MY121756A (en) 2006-02-28
JPH11110141A (ja) 1999-04-23
US6981136B2 (en) 2005-12-27
AU753121B2 (en) 2002-10-10
SG71848A1 (en) 2000-04-18
US20040093487A1 (en) 2004-05-13
DE69809527T2 (de) 2003-10-02
KR19990030334A (ko) 1999-04-26
EP0910020A1 (en) 1999-04-21

Similar Documents

Publication Publication Date Title
JP2914360B2 (ja) 外部記憶装置及びデータ処理方法
JP3233079B2 (ja) データ処理システム及びデータ処理方法
JP4668416B2 (ja) ブート・ブロックへの書き込みアクセスを可能にする時のブート・ブロック・コードの保護
JP3364356B2 (ja) メモリ書替え装置
JP3912355B2 (ja) データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
RU2146399C1 (ru) Способ записи данных в энергонезависимое запоминающее устройство, способ использования устройства на интегральных схемах, устройство на интегральных схемах
JP3072722B2 (ja) フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
US7313682B2 (en) Method and system for updating boot memory that stores a fail-safe reset code and is configured to store boot code and boot updater code
KR100527610B1 (ko) 저장장치,데이터처리시스템및데이터기록및판독방법
JP3472008B2 (ja) フラッシュメモリ管理方法
JP3070539B2 (ja) 外部記憶装置、データ処理装置及びデータ処理方法
US7257030B2 (en) Operating a storage component
JP2910745B2 (ja) 記憶装置及びデータ処理方法
JP3620478B2 (ja) 記憶装置、この記憶装置を用いたデータ処理システム及びデータ読み出し方法
JP3640154B2 (ja) 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム
JP3319361B2 (ja) 記憶装置、データ処理装置及びデータ処理方法
JP2001043143A (ja) 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JP2004152331A (ja) 記憶装置
JPH07168769A (ja) 不揮発性メモリに対するデータ更新方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990316

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080416

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130416

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130416

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140416

Year of fee payment: 15

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term