説明

メモリシステム

【課題】ユーザの誤操作による使用不能を回避することが可能なメモリシステムを提供する。
【解決手段】メモリシステムは、不揮発性半導体記憶装置14と、コントローラ13を含む。不揮発性半導体記憶装置14は、FAT(File Allocation Table)を含むファイルシステム領域、複数のクラスタを含むデータ追記領域、及び前記クラスタの書き換え禁止領域を示すポインタを記憶する管理情報領域を有する。コントローラは、前記不揮発性半導体記憶装置の前記ファイルシステム領域から前記FATを読出し、FATに記録されたクラスタの使用状況に基づき、前記ポインタを設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、例えば追記型FAT(File Allocation table)に対応するライトワンスカードとしてのメモリシステムに関する。
【背景技術】
【0002】
書き込まれたデータの上書きを防止して、新たなデータを追記することが可能なライトワンスカードは、ユーザの誤操作によって、カードが使用できなくなるという問題がある。
【0003】
「追記」とは、以前に書き込んだデータの論理セクタアドレスより後ろのセクタアドレスにのみデータ書き込みを行う方式であり、「上書き」とは以前に書き込んだデータの論理セクタアドレスに関係なく任意のセクタアドレスに書き込む書き込み方式である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−171257号公報
【特許文献2】特開2011−138221号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本実施形態は、ユーザの誤操作による使用不能を回避することが可能なメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【0006】
本実施形態のメモリシステムによれば、不揮発性半導体記憶装置と、コントローラを含んでいる。不揮発性半導体記憶装置は、FAT(File Allocation Table)を含むファイルシステム領域、複数のクラスタを含むデータ追記領域、及び前記クラスタの書き換え禁止領域を示すポインタを記憶する管理情報領域を有する。コントローラは、前記不揮発性半導体記憶装置の前記ファイルシステム領域から前記FATを読出し、FATに記録されたクラスタの使用状況に基づき、前記ポインタを設定する。
【図面の簡単な説明】
【0007】
【図1】実施形態に適用されるホスト装置及びメモリシステムを概略的に示す構成図。
【図2】図2(a)(b)は、NANDフラッシュメモリと追記管理ポインタの関係を示す図。
【図3】ホスト装置の書き込み動作を示すフローチャート。
【図4】メモリコントローラの書き込み動作を示すフローチャート。
【図5】ファイル書き込み前におけるFATの例を示す図。
【図6】ファイル書き込み後におけるFATの例を示す図。
【図7】メモリカードの初期化時の動作を示すフローチャート。
【図8】メモリカードの初期化時の動作を示すものであり、FATの例を示す図。
【発明を実施するための形態】
【0008】
例えばデータの改ざんを防止することが可能なライトワンスカードは、書き込み済みのメモリ領域に対するデータの上書きが禁止され、書き込み済みのメモリ領域以降の領域に新たなデータを追記することが可能とされている。このライトワンスカードは、ポインタにより追記可能な領域が管理されている。
【0009】
また、ライトワンスカードは、フォーマット動作を行うことが禁止されている。しかし、ユーザの誤操作によりフォーマット動作をしてしまう場合が考えられる。
【0010】
一方で、フォーマットプログラムの中には、最終アドレスに書き込みを行うものがあり、そのフォーマットプログラムでフォーマットを行うと、カードコントローラは、ポインタをカードの最終アドレスに設定してしまう。このため、メモリの全領域が書き込み禁止状態となり、以後、書き込みが行えないという問題がある。
【0011】
本実施形態は、書き込み済みのメモリ領域に対するデータの上書きを禁止するとともに、ユーザの誤操作により、フォーマット動作が実行された場合においても、カードを継続して使用可能としている。
【0012】
以下、実施の形態について、図面を参照して説明する。
【0013】
図1は、本実施形態が適用されるホスト装置及びメモリシステムの主要部を概略的に示している。
【0014】
ホスト装置11は、図示せぬSDインターフェースを有し、これに接続されるメモリシステムとしてのメモリカード12をアクセスするためのハードウェア及びソフトウェアを備えている。ホスト装置11は、例えばデジタルカメラであり、アプリケーション、オペレーティングシステム等のソフトウェアを備えている。
【0015】
ホスト装置11は、メモリシステム、例えばSD(Secure Digital)メモリカード(以下、単にメモリカードと称す)12へデータを書き込む場合、書き込みコマンドを発行すると共に、書き込むべきアドレス、及びデータをメモリカード12に転送する。また、ホスト装置11は、メモリカード12からデータを読み出す場合、読出しコマンドを発行するとともに、読み出すべきアドレスをメモリカード12に転送する。
【0016】
メモリカード12は、カードコントローラ13とNANDフラッシュメモリ14を含んでいる。
【0017】
カードコントローラ13は、SDインターフェース(I/F)13a、MPU(Micro Processing Unit)13b、CPRM(Content Protection Recordable Media)処理回路13c、ROM(Read Only Memory)13d、RAM(Random Access Memory)13e、NANDインターフェース(I/F)13fを有している。
【0018】
SDインターフェース13aは、ホスト装置11とカードコントローラ13との間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアを有している。メモリカード12(コントローラ13)は、SDインターフェース13aを介してホスト装置11と通信を行う。SDインターフェース13aは、ホスト装置11のSDインターフェースと同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備えている。
【0019】
ROM13dは、MPU13bにより制御されるファームウェア(制御プログラム)などを格納する。RAM13eは、MPU13bの作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【0020】
MPU13bは、メモリカード12全体の動作を司る。MPU13bは、例えばメモリカード12がホスト装置11から電源供給を受けた状態、もしくは、初期化コマンドを受けた状態において、ROM13d内に格納されている制御プログラムをRAM13e上に読み出して所定の処理を実行する。具体的には、MPU13bは、ホスト装置11から書き込みコマンド、読み出しコマンドを受けてNANDフラッシュメモリ14に対して所定の処理を実行するとともに、後述する追記管理ポインタ15を制御する。また、MPU13bは、NANDフラッシュメモリ14によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、ホスト装置11により割り当てられたどの論理アドレスのデータを保存しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することをいう。
【0021】
CPRM処理回路13cは、セキュアデータの処理を実行する。
【0022】
NANDインターフェース13fは、カードコントローラ13とNANDフラッシュメモリ14とのインターフェース処理を行う。
【0023】
NANDフラッシュメモリ14は、例えば1つのメモリセルに複数ビットのデータを記憶することが可能な多値メモリにより構成されている。
【0024】
図2(a)(b)は、論理アドレスのメモリ空間と追記管理ポインタ15の関係を示している。図2(b)は、図2(a)の一部を拡大して示すものである。上述の通り、MPU13bは、メモリカード12がホスト機器11から受信する論理アドレスとNANDフラッシュメモリ14の物理アドレスとの対応関係を管理しており、図2(a)(b)の論理アドレスのメモリ空間は、NANDフラッシュメモリ14の物理アドレスのメモリ空間に対応付けられている。
【0025】
図2(a)(b)に示すように、NANDフラッシュメモリ14は、ファイルシステム領域14aと、追記領域14bと、管理情報領域14cにより構成されている。ファイルシステム領域14aは、例えばパーティションテーブルや、FAT等を含んでおり、NANDフラッシュメモリ14の論理アドレス空間を管理する。管理情報領域14cは、NANDフラッシュメモリ14の論理アドレス空間とは別の領域に設けられ、論理アドレス空間のデータやその他のデータを管理するための管理情報を格納する。この管理情報領域14cは、追記管理ポインタ15を含み、この追記管理ポインタ15により、追記領域14bにおける追記可能な領域のアドレスが管理される。このアドレスは、後述するように、例えば最後に書き込まれたクラスタのアドレスである。
【0026】
追記領域14bは、複数のクラスタにより構成され、ユーザデータが追記可能とされている。クラスタアドレス“0”〜“5”…は、ファイルシステム領域14aから離れるほど大きく設定されている。追記領域14bは、前述したように、追記管理ポインタ15により管理され、追記管理ポインタ15は、例えばクラスタアドレスを保持する。しかし、これに限らず、追記管理ポインタ15は、クラスタ内の先頭アドレスを保持してもよい。
【0027】
<追記管理ポインタ15>
次に、MPU13bで実行される追記管理ポインタ15の制御動作について説明する。
【0028】
初期状態において、追記管理ポインタ15は、図2(a)(b)に示すように、追記領域14bの先頭に位置するクラスタ0のアドレスを保持している。
【0029】
ここで、ホスト装置11が例えばデジタルカメラであり、写真データをメモリカード12に書き込む場合を仮定する。例えばNANDフラッシュメモリ14のクラスタサイズが16KByteの場合で、写真ファイルが33KByteであるとする。この場合、データの書き込みに必要なクラスタ数は、次式のようになる。
【0030】
33KByte/16KByte=2.0625
このため、必要なクラスタ数は3クラスタとなる。
【0031】
ホスト装置11はクラスタの小さいアドレスから順に使用するのが一般的である。このため、写真ファイルをクラスタ2、3、4に書き込む。尚、クラスタ0、1は、フォーマット時にシステムにより予約され、例えばルートディレクトリが記録される。
【0032】
図3は、ホスト装置11、例えば一般的なデジタルカメラの書き込み動作を示している。
【0033】
SDカードの規格において、書き込み時、ホスト装置11は、スタートアドレスを設定したコマンドを出力する。すなわち、この場合、ホスト装置11からクラスタ2の先頭アドレスを指定して書き込みコマンドが発行される(ST11)。
【0034】
写真ファイルが33KByteで、1セクタが512byteである場合、セクタ数は、次式のように、66となる。
【0035】
33792byte/512byte=66
ホスト装置11は、クラスタ2の先頭アドレスを指定した書き込みコマンドを発行した後、66セクタのデータをメモリカード12に順次出力する(ST12)。
【0036】
書き込むべき全てのデータがホスト装置11からメモリカード12に転送されると(ST13)、ホスト装置11は、書き込み終了コマンドを発行する(ST14)。
【0037】
この後、ホスト装置11は、FATと、ディレクトリの内容を書き換え、NANDフラッシュメモリ14のファイルシステム領域14aに登録する(ST15)。
【0038】
以上の動作により、33KByteの写真ファイルは、メモリカード12上に記録され、この記録された写真ファイルは、ホスト装置11から読み出すことができる。
【0039】
図4は、上記データ書き込み時におけるメモリコントローラ13の動作を示している。
【0040】
ホスト装置11から書き込みコマンドが供給されると、書き込み開始アドレスを含んだ書き込みコマンドが認識される(ST21)。この後、書き込み開始アドレスが追記管理ポインタ15に保持されているアドレスより大きいかどうかが判定される(ST22)。初期状態において、追記管理ポインタ15のクラスタアドレスは“0”に設定されており、ホスト装置11から供給された書き込み開始(先頭)アドレスは、上記の場合、“2”であるため、追記書き込み可能であると判断される。
【0041】
尚、書き込み開始アドレスが追記管理ポインタ15に記録されたクラスタアドレスより小さい場合、書き込み済みのクラスタに上書きすることとなるため、ホスト装置11にエラーが報知され、処理が終了される(ST23)。
【0042】
この後、ホスト装置11からの書き込み終了コマンドを受信したかどうかが判断され(ST24)、書き込み終了コマンドを受けていない場合、ホスト装置11から供給されるセクタ単位のデータが受信され、NANDフラッシュメモリ14に書き込まれる(ST25)。すなわち、先ず。書き込み開始アドレスにより指定されたクラスタ2にデータが書き込まれる。
【0043】
この後、1つのクラスタ内にデータを書ききったかどうかが判断され(ST26)、クラスタ内にまだ空き領域がある場合、制御がステップST24に移行され、上記動作が繰り返される。
【0044】
また、1つのクラスタを書ききった場合、すなわち1つのクラスタに空き領域が無くなった場合、追記管理ポインタ15に書ききったクラスタアドレスが設定される。すなわち、この場合、追記管理ポインタ15に、クラスタアドレス2が設定される。
【0045】
次いで、制御がステップST24に移行され、書き込み終了コマンドが受信されるまで、上記動作が繰り返される。
【0046】
上記書き込み処理において、カードコントローラ13は、追記管理ポインタ15を以下のように設定する。前述したように、追記管理ポインタ15の内容は、例えばNANDフラッシュメモリ14からRAM13eに読み出される。MPU13bは、先ず、クラスタ2にデータを書き込み、クラスタ2に空き領域が無くなった時、クラスタ2(クラスタアドレス2)を追記管理ポインタ15に記録する。これ以降、クラスタ2より以前に書き込まれたクラスタの上書きが回避される。
【0047】
さらに、クラスタ3にデータが書き込まれ、クラスタ3の空き領域が無くなった時、クラスタアドレス3が追記管理ポインタ15に記録され、これ以降クラスタ3より以前に書き込まれたクラスタの上書きが回避される。次いで、クラスタ4にデータが書き込まれる。
【0048】
一方、クラスタ4にデータが書き込まれた後、ステップST24において、書き込み終了コマンドが受信されたと判断された場合、終了処理が実行される(ST28)。終了処理において、RAM13e上に記録された追記管理ポインタ15の内容がNANDフラッシュメモリ14の管理領域14c内の追記管理ポインタ15に退避される。その他、メモリカード12の電源がオフとされることに備えるための処理が実行される。
【0049】
上記のように、追記管理ポインタ15をクラスタ単位で管理することにより、追記管理処理を簡略化することができる。
【0050】
また、メモリカード12において、データの書き込みが終了した場合、ホスト装置11は、上述したように、FAT、及びディレクトリの内容を更新する。
【0051】
FATファイルシステムでは、例えばこの例における写真ファイルのデータを含むクラスタをファイルシステム上のディレクトリとFATに登録する必要があり、FATのエントリが更新される。
【0052】
追記管理ポインタ15は、追記領域のみを管理し、また、追記管理ポインタ15は、管理情報領域14c内にある。このため、FATの書き込みにおいて、追記管理ポインタ15は関係しない。したがって、本実施形態において、FATやディレクトリの書き込み処理についての具体的な動作は、省略し、FATのデータの変化についてのみ説明する。
【0053】
クラスタ2、3、4へデータを書き込み、そのデータを1つのファイルとするためには、クラスタのつながり(チェーン)をFATに登録する必要がある。
【0054】
図5は、ファイル書き込み前におけるFATを示し、図6は、ファイル書き込み後におけるFATを示している。尚、図5、図6において、クラスタアドレスをクラスタNoで示している。
【0055】
図5に示すように、ファイル書き込み前は、クラスタNo2、3、4に対応するFATエントリは、クラスタが未使用状態であることを示す“0000”となっている(これは、FAT16の場合の表示である)。また、FATエントリの値は、16進数により示されている。
【0056】
ファイルに対してクラスタを割り当てる場合、FATエントリの値が“0000”から別の値に変更される。
【0057】
すなわち、図6に示すように、クラスタNo2、3、4に、ファイルが書き込まれた後、クラスタNo2に対応するFATエントリの値が“0003”に設定され、クラスタNo3に対応するFATエントリの値が“0004”に設定され、クラスタNo4に対応するFATエントリの値が“FFFF”に設定される。ここで、“FFFF”は、ファイルの末尾のクラスタを意味している。
【0058】
このように、FATの内容を更新することにより、1つのファイルがクラスタ2、3、4により構成されることを表現できる。
【0059】
また、図示せぬディレクトリには、ファイル名やサイズ等が記録され、ファイルがクラスタ2から始まることが記録される。
【0060】
次に、図7、図8を参照してMPU13bによるメモリカード12の初期化時の動作について説明する。
【0061】
メモリカード12がホスト装置11に接続されると、ホスト装置11から初期化コマンドが発行される。カードコントローラ13は、ホスト装置11から供給された初期化コマンドを受信する(ST31)。この初期化コマンドに応じて、ハードウェアの初期設定等、メモリカード12を動作させるために必要な初期化処理が実行される(ST32)。
【0062】
次いで、NANDフラッシュメモリ14からFAT及び追記管理ポインタ15の内容が読み出され、カードコントローラ13のRAM13eに転送される(ST33)。
【0063】
この後、MPU13bは、RAM13e内のFATを参照して、保護すべきクラスタと、初期化動作後に追記が可能なクラスタとの境界を検索する。すなわち、MPU13bは、図8に示すように、FATを最終クラスタからクラスタNo0の方向に値が“0000”以外のエントリを検索する(ST34、ST35)。
【0064】
この検索の結果、値が“0000”以外のエントリ、例えば値が“FFFF”のエントリが検出された場合、MPU13bは、追記管理ポインタ15に、検出したクラスタアドレスを設定する(ST36)。すなわち、図8に示す例の場合、値が“FFFF”のエントリに対応するクラスタNo4(クラスタアドレス4)が追記管理ポインタ15に記録され、初期化処理が終了される。
【0065】
このようにして、追記管理ポインタ15に最後に書き込まれたクラスタのアドレスが記録された状態において、初期化処理が終了される。
【0066】
また、上記検索動作において、値が“0000”以外のエントリが検出されなかった場合、上記RAM13eに読み出された追記管理ポインタ15の内容が、再度追記管理ポインタ15に書き込まれ(ST37)、初期化処理が終了される。
【0067】
上記のように、初期化処理が終了された場合、後の書き込み処理において、追記管理ポインタ15を用いて、上述した書き込み動作が実行される。
【0068】
<フォーマット後の動作>
次に、ユーザが誤ってフォーマットを実行した場合の処理について説明する。
【0069】
フォーマットを実行すると、フォーマットプログラム(フォーマッタ)によっては最終クラスタへ書き込みが行われる。この書き込み動作に応じて、追記管理ポインタ15には、最終クラスタアドレスが記録されることとなる。したがって、この時点において、追記領域には、一切の書き込み処理を行えないことになり、追記領域への書き込み命令は全て実行されず、エラーとなる。
【0070】
しかし、フォーマッタは、メモリカード上にファイルを作成するものではなく、ファイルシステムを初期状態にするものである。このため、フォーマッタがメモリの最終クラスタに書き込みを行っても、FAT上では最終クラスタを使用状態にはしない。したがって、FATの内容は、更新されないため、メモリカードの電源を再投入し、上記初期化動作を実行することにより、追記管理ポインタ15を保護すべきクラスタアドレスまで再設定することが可能である。
【0071】
すなわち、本実施形態の場合、フォーマットを実行後、メモリカード12の電源を切り、再度電源を投入すると、図7に示す初期化動作が実行される。この初期化動作において、ホストから初期化コマンド発行されると、メモリカード12は、上記ステップST31、32、33の動作を実行し、RAM13eに、NANDフラッシュメモリ14からFATが読み出される。
【0072】
この後、MPU13bは、FATを参照し、値が“0000”以外のエントリが検索される(ST34、35)。フォーマットが実行された場合においても、FATにおいて、最終クラスタに対応するエントリの値は“0000”のままである。このため、上記検索動作を実行することにより、値が“0000”以外のエントリが検出されることにより、追記管理ポインタ15にフォーマット以前に書き込まれた最後のクラスタのアドレスが再設定される(ST36)。すなわち、図8に示す例の場合、最終クラスタから値が“0000”以外のエントリが検索され、値が“FFFF”のエントリが検出され、このエントリに対応するクラスタアドレス4が追記管理ポインタ15に再設定される。したがって、クラスタアドレス5から追記が可能となる。
【0073】
上記実施形態によれば、初期化コマンドに応じて、FATの最終クラスタから値が“0000”以外のエントリを検索し、値が“0000”以外のエントリが検出された場合、これに対応するクラスタアドレスを追記管理ポインタ15に設定している。このため、ユーザの誤操作により、フォーマット動作が実行された場合においても、電源を再投入し、初期化動作を実行することにより、フォーマット以前に書き込まれた最後のクラスタのアドレスを検出することができ、追記が可能となる。したがって、ユーザの誤操作によるフォーマット操作によって、カードに書き込みが行えなくなることを防ぐ。
【0074】
尚、上記実施形態は、追記管理ポインタ15の再設定は、初期化コマンドに応じた初期化動作により行った。しかし、これに限定されるものではなく、例えば書き込みコマンドの発行前に、FATを最終クラスタから値が“0000”以外のエントリを検索し、追記管理ポインタ15を再設定するように構成することも可能である。
【0075】
この構成によっても上記実施形態と同様の効果を得ることが可能である。
【0076】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0077】
11…ホスト装置、12…メモリカード、13…カードコントローラ、14…NANDフラッシュメモリ、14a…ファイルシステム領域、14b…追記領域、14c…管理情報領域、15…追記管理ポインタ。

【特許請求の範囲】
【請求項1】
FAT(File Allocation Table)を含むファイルシステム領域、複数のクラスタを含むデータ追記領域、及び前記クラスタの書き換え禁止領域を示すポインタを記憶する管理情報領域を有する不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置の前記ファイルシステム領域から前記FATを読出し、FATに記録されたクラスタの使用状況に基づき、前記ポインタを設定するコントローラと
を具備することを特徴とするメモリシステム。
【請求項2】
前記コントローラは、前記メモリシステムの初期化動作において、前記不揮発性半導体記憶装置の前記ファイルシステム領域からFATを読出し、FATに記録されたクラスタの使用状況に基づき、前記ポインタを設定する請求項1記載のメモリシステム。
【請求項3】
前記コントローラは、前記FATに記録されたクラスタの使用状況を確認するとき、前記FAT上でアドレスが上位のクラスタから下位のクラスタに向けて順次検索し、データが書き込まれたクラスタが検出された場合、前記検出されたクラスタのアドレスを前記ポインタに設定し、前記データ追記領域のアドレスが最下位のクラスタから前記検出されたクラスタまでの領域を上書き禁止領域に設定することを特徴とする請求項2記載のメモリシステム。
【請求項4】
前記コントローラは、前記複数のクラスタのうち、1つのクラスタが満杯となるまでデータを書き込んだ場合、前記ポインタに前記データ書き込んだクラスタのアドレスを記録することを特徴とする請求項3に記載のメモリシステム。
【請求項5】
前記メモリシステムに電源が投入された時点において、前記不揮発性半導体記憶装置の前記ファイルシステム領域からFATを読出し、FATに記録されたクラスタの使用状況に基づき、前記ポインタを設定する請求項1記載のメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate