説明

メモリシステム

【課題】 ホストが容易にデータの送受信を行うことが可能なメモリシステムを提供する。
【解決手段】 制御部13は、ホスト20から供給されたHTTPリクエストを不揮発性半導体記憶装置18にファイルとして記憶させ、ホストから供給された第1のコマンドに基づき、第1のコマンドと共に送られたHTTPの送信コマンドを拡張レジスタに登録し、拡張レジスタに登録された送信コマンドに基づき、不揮発性半導体記憶装置に記憶されたHTTPリクエストを前記無線機能部19により送信させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、無線通信機能を有するメモリシステムに関する。
【背景技術】
【0002】
無線通信機能や、無線LAN機能を備えたSDカードが開発されている。無線LAN機能を備えたSDカードはホストが自由にネットワークと通信できる方法がなく、SDカードの無線機能が独自に通信をするのみである。また、無線機能のみを有するSDIOカードは、無線LANを使った通信を行うアプリケーションを作るときに必要とされるTCP/IP通信のプロトコルに関するプログラムをまとめて1つのプログラム群としたTCPスタックを持っていない。このため、ホストに複雑な処理を要求していた。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−133294号公報
【特許文献2】特開2007−294187号公報
【非特許文献】
【0004】
【非特許文献1】Part 1 Physical Layer Simplified Specification Ver3.01 May 18, 2010(URL:http://www.sdcard.org/home/)
【非特許文献2】Part E1 SDIO Simplified Specification Ver2.00 Feb. 8, 2007(URL:http://www.sdcard.org/home/)
【発明の概要】
【発明が解決しようとする課題】
【0005】
本実施形態は、ホストが容易にデータの送受信を行うことが可能なメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【0006】
実施形態によれば、メモリシステムは、不揮発性半導体記憶装置と、制御部と、メモリと、無線通信機能部と、拡張レジスタとを含んでいる。制御部は、不揮発性半導体記憶装置を制御する。メモリは、制御部に接続された作業エリアである。無線通信機能部は、制御部により制御される。拡張レジスタは、メモリに設けられ、無線通信機能部の無線通信機能を定義可能な一定のデータ長を有している。前記制御部は、ホストから供給されたHTTPリクエストを前記不揮発性半導体記憶装置にファイルとして記憶させ、ホストから供給された第1のコマンドに基づき、第1のコマンドと共に送られたHTTPの送信コマンドを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたHTTPリクエストを前記無線機能部により送信させる。
【図面の簡単な説明】
【0007】
【図1】実施形態に適用されるメモリシステムを概略的に示す構成図。
【図2】図1に示すメモリシステムのファームウェの一例を示す構成図。
【図3】拡張レジスタのリードコマンドの一例を示す構成図。
【図4】リードコマンドによる拡張レジスタのリード動作を示すタイミング図。
【図5】リードコマンドによるデータポートのリード動作を示すタイミング図。
【図6】拡張レジスタのライトコマンドの一例を示す構成図。
【図7】図7(a)(b)(c)はマスクレジスタの動作を示す図。
【図8】ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。
【図9】ライトコマンドによるデータポートのライト動作を示すタイミング図。
【図10】拡張レジスタの先頭ページに設定される情報フィールドの一例を示す図。
【図11】無線LAN(Local Area Network)を有したSDカードの使用例を示す構成図。
【図12】メモリデバイスが有するインターフェース機能を示す図。
【図13】Wi−Fi SDカードとホストデバイスの構成例を示す図。
【図14】SDカードとホストデバイスの別の構成例を示す。
【図15】リードコマンド(CMD48)とライトコマンド(CMD49)でアクセスする拡張レジスタの例を示す図。
【図16】拡張レジスタをWi−Fi SDカードに用いた場合の例を示す図。
【図17】ホストデバイスの起動時の動作を示す図。
【図18】無線LANの設定動作を示す図。
【図19】HTTP通信の動作の例を示す図。
【図20】HTTP通信の動作の他の例を示す図。
【図21】HTTP通信の動作の他の例を示す図。
【図22】HTTP通信の動作の他の例を示す図。
【発明を実施するための形態】
【0008】
近年、各種電子機器(特に携帯型ディジタル機器)間で、無線通信によるデータ通信が可能とされている。各種電子機器としては、パーソナルコンピュータや、例えばPDA(Personal Digital Assistant)と呼ばれる携帯情報端末、携帯電話、携帯型オーディオ機器、あるいはデジタルカメラなどが含まれる。
【0009】
これら電子機器間で、無線通信によりデータ通信が可能であれば、ケーブルによる接続が不要となるため利便性を向上できる。特に、無線LAN(Local Area Network)システムの普及に伴い、パーソナルコンピュータや、組み込み機器応用のみならず、デジタルカメラなどでメモリとして使用されるSDカードにおいても無線LANシステムが導入されるようになってきている。
【0010】
SDカードにおいて、このような機能を実現するため、SDメモリカードは、フラッシュメモリの他、ホストと物理的に接続するためのインターフェース、アンテナ、高周波処理部(無線信号の送受信を行う処理部)、ベースバンド処理部(ベースバンド信号を処理する処理部)等の構成要素を実装する必要がある。
【0011】
このような無線LAN機能を備えたSDカードにおいて、無線LAN機能を制御するための手順は、SDカードメーカーの実装に依存しているため、一意に定まっていない。さらに、制御手順をどのように実装するかが課題となっている。
【0012】
また、通信機能を備えたSDカードは、無線LAN以外の方式の通信機能が備えられることも考えられる。この場合、ホストは、SDカードにどのような機能が備えられているかを知る手段がなければ、SDカードの機能を用いることが出来ない。
【0013】
そこで、本実施形態は、例えばデジタルカメラなどにおいて広くメモリとして用いられているSDカードに関して、本来のメモリ以外の拡張機能を把握するための手段を提示する。さらに、本来のメモリ以外の機能に対する制御手順を提示する。特に、SDメモリのコマンド体系において、無線LANなどを制御することを可能とする。これによって、デジタルカメラなどのホストとしてのデジタル機器と、親和性の高い無線機能などを搭載したSDカードを提供する。
【0014】
無線通信機能や、無線LAN機能を備えたSDカードが開発されている。これらのカードは、SDカードの中に独自の無線機能を収容し、独自に追加した機能のみに対応した制御が行えれば良かった。しかし、無線通信機能は多岐に亘るため、全ての無線通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足してしまう。
【0015】
このため、本実施形態は、SDカード内に、複数ページにより構成される拡張レジスタ(Extension Register)を設け、この拡張レジスタをSDメモリのコマンド仕様の1つであるコマンドCMD48、CMD49を用いて、リード又はライト可能とする。CMD48は、対象とするレジスタからデータをブロック単位で読み出すためのコマンドであり、CMD49は、対象とするレジスタにデータをブロック単位で書き込むコマンドである。拡張レジスタは、例えばSDカードが有する機能を示すためのページと、SDカードが有する通信機能を制御するためのページと、通信対象のデータの受け渡しに用いるページとを有している。
【0016】
さらに、拡張レジスタを用いることにより、ホストにより容易にHTTP(Hypertext Transfer Protocol)通信を可能としている。
【0017】
(実施形態)
以下、実施の形態について、図面を参照して説明する。
【0018】
図1は、本実施形態に係るメモリシステムを概略的に示している。
【0019】
メモリシステムは、例えばSDカードのようなメモリデバイス11と、ホスト20により構成される。メモリデバイス11はSDカードとも言う。また、ホスト11はホストデバイスとも言う。
【0020】
メモリデバイス11は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。このメモリデバイス11は、カードコントローラ11aを有している。
【0021】
カードコントローラ11aは、例えばホストインターフェース(I/F)12、CPU13、ROM(Read only Memory)14、RAM(Random Access Memory)15、バッファ16、無線インターフェース(I/F)17a、メモリインターフェース(I/F)17bにより構成されている。これらは、バスにより接続されている。メモリインターフェース17bには、例えばNAND型フラッシュメモリ18が接続されている。無線通信インターフェース17aには、拡張機能部としての無線LAN信号処理部19aが接続されている。この無線LAN信号処理部19aには、高周波信号を送受信するアンテナATaが接続されている。
【0022】
尚、拡張機能部は、無線LAN信号処理部19aに限らず、その他の無線通信信号処理部19b、及びこの無線通信信号処理部19bに接続されたアンテナATbなどを増設し、マルチファンクションのSDカードを構成することが可能である。例えば、無線LAN信号処理部19aは、例えばWi−Fi(登録商標)による無線通信機能を制御し、無線通信信号処理部19bは、例えばTransferJet(登録商標)による近接無線通信機能を制御する。
【0023】
ホストインターフェース12は、カードコントローラ11aとホスト20との間のインターフェース処理を行う。
【0024】
一方、無線通信インターフェース17aは、無線LAN信号処理部19aや無線通信信号処理部19bとの間のインターフェース処理を行う。メモリインターフェース17bは、カードコントローラ11aとNAND型フラッシュメモリ18との間のインターフェース処理を行う。
【0025】
CPU13は、メモリデバイス11全体の動作を司るものである。このCPU13を制御するプログラムは、ROM14の中に格納されているファームウェア(制御プログラム等)を用いるかあるいは、RAM115上にロードして所定の処理を実行する。すなわち、CPU13は、各種のテーブルや後述する拡張レジスタをRAM18上に作成したり、ホスト20からライト(書き込み)コマンド、リード(読み出し)コマンド、イレース(消去)コマンドを受けてNAND型フラッシュメモリ18上の領域をアクセスしたり、バッファ16を介してデータ転送処理を制御したりする。
【0026】
ROM14は、CPU13により使用される制御プログラムなどのファームウェアを格納する。RAM15は、CPU13の作業エリアとして使用され、制御プログラムや各種のテーブルや後述する拡張レジスタを記憶する。
【0027】
バッファ16は、ホスト20から送られてくるデータを、例えばNAND型フラッシュメモリ18へ書き込む際、一定量のデータ(例えば1ページ分)を一時的に記憶したり、NAND型フラッシュメモリ18から読み出されたデータをホスト20へ送り出す際、一定量のデータを一時的に記憶したりする。またバッファ16を介することにより、SDバスインターフェースとバックエンドを非同期に制御することができる。
【0028】
NAND型フラッシュメモリ18は、例えば積層ゲート構造のメモリセル、又はMONOS構造のメモリセルにより構成されている。
【0029】
無線LAN信号処理部19では、無線LANの信号処理が行われる。無線通信I/F17aを介して制御される。
【0030】
ホスト20は、例えばデジタルカメラや携帯電話、パーソナルコンピュータなどが適用可能である。ホスト20は、ホストコントローラ21、CPU22、ROM23、RAM24、例えばハードディスク25(SSDを含む)により構成されている。これらはバスにより接続されている。
【0031】
CPU22は、ホスト全体を制御する。ROM23は、CPU22の動作に必要なファームウェアを記憶している。RAM24は、例えばCPU22の作業領域として使用されるが、CPU22が実行可能なプログラムもここにロードされ実行される。ハードディスク25は、各種データを保持する。ホストコントローラ21は、メモリデバイス11が接続された状態において、メモリデバイス11とのインターフェース処理を行う。さらに、CPU22の指示に従って、後述する各種コマンドを発行する。
【0032】
(ファームウェアの構成)
図2は、メモリデバイス11のROM14に記憶されたファームウェアの機能構成の一例を示している。これらの機能はコントローラ11aを構成するCPU13等の各ハードウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド処理部14a、フラッシュメモリ制御部14b、拡張レジスタ処理部14c、機能処理プログラム14dにより構成されている。拡張レジスタ処理部14cは、メモリデバイス11が起動された際、RAM15内に拡張レジスタ31を生成する。この拡張レジスタ31は、仮想レジスタであり、拡張機能を定義可能とされている。
【0033】
(拡張レジスタの構成)
図2に示すように、拡張レジスタ31は、例えば8ページにより構成されている、1ページは、512バイトにより構成されている。512バイトの拡張レジスタをバイト単位にアクセスするため、最低9ビットのアドレスが必要となり、8ページアクセスするために、最低3ビットのアドレスが必要となる。合計12ビットのアドレスにより、拡張レジスタの全空間がアクセス可能となる。
【0034】
512バイト単位とする理由は、多数のメモリカードホストコントローラが、1ブロック=512バイトを単位としてリード/ライト転送を行う構成になっているためである。無線LAN対応のホストコントローラであれば、1バイト単位のリード/ライトが可能であるが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホストコントローラで拡張機能を制御できるようにするためには、512バイト単位のアクセスが行えると都合が良い。
【0035】
8ページ(ページ0〜ページ7)の内、ページ0は、拡張機能のプラグ・アンド・プレイを行うために情報フィールドを記録しておくための領域である。ページ1〜ページ7は、拡張機能の情報が記録される。すなわち、例えばページ1には、通信機能を制御するための情報が記録され、ページ2には、通信対象のデータの受け渡しのための情報が記録される。ホスト20は、メモリデバイス11が有する機能を示すためのページ0に記載された情報から、メモリデバイス11が有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページ、がどのページであるのかを把握することができる。情報フィールドの詳細については後述する。
【0036】
拡張レジスタのリード/ライトは、以下に定義される専用のリード/ライトコマンドが用いられる。これらのコマンドは、拡張レジスタをリード/ライトする第1の動作モードと、データポートを構成する第2の動作モードを有している。
【0037】
(拡張レジスタのリードコマンド(CMD48))
図3は、拡張レジスタのリードコマンド(CMD48)のフィールド構成の一例を示している。“S”は、コマンドのスタートビットを示し、“T”は転送方向を示すビットであり、“index”は、コマンド番号を示している。“RS”(レジスタ・セレクト)は拡張レジスタ31内のページを示し、“OFS”は選択されたページ内におけるデータの位置(ページの先頭からのオフセット)を示している。3ビットの“RS”と、9ビットの“OFS”で、512バイトの拡張レジスタ8ページ分の空間をバイト単位に指定することができる。具体的には、選択された拡張レジスタ内のリード開始位置が“RS”と“OFS”により指定される。
【0038】
“LEN”はデータ長を示している。9ビットのLENフィールドにより、512バイトの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
【0039】
“CRC7”は、巡回冗長検査(cyclic redundancy check)コードを示し、“E”は、コマンドのエンドビットを示している。“rsv”は、予備のビットを示している。
【0040】
(拡張レジスタのリードコマンド、第1の動作モード)
図4は、第1の動作モードによる拡張レジスタのリード動作の例を示している。
【0041】
図4に示すように、メモリデバイス11は、ホスト20からコマンド(CMD48)を受け取ると、レスポンス(R1)をホスト20に返し、その後、拡張レジスタ31から512バイトのデータブロックを読み出す。
【0042】
具他的には、コマンド(CMD48)の引数で、拡張レジスタのページと、ページ内の読み出すべきデータの位置が、“RS”と“OFS”で指定され、データ長が“LEN”で指定される。このようにして指定された拡張レジスタ内のデータが、512バイトのデータブロックの先頭にセットされ、読み出される。512バイトのデータブロックのうち、“LEN”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはCRCコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置されているため、ホスト20は、有効データを探すために、データシフトなどの操作を行う必要がない。
【0043】
(拡張レジスタのリードコマンド、第2の動作モード)
図5は、第2の動作モードによるデータポートリードの動作の例を示している。
【0044】
メモリデバイス11は、このコマンド(CMD48)を受け取ると、レスポンス(R1)を返し、その後に512バイトのデータブロックを返す。
【0045】
コマンドの引数“RS”,“OFS”により、拡張レジスタの選択されたページ内の位置が指定される。データポートは、複数バイト割り当てることは可能であるが、1バイトで十分であるので、図5では“LEN=0”(レングスが1)の場合のデータポートの例が示されている。すなわち、データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけで良い。このデータポートに割り当てられたデバイスから1ブロック(512バイト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(512バイト単位)のデータをリードすることができる。この読み出されたデータは、例えばバッファ16に保持され、20のホストによって読み出される。
【0046】
続いて同じデータポートをリードすると、続きの512バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。512バイトのデータブロックの最後にCRCコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
【0047】
(拡張レジスタのライトコマンド(CMD49))
図6は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド(CMD49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“index”により区別される。3ビットの“RS”と、9ビットの“OFS”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。9ビットの“LEN”フィールドにより、512バイトの拡張レジスタに書き込むデータ長が指定される。したがって、512バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
【0048】
ライトコマンド(CMD49)は、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Mask”は、8ビット長のマスクレジスタを示している。このマスクレジスタにより、1バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、1バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が1バイトのとき、すなわち、“LEN=0”(レングス1)のとき有効となる。マスクレジスタ“Mask”のデータが“1”のビットは、データが書き込まれ、マスクレジスタ“Mask”のデータが“0”のビットは、既にセットされた値が保存される。
【0049】
すなわち、図7(a)に示すようなデータを保持している拡張レジスタを仮定した場合において、マスクレジスタのデータが、図7(b)に示すようである場合、ライトコマンドが実行されることにより、図7(c)に示すように、マスクレジスタのデータが“1”のビットはデータが書き込まれ、データが“0”のビットは、元のデータが保持される。このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書き換えることが可能となる。“x”で示す部分が、新しいデータが書き込まれたビットを示す。
【0050】
また、より長いマスクデータが別な手段によって供給できれば、LEN>1でもマスクライトが可能であるが、図6の例では、コマンド引数にマスクデータを割り当てているため、8ビットとしている。
【0051】
(拡張レジスタのライトコマンド、第1の動作モード)
図8は、第1の動作モードによる拡張レジスタのライト動作の例を示している。
【0052】
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
【0053】
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホスト20に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
【0054】
コマンド処理において、コマンドの引数“RS”、“OFS”により、拡張レジスタ内のページと位置が指定され、“LEN”によりデータ長が指定される。バッファ16に保持されたデータブロックのうち、先頭から“LEN”で指定して長さのデータが拡張レジスタに書き込まれる。“LEN”で指定されたデータ長を超えるデータブロック中のデータは無効データとして破棄される。
【0055】
有効データをデータブロックの先頭から配置することにより、ホストシステムは有効データをデータブロックの途中に配置する操作が不要となる。
【0056】
(拡張レジスタのライトコマンド、第2の動作モード)
図9は、第2の動作モードによるライトデータポートの動作の例を示している。
【0057】
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
【0058】
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
【0059】
コマンド処理において、コマンドの引数“RS”、“OFS”により、拡張レジスタ内のページと位置が指定されデータポートが指定される。データポートは、複数バイト割り当てることは可能であるが、1バイトで十分であるので、図9ではデータポートの使用例が示されている。データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけでよい。このデータポートに、バッファ16に保持された1ブロック(512バイト単位)のデータをある割り当てたデバイスにライトすることができる。すなわち、1回当たり、1ブロックのデータをライトすることができる。
【0060】
続いて同じデータポートをライトすると、続く512バイトのデータを割り当てたデバイスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。
【0061】
(ページ0の情報フィールドの使用例)
図10は、拡張レジスタ31のページ0に示された情報フィールドの例を示している。この情報フィールドにより、ホスト20が拡張機能を制御するドライバを特定できるようにすることにより、拡張機能を追加した場合において、ホストシステムが容易に拡張機能を使えることができ、プラグ・アンド・プレイを実現することができる。
【0062】
図10を参照して、標準のホストドライバが処理すべきシーケンス例を説明する。
【0063】
(ストラクチャレビジョン)
ストラクチャレビジョンは、拡張レジスタ31のページ0のフォーマットを定義するレビジョンである。デバイス情報フィールドに新しい情報を追加した場合、ストラクチャレビジョンを更新することにより、どのバージョンの情報フィールドを保持しているかを示す。以前のバージョンのホストドライバは、新しいフィールドを無視する。
【0064】
(データ長)
データ長は、ページ0に記録されている有効データ長を示している。
【0065】
(拡張機能数(=N))
拡張機能数は、デバイスが何個の拡張機能をサポートしているかを示している。ホストドライバは、起動時に、サポートしている機能数だけ繰り返し、各拡張機能用のドライバがインストールされているかどうかを調べる。
【0066】
(デバイスの情報領域)
デバイスの情報領域には、N個のデバイス(デバイス1〜デバイスN)の情報を記録することができる。各デバイスの情報を次に示す。
【0067】
(デバイス1機能識別コード)
デバイス1機能識別コードにおいて、このコードが設定してある場合、標準ドライバ用を用いることができることを示す。OSが標準ドライバをサポートしている場合、専用ドイバをインストールすることなく、このデバイスが使用できる。専用ドライバがインストールされている場合は、そちらの使用を優先する。非標準の機能は“0”を設定する。この場合は、専用ドライバによってのみこの機能は制御される。
【0068】
(デバイス1製造者識別情報、デバイス1機能識別情報)
デバイス1製造者識別情報、デバイス1機能識別情報は、専用ドライバを特定するための情報である。ホストドライバは、これらの情報をもとにデバイス1の専用ドライバがインストールされているかどうかを探す。識別し易いように、例えばASCII文字列で記載される。機能識別情報は、デバイスの型番、レビジョンなどが記載される。
【0069】
(次デバイスの先頭アドレス)
次デバイスの先頭アドレスは、次のデバイス情報が記載されているページ0内のアドレスを示している。ホストシステムがこのデバイスをサポートしていない場合、このデバイスは使用できないため、次のデバイスがチェックされる。これ以降のフィールドは可変長のため、この位置に定義している。
【0070】
(デバイス1アドレスポインタ1〜X、レングスフィールド1〜X)
デバイス1アドレスポインタ1〜X、レングスフィールド1〜Xは、ひとつの機能に複数の拡張レジスタ領域を定義できることを示している。それぞれのアドレスとレングスを下記に列挙する。
【0071】
(デバイス1アドレスポインタ1(開始アドレス)、レングス1)
デバイス1が使用する拡張レジスタの第1領域。拡張レジスタのページ1〜7の空間内の先頭アドレスと、使用する拡張レジスタ領域の大きさを示している。
【0072】
すなわち、1つのデバイスに、1つ又は複数の拡張レジスタ領域を割り付けることができ、アドレスポインタは、ページ0以外の任意の拡張領域の場所(開始アドレス)を示している。レングスは、ポインタを先頭アドレスとした拡張レジスタを占有する大きさを示している。
【0073】
(デバイス1アドレスポインタ2(開始アドレス)、レングス2)
デバイス1に割り当てられた拡張レジスタ内の第2領域の位置と領域の大きさを示している。これにより、例えば標準ドライバは、第1領域のみで制御するが、専用ドライバは、第1領域と第2領域を用いて効率良く制御することを可能にするなどの応用が可能となる。
【0074】
(デバイス1アドレスポインタX(開始アドレス)、レングスX)
デバイス1に割り当てられた第X領域の位置と領域の大きさを示している。
【0075】
このように、拡張レジスタ内に複数の領域を定義できる。各領域はオーバーラップしないように配置される。レングス情報によりオーバーラップがあるかどうかをチェックすることができる。
【0076】
追加フィールドが必要になった場合、これ以降に追加定義していく。新しいフィールドが認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視する。上記の(次デバイスの先頭アドレス)フィールドによりスキップすることができる。
【0077】
(無線LAN対応SDカード)
図11は、無線通信機能を有したメモリデバイス(SDカード)11の使用例を示している。メモリデバイス11は、ホストとしての例えばデジタルカメラ51、52や、サーバー53、パーソナルコンピュータ54、携帯電話55に装着される。
【0078】
無線通信機能を有したメモリデバイス11は、デジタルカメラ51とともに使用することにより、写真データを無線通信ネットワーク上で他のカメラ52に送信したり、他のカメラ52から受信したりすることが可能である。また、無線通信ネットワークを介して例えば外部のサーバー53に接続し、写真データをデジタルカメラ51からサーバー53に転送することも可能である。さらに、無線通信ネットワークを介して例えばパーソナルコンピュータ54や携帯電話55などの機器に接続し、写真データをデジタルカメラ51からこれらパーソナルコンピュータ54や携帯電話55に転送することができる。
【0079】
図12は、メモリデバイス11が有するインターフェース機能を示している。
【0080】
無線通信機能を有したメモリデバイス11は、メモリデバイス11を制御するホストデバイスとしての例えばデジタルカメラ51とのインターフェースとなるインターフェース機能と、デジタルカメラ51と他の電子機器、例えばカメラ52や、サーバー53、パーソナルコンピュータ54、テレビ56、プリンタ57などと無線LAN接続を行うネットワークインターフェースの機能を有している。
【0081】
前述したホストインターフェース(カードインターフェース)12は、SDA(SD Association)で規格化された“SD Specifications Part 1”と“SD Specifications Part 2”に従って、カード内のデータにFAT32経由でアクセス(読み書き)する機能を有するとともに、無線通信機能を有するカード特有のレジスタ(例えばWi−FiSDレジスタ)にアクセスする機能を有している。ここでWi−Fi SDレジスタのアクセスには、リードコマンド(CMD48)とライトコマンド(CMD49)が用いられる。リードコマンド(CMD48)は、前述したように、対象となるレジスタに対してデータをブロック単位で読み込むコマンドであり、ライトコマンド(CMD49)は対象となるレジスタからデータをブロック単位で書き込むコマンドである。
【0082】
本実施形態において、例えばホスト20がメモリデバイス11に対して、Wi−Fi SDカード特有のコマンドを発行する。又は、Wi−Fi SDカード特有のデータを書き込むためにライトコマンド(CMD49)を用いて、ホスト20がメモリデバイス11から、Wi−Fi SDカード特有のステータスやレスポンスを受け取る。またはWi−Fi SDカード特有のデータを読み込むためにリードコマンド(CMD48)を用いることを特徴とする。
【0083】
無線通信インターフェース17aは、物理層にIEEE802.11b/g/nを、ネットワーク層にIPv4やIPv6を、トランスポート層にTCPを、プレゼンテーション層にSSL/TLSを、アプリケーション層にHTTPやFTPをサポートすることを想定している。さらに、家庭内機器との通信のためDLNA(Digital Living Network Alliance)の機能を有する場合もある。
【0084】
メモリデバイス11が2つのインターフェースを持つことにより、デジタルカメラで作成した写真データ(JPEGやRAWフォーマット)や動画データ(MPEG−2 TSやMP4フォーマット)を、HTTPプロトコルをサポートするサーバーや機器に対して送信、又は受信することが可能になる。さらに、DLNAをサポートするサーバーや機器により、写真や動画の再生が可能となるとともに、印刷を行うことも可能となる。また、写真データや動画データだけでなく、ホストデバイスが作成するデータ(XMLデータやテキストデータ)を追加して送ることにより、ホストデバイスはサーバーや周辺機器と認証作業を行ったり、メタデータの送受信を行ったりすることが可能となる。
【0085】
図13は、Wi−Fi SDカードとホストデバイスの構成例を示している。
【0086】
前述したように、ホストデバイス20は、SDカード11を制御するためのホストコントローラ21を有し、前記カードインターフェースに従って、SDAで規格化された“SD Specifications Part 1”のコマンドと、Wi−Fi SDカード特有の制御を行うためのCMD48とCMD49のコマンドを発行することが可能である。
【0087】
SDカード11は、カードコントローラ11a、NANDメモリモジュール(NANDフラッシュメモリ)18、Wi−Fiネットワークモジュール(無線通信信号処理部19b)を有し、ホストコントローラ21から発行されたコマンドに従い動作する。一般的なSDカードにおいて、カードコントローラ11aは、NANDメモリモジュール18にアクセスし、データの読み出し、書き込みを行うことが可能である。本実施形態におけるWi−Fi SDカードは、NANDメモリモジュール18へのアクセス(読み書き)と、Wi−Fiネットワークモジュール19cへのアクセス、さらに、NANDメモリモジュール18に記録されたデータをWi−Fiネットワークモジュール19cへ内部転送を行う。もしくはWi−Fiネットワークモジュール19cのデータをNANDメモリモジュール18に内部転送を行うことが可能である。これにより、例えばNANDメモリモジュール18に記録された写真データをホストデバイス20の介在なしにWi−Fiネットワークモジュール19cが外部に送信することができる。つまり、ホストデバイス20はWi−Fiネットワークモジュール19cの複雑な制御を行う必要がない。
【0088】
さらに、写真データがカードインターフェースを経由せず内部転送されるため、転送速度を上げることができる。例えば、写真データの内部転送をカードコントローラ内部のDMA(Direct Memory Access)レジスタで制御すれば、ホストデバイス20とSDカード11とは独立して動作することが可能である。
【0089】
また、Wi−Fiネットワークモジュール19cのステータス情報や、外部ネットワークのサーバーからダウンロードしたデータなどを、ホストデバイス20が逐次管理することなく、自動的にNANDメモリモジュール18に直接記録することが可能である。
【0090】
図14は、SDカード11とホストデバイス20の別の構成例を示す。
【0091】
図14は、図13と異なり、SDカード11はWi−Fi機能を有さず、カードコントローラ11bとNANDメモリモジュール18で構成されている。また、ホストデバイス20は、Wi−Fi機能を有している。すなわち、ホストデバイス20は、ホストコントローラ21と、Wi−Fiネットワークモジュール19cと、リードコマンド(CMD48)とライトコマンド(CMD49)を分離するためのカードコントローラ25とを有している。
【0092】
この構成は、デジタルカメラがWi−Fi機能を有する場合において、図13と同じ制御方法でWi−Fiネットワークモジュール19cの制御が可能である。
【0093】
図15は、リードコマンド(CMD48)とライトコマンド(CMD49)でアクセスする拡張レジスタの例を示している。前述したように、拡張レジスタのページ0は、ページ1以降のページのインデックスとなっており、ホストデバイス20は、ページ0を読むことにより、カードがどのような機能を有しているか、そのサポートされている機能の規格のバージョン情報やプロファイル情報(オプショナル機能のうちどの機能がサポートされているか)、その機能を制御するためのドライバ情報(どのメーカーから提供されているドライバか、ドライバのバージョンが何であるか)などを知ることができる。例えば、あるカードがWi−Fi機能とともに、Bluetooth(登録商標)機能を有しているのであれば、Wi−Fi機能にアクセスするためのレジスタをページ1に割り当て、Bluetooth機能にアクセスするためのレジスタを例えばページ2に割り当てる。ホストデバイス20は必要に応じてページ1、2にアクセスし、それぞれの機能を同時に用いることが可能である。これにより、Wi−Fi機能を用いて外部のサーバーからデータをダウンロードしてカードに一旦記録し、Bluetooth機能を用いて周辺機器に転送して再生や表示するといった動作を実現することができる。
【0094】
図16は拡張レジスタをWi−Fi SDカードに用いた場合の例を示す。
【0095】
Wi−Fi SDカードは、その用途に応じて5種類の拡張レジスタで構成されている。Wi−Fi SDカード・コマンド・ライト・レジスタは、書き込み専用のレジスタでありホストデバイスからカードに対してコマンドを発行するときにアクセスされる。Wi−Fi SDカード・ステータス・レジスタは、読み込み専用のレジスタであり、ホストデバイスがカードのステータス情報を取得するときにアクセスされる。Wi−Fi SDカード・レスポンス・データ・レジスタは、読み込み専用のレジスタであり、ホストデバイスが外部サーバーからカードにダウンロードしたデータ(HTTPレスポンス・データ)を取得するときにアクセスされる。Wi−Fi SD カードID・リスト・レジスタは、読み込み専用のレジスタであり、そのカードに接続している(若しくは接続をリクエストしている)他のデバイスのIDのリストをホストデバイスが取得するときにアクセスされる。Wi−Fi SDカードSSID・ヒストリ・レジスタは、読み込み専用のレジスタであり、カードが過去に接続したSSID(若しくは接続しなかったが接続するようにリクエストされたSSID)のリストをホストデバイスが取得するときにアクセスされる。
【0096】
本実施形態は、これらのWi−Fi SDレジスタを拡張レジスタのページにそれぞれ割り当てるケースを説明する。先ず、ホストデバイス20は、リードコマンド(CMD48)を用いて拡張レジスタのページ0を読み、Wi−Fi SD機能がカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号(i、j、k、l、m)とWi−Fi SDレジスタの略称(WIFISDCR、WIFISDSR、WIFISDRD、WIFISDIL、WIFISDSH)のペアがページ0に記録されている。
【0097】
ホストデバイス20がカードに対してコマンドを発行する場合、コマンド発行用のレジスタであるWi−Fi SDカード・コマンド・ライト・レジスタに対してライトコマンド(CMD49)にて書き込みを行う。このとき、ページ0の情報から当該レジスタはページiにあることが分かっているため、CMD49の引数としてページiが指定される。同様にホストデバイス20がカードからステータス情報等を取得する場合、データ取得のためのレジスタであるWi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SD カードID・リスト・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタのいずれかより、リードコマンド(CMD48)にてデータを読み出す。このとき、CMD48の引数としては、それぞれのレジスタに対応するページ番号であるj、k、l、mが指定される。
【0098】
ここで、本実施形態において、書き込み用レジスタと読み込み用レジスタを別のページに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用となっているため、同じページに割り当てることも可能である。
【0099】
図17は、ホストデバイス20の起動時の動作を示している。
【0100】
ホストデバイス20は、起動されると、リードコマンド(CMD48)を発行し、拡張レジスタ31のページ0のデータを読み込み、SDカード11が有する拡張機能としての無線通信機能を確認する(ST11、ST12)。すなわち、SDカード11がWi−Fiや、Bluetooth など、どのような無線通信機能を実装しているかが確認される。次に、ホストデバイス20がSDカード11の拡張機能に対応しているかどうかが判別される(ST13)。この結果、拡張機能に対応している場合、その拡張機能を有効とさせるため、拡張レジスタ31のページi(iは0以外)のデータが読み込まれ(ST14)、SDカード11が対応する例えば規格名、バージョン、プロファイル、デバイス情報などが確認される(ST15)。これに基づき、ホストデバイス20は、ホストデバイス20が所有する最適なドライバを有効とする(ST16)。これにより、SDカード11の拡張機能にアクセスすることが可能となる。
【0101】
次に、拡張レジスタ31の全てのページの機能を確認したかどうかが判別される(ST17)。この結果、残りのページがある場合、次のページにおけるカードの機能が確認され(ST18、ST16)、全てのページが確認されている場合は、機能設定が終了される。
【0102】
(無線LAN設定)
図18は、無線LANの設定動作を示している。
【0103】
図18において、ホスト20は、先ず、SDカード11に対して、Wi−Fiのネットワークを検索するため、コマンド(CMD49)を発行する(S1)。このコマンド(CMD49)のデータに、Wi−Fiのネットワークを検索するため「ScanWiFi」コマンドが含まれている。この「ScanWiFi」コマンドは、拡張レジスタ31の例えばページiに書き込まれる。SDカード11のCPU13は、「ScanWiFi」コマンドに応じて、無線通信インターフェース17aを介して無線LAN信号処理部19aを起動し、無線LAN信号処理部19aは、ネットワークのアクセスポイントをスキャンする(S1−1)。このスキャン結果は、無線通信インターフェース17a、バッファ16、メモリインターフェース17bを介してNANDフラッシュメモリ18に「SSIDLIST」ファイルとして保存される(S1−2)。この「SSIDLIST」ファイルは、アクセス可能なアクセスポイントの名前(SSID)を含んでいる。NANDフラッシュメモリ18の「SSIDLIST」が更新されると、拡張レジスタ31のページjに設けられたWi−Fi SDカード・ステータス・レジスタのステータスが更新される。
【0104】
この間、ホスト20は、ポーリングにより、NANDフラッシュメモリ18のステータスが更新されているか判別する(S2)。具体的には、ホスト20は、コマンド(CMD48)によってWi−Fi SDカード・ステータス・レジスタのステータスを読み込み、SDカード11によるSSIDの走査が成功したかどうかを確認する。
【0105】
SSIDの走査が成功した場合、ホスト20は、メモリのリードコマンド(CMD18)により、NANDフラッシュメモリ18に保存された「SSIDLIST」ファイルを読み取る(S3)。
【0106】
この後、ホスト20は、「SSIDLIST」ファイル中のSSIDのうちの1つを選択し、コマンド(CMD49)を発行する。すなわち、このコマンド(CMD49)により、拡張レジスタ31のページiに「SetSSID」コマンドを書き込む。これによりホスト20は、SSIDをセットすることをSDカード11に要求する(S4)。
【0107】
次いで、ホスト20は、コマンド(CMD49)によって、拡張レジスタ31のページiに「StartApplication」コマンドを書き込む。これにより、ホスト20は、SDカード11に無線LANアプリケーションの動作開始を要求する(S5)。
【0108】
SDカード11は、「StartApplication」コマンドに応じて無線LAN信号処理部19aを介して、ネットワークとの通信を可能とするため、アクセスポイントにアソシエーションを要求する(S5−1)。アクセスポイントからのアソシエーション応答を受信した場合、SDカード11は、DHCP(Dynamic Host Configuration Protocol)により、アクセスポイントからIPアドレスを取得し、通信の準備を行う(S5−2)。通信の準備が完了すると、拡張レジスタ31のページjに設けられたWi−Fi SDカード・ステータス・レジスタのステータスが更新される。
【0109】
この間、ホスト20は、ポーリングにより、ステータスが更新されたかどうかを判断する(S6)。具体的には、ホスト20は、コマンド(CMD48)によってWi−Fi SDカード・ステータス・レジスタのステータスを読み込み、ステータスが更新されたかどうかを判断する。ステータスが更新された場合、SDカード11とアクセスポイントとの通信が開始され、例えばホスト20を介在せず、ネットワークよりSDカード11にデータを取得することができる。
【0110】
(HTTP送信)
次に、コマンド(CMD48、49)を利用して、HTTP通信を行う場合について説明する。
【0111】
本実施形態は、サーバー・アップロード・コマンドとして、例えば「SendHttpMessage」[「SendHttpFile」「SendHttpMessageByRegister」「SendHttpFileByRegister」が用意されている。これらコマンドは、コマンド(CMD49)により、拡張レジスタ31のページiに設けられたWi−Fi SDカード・コマンド・ライト・レジスタに登録される。コマンド「SendHttpMessage」「SendHttpFile」は、データサイズが例えば512バイトより大きいHTTP通信に、FATファイルシステムを用いて使用される。また、「SendHttpMessageByRegister」「SendHttpFileByRegister」は、データサイズが例えば512バイトより小さいHTTP通信に、FATファイルシステムを用いずに使用される。
【0112】
上述したように、拡張レジスタ31のアクセスは、コマンド(CMD48,49)により、512バイトのブロック長によるアクセスが可能である。しかし、通常のSDカード11のファイルシステムに対するアクセスは、リードコマンド(CMD18)、ライトコマンド(CMD25)を用いたマルチブロックのアクセスが可能である。このため、大容量のHTTP通信を行う場合、SDカード11のアクセスコマンドを用いてデータをSDカード11に転送することにより、効率の良い処理が望まれている。
【0113】
すなわち、ファイルをサーバーなどに転送する場合において、HTTPリクエストのサイズが増大する。また、転送ファイルに付属するメタ情報、すなわち、データについてのデータは、ホストデバイスの機能、又は要求に依存する部分が大きい。このため、HTTPリクエストのフォーマットは、ホストにとって自由度が高いことが望まれる。したがって、本実施形態において、HTTPリクエストの情報は、ホストが設定し、HTTPプロトコル処理は、SDカードが行うようにし、ホストデバイスの負担軽減を図っている。
【0114】
また、小容量のHTTP通信を行う場合、コマンド(CMD49)のみにより、容易且つ高速な通信が望まれている。
【0115】
送信コマンドのフォーマットは、次の通りである。
【0116】
SendHttpMessage(hostname,messageFileName)
SendHttpFile(hostname,messageFileName,appendFileName)
SendHttpMessageByRegister(hostname,message)
SendHttpFileByRegister(hostname,appendFileName,message)
以下、各コマンドの動作について説明する。
【0117】
(コマンド「SendHttpMessage」の動作)
図19は、コマンド「SendHttpMessage」の動作を示している。コマンド「SendHttpMessage」は、大容量のHTTP通信をネットワークにて送受信する場合に使用される。このコマンド「SendHttpMessage」は、引数としてホスト名「hostname」とHTTPリクエストのメッセージを保存したファイルのファイル名「messageFileName」を有している。
【0118】
図18のステップS5,S6に示すように、無線通信が開始された状態において、HTTP通信を行う場合、ホスト20は、SDカード11のライトコマンド(CMD25)を発行し、HTTPリクエストファイルをSDカード11に送る。SDカード11のCPU13は、ライトコマンド(CMD25)に応じて、HTTPリクエストファイルをNANDフラッシュメモリ18に書き込む(S7)。
【0119】
次に、ホスト20は、コマンド(CMD49)を発行し、コマンド「SendHttpMessage」をSDカード11に送る。SDカード11のCPU13は、コマンド(CMD49)に基づき、拡張レジスタ31のページiに設けられたWi−Fi SDカード・コマンド・ライト・レジスタにコマンド「SendHttpMessage」を登録する(S8)。
【0120】
この後、SDカード11のCPU13は、拡張レジスタに登録されたコマンド「SendHttpMessage」に基づき、NANDフラッシュメモリ18に書き込まれたHTTPリクエストファイルを読み出し、無線LAN信号処理部19aを介して、HTTPリクエストファイルをネットワーク上に送信する(S8−1)。
【0121】
次いで、SDカード11のCPU13は、無線LAN信号処理部19aを介して、HTTPレスポンスを受信した場合、このHTTPレスポンスをNANDフラッシュメモリ18にファイルとして保存する(S8−2)。
【0122】
受信したレスポンスファイルは、NANDフラッシュメモリ18の予め定められたダウンロードのディレクトリに保存される。保存されるファイルの名前には、例えばコマンド(CMD49)により発行されたコマンドにて指定されたシーケンス番号が付加される。
【0123】
さらに、CPU13は、HTTPレスポンスを受信した場合、拡張レジスタ31のページjに設けられたWi−Fi SDカード・ステータス・レジスタのステータスを更新する。
【0124】
一方、ホスト20は、ポーリングにより、Wi−Fi SDカード・ステータス・レジスタのステータスが更新されたかどうかを判断する。すなわち、ホスト20は、コマンド(CMD48)を発行し、Wi−Fi SDカード・ステータス・レジスタのステータスを読み出し、ステータスが更新されたかどうかを判断する(S9)。
【0125】
Wi−Fi SDカード・ステータス・レジスタのステータスが更新されたものと判断された場合、ホスト20は、SDカード11のリードコマンド(CMD18)を発行する。SDカード11のCPU13は、このリードコマンド(CMD18)に基づき、NANDフラッシュメモリ18からHTTPレスポンスのファイルを読み出し、ホスト20に転送する(S10)。
【0126】
HTTPレスポンスのファイルがホスト20に転送されると、ホスト20からエンドアプリケーションが発行され、アプリケーションの動作が終了される(S11)。
【0127】
上記送信コマンドを用いることにより、大容量のHTTPファイルを効率良く、サーバーに転送することができる。
【0128】
本実施形態は、拡張レジスタ31のみでHTTP通信の全てを行うのではなく、NANDフラッシュメモリ18のFAT領域を使用することによって、HTTPリクエストや、HTTPレスポンスを送受信することができる。
【0129】
(コマンド「SendHttpFile」の動作)
図20は、上記コマンド「SendHttpFile」の動作を示している。このコマンド「SendHttpFile」は、例えばSDカード11内の画像ファイルをネットワークに送信する場合に用いられる。このコマンド「SendHttpFile」は、引数として例えばホスト名「hostname」、メッセージファイル名「messageFileName」、SDカード11内の例えば画像ファイルの名前を示すアペンドファイル名「appendFilename」を有している。
【0130】
この例の場合、図20に示すように、ホスト20は、先ず、例えばライトコマンド(CMD25)を発行し、ネットワークに転送すべき画像ファイルをSDカード11に転送する(S21)。SDカード11のCPU13は、ライトコマンド(CMD25)に基づき、画像ファイルをNANDフラッシュメモリ18に書き込む。
【0131】
次に、ホスト20は、ライトコマンド(CMD25)を発行し、HTTPリクエストファイルをSDカード11に転送する(S22)。HTTPリクエストの内容は、例えばNANDフラッシュメモリ18内の画像ファイルをサーバーにアップロードすることであり、メタ情報として、NANDフラッシュメモリ18内の画像ファイルの例えば名前や時間情報などが定義されている。SDカード11は、ライトコマンド(CMD25)に基づき、HTTPリクエストをNANDフラッシュメモリ18に書き込む。
【0132】
この後、ホスト20は、コマンド(CMD49)を発行し、HTTP通信のコマンド「SendHttpFile」をSDカード11に転送する(S23)。SDカード11のCPU13は、コマンド(CMD49)に基づき、コマンド「SendHttpFile」を、拡張レジスタ31のページiに設けられたWi−Fi SDカード・コマンド・ライト・レジスタに登録する。
【0133】
さらにSDカード11のCPU13は、拡張レジスタに登録されたコマンド「SendHttpFile」に基づき、NANDフラッシュメモリ18に書き込まれたHTTPリクエストファイルを読み出し、このHTTPリクエストファイルの予め定義された文字列を、NANDフラッシュメモリ18から読み出した画像ファイルの情報に置き換えて無線LAN信号処理部19aからネットワーク上に送信する(S23−1)。
【0134】
次いで、SDカード11のCPU13は、無線LAN信号処理部19aを介して、HTTPレスポンスを受信した場合、このHTTPレスポンスをNANDフラッシュメモリ18にファイルとして保存する(S23−2)。
【0135】
SDカード11のCPU13は、HTTPレスポンスを受信した場合、拡張レジスタ31のページjに設けられたWi−Fi SDカード・ステータス・レジスタのステータスを更新する。
【0136】
一方、ホスト20は、ポーリングにより、Wi−Fi SDカード・ステータス・レジスタのステータスが更新されたかどうかを判断する。すなわち、ホスト20は、コマンド(CMD48)を発行し、Wi−Fi SDカード・ステータス・レジスタのステータスを読み出し、ステータスが更新されたかどうかを判断する(S24)。
【0137】
Wi−Fi SDカード・ステータス・レジスタのステータスが更新されたものと判断された場合、ホスト20は、SDカード11のリードコマンド(CMD18)を発行する。SDカード11のCPU13は、このリードコマンド(CMD18)に基づき、NANDフラッシュメモリ18からHTTPレスポンスのファイルを読み出し、ホスト20に転送する(S25)。
【0138】
上記送信コマンドを用いることにより、SDカード11内の画像ファイルを効率良く、サーバーに転送することができる。
【0139】
(コマンド「SendHttpMessageByRegister」の動作)
図21は、コマンド「SendHttpMessageByRegister」の動作を示している。
【0140】
コマンド「SendHttpMessageByRegister」は、HTTP通信のデータサイズが小さい場合に使用される。大容量のHTTP通信を行うコマンド「SendHttpMessage」「SendHttpFile」は、HTTPリクエストファイルをライトコマンド(CMD25)によりNANDフラッシュメモリ18に記録し、コマンド(CMD49)により、コマンド「SendHttpMessage」又は「SendHttpFile」を拡張レジスタに登録した。これに対して、コマンド「SendHttpMessageByRegister」は、コマンド(CMD49)のみで動作可能としている。
【0141】
コマンド「SendHttpMessageByRegister」は、引数として「hostname」及び「message」を有している。この「message」にHTTPリクエスト(HTTPのヘッダー情報)が文字列として記載される。
【0142】
図21に示すように、HTTP通信を行う場合、ホスト20は、コマンド(CMD49)を発行する(S31)。このコマンド(CMD49)のデータに、コマンド「SendHttpMessageByRegister」が記載される。
【0143】
SDカード11のCPU13は、コマンド(CMD49)に基づき、コマンド「SendHttpMessageByRegister」を拡張レジスタ31のページiに設けられたWi−Fi SDカード・コマンド・ライト・レジスタに登録する。
【0144】
さらにSDカード11のCPU13は、拡張レジスタに登録されたコマンド「SendHttpMessageByRegister」に基づき、HTTPリクエストを、無線LAN信号処理部19aからネットワーク上に送信する(S31−1)。
【0145】
次いで、SDカード11のCPU13は、無線LAN信号処理部19aを介して、HTTPレスポンスを受信した場合、このHTTPレスポンスを拡張レジスタ31のページkに設けられたWi−Fi SDカード・レスポンス・レジスタに保存する(S31−2)。
【0146】
一方、ホスト20は、コマンド(CMD48)を発行し、Wi−Fi SDカード・レスポンス・レジスタからHTTPレスポンスを読み出し、ファイルとして保存する(S32)。
【0147】
上記送信コマンドを用いることにより、小容量のHTTP通信を効率良く行うことができる。
【0148】
(コマンド「SendHttpFileByRegister」の動作)
図22は、コマンド「SendHttpFileByRegister」の動作を示している。
【0149】
コマンド「SendHttpFileByRegister」もHTTP通信の送信するデータファイル以外のHTTPリクエストのデータサイズが小さい場合に使用される。要求としては、SDカード11内に保存されているファイルを例えばサーバーにアップロードすることである。しかし、サーバーへの送信フォーマットはファイルのみでは送信できず、HTTPリクエストのヘッダー情報やメタ情報の付属が必要となる。そのため、HTTPのリクエストメッセージに予め定義された文字列が定義される。SDカード11は、ホスト20から転送された送信要求に基づき、HTTPリクエストメッセージの予め定義された文字列を指定されたファイルの情報に置き換えて送信する。
【0150】
コマンド「SendHttpFileByRegister」は、引数としてホスト名「hostname」、アペンドファイル名「appendFileName」、及びメッセージ「message」を有している。「appendFileName」に、NANDフラッシュメモリ18内の画像ファイル名が記載され、「message」にHTTPリクエスト(HTTPのヘッダー情報)が文字列として記載される。
【0151】
図22に示すように、ホスト20は、先ず、例えばライトコマンド(CMD25)を発行し、ネットワークに転送すべき画像ファイルをSDカード11に転送する(S41)。SDカード11のCPU13は、ライトコマンド(CMD25)に基づき、画像ファイルをNANDフラッシュメモリ18に書き込む。
【0152】
次に、ホスト20は、コマンド(CMD49)を発行する(S42)。このコマンド(CMD49)のデータに、コマンド「SendHttpFileByRegister」が記載される。
【0153】
SDカード11のCPU13は、コマンド(CMD49)に基づき、コマンド「SendHttpFileByRegister」を拡張レジスタ31のページiに設けられたWi−Fi SDカード・コマンド・ライト・レジスタに登録する。
【0154】
さらにSDカード11のCPU13は、拡張レジスタに登録されたコマンド「SendHttpFileByRegister」のアペンドファイル名に基づき、NANDフラッシュメモリ18から読み出したファイルを読み出し、HTTPリクエストのメッセージ中に予め定義された文字列を、読み出したファイルに置き換えて無線LAN信号処理部19aからネットワーク上に送信する(S41−1)。
【0155】
次いで、SDカード11のCPU13は、無線LAN信号処理部19aを介して、HTTPレスポンスを受信した場合、このHTTPレスポンスを拡張レジスタ31のページkに設けられたWi−Fi SDカード・レスポンス・レジスタに保存する(S42−2)。
【0156】
一方、ホスト20は、コマンド(CMD48)を発行し、Wi−Fi SDカード・レスポンス・レジスタからHTTPレスポンスを読み出し、ファイルとして保存したり処理を行う(S43)。
【0157】
上記実施形態によれば、大容量のHTTPリクエストや画像データを送受信する場合、ホスト20は、HTTPリクエストの情報を設定し、SDカード11のアクセスコマンドを用いてデータをSDカード11のNANDフラッシュメモリに転送し、さらに、コマンド(CMD49)により、大容量用のHTTP通信コマンドとしての「SendHttpMessage」、又は「SendHttpFile」を拡張レジスタ31に保存し、HTTPプロトコル処理は、SDカード11が行っている。したがって、ホスト20の負担を軽減する事が可能である。
【0158】
すなわち、例えばネットワークにファイルを送信する場合、各種ソーシャルネットワークサービスや写真共有サイト等のフォーマットの違いを、ホスト20がHTTPメッセージよって設定している。このため、SDカード11は、送信先のサービスを区別すること無くHTTPリクエストと付加情報とを一緒に、サーバーに送信することが可能である。
【0159】
また、ホスト20は、HTTPのリクエスト情報を作成する場合、SDカード11内のファイルシステムのファイルを読み込み、ファイルの情報と各種サービスに依存した付加情報をまとめて改めてHTTPリクエストデータのファイルを作成する必要がない。つまり、ホスト20は、HTTPリクエストに必要な付加情報のみを作成し、SDカード11は、拡張レジスタ31経由の送信コマンドの情報でSDカード11内に保存されているファイルのパスを設定することにより、所望のHTTPリクエストを生成することが可能である。したがって、ホスト20及びSDカード11の処理を容易化することができる。
【0160】
さらに、大容量のデータをNANDフラッシュメモリ18に保存することにより、SDカード11は、処理に必要なメモリ容量を低減できる利点を有している。
【0161】
また、小容量のHTTP通信を行う場合、ホスト20は、コマンド(CMD49、CMD8)のみにより、HTTPリクエストや、送信コマンド「SendHttpMessageByRegister」、「SendHttpFileByRegister」を拡張レジスタ31に転送し、SDカード11により、HTTPプロトコル処理を行っている。このため、ホスト20とSDカード11間で、ファイルシステムに関する不整合が発生しないため、転送データサイズが小さい場合において、有効なデータの受け渡しが可能である。
【0162】
尚、SDカードが設定によりHTTPレスポンスのヘッダー部を自動的に削除可能とすることにより、ホストデバイスは、HTTPプロトコルで受信した所望のHTML、XML、その他JPEG画像等を容易に取得することが可能である。したがって、SDカードのホストデバイスは、一般的なTCP/IP等の処理を行うこと無く、所望のファイルを取得することができる。
【0163】
また、「SendHttpMessage」コマンドには、HTTP通信の対象となるサーバーのDNS(Domain Name System)で解決可能な名前やIPアドレスを含んでもよい。
【0164】
また、ネットワークへのアクセスプロトコルとしてSSL/TLSを使用したHTTPSアクセスを行うコマンド「SendHttpSSLMessage」、「SendHttpSSLFile」、「SendHttpSSLMessageByRegister」、「SendHttpSSLFileByRegister」を用いてセキュリティ要求があるサーバーへのログインや認証を行うことも可能である。これらコマンド「SendHttpSSLMessage」、「SendHttpSSLFile」、「SendHttpSSLMessageByRegister」、「SendHttpSSLFileByRegister」のホストとSDカードとのシーケンスは、「SendHttpMessage」、「SendHttpFile」、「SendHttpMessageByRegister」、「SendHttpFileByRegister」と同様である。
【0165】
さらに、拡張レジスタは、複数ページに限定されるものではなく、1ページとし、1ページ内で、上記ページ0とページ1〜7に対応する領域を設定することも可能である。
【0166】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0167】
11…メモリデバイス、13…CPU、14…ROM、15…RAM、16…バッファ、18…NAND型フラッシュメモリ、19a…無線LAN信号処理部、19…Wi−Fiネットワークモジュール、20…ホスト、21…ホストコントローラ、22…CPU、31…拡張レジスタ。

【特許請求の範囲】
【請求項1】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
前記制御部により制御される無線通信機能部と、
前記メモリに設けられ、前記無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する拡張レジスタと、を具備し、
前記制御部は、ホストから供給されたHTTPリクエストを前記不揮発性半導体記憶装置にファイルとして記憶させ、ホストから供給された第1のコマンドに基づき、第1のコマンドと共に送られたHTTPの送信コマンドを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたHTTPリクエストを前記無線機能部により送信させることを特徴とするメモリシステム。
【請求項2】
前記制御部は、前記無線機能部がHTTPレスポンスを受信した場合、前記HTTPレスポンスを前記不揮発性半導体記憶装置にファイルとして記憶させ、前記拡張レジスタのステータスを更新することを特徴とする請求項1記載のメモリシステム。
【請求項3】
前記制御部は、ホストから供給された第2のコマンドに基づき、前記拡張レジスタの前記ステータスを読み込み、前記ステータスが更新されていた場合、前記不揮発性半導体記憶装置に記憶された前記HTTPレスポンスのファイルを読み出すことを特徴とする請求項2記載のメモリシステム。
【請求項4】
前記制御部は、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたHTTPリクエストの一部で前記不揮発性半導体記憶装置に記憶されたファイルを指定し、前記無線機能部により送信させることを特徴とする請求項1記載のメモリシステム。
【請求項5】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
前記制御部により制御される無線通信機能部と、
前記メモリに設けられ、前記無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する拡張レジスタと、を具備し、
前記制御部は、ホストから供給された第1のコマンドに基づき、第1のコマンドと共に送られたHTTPの送信コマンドとHTTPリクエストを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記HTTPリクエストを前記無線機能部により送信させることを特徴とするメモリシステム。
【請求項6】
前記制御部は、前記拡張レジスタに登録された前記送信コマンドに基づき、前記HTTPリクエストの一部で前記不揮発性半導体記憶装置に記憶されたファイルを指定し、前記無線機能部により送信させることを特徴とする請求項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

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2012−168866(P2012−168866A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−30849(P2011−30849)
【出願日】平成23年2月16日(2011.2.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】