説明

半導体装置及びメモリシステム

【課題】データの保全性に優れた半導体装置及びメモリシステムを提供すること。
【解決手段】半導体装置1は、データを保持可能な不揮発性の半導体記憶装置11と、ホスト機器2から受信した書き込みデータを前記半導体記憶装置11へ書き込み制御するメモリコントローラ10とを具備し、前記メモリコントローラ10は、前記半導体記憶装置11に書き込むデータに対して、前記データの種類及びアドレスに応じた書き込み制限条件をそれぞれ有する複数のアドレス領域を含む論理アドレス空間を有することにより、特定のファイルフォーマットにおいて、ファイルの追加は可能であるが、書き込み済みのファイルへのデータの上書きは禁止する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、半導体装置及びメモリシステムに関する。例えば、メモリカードとホスト機器との間の通信方法に関する。
【背景技術】
【0002】
近年、写真などのデータ記憶デバイスとして、SDTMメモリカードが広く用いられている。そして、公式資料用の写真等、一度作成したファイルの保全性が重要な用途にも、SDメモリカードが使用できることが望まれている。
【0003】
このような用途では、SDメモリカードに下記の特性を持たせることが必要である。すなわち、
・一度SDカードに記録した写真データを、後で削除、変更、改竄出来ない。
・通常のデジタルカメラで撮影した写真データを記録出来る。
・一般的なPC及びUSBリーダ/ライタで写真データを読み出せる。
【0004】
しかしながら、SDカードにおけるデータの取り扱いには種々の提案が為されているものの(例えば特許文献1参照)、上記全ての特性を備えたSDメモリカードは存在しなかった。従って、ファイルの保全性が重要な用途には、SDメモリカードは使用し難いという問題があった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−040264号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
この発明は、データの保全性に優れた半導体装置及びメモリシステムを提供する。
【課題を解決するための手段】
【0007】
この発明の一態様に係る半導体装置は、データを保持可能な不揮発性の半導体記憶装置と、ホスト機器から受信した書き込みデータを前記半導体記憶装置へ書き込み制御するメモリコントローラとを具備し、前記メモリコントローラは、前記半導体記憶装置に書き込むデータに対して、前記データの種類及びアドレスに応じた書き込み制限条件をそれぞれ有する複数のアドレス領域を含む論理アドレス空間を有することにより、特定のファイルフォーマットにおいて、ファイルの追加は可能であるが、書き込み済みのファイルへのデータの上書きは禁止する。
【0008】
またこの発明の一態様に係るメモリシステムは、上記半導体装置と、前記ホスト機器とを具備し、前記ホスト機器は、前記半導体装置をプリフォーマットすることにより、前記半導体記憶装置の前記論理アドレス空間に前記書き込み制限条件を有する複数の前記アドレス領域を設定する。
【発明の効果】
【0009】
本発明によれば、データの保全性に優れた半導体装置及びメモリシステムを提供出来る。
【図面の簡単な説明】
【0010】
【図1】この発明の第1実施形態に係るメモリシステムのブロック図。
【図2】第1実施形態に係るディレクトリ構造の概念図。
【図3】第1実施形態に係るメモリ空間の概念図。
【図4】第1実施形態に係るFATの概念図。
【図5】第1実施形態に係るディレクトリエントリの概念図。
【図6】第1実施形態に係るメモリカードの動作を示すフローチャート。
【図7】第1実施形態に係るメモリカードの動作を示すダイアグラム。
【図8】第1実施形態に係るメモリカードの動作を示すフローチャート。
【図9】第1実施形態に係るメモリ空間の概念図。
【図10】第1実施形態に係るディレクトリ構造の概念図。
【図11】第1実施形態に係るメモリ空間の概念図。
【図12】第1実施形態に係るディレクトリ構造の概念図。
【図13】第1実施形態に係るメモリ空間の概念図。
【図14】この発明の第2実施形態に係るメモリカードの動作を示すフローチャート。
【図15】第2実施形態に係るメモリ空間の概念図。
【図16】第2実施形態に係るメモリ空間の概念図。
【図17】この発明の第3実施形態に係るメモリカードの動作を示すフローチャート。
【図18】第3実施形態に係るメモリ空間の概念図。
【図19】第3実施形態に係るメモリ空間の概念図。
【発明を実施するための形態】
【0011】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0012】
[第1の実施形態]
この発明の第1の実施形態に係る半導体装置及びメモリシステムにつき、SDメモリカード(以下、単にメモリカードと呼ぶ)及びそれを含むメモリシステムを例に挙げて説明する。
【0013】
<メモリカードの構成について>
まず、メモリカードの全体構成について、図1を用いて説明する。図1は、本実施形態に係るメモリカードを備えたメモリシステムのブロック図である。
【0014】
図示するようにメモリシステムは、メモリカード1とホスト機器2(例えばパーソナルコンピュータやデジタルカメラ等)とを備えている。メモリカード1は、バスインターフェース3を介してホスト機器2と通信可能とされている。そしてメモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
【0015】
メモリカード1は、大まかにはメモリコントローラ10、NAND型フラッシュメモリ11、及びデータバス12を備えている。メモリコントローラ10及びNAND型フラッシュメモリ11はそれぞれ異なる基板上に形成されても良いし、または同一基板上に形成されても良い。そしてメモリコントローラ10とNAND型フラッシュメモリ11は、データバス12によって互いに通信可能に接続されている。
【0016】
<メモリコントローラ10の構成について>
次に、上記メモリコントローラ10の構成の詳細について、引き続き図1を参照して説明する。図示するようにメモリコントローラ10は、SDカードインターフェース20、MPU21、CPRM(Copy Protection for Prerecorded Media)用回路22、ROM23、RAM24、及びNANDインターフェース25を備えている。これらは同一の半導体基板上に形成され、内部バス26によって通信可能に接続されている。
【0017】
SDカードインターフェース20は、バスインターフェース3(SDカードバス)によってホスト機器2に接続可能とされ、ホスト機器2との間の通信を司る。NANDインターフェース25は、データバス12によってNAND型フラッシュメモリ11と接続されており、NAND型フラッシュメモリ11との間の通信を司る。
【0018】
MPU21は、メモリカード1全体の動作を制御する。MPU21は、例えばメモリカード1が電源供給を受けたときに、ROM23に格納されているファームウェア(制御プログラム)をRAM24上に読み出して所定の処理を実行することにより、各種のテーブルをRAM24上に作成する。またMPU21は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、NAND型フラッシュメモリ11に対して所定の処理を実行したり、データ転送処理を制御したりする。
【0019】
ROM23は、MPU21により制御される制御プログラムなどを格納する。RAM24は、MPU21の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。
【0020】
CPRM回路22は、メモリカード1における著作権保護機能を司る。すなわち、NAND型フラッシュメモリ11内において秘匿されるべき情報に対してホスト機器2からアクセスが為された場合に、当該アクセスを許可するか否かを決定する。
【0021】
<NAND型フラッシュメモリ11の構成について>
次に、NAND型フラッシュメモリ11の構成について、引き続き図1を参照して説明する。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30、ロウデコーダ31、ページバッファ32、及びNANDインターフェース33を備えている。
【0022】
メモリセルアレイ30は、複数のメモリブロックBLKを含んでいる。メモリブロックBLKの各々は、データを保持可能なメモリセルの集合である。メモリセルの各々はマトリクス状に配置され、同一行にある例えば(4096×8)個のメモリセルは同一のワード線に接続されている。一例として、図1の構成では各ブロックBLKには64本のワード線が含まれる。同一のワード線に接続された複数のメモリセルに対しては、一括してデータが書き込まれ、また一括してデータが読み出される。この単位はページと呼ばれ、図1の例では1ページは4096バイトである。メモリセルの各々は、1ビット(2値モード)または2ビット(4値モード)のデータを保持出来る。データの書き込み及び読み出しは、4値モードの場合にもビット毎に行われる。従って各ブロックBLKは、2値モードにおいては64ページを含み、4値モードにおいてはその倍の128ページを含む。またデータの消去はメモリブロックBLK単位で行われる。
【0023】
NANDインターフェース33は、データバス12を介したメモリコントローラ10のNANDインターフェース25との間の通信を司る。そしてメモリコントローラ10から与えられたロウアドレスをロウデコーダ31へ転送し、書き込みデータをページバッファ32へ転送する。またページバッファ32から転送された読み出しデータをメモリコントローラ10へ送信する。
【0024】
ロウデコーダ31は、NANDインターフェース33から与えられるロウアドレスをデコードする。そしてデコード結果に従って、メモリセルアレイ30中におけるいずれかのメモリブロックBLKのロウ方向を選択する。すなわちいずれかのページを選択する。
【0025】
ページバッファ32は、メモリセルアレイ30へのデータ入出力を行い、データを一時的に保持する。ページバッファ32とメモリセルアレイ30との間のデータの入出力はページ単位で行われる。ページバッファ32は、データの書き込み時には、NANDインターフェース33から与えられる書き込みデータを一時的に保持し、これをメモリセルに書き込む。またデータの読み出し時には、読み出しデータを一時的に保持し、これをNANDインターフェース33に転送する。
【0026】
<メモリカード1のメモリ空間について>
次に、上記構成のメモリカード1におけるNAND型フラッシュメモリ11のメモリ空間について、図2に示すようなディレクトリ構造が形成されている場合を例に挙げて説明する。すなわち、ルートディレクトリに2つのサブディレクトリ“DCIM”、“MISC”が形成され、サブディレクトリ“MISC”内に“AUTPRINT.MRK”という名前のファイルが形成されている場合を仮定する。
【0027】
図3は、上記ディレクトリ構造を有するNAND型フラッシュメモリ11のメモリ空間を示すメモリマップである。メモリ空間は、大まかには管理領域40とユーザデータ領域41とに分けられる。
【0028】
管理領域40は、NAND型フラッシュメモリ11に記録されているファイル(データ)を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル(データ)を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、ファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。図3では一例としてFAT(File Allocation Table)ファイルシステムについて示している。以下では、数字の先頭に付加した“0x”は、それに続く数字が16進数表示であることを示す。
【0029】
管理領域40は、例えばブートセクタ、FAT1、FAT2、及びルートディレクトリエントリを含んでいる。ブートセクタは、例えば論理アドレス“0x00000”〜“0x123ff”の領域に格納され、ブート情報を記憶する。ブートセクタは読み出し専用領域である。FAT1及びFAT2は、それぞれ論理アドレス“0x12400”〜“0x2f1ff”及び“0x2f200”〜“0x4bfff”の領域に格納され、データがいずれのクラスタに記憶されているかを記憶する。FAT1及びFAT2は、制限付きで上書きが許可されており、このような領域を制限付き上書き許可FAT領域と呼ぶ。ルートディレクトリエントリは、例えば論理アドレス“0x4c000”〜“0x4ffff”の領域に格納され、ルートディレクトリの情報を記憶する。より具体的には、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、FAT1、FAT2に示されたどのクラスタがファイルの先頭クラスタであるかを記憶する。ルートディレクトリも制限付きで上書きが許可されており、このようなディレクトリエントリを制限付き上書き許可ディレクトリエントリ領域と呼ぶ。
【0030】
ユーザデータ領域41は管理領域40以外の領域であり、特にユーザによって書き込まれる正味のデータを格納する領域である。そしてユーザデータ領域41における論理アドレス“0x50000”〜“0x53fff”の領域とには“MISC”についてのサブディレクトリエントリが作成され、“0x54000”〜“0x57fff”の領域には“AUTPRINT.MRK”が書き込まれる。これらの2つの領域は任意に上書きが可能であり、このような領域を任意上書き許可領域と呼ぶ。“0x5c000”〜“0xffff”の領域には“DCIM”についてのサブディレクトリエントリが形成されており、これは制限付き上書き許可ディレクトリエントリである。その他の領域、すなわちアドレスが“0x60000”以降の領域は未使用の領域である。未使用の領域には“0xff”が書き込まれている。そして未使用の領域は上書き・消去を禁止され、追記のみが許可される。このような領域を追記領域と呼ぶ。
【0031】
<FATについて>
次に、上記FAT1及びFAT2について説明する。以下ではFAT1、FAT2をまとめてFATと呼ぶ。
【0032】
メモリ空間は、クラスタと呼ばれるある一定のサイズの空間の集合である。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データが書き込まれるクラスタは連続しない場合がある。すなわち、1つのデータが場所的に離れたクラスタに書き込まれる。この際に、データがどのクラスタに分割されて書き込まれたかを管理するための管理データが、FATに記憶される。
【0033】
図4は、FATおよびルートディレクトリエントリ内のファイルエントリの一例を示している。例えばルートディレクトリに3つのファイル“FILE1.JPG”、“FILE2.JPG”、及び“FILE3.JPG”が含まれており、それぞれの先頭クラスタが“0002”、“0005”、“0007”であったと仮定する。
【0034】
FATには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば“FILE1.JPG”の場合、先頭のクラスタ“0002”のデータに続くデータを格納するクラスタはクラスタ“0003”で、クラスタ“0003”のデータに続くデータを格納するクラスタはクラスタ“0004”であることが分かる。そしてクラスタ“0002”、“0003”、“0004”のデータを接続することにより、“FILE1.JPG”のファイルが復元される。ファイルデータの最後の部分を格納するクラスタには、“0xfff8”〜“0xffff”のいずれかが書き込まれている。また、未使用のクラスタについては“0x0000”が書き込まれている。
【0035】
<ルートディレクトリエントリについて>
次に、上記ルートディレクトリエントリについて説明する。図5はルートディレクトリエントリの構成を示す概念図であり、一例としてルートディレクトリにディレクトリ“DCIM”及び“MISC”が作成され、更にファイル“FILE1.JPG”が作成された場合について示している。
【0036】
図示するようにルートディレクトリエントリは、各々が32バイトの複数のエントリを備える。そして各エントリが、ルートディレクトリに含まれるファイルまたはディレクトリに関する情報を保持する。各エントリは、32バイトの先頭バイト位置から順に、ファイルまたはサブディレクトリの名前(DIR_Name、11バイト)、属性(DIR_Attr、1バイト)、予約(DIR_NTRes、1バイト)、作成時刻(DIR_CrtTimeTenth、1バイト)、作成時刻(DIR_CrtTime、2バイト)、作成日付(DIR_CrtDate、2バイト)、最終アクセス日付(DIR_LstAccDate、2バイト)、先頭クラスタの上位2バイト(DIR_FstClusHI)、書き込み時刻(DIR_WrtTime、2バイト)、書き込み日付(DIR_WrtDate、2バイト)、先頭クラスタの下位2バイト(DIR_FstClusLO)、及びファイルサイズ(DIR_FileSize、4バイト)を保持する。属性とは、読み取り専用か否か、ディレクトリであるか否か、システムファイルであるか否か、また隠しファイルであるか否か等を示す情報である。予約を示す1バイトのデータは全て“0x00”とされる。作成時刻(DIR_CrtTimeTenth)は、対応するファイルまたはディレクトリの作成時刻のうちのミリ秒の部分を示し、作成時刻(DIR_CrtTime)は時分を示す。また先頭クラスタ番号は、DIR_FstClusHIとDIR_FstClusLOの2つに分離されて、ルートディレクトリエントリに記録される。
【0037】
例えば図5の例では、ルートディレクトリにはファイル“FILE1.JPG”が存在し、このファイルは読み取り専用であり、2009年12月10日12:00:15に作成され、そのファイルサイズは1.35MBであり、そのデータはクラスタ20を先頭に書き込まれていることが分かる。また図5ではエントリ0〜2までが使用されており、エントリ3以降は未使用である。そして未使用のエントリ内は全て“0x00”または“0xff”とされている。
【0038】
なお、サブディレクトエントリの構造も、基本的にはルートディレクトリエントリと同じである。ルートディレクトリエントリと異なる点は、サブディレクトリエントリには、自分自身を示すドット(.)エントリと、親ディレクトリを示すドットドット(..)エントリが含まれる点である。
【0039】
<書き込み・消去コマンドに対するメモリカード1の動作>
次に、ホスト機器2からメモリカード1に対してデータの書き込みまたは消去コマンドが発行された際における、メモリカード1の動作について、図6を用いて説明する。図6は書き込みまたは消去コマンドを受信したメモリカード1の動作を示すフローチャートである。下記の動作は、メモリカード1におけるSDカードインターフェース20またはMPU21によって実行される。またSDカードの場合、書き込みコマンドによるデータの書き込みは、512バイトのデータブロック(セクタ)単位で行われる。更に書き込みコマンドには、1つのデータブロックを書き込むシングルブロックライトコマンドと、複数のデータブロックを連続した論理アドレスに書き込むマルチブロックライトコマンドとがある。
【0040】
図示するように、まずメモリカード1は、受信したコマンドが消去コマンドであった場合(ステップS10、YES)、消去を禁止する(ステップS11)。すなわち本実施形態に係るメモリカード1は消去コマンドをサポートしない。そしてメモリカード1は、消去を行うことなくGeneral Errorをホスト機器2に返す。
【0041】
消去コマンドでない場合(ステップS10、NO)、すなわち書き込みコマンドであった場合、メモリカード1はアクセス対象(書き込み対象)となる領域を判断する(ステップS12)。これは、書き込みコマンドと共に受信したアドレスによって判断出来る。
【0042】
アクセス対象が読み出し専用領域(図3の場合にはブートセクタ)であった場合(ステップS13、YES)、メモリカード1は書き込みを禁止する(ステップS14)。そしてメモリカード1は、書き込みを行うことなくライトプロテクトエラーをホスト機器2に返す。
【0043】
アクセス対象が制限付き上書き許可FAT領域であった場合(ステップS13でNO、ステップS15でYES)、アクセス内容が、「書き込み済みのワードデータを同じワードデータで上書きする」場合(ステップS16、YES)、または「“0x0000”であるワードデータを“0x0000”以外のワードデータに上書きする」場合(ステップS17、YES)のみ、書き込みを許可する(ステップS18)。それ以外の場合(ステップS16でNO、ステップS17でNO)には、書き込みは禁止される(ステップS19)。そしてメモリカード1は、書き込みを行うことなくライトプロテクトエラーをホスト機器2に返す。つまり、制限付き上書き許可FAT領域に対する書き込みコマンドの1セクタデータに含まれる512バイトのデータが全て、ステップS16でYESとなり、またはステップS17でYESとなるデータであった場合、書き込みは正常に行われる(これは、セクタデータの一部がステップS16でYESとなり、残りの全てがステップS17でYESとなる場合も含む)。他方、制限付き上書き許可FAT領域に対する書き込みコマンドの1セクタデータの少なくとも一部に、上記ステップS16、S17の両方でNOとなるデータが含まれていた場合、書き込みは行われない。
【0044】
アクセス対象が制限付き上書き許可ディレクトリエントリ領域であった場合(ステップS15でNO、ステップS20でYES)、アクセス内容が、「書き込み済みのバイトデータを同じバイトデータで上書きする」場合(ステップS21、YES)、「“0x00”であるバイトデータを“0x00”以外のバイトデータに上書きする」場合(ステップS22、YES)、または「“0xff”であるバイトデータを“0xff”以外のバイトデータに上書きする」場合(ステップS23、YES)のみ、書き込みを許可する(ステップS24)。それ以外の場合(ステップS21でNO、ステップS22でNO、ステップS23でNO)には、書き込みは禁止される(ステップS25)。そしてメモリカード1は、書き込みを行うことなくライトプロテクトエラーをホスト機器2に返す。つまり、制限付き上書き許可ディレクトリエントリ領域に対する書き込みコマンドの1セクタデータに含まれる512バイトのデータが全て、ステップS21でYESとなり、またはステップS22でYESとなるデータであった場合、またはステップS23でYESとなるデータであった場合、書き込みは正常に行われる(これは、セクタデータの一部がステップS21〜S23のいずれかでYESとなり、残りの全てがステップS21〜S23の別のいずれかでYESとなるような場合も含む)。他方、制限付き上書き許可ディレクトリエントリ領域に対する書き込みコマンドの1セクタデータの少なくとも一部に、上記ステップS21〜S23でNOとなるデータが含まれていた場合、書き込みは行われない。
【0045】
アクセス対象が任意データ上書き許可領域であった場合(ステップS20でNO、ステップS26でYES)、書き込みは許可される(ステップS27)。
【0046】
アクセス対象が上記以外の領域であった場合(ステップS26でNO)、つまり追記領域であった場合には、追記書き込みのみ許可される(ステップS28)。なお、「追記」とは、以前に書き込んだデータの論理セクタアドレスより後ろのセクタアドレスにのみデータの書き込みを行う方式である。これに対して「上書き」とは、以前に書き込んだデータの論理セクタアドレスに関係なく、任意のセクタアドレスに書き込みを行う方式である。
【0047】
以上のフローチャートをまとめたものが図7の表である。図示するように、消去コマンドは、いずれの領域に対するものであっても実行されない。これに対して書き込みコマンドは、アクセス対象となる領域毎に取り扱いが異なる。
【0048】
まず読み出し専用領域については、書き込みは実行されない。
【0049】
制限付き上書き許可FAT領域に対しては、既に書き込み済みのデータを同じデータに上書きすること、及び新規ディレクトリ及び新規ファイル作成のためのクラスタチェーンの作成のみが許可される。そして一度作成されたクラスタチェーンの変更は禁止される。但し、後者については例外的に認める手法が取られても良い。これについては第2、第3の実施形態として説明する。
【0050】
制限付き上書き許可ディレクトリエントリ領域に対しては、既に書き込み済みのデータを同じデータに上書きすること、及び新規ディレクトリ及び新規ファイルに関するエントリの作成のみが許可される。そして、一度記録されたエントリの変更は禁止される。但し、後者についてはエントリ内の項目毎に変更を許可するか否かを定めても良い。これについては第4の実施形態として説明する。
【0051】
任意データ上書き許可領域に対しては、書き込みは許可される。この領域は、例えばデジタルカメラで撮影した写真データをメモリカード1に保存する場合のDPOFファイル等、データの上書きが必要なディレクトリエントリ用の領域や、そのファイル本体を格納するための領域であり、データを任意の値に上書き出来る。
【0052】
そして追記領域は、写真の本体データを書き込む領域であり、追記書き込みのみが許可される。
【0053】
<新規サブディレクトリ作成時の動作>
次に、サブディレクトリを新規に作成する際のメモリカード1の動作について、図8を用いて説明する。図8はメモリカード1の動作を示すフローチャートである。以下の動作は主にMPU21によって実行される。
【0054】
図示するようにメモリカード1は、ホスト機器2から書き込みコマンドによって、サブディレクトリの作成命令を受信する(ステップS30)。まずメモリカード1は、書き込みアドレスが適切か否かを判断する(ステップS31)。すなわち、サブディレクトリエントリの開始アドレスが、追記領域の最終書き込み済みアドレス以下の場合や、既に設定されている制限付き上書き許可ディレクトリエントリ領域内に含まれる場合には、書き込みアドレスは適切でないと判断する(ステップS31、NO)。そしてこの場合には、対応する制限付き上書き許可ディレクトリエントリ(ルートディレクトリエントリまたは対応するいずれかのサブディレクトリエントリ)におけるエントリの更新を禁止し(ステップS33)、また新たな制限付き上書き許可ディレクトリエントリ領域の作成を行わない(ステップS34)。そしてメモリカード1はホスト機器2に対してライトプロテクトエラーを返す。
【0055】
開始アドレスが適切な場合(ステップS31、YES)、次にメモリカード1は、既に設定済みの制限付き上書き許可ディレクトリエントリ領域の数が、その設定可能個数の上限に達しているか否かを判断する(ステップS32)。そして達している場合(ステップS32、YES)には、これ以上、制限付き上書き許可ディレクトリエントリ領域を作成出来ないので、ステップS33、S34に進む。
【0056】
達していない場合(ステップS32、NO)には、メモリカード1は、対応するディレクトエントリを更新する(ステップS35)。そしてメモリカード1は、対応する制限付き上書き許可ディレクトリエントリ領域におけるエントリ(ドットエントリ及びドットドットエントリを除く)の開始クラスタ番号フィールド(DIR_FstClusLO)が“0x0000”以外の値に更新されたことを検知し、且つ当該エントリのファイル属性フィールド(DIR_Attr)が“0x10”(ディレクトリ属性)に更新されたことを検知する。この検知によりメモリカード1は、開始クラスタから1クラスタ分(16KB)を、新たな制限付き上書き許可ディレクトリエントリ領域として自動設定する(ステップS36)。
【0057】
以上の様子を図9に示す。図9は、新規サブディレクトリ作成時のメモリ空間の様子を示すメモリマップである。図示するように、例えばアドレスA1〜A2の領域に制限付き上書き許可ディレクトリエントリ領域が設定され、アドレスA3〜A4の領域に写真ファイルが書き込まれ、アドレスA5以降の領域が追記領域である場合を仮定する。
【0058】
この状態において新規サブディレクトリの作成命令を受信した場合、その開始アドレスがアドレスA1〜A4内である場合には、アドレスは適切でない(ステップS31、NO)。従ってこの場合、サブディレクトリは作成されない。他方、アドレスA5以降の領域内である場合には、アドレスは適切であるので(ステップS31、YES)、例えばアドレスA6〜A7の領域にサブディレクトリエントリが作成される。この場合、アドレスA5〜A6の間の領域、及びA7以降の領域は、追記領域のままである。
【0059】
<デジタルカメラによる撮影時のメモリカード1の動作>
次に、上記構成のメモリカード1をデジタルカメラのストレージデバイスとして用いた際の、メモリカード1の動作について、以下説明する。
【0060】
<プリフォーマット>
デジタルカメラで使用するためにメモリカード1は、専用のホスト機器によってプリフォーマットされることにより、図2及び図3に示すデータ構造が作成される。そしてメモリカード1は、プリフォーマットされた状態で出荷される。
【0061】
プリフォーマットにおいては、専用のホスト機器は、次の処理を行う。
(1)まずブートセクタ、FAT1、及びFAT2を、カードの容量に応じた所定のデータによって作成する。
(2)次に、ルートディレクトリにサブディレクトリ“DCIM”及び“MISC”を作成し、サブディレクトリ“MISC”内にファイル“AUTPRINT.MRK”を作成する。“AUTPRINT.MRK”は、写真プリント用のDPOF(digital print order format)ファイルであり、ファイル名は固定されている。
(3)次に、上記フォーマットに応じて、読み出し専用領域、制限付き上書き許可FAT領域、制限付き上書き許可ディレクトリエントリ領域(ルートディレクトリ、DCIM)、及び追記領域を設定する。
【0062】
以上の結果、図2及び図3に示すデータ構造が作成される。このとき、ブートセクタには所定のフォーマットパラメータ値が書き込まれている。またFAT1、FAT2には各ディレクトリのクラスタチェーンが書き込まれている(未使用クラスタには“0x0000”が書き込まれている。
【0063】
ルートディレクトリエントリ用のクラスタには、“MISC”用の32バイトのディレクトリエントリ、“DCIM”用の32バイトのディレクトリエントリが順に書き込まれ、以降のデータは全て“0x00”または“0xff”に初期化されている。
【0064】
またサブディレクトリ“MISC”用のクラスタには、カレントディレクトリ用の32バイトのディレクトリエントリ(ドットエントリ)、親ディレクトリ用の32バイトのディレクトリエントリ(ドットドットエントリ)、及び“AUTPRINT.MRK”用の32バイトのファイルエントリが順に書き込まれ、以降のデータは全て“0x00”または“0xff”に初期化されている。なお、“AUTPRINT.MRK”ファイルは、サイズ0とされている。
【0065】
ファイル“AUTPRINT.MRK”用のクラスタは、全て“0x00”で初期化されている。
【0066】
サブディレクトリ“DCIM”用のクラスタには、カレントディレクトリ用の32バイトのディレクトリエントリ(ドットエントリ)、及び親ディレクトリ用の32バイトのディレクトリエントリ(ドットドットエントリ)が順に書き込まれ、以降のデータは全て“0x00”または“0xff”に初期化されている。
【0067】
それ以降の領域は、初期状態であり、全データが“0xff”とされている。
【0068】
なお、デジタルカメラの機種によっては、“MISC”及び“AUTPRINT.MRK”は、DPOF設定するまでは作成しないデジタルカメラもある。この場合には、メモリカード1のデータ構造は、図2及び図3において“MISC”及び“AUTPRINT.MRK”を排したものとなる。そしてメモリカード1の出荷後、デジタルカメラの処理により“MISC”と“AUTPRINT.MRK”が作成される。
【0069】
<デジタルカメラにメモリカード1を挿入した際の動作>
次に、上記プリフォーマットされたメモリカード1をデジタルカメラ(ホスト機器2)に挿入した際の動作について説明する。
【0070】
デジタルカメラは、メモリカード1が挿入されたことを検知すると、サブディレクトリ“DCIM”の下に、サブディレクトリ“100XXXXX”及び“YYYYY”を作成する。なお、サブディレクトリ“100XXXXX”の“XXXXX”は、カメラメーカ毎の5バイトのASCII文字列であり、このサブディレクトリの下に写真ファイル(JPEGファイル)が順次保存される。また“YYYYY”は、メーカー毎の追加機能用のファイルまたはサブディレクトリであるが、機種によっては“YYYYY”を設定しない場合もある。
【0071】
以上の結果得られるメモリカード1のディレクトリ構造及び論理アドレスマップを図10及び図11に示す。図2及び図3からの変更点を、図10では四角印で示し、図11では斜線を付した領域で示す。
【0072】
デジタルカメラによって“DCIM”内に新たなサブディレクトリエントリ“100XXXXX”が作成されると、“DCIM”用のクラスタには、カレントディレクトリ用のディレクトリエントリ及び親ディレクトリ用のディレクトリエントリに続く三番目に、“100XXXXX”を示す32バイトのサブディレクトリエントリが作成される。
【0073】
このサブディレクトリエントリが書き込まれると、それに応答してメモリカード1は、当該サブディレクトリエントリ領域を、新たな制限付き上書き許可ディレクトリエントリ領域として自動設定する。
【0074】
サブディレクトリ“100XXXXX”用のクラスタ(初期値は全て“0xff”)には、カレントディレクトリ用の32バイトのディレクトリエントリ及び親ディレクトリ用の32バイトのディレクトリエントリが作成され、以後のデータは全て“0xff”である。
【0075】
なお通常、サブディレクトリ“100XXXX”には1クラスタが確保される。そして1クラスタのサブディレクトリ内に作成出来るファイルエントリ数には制限があるため、撮影した写真が増えると、JPEGファイルのファイルエントリが1クラスタ内に収まらなくなる。この場合、デジタルカメラの機種によって以下の2通りの対応がある。すなわち、
(A)サブディレクトリ“100XXXXX”のFATチェーンを延長して新たなクラスタを確保し、サブディレクトリ“100XXXXX”のサイズを拡張する。これによって、“100XXXXX”の下に保存出来る写真ファイル数を増やす。
【0076】
(B)“101XXXXX”という新たなサブディレクトリを“DCIM”の下に作り、この下に写真ファイルを保存する。以後、“102XXXXX”、“103XXXXX”、…というサブディレクトを順次作成する。
【0077】
本実施形態に係る方法であると、上記(B)の方法に対応出来る。上記(A)の方法への対応については、第2の実施形態で説明する。
【0078】
<デジタルカメラによる写真撮影動作>
次に、デジタルカメラによる写真撮影を行った際の、メモリカード1への写真データの書き込みシーケンスについて説明する。書き込みシーケンスは、次の順で実行される。
【0079】
(1)まずデジタルカメラは、サブディレクトリ“100XXXXX”の新しいエントリに、以下の値でファイルエントリを書き込む。
・DIR_Name:XXXXXXXXJPG
・DIR_Attr:0x20(=ARCHIVE)
・DIR_NTRes:0x00(固定値)
・DIR_CrtTimeTenth、DIR_CrtTime、DIR_CrtDate:ファイル作成時刻値
・DIR_LstAccDate:0x00
・DIR_FstClusHI、DIR_FstClusLO:0x0000、0x0000(初期値)
・DIR_WrtTime、DIR_WrtDate:ファイル作成時刻値
・DIR_FileSize:0x0000_0000(初期値)
(2)次にデジタルカメラは、FAT1とFAT2の未使用テーブル(値は“0x0000”に、当該写真ファイル用のクラスタチェーン値を書き込む。
(3)次にデジタルカメラは、(1)で作成したファイルエントリに、開始クラスタ番号を上書きする。
(4)次にデジタルカメラは、(3)で設定した開始クラスタから、写真ファイルデータ本体を書き込む(追記する)。
(5)最後にデジタルカメラは、(1)で作成したファイルエントリに、ファイルサイズを上書きする。
【0080】
以上の結果得られるメモリカード1のディレクトリ構造及び論理アドレスマップを図12及び図13に示す。図10及び図11からの変更点を、図12では四角印で示し、図13では斜線を付した領域で示す。
【0081】
図示するように、追記領域内には、写真ファイル“XXXXXXXX.JPG”が記録されると共に、サブディレクトリエントリ“100XXXXX”内には、この写真ファイル用のエントリが作成される。
【0082】
以後、写真を撮影する度に、上記(1)〜(5)の動作が繰り返される。
【0083】
<ホスト機器2によるメモリカード1へのアクセスについて>
次に、図11の通りに写真ファイルが記録されたメモリカード1に対する各種ホスト機器2によるアクセスについて、以下説明する。
【0084】
<各種ホスト機器によるファイル削除、上書き、再フォーマット動作>
まず、上記の通りメモリカード1に記録された写真ファイルを削除する処理は、対応するファイルエントリの先頭バイトを“0x00”で上書きすることになる。従って、制限付き上書き許可ディレクトリエントリ領域の上書き制限条件に該当するため(図6のステップS21でNO、ステップS22でNO、且つステップS23でNO)、ライトプロテクトエラーとなりファイル削除は実行されない。
【0085】
また当該メモリカード1を再度論理フォーマットしようとした場合、ブートセクタへの書き込み、FATの再初期化のための上書き、ファイルエントリの初期化のための上書きを伴う。よって、各領域の書き込み制限条件に該当して(図6のステップS13でYES、ステップS16、S17でNO、ステップS21〜S23でNO)、ライトプロテクトエラーとなりファイル削除は実行されない。
【0086】
更に、当該写真ファイルのファイルエントリの各フィールドまたはFATのクラスタチェーンにデータを上書き変更しようとした場合には、制限付き上書き許可ディレクトリエントリ領域及び制限付き上書き許可FAT領域の上書き制限条件に該当する(図6のステップS16、S17でNO、ステップS21〜S23でNO)。よって、やはりライトプロテクトエラーとなり、ファイルエントリ及びFATは上書き変更されない。
【0087】
更に写真ファイル本体にデータを上書き変更しようとした場合、追記領域の制限条件に該当する(ステップS28)。従ってこの場合もライトプロテクトエラーとなり、データの改変は為されない。
【0088】
<通常のPC及びカードリーダ/ライタによるファイルの読み出し>
データの読み出しは、通常の従来のSDカードと同様に実行される。従って、通常のPC及びカードリーダ/ライタ等によるファイルの読み出しは正常に行うことが出来る。
【0089】
<ホスト機器からのファイルアクセス>
ホスト機器2からのファイル書き込みについて、新規ファイルの書き込みは、従来のFATファイルシステムソフトウェアによって実行可能である。但し、前述の通りファイル削除、上書き、及び再フォーマット動作は、ライトプロテクトエラーとなる。ファイルの読み出しも同様である。
【0090】
<効果>
以上のように、本実施形態に係る構成であると、下記の特性を有するメモリカード1が得られる。すなわち、
・メモリカード1に一度書き込んだ写真ファイルは、後で削除、変更、及び改竄出来ない。
・通常のデジタルカメラで撮影した写真データを記録出来る。
・一般的なPC及びUSBリーダ/ライタで、写真が読み出せる。
・メモリカード1はフォーマット出来ない。
【0091】
従って、ファイルデータの保全性に優れたメモリカードを実現でき、公式資料用の写真を記録する用途に好適なメモリカードが得られる。
【0092】
なお、論理アドレス範囲を、読み出し専用領域、制限付き上書き許可FAT領域、制限付き上書き許可ディレクトリエントリ領域、任意データ上書き許可領域、及び追記領域として設定するには、新規に定義する専用のコマンドを用いれば良い。これによりSDホスト機器により、各種領域の設定が可能となる。この設定値は、NAND型フラッシュメモリ11のシステム領域に保存される。
【0093】
別の方式としては、専用のコマンドを使用する代わりに、ユーザデータ領域の特定の論理メモリアドレス(例えば論理アドレス“0x000000”〜“0x00000f”)に、特定のキーデータ(例えば“0x55”、“0xaa”、“0x55”、“0xaa”、“0x55”、“0xaa”、“0x55”、“0xaa”)を書き込み、更にこの後ろの論理アドレス領域に、領域属性データとアドレス範囲を示すデータを書き込むことによって、アドレス領域範囲をメモリコントローラ10に通知する、という方法も使用できる。すなわちNAND型フラッシュメモリ11において、上記キーデータの後ろの領域に、図3の例であると“0x00000”〜“0x123ff”の論理アドレス領域は読み出し専用領域であること、“0x12400”〜“0x4bfff”の論理アドレス領域は制限付き上書き許可FAT領域であること、…などを書き込む。このデータは、通常の書き込みデータとしてはNAND型フラッシュメモリ11に書き込まれず、システムデータとして書き込まれる。この場合、専用のコマンドを必要としないため、新規コマンドをサポートしていない従来仕様のUSBリーダ/ライタ等でも、PC側のソフトウェアからアドレスを通知出来るという利点がある。
【0094】
[第2の実施形態]
次に、この発明の第2の実施形態に係る半導体装置及びメモリシステムについて説明する。本実施形態は、上記第1の実施形態で説明したように、ファイルが1つのサブディレクトリ内に収まらなくなった際に、新たなクラスタを確保して当該サブディレクトリのFATチェーンを延長する方法に関するものである。本方法を実行するため本実施形態に係る半導体装置は、第1の実施形態で説明したFATに対する書き込み制限を変更している。その他は第1の実施形態と同様であるので、説明は省略する。
【0095】
<書き込みコマンドに対するメモリカード1の動作>
ホスト機器2からメモリカード1のFATに対してデータの書き込みコマンドが発行された際におけるメモリカード1の動作について、図14を用いて説明する。図14はFATに対する書き込みコマンドを受信したメモリカード1の動作を示すフローチャートであり、第1の実施形態で説明したステップS15でYES以降の処理に対応する。その他の動作は第1の実施形態と同様である。
【0096】
図示するようにメモリカード1は、ステップS16でNO、ステップS17でNOであった場合、上書きされるクラスタがディレクトリに相当するか否かを判断する(ステップS40)。これは、対応するディレクトリエントリのDIR_Attrを確認することで可能である。ディレクトリで無ければ(ステップS40、NO)、書き込みは禁止される(ステップS19)。
【0097】
ディレクトリだった場合(ステップS40、YES)、引き続きメモリカード1は、上書き対象とされたクラスタに既に書き込まれている値が、FATチェーンの最終を示す値(“0xfff8”〜“0xffff”)であるか否かを判断する(ステップS41)。最終を示す値でなければ(ステップS41、NO)、書き込みは禁止される(ステップS19)。
【0098】
最終を示す値であった場合(ステップS41、YES)、メモリカード1は、当該クラスタへの上書きデータが有効なクラスタ番号であるか否かを判断する(ステップS42)。有効でないクラスタ番号の例は、“0x0000(未使用クラスタ)”や“0x0001(予約クラスタ番号)”である。有効なクラスタ番号でない場合(ステップS42、NO)には、書き込みは禁止される(ステップS19)。
【0099】
有効なクラスタ番号であった場合(ステップS42、YES)、メモリカード1は書き込みを許可する(ステップS43)。これにより、クラスタ番号が書き換えられる。引き続きメモリカード1は、書き換えたクラスタ番号に対応するクラスタを、当該サブディレクトリの拡張クラスタ領域とみなし、制限付き上書き許可ディレクトリエントリ領域として自動設定する(ステップS44)。
【0100】
<具体例>
次に、上記動作の具体例について説明する。仮に図15の状態を想定する。図15はメモリカード1のメモリマップであり、本例に関する部分のみを図示したものである。
【0101】
図示するように、ルートディレクトリにはサブディレクトリ“100XXXXX”が作成されており、その開始クラスタはクラスタ5である。そしてサブディレクトリ“100XXXXX”のエントリ数は例えば512個である。またサブディレクトリ“100XXXXX”内には、510個のJPEGファイルが作成されている。従って、サブディレクトリ“100XXXXX”についての512個のエントリは、ドットエントリ及びドットドットエントリを含めて、全て使用済みである。このような状態で、新たなJPEGファイル“FILE511.JPG”がメモリカード1に記録される場合を考える。
【0102】
第1の実施形態で説明した方法であると、FATの上書きは禁止されているので、このような場合には新たにサブディレクトリ“101XXXXX”を作成して、この下にファイル“FILE511.JPG”を格納する。
【0103】
これに対して本実施形態に係る方法であると、サブディレクトリ“100XXXXX”のディレクトリエントリとして新たにクラスタを確保し、クラスタチェーンを延長することにより、ファイル“FILE511.JPG”をサブディレクトリ“100XXXXX”の下に格納する。この様子を図16に示す。図16はメモリカード1のメモリマップであり、図15からの変更箇所を、斜線を付した領域として示している。
【0104】
図示するようにメモリカード1は、サブディレクトリ“100XXXXX”のディレクトリエントリとして、未使用のクラスタ6を新たに確保する。FATにおけるクラスタ5の値が“0xfff8”であり(図14のステップS41、YES)、また上書きデータはクラスタ6を示す有効なクラスタ番号(“0x0006”)であるので(図14のステップS42、YES)、上書きが許可される(図14のステップS43)。すなわち、クラスタ番号5に対応する値は“0xfff8”から“0x0006”に書き換えられる。そしてクラスタ6が、サブディレクトリ“100XXXXX”の拡張クラスタ領域とされて、制限付き上書き許可ディレクトリエントリ領域として設定される(図14のステップS44)。この結果、サブディレクトリ“100XXXXX”のエントリ数は、512+512=1024個となり、サブディレクトリ“100XXXXX”の下に“FILE511.JPG”を格納出来るようになる。なお、FATのクラスタ6に対応する値は、FATチェーンの最終を示す“0xfff8”に書き換えられる(図6のステップS17、YES)。
【0105】
<効果>
本実施形態に係る構成であると、FATに関する書き込み制限を一部緩和し、FATチェーンの拡張を許可する。従って、第1の実施形態で説明した効果が得られると共に、メモリカード1の使い勝手を向上出来る。
【0106】
[第3の実施形態]
次に、この発明の第3の実施形態に係る半導体装置及びメモリシステムについて説明する。本実施形態は、上記第1または第2の実施形態において、動画ファイルの記録に対応するための構成に関するものである。以下では、第1、第2の実施形態と異なる点についてのみ説明する。
【0107】
<書き込みコマンドに対するメモリカード1の動作>
動画ファイルの記録に対応するため、本実施形態に係る構成は、第1の実施形態で説明したFATに対する書き込み制限を変更している。図17は、FATに対する書き込みコマンドを受信したメモリカード1の動作を示すフローチャートであり、第1の実施形態で説明したステップS15でYES以降の処理に対応する。その他の動作は第1の実施形態と同様である。
【0108】
図示するようにメモリカード1は、ステップS16でNO、ステップS17でNOであった場合、メモリカード1は、上書き対象とされたクラスタに既に書き込まれている値が、FATチェーンの最終を示す値(“0xfff8”〜“0xffff”)であるか否かを判断する(ステップS41)。最終を示す値でなければ(ステップS41、NO)、書き込みは禁止される(ステップS19)。最終を示す値であった場合(ステップS41、YES)、メモリカード1は、当該クラスタへの上書きデータが有効なクラスタ番号であるか否かを判断する(ステップS42)。有効なクラスタ番号でない場合(ステップS42、NO)には、書き込みは禁止される(ステップS19)。ステップS41〜S43までは、第2の実施形態と同様である。
【0109】
有効なクラスタ番号であった場合(ステップS42、YES)、メモリカード1は、上書きされるクラスタがディレクトリに相当するか否かを判断する(ステップS50)。これは第2の実施形態で説明したステップS40と同様に、対応するディレクトリエントリのDIR_Attrを確認することで可能である。
【0110】
ディレクトリでない場合(ステップS50、NO)、すなわちファイルであった場合には、メモリカード1は、制限付き上書き許可ディレクトリエントリ領域において対応するファイルエントリのファイルサイズフィールドの値の変更を許可する(ステップS51)。但し、既に書き込まれている値よりも大きな値への変更のみ許可され、小さい値への変更は許されない。
【0111】
ディレクトリであった場合(ステップS50、YES)は、上記第2の実施形態に相当し、ステップS44に進む。第1の実施形態に係る方法であると、ディレクトリであった場合には、書き込み禁止とされる(ステップS19)。
【0112】
<具体例>
次に、上記動作の具体例について説明する。仮に図18の状態を想定する。図18はメモリカード1のメモリマップであり、本例に関する部分のみを図示したものである。
【0113】
図示するように、ルートディレクトリにはサブディレクトリ“100XXXXX”が作成されており、その下に動画ファイル“FILE1.MPG”が格納されている。この動画ファイルは撮影中のものであり、開始クラスタはクラスタ10で、現在のファイルサイズは10MBである。
【0114】
その後、更に動画の撮影を継続し、動画ファイル“FILE1.MPG”として、クラスタ11を更に割り当てる場合を考える。この処理は、FAT及びファイルエントリにおける書き込み済みデータの上書きを伴うため、第1の実施形態では禁止されている。
【0115】
これに対して本実施形態では、図19のようにFAT及びファイルエントリの上書きを許可する。図19はメモリカード1のメモリマップであり、図18からの変更箇所を、斜線を付した領域として示している。
【0116】
図示するようにメモリカード1は、動画ファイル“FILE1.MPG”の追加クラスタとして、未使用のクラスタ11を新たに確保する。するとFATにおけるクラスタ10の値が“0xfff8”であり(図17のステップS41、YES)、また上書きデータはクラスタ11を示す有効なクラスタ番号(“0x000B”)であるので(図17のステップS42、YES)、FATの上書きが許可される(図17のステップS43)。すなわち、クラスタ番号10に対応する値は“0xfff8”から“0x000B”に書き換えられる。そしてクラスタ11が、動画ファイル“FILE1.MPG”の拡張クラスタ領域とされる。また、書き換えられたクラスタはファイルに対応するので(ステップS50、NO)、ファイルエントリのファイルサイズが変更される(ステップS51)。すなわち、動画ファイル“FILE1.MPG”についてのファイルエントリにおいて、ファイルサイズDIR_FileSizeが、10MBから、これよりも大きい例えば20MB等の値に上書きされる
<効果>
本実施形態に係る構成であっても、FATに関する書き込み制限を一部緩和し、FATチェーンの拡張を許可する。これにより、一度作成してファイルサイズを確定したファイルへの追加書き込みが可能となる。従って、第1、第2の実施形態で説明した効果が得られると共に、メモリカード1の使い勝手を更に向上出来る。
【0117】
[第4の実施形態]
次に、この発明の第4の実施形態に係る半導体装置及びメモリシステムについて説明する。本実施形態は、上記第1の実施形態において、制限付き上書き許可ディレクトリエントリ領域についての書き込み制限を、フィールド毎に判断するものである。
【0118】
すなわち、本実施形態に係る構成では、第1の実施形態で説明した図6のステップS21、S22において、フィールド毎に以下の判断・処理を行う。
【0119】
(1)DIR_Name(11バイト)
All“0x00”以外の値であれば、それ以外の値に変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(2)DIR_Attr(1バイト)
“0x00”以外の値であれば、それ以外の値に変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(3)DIR_NTRes(1バイト)
“0x00”以外の値に変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(4)DIR_CrtTimeTenth、DIR_CrtTime、DIR_CrtDate(5バイト)
All“0x00”以外の値であれば、それ以外の値へ変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(5)DIR_LstAccDate(2バイト)
All“0x00”以外の値であれば、それ以外の値へ変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(6)DIR_FstClusHI、DIR_FstClusLO(4バイト)
All“0x00”以外の値であれば、それ以外の値へ変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(7)DIR_WrtTime、DIR_WrtDate(4バイト)
All“0x00”以外の値であれば、それ以外の値へ変更する書き込みは禁止し、ライトプロテクトエラーを返す。
(8)DIR_FileSize(4バイト)
All“0x00”以外の値であれば、それ以外の値へ変更する書き込みは禁止し、ライトプロテクトエラーを返す。
【0120】
<効果>
本実施形態に係る構成であると、制限付き上書き許可ディレクトリエントリ領域に関する書き込み制限を、フィールド毎に判断する。これによりメモリカード1へのアクセスの自由度を向上出来る。なお、本実施形態は図6のステップS23にも同様に適用可能である。また、ホスト機器によっては、ファイル読み出し動作時にも最終アクセス日時(DIR_LatAccDate)を上書きするものがある。従ってこのフィールドについては、任意データ、または既に書き込まれた値よりも大きい任意のデータ(すなわち、より後の日時)への上書きを許可しても良い。また本実施形態は、上記第2、第3の実施形態に適用することも可能である。
【0121】
以上のように、この発明の第1乃至第4の実施形態に係る半導体装置であると、データを保持可能な不揮発性の半導体記憶装置11と、ホスト機器2から受信した書き込みデータを半導体記憶装置11へ書き込み制御するメモリコントローラ10とを具備する。そしてメモリコントローラ10は、半導体記憶装置11に書き込むデータに対して、データの種類及びアドレスに応じた書き込み制限条件をそれぞれ有する複数のアドレス領域(図3の読み出し専用領域、制限付き上書き許可FAT領域、制限付き上書き許可ディレクトリエントリ、及び追記領域)を含む論理アドレス空間40、41を有する。これにより、特定のファイルフォーマットにおいて、ファイルの追加は許可する一方で、書き込み済みのファイルへのデータの上書きは禁止する。
【0122】
そしてアドレス領域の設定は、ホスト機器2からの書き込みアクセス時におけるアドレスやデータに応じて、メモリコントローラ10によって行われる。
【0123】
またアドレス領域のうちのいずれか(追記領域)は、論理アドレスが増加する方向への書き込みのみが許可され、また別のアドレス領域(制限付き上書き許可FAT領域及び制限付き上書き許可ディレクトリエントリ領域)は、同一の値によるデータの上書きと、初期値からそれ以外の値へのデータの上書きのみが許可される。
【0124】
そして上記アドレス領域は、半導体記憶装置11の論理ファイルフォーマットの論理領域区分に応じたものである。この半導体記憶装置11のファイルシステムはFATであり、メモリコントローラ10は、FAT領域及びディレクトリエントリ領域に対して、互いに異なる書き込み制限条件を設定する。
【0125】
また、専用のホスト機器が上記半導体装置1をプリフォーマットすることにより、半導体記憶装置11の論理アドレス空間に、書き込み制限条件を有する複数の前記アドレス領域を設定しても良い。
【0126】
[変形例]
なお、上記第1乃至第4の実施形態は種々の変形が可能である。例えば、SDカードインターフェース20における、読み出し専用のカード仕様情報レジスタ(CSD Register:Card Specific Data Register)に、カードタイプをホスト機器2に伝えるための情報を追加しても良い。この場合にはCSDにレジスタに、ファイルの上書きが出来ない「ファイルライトワンス」タイプを示すフラグを追加すれば良い。
【0127】
また、上記実施形態では、書き込み制限条件を満たさないデータ書き込みに対しては、エラーレスポンス(プロテクトエラー)を返す場合を例に説明した。しかし、書き込み条件によっては、エラーレスポンスは返さずに正常終了のステータスを返すようにしても良い。勿論、この場合であっても、NAND型フラッシュメモリ11への実際のデータの書き込みは行われない。すなわち、ホスト機器からはあたかも書き込みが正常に行われたかのように見えるが、実際にデータの更新は行われない、という処理にしても良い。
【0128】
また上記実施形態ではFAT16へ適用した場合を例に説明したが、同様の手法によりFAT32にも適用可能である。また、FATを拡張したような類似のファイルシステム全般に適用可能である。
【0129】
更に、プリフォーマット時に、ルートディレクトリを読み込み専用領域としても良い。この場合、ルートディレクトリへのサブディレクトリ及びファイルの作成は禁止される。
【0130】
また、制限付き上書き許可ディレクトリエントリ領域に書き込み可能なディレクトリエントリ及びファイルエントリのファイル名フィールド(DIR_Name)に制限を設けても良い。例えば、サブディレクトリ名としては“10XXXXXX”のみを許可し、ファイル名は拡張子がJPGであるもののみを許可するようにしても良い。これにより、特定の名称のサブディレクトリ及びファイルのみの作成だけが許可される。
【0131】
また上記実施形態では、デジタルカメラ用の特定のサブディレクトリ構造でプリフォーマットを行う例について説明した(図3)。しかし、他の用途向けに異なるサブディレクトリ構造でプリフォーマットしても良い。例えばルートディレクトリまでをプリフォーマットにより設定しても良い。
【0132】
更に上記実施形態では、プリフォーマットの時点で、作成済みのディレクト構造(“DCIM”)より論理アドレスが後ろの領域は追記領域として設定する場合を例に説明した。しかし、この領域は任意上書き可能領域としても良い。この場合、制限付き上書き許可ディレクトリエントリ領域に、ファイル名の拡張子がJPGであるファイルエントリが作成され、そのファイルエントリの開始クラスタ番号フィールドに“0x0000”以外の値が書き込まれたことをメモリコントローラ10が検知した時点で、当該開始クラスタ以降の論理アドレス領域を追記領域に設定する。また、上記追記領域の設定がなされる前に作成されたサブディレクトリエントリ領域は、制限付き上書き許可ディレクトリエントリ領域としてでは無く、任意上書き可能領域のままとしておく。これにより、実際に写真を撮影してJPGファイルが作成される以前に作成されたファイルを、上書き可能なファイルとすることが出来る。そして最初のJPGファイル以降に記録されたファイルは、ライトワンスファイルとなる。
【0133】
また実施形態では、半導体装置としてSDメモリカードの場合を例に説明したが、UHS(ultra high speed)−IIカードや、またはホスト機器2内に実装されたメモリデバイスであっても良い。勿論、半導体デバイスの備える記憶媒体はNAND型フラッシュメモリ11に限らず、その他の半導体メモリや、半導体メモリ以外の記憶媒体であっても良い。
【0134】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【0135】
1…メモリカード、2…ホスト機器、10…メモリコントローラ、11…NAND型フラッシュメモリ、20、25、33…インターフェース、21…MPU、22…CPRM用回路、23…ROM、24…RAM、30…メモリセルアレイ、31…ロウデコーダ、32…ページバッファ

【特許請求の範囲】
【請求項1】
データを保持可能な不揮発性の半導体記憶装置と、
ホスト機器から受信した書き込みデータを前記半導体記憶装置へ書き込み制御するメモリコントローラと
を具備し、前記メモリコントローラは、前記半導体記憶装置に書き込むデータに対して、前記データの種類及びアドレスに応じた書き込み制限条件をそれぞれ有する複数のアドレス領域を含む論理アドレス空間を有することにより、特定のファイルフォーマットにおいて、ファイルの追加は可能であるが、書き込み済みのファイルへのデータの上書きは禁止する
ことを特徴とする半導体装置。
【請求項2】
前記アドレス領域の設定は、前記ホスト機器からの書き込みアクセス時におけるアドレスやデータに応じて、前記メモリコントローラによって行われる
ことを特徴とする請求項1記載の半導体装置。
【請求項3】
前記アドレス領域のうちのいずれかは、論理アドレスが増加する方向への書き込みのみが許可される
ことを特徴とする請求項1記載の半導体装置。
【請求項4】
前記アドレス領域のうちのいずれかは、同一の値によるデータの上書きと、初期値からそれ以外の値へのデータの上書きのみが許可される
ことを特徴とする請求項1記載の半導体装置。
【請求項5】
前記アドレス領域は、前記半導体記憶装置の論理ファイルフォーマットの論理領域区分に応じたものである
ことを特徴とする請求項1記載の半導体装置。
【請求項6】
前記半導体記憶装置のファイルシステムはFATであり、
前記メモリコントローラは、FAT領域及びディレクトリエントリ領域に対して、互いに異なる前記書き込み制限条件を設定する
ことを特徴とする請求項1記載の半導体装置。
【請求項7】
前記半導体記憶装置のファイルシステムはFATであり、
FAT領域は、書き込み済みデータの同一のデータによる上書き、及び未使用クラスタであることを示す値からそれ以外の値への上書きのみが許可され、
ディレクトリエントリ領域は、書き込み済みデータの同一のデータによる上書き、及び未使用エントリであることを示す値からそれ以外の値への上書きのみが許可される
ことを特徴とする請求項1記載の半導体装置。
【請求項8】
前記メモリコントローラは、前記FAT領域において、書き込み対象となる領域における値がFATチェーンの最終値であり、且つ上書きデータが有効なクラスタ値であった場合、前記領域に対する上書きを許可する
ことを特徴とする請求項1記載の半導体装置。
【請求項9】
前記メモリコントローラは、前記FAT領域において、前記書き込み対象となる領域がディレクトリエントリ領域に対応する場合、前記上書きデータに対応するクラスタに新たなディレクトリエントリ領域を設定し、それ以外の場合には、対応するファイルエントリにおけるファイルサイズの上書きを許可する
ことを特徴とする請求項8記載の半導体装置。
【請求項10】
請求項1記載の半導体装置と、
前記ホスト機器と
を具備し、前記ホスト機器は、前記半導体装置をプリフォーマットすることにより、前記半導体記憶装置の前記論理アドレス空間に、前記書き込み制限条件を有する複数の前記アドレス領域を設定する
ことを特徴とするメモリシステム。
【請求項11】
前記半導体装置は、カードデバイスである
ことを特徴とする請求項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

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2011−138221(P2011−138221A)
【公開日】平成23年7月14日(2011.7.14)
【国際特許分類】
【出願番号】特願2009−296341(P2009−296341)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】