(57)【特許請求の範囲】
【請求項１】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御し、ファイルシステムを管理する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
前記制御部により制御される無線通信機能部と、
前記メモリに設けられ、前記無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する拡張レジスタと、を具備し、
前記制御部は、ホストから供給されたＨＴＴＰリクエストを前記不揮発性半導体記憶装置にファイルとして記憶させ、ホストから供給された第１のコマンドに基づき、第１のコマンドと共に送られたＨＴＴＰの送信コマンドを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたファイルとしてのＨＴＴＰリクエストを前記無線機能部により送信させることを特徴とするメモリシステム。
【請求項２】
前記制御部は、前記無線機能部がＨＴＴＰレスポンスを受信した場合、前記ＨＴＴＰレスポンスを前記不揮発性半導体記憶装置にファイルとして記憶させ、前記拡張レジスタのステータスを更新することを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記制御部は、ホストから供給された第２のコマンドに基づき、前記拡張レジスタの前記ステータスを読み込み、前記ステータスが更新されていた場合、前記不揮発性半導体記憶装置に記憶された前記ＨＴＴＰレスポンスのファイルを読み出すことを特徴とする請求項２記載のメモリシステム。
【請求項４】
前記制御部は、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたＨＴＴＰリクエストの一部で前記不揮発性半導体記憶装置に記憶されたファイルを指定し、前記無線機能部により送信させることを特徴とする請求項１記載のメモリシステム。
【請求項５】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
前記制御部により制御される無線通信機能部と、
前記メモリに設けられ、前記無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する拡張レジスタと、を具備し、
前記制御部は、ホストから供給された第１のコマンドに基づき、第１のコマンドと共に送られたＨＴＴＰの送信コマンドとＨＴＴＰリクエストを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記ＨＴＴＰリクエストを前記無線機能部により送信させることを特徴とするメモリシステム。
【請求項６】
前記制御部は、前記拡張レジスタに登録された前記送信コマンドに基づき、前記ＨＴＴＰリクエストの一部で前記不揮発性半導体記憶装置に記憶されたファイルを指定し、前記無線機能部により送信させることを特徴とする請求項５記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、無線通信機能を有するメモリシステムに関する。
【背景技術】
【０００２】
無線通信機能や、無線ＬＡＮ機能を備えたＳＤカードが開発されている。無線ＬＡＮ機能を備えたＳＤカードはホストが自由にネットワークと通信できる方法がなく、ＳＤカードの無線機能が独自に通信をするのみである。また、無線機能のみを有するＳＤＩＯカードは、無線ＬＡＮを使った通信を行うアプリケーションを作るときに必要とされるＴＣＰ／ＩＰ通信のプロトコルに関するプログラムをまとめて１つのプログラム群としたＴＣＰスタックを持っていない。このため、ホストに複雑な処理を要求していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３２９１８０号公報
【特許文献２】特開２００９−１２４３０２号公報
【非特許文献】
【０００４】
【非特許文献１】Part 1 Physical Layer Simplified Specification Ver3.01  May 18, 2010（ＵＲＬ：ｈｔｔｐ：//ｗｗｗ.ｓｄｃａｒｄ.ｏｒｇ/ｈｏｍｅ/）
【非特許文献２】Part E1 SDIO Simplified Specification Ver2.00  Feb. 8, 2007（ＵＲＬ：ｈｔｔｐ：//ｗｗｗ.ｓｄｃａｒｄ.ｏｒｇ/ｈｏｍｅ/）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、ホストが容易にデータの送受信を行うことが可能なメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリシステムは、不揮発性半導体記憶装置と、制御部と、メモリと、無線通信機能部と、拡張レジスタとを含んでいる。制御部は、不揮発性半導体記憶装置を制御し、ファイルシステムを管理する。メモリは、制御部に接続された作業エリアである。無線通信機能部は、制御部により制御される。拡張レジスタは、メモリに設けられ、無線通信機能部の無線通信機能を定義可能な一定のデータ長を有している。前記制御部は、ホストから供給されたＨＴＴＰリクエストを前記不揮発性半導体記憶装置にファイルとして記憶させ、ホストから供給された第１のコマンドに基づき、第１のコマンドと共に送られたＨＴＴＰの送信コマンドを前記拡張レジスタに登録し、前記拡張レジスタに登録された前記送信コマンドに基づき、前記不揮発性半導体記憶装置に記憶されたファイルとしてのＨＴＴＰリクエストを前記無線機能部により送信させる。
【図面の簡単な説明】
【０００７】
【図１】実施形態に適用されるメモリシステムを概略的に示す構成図。
【図２】図１に示すメモリシステムのファームウェの一例を示す構成図。
【図３】拡張レジスタのリードコマンドの一例を示す構成図。
【図４】リードコマンドによる拡張レジスタのリード動作を示すタイミング図。
【図５】リードコマンドによるデータポートのリード動作を示すタイミング図。
【図６】拡張レジスタのライトコマンドの一例を示す構成図。
【図７】図７（ａ）（ｂ）（ｃ）はマスクレジスタの動作を示す図。
【図８】ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。
【図９】ライトコマンドによるデータポートのライト動作を示すタイミング図。
【図１０】拡張レジスタの先頭ページに設定される情報フィールドの一例を示す図。
【図１１】無線ＬＡＮ（Local Area Network）を有したＳＤカードの使用例を示す構成図。
【図１２】メモリデバイスが有するインターフェース機能を示す図。
【図１３】Ｗｉ−Ｆｉ  ＳＤカードとホストデバイスの構成例を示す図。
【図１４】ＳＤカードとホストデバイスの別の構成例を示す。
【図１５】リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）でアクセスする拡張レジスタの例を示す図。
【図１６】拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合の例を示す図。
【図１７】ホストデバイスの起動時の動作を示す図。
【図１８】無線ＬＡＮの設定動作を示す図。
【図１９】ＨＴＴＰ通信の動作の例を示す図。
【図２０】ＨＴＴＰ通信の動作の他の例を示す図。
【図２１】ＨＴＴＰ通信の動作の他の例を示す図。
【図２２】ＨＴＴＰ通信の動作の他の例を示す図。
【発明を実施するための形態】
【０００８】
近年、各種電子機器（特に携帯型ディジタル機器）間で、無線通信によるデータ通信が可能とされている。各種電子機器としては、パーソナルコンピュータや、例えばＰＤＡ（Personal Digital Assistant）と呼ばれる携帯情報端末、携帯電話、携帯型オーディオ機器、あるいはデジタルカメラなどが含まれる。
【０００９】
これら電子機器間で、無線通信によりデータ通信が可能であれば、ケーブルによる接続が不要となるため利便性を向上できる。特に、無線ＬＡＮ（Local Area Network）システムの普及に伴い、パーソナルコンピュータや、組み込み機器応用のみならず、デジタルカメラなどでメモリとして使用されるＳＤカードにおいても無線ＬＡＮシステムが導入されるようになってきている。
【００１０】
ＳＤカードにおいて、このような機能を実現するため、ＳＤメモリカードは、フラッシュメモリの他、ホストと物理的に接続するためのインターフェース、アンテナ、高周波処理部（無線信号の送受信を行う処理部）、ベースバンド処理部（ベースバンド信号を処理する処理部）等の構成要素を実装する必要がある。
【００１１】
このような無線ＬＡＮ機能を備えたＳＤカードにおいて、無線ＬＡＮ機能を制御するための手順は、ＳＤカードメーカーの実装に依存しているため、一意に定まっていない。さらに、制御手順をどのように実装するかが課題となっている。
【００１２】
また、通信機能を備えたＳＤカードは、無線ＬＡＮ以外の方式の通信機能が備えられることも考えられる。この場合、ホストは、ＳＤカードにどのような機能が備えられているかを知る手段がなければ、ＳＤカードの機能を用いることが出来ない。
【００１３】
そこで、本実施形態は、例えばデジタルカメラなどにおいて広くメモリとして用いられているＳＤカードに関して、本来のメモリ以外の拡張機能を把握するための手段を提示する。さらに、本来のメモリ以外の機能に対する制御手順を提示する。特に、ＳＤメモリのコマンド体系において、無線ＬＡＮなどを制御することを可能とする。これによって、デジタルカメラなどのホストとしてのデジタル機器と、親和性の高い無線機能などを搭載したＳＤカードを提供する。
【００１４】
無線通信機能や、無線ＬＡＮ機能を備えたＳＤカードが開発されている。これらのカードは、ＳＤカードの中に独自の無線機能を収容し、独自に追加した機能のみに対応した制御が行えれば良かった。しかし、無線通信機能は多岐に亘るため、全ての無線通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足してしまう。
【００１５】
このため、本実施形態は、ＳＤカード内に、複数ページにより構成される拡張レジスタ（Extension Register）を設け、この拡張レジスタをＳＤメモリのコマンド仕様の１つであるコマンドＣＭＤ４８、ＣＭＤ４９を用いて、リード又はライト可能とする。ＣＭＤ４８は、対象とするレジスタからデータをブロック単位で読み出すためのコマンドであり、ＣＭＤ４９は、対象とするレジスタにデータをブロック単位で書き込むコマンドである。拡張レジスタは、例えばＳＤカードが有する機能を示すためのページと、ＳＤカードが有する通信機能を制御するためのページと、通信対象のデータの受け渡しに用いるページとを有している。
【００１６】
さらに、拡張レジスタを用いることにより、ホストにより容易にＨＴＴＰ(Hypertext Transfer Protocol)通信を可能としている。
【００１７】
（実施形態）
以下、実施の形態について、図面を参照して説明する。
【００１８】
図１は、本実施形態に係るメモリシステムを概略的に示している。
【００１９】
メモリシステムは、例えばＳＤカードのようなメモリデバイス１１と、ホスト２０により構成される。メモリデバイス１１はＳＤカードとも言う。また、ホスト１１はホストデバイスとも言う。
【００２０】
メモリデバイス１１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリデバイス１１は、カードコントローラ１１ａを有している。
【００２１】
カードコントローラ１１ａは、例えばホストインターフェース（Ｉ／Ｆ）１２、ＣＰＵ１３、ＲＯＭ（Read only Memory）１４、ＲＡＭ（Random Access Memory）１５、バッファ１６、無線インターフェース（Ｉ／Ｆ）１７ａ、メモリインターフェース（Ｉ／Ｆ）１７ｂにより構成されている。これらは、バスにより接続されている。メモリインターフェース１７ｂには、例えばＮＡＮＤ型フラッシュメモリ１８が接続されている。無線通信インターフェース１７ａには、拡張機能部としての無線ＬＡＮ信号処理部１９ａが接続されている。この無線ＬＡＮ信号処理部１９ａには、高周波信号を送受信するアンテナＡＴａが接続されている。
【００２２】
尚、拡張機能部は、無線ＬＡＮ信号処理部１９ａに限らず、その他の無線通信信号処理部１９ｂ、及びこの無線通信信号処理部１９ｂに接続されたアンテナＡＴｂなどを増設し、マルチファンクションのＳＤカードを構成することが可能である。例えば、無線ＬＡＮ信号処理部１９ａは、例えばＷｉ−Ｆｉ（登録商標）による無線通信機能を制御し、無線通信信号処理部１９ｂは、例えばＴｒａｎｓｆｅｒＪｅｔ（登録商標）による近接無線通信機能を制御する。
【００２３】
ホストインターフェース１２は、カードコントローラ１１ａとホスト２０との間のインターフェース処理を行う。
【００２４】
一方、無線通信インターフェース１７ａは、無線ＬＡＮ信号処理部１９ａや無線通信信号処理部１９ｂとの間のインターフェース処理を行う。メモリインターフェース１７ｂは、カードコントローラ１１ａとＮＡＮＤ型フラッシュメモリ１８との間のインターフェース処理を行う。
【００２５】
ＣＰＵ１３は、メモリデバイス１１全体の動作を司るものである。このＣＰＵ１３を制御するプログラムは、ＲＯＭ１４の中に格納されているファームウェア（制御プログラム等）を用いるかあるいは、ＲＡＭ１１５上にロードして所定の処理を実行する。すなわち、ＣＰＵ１３は、各種のテーブルや後述する拡張レジスタをＲＡＭ１８上に作成したり、ホスト２０からライト（書き込み）コマンド、リード（読み出し）コマンド、イレース（消去）コマンドを受けてＮＡＮＤ型フラッシュメモリ１８上の領域をアクセスしたり、バッファ１６を介してデータ転送処理を制御したりする。
【００２６】
ＲＯＭ１４は、ＣＰＵ１３により使用される制御プログラムなどのファームウェアを格納する。ＲＡＭ１５は、ＣＰＵ１３の作業エリアとして使用され、制御プログラムや各種のテーブルや後述する拡張レジスタを記憶する。
【００２７】
バッファ１６は、ホスト２０から送られてくるデータを、例えばＮＡＮＤ型フラッシュメモリ１８へ書き込む際、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ１８から読み出されたデータをホスト２０へ送り出す際、一定量のデータを一時的に記憶したりする。またバッファ１６を介することにより、ＳＤバスインターフェースとバックエンドを非同期に制御することができる。
【００２８】
ＮＡＮＤ型フラッシュメモリ１８は、例えば積層ゲート構造のメモリセル、又はＭＯＮＯＳ構造のメモリセルにより構成されている。
【００２９】
無線ＬＡＮ信号処理部１９では、無線ＬＡＮの信号処理が行われる。無線通信Ｉ／Ｆ１７ａを介して制御される。
【００３０】
ホスト２０は、例えばデジタルカメラや携帯電話、パーソナルコンピュータなどが適用可能である。ホスト２０は、ホストコントローラ２１、ＣＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、例えばハードディスク２５(ＳＳＤを含む)により構成されている。これらはバスにより接続されている。
【００３１】
ＣＰＵ２２は、ホスト全体を制御する。ＲＯＭ２３は、ＣＰＵ２２の動作に必要なファームウェアを記憶している。ＲＡＭ２４は、例えばＣＰＵ２２の作業領域として使用されるが、ＣＰＵ２２が実行可能なプログラムもここにロードされ実行される。ハードディスク２５は、各種データを保持する。ホストコントローラ２１は、メモリデバイス１１が接続された状態において、メモリデバイス１１とのインターフェース処理を行う。さらに、ＣＰＵ２２の指示に従って、後述する各種コマンドを発行する。
【００３２】
（ファームウェアの構成）
図２は、メモリデバイス１１のＲＯＭ１４に記憶されたファームウェアの機能構成の一例を示している。これらの機能はコントローラ１１ａを構成するＣＰＵ１３等の各ハードウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド処理部１４ａ、フラッシュメモリ制御部１４ｂ、拡張レジスタ処理部１４ｃ、機能処理プログラム１４ｄにより構成されている。拡張レジスタ処理部１４ｃは、メモリデバイス１１が起動された際、ＲＡＭ１５内に拡張レジスタ３１を生成する。この拡張レジスタ３１は、仮想レジスタであり、拡張機能を定義可能とされている。
【００３３】
（拡張レジスタの構成）
図２に示すように、拡張レジスタ３１は、例えば８ページにより構成されている、１ページは、５１２バイトにより構成されている。５１２バイトの拡張レジスタをバイト単位にアクセスするため、最低９ビットのアドレスが必要となり、８ページアクセスするために、最低３ビットのアドレスが必要となる。合計１２ビットのアドレスにより、拡張レジスタの全空間がアクセス可能となる。
【００３４】
５１２バイト単位とする理由は、多数のメモリカードホストコントローラが、１ブロック＝５１２バイトを単位としてリード／ライト転送を行う構成になっているためである。無線ＬＡＮ対応のホストコントローラであれば、１バイト単位のリード／ライトが可能であるが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホストコントローラで拡張機能を制御できるようにするためには、５１２バイト単位のアクセスが行えると都合が良い。
【００３５】
８ページ（ページ０〜ページ７）の内、ページ０は、拡張機能のプラグ・アンド・プレイを行うために情報フィールドを記録しておくための領域である。ページ１〜ページ７は、拡張機能の情報が記録される。すなわち、例えばページ１には、通信機能を制御するための情報が記録され、ページ２には、通信対象のデータの受け渡しのための情報が記録される。ホスト２０は、メモリデバイス１１が有する機能を示すためのページ０に記載された情報から、メモリデバイス１１が有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページ、がどのページであるのかを把握することができる。情報フィールドの詳細については後述する。
【００３６】
拡張レジスタのリード／ライトは、以下に定義される専用のリード／ライトコマンドが用いられる。これらのコマンドは、拡張レジスタをリード／ライトする第１の動作モードと、データポートを構成する第２の動作モードを有している。
【００３７】
（拡張レジスタのリードコマンド（ＣＭＤ４８））
図３は、拡張レジスタのリードコマンド（ＣＭＤ４８）のフィールド構成の一例を示している。“Ｓ”は、コマンドのスタートビットを示し、“Ｔ”は転送方向を示すビットであり、“ｉｎｄｅｘ”は、コマンド番号を示している。“ＲＳ”（レジスタ・セレクト）は拡張レジスタ３１内のページを示し、“ＯＦＳ”は選択されたページ内におけるデータの位置（ページの先頭からのオフセット）を示している。３ビットの“ＲＳ”と、９ビットの“ＯＦＳ”で、５１２バイトの拡張レジスタ８ページ分の空間をバイト単位に指定することができる。具体的には、選択された拡張レジスタ内のリード開始位置が“ＲＳ”と“ＯＦＳ”により指定される。
【００３８】
“ＬＥＮ”はデータ長を示している。９ビットのＬＥＮフィールドにより、５１２バイトの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
【００３９】
“ＣＲＣ７”は、巡回冗長検査（cyclic redundancy check）コードを示し、“Ｅ”は、コマンドのエンドビットを示している。“ｒｓｖ”は、予備のビットを示している。
【００４０】
（拡張レジスタのリードコマンド、第１の動作モード）
図４は、第１の動作モードによる拡張レジスタのリード動作の例を示している。
【００４１】
図４に示すように、メモリデバイス１１は、ホスト２０からコマンド（ＣＭＤ４８）を受け取ると、レスポンス（Ｒ１）をホスト２０に返し、その後、拡張レジスタ３１から５１２バイトのデータブロックを読み出す。
【００４２】
具他的には、コマンド（ＣＭＤ４８）の引数で、拡張レジスタのページと、ページ内の読み出すべきデータの位置が、“ＲＳ”と“ＯＦＳ”で指定され、データ長が“ＬＥＮ”で指定される。このようにして指定された拡張レジスタ内のデータが、５１２バイトのデータブロックの先頭にセットされ、読み出される。５１２バイトのデータブロックのうち、“ＬＥＮ”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはＣＲＣコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置されているため、ホスト２０は、有効データを探すために、データシフトなどの操作を行う必要がない。
【００４３】
（拡張レジスタのリードコマンド、第２の動作モード）
図５は、第２の動作モードによるデータポートリードの動作の例を示している。
【００４４】
メモリデバイス１１は、このコマンド(ＣＭＤ４８)を受け取ると、レスポンス（Ｒ１）を返し、その後に５１２バイトのデータブロックを返す。
【００４５】
コマンドの引数“ＲＳ”，“ＯＦＳ”により、拡張レジスタの選択されたページ内の位置が指定される。データポートは、複数バイト割り当てることは可能であるが、１バイトで十分であるので、図５では“ＬＥＮ＝０”(レングスが１)の場合のデータポートの例が示されている。すなわち、データポートは、拡張レジスタマップ上において、１バイトのアドレスを占有するだけで良い。このデータポートに割り当てられたデバイスから１ブロック（５１２バイト単位）のデータをリードすることができる。すなわち、１回当たり、１ブロック（５１２バイト単位）のデータをリードすることができる。この読み出されたデータは、例えばバッファ１６に保持され、２０のホストによって読み出される。
【００４６】
続いて同じデータポートをリードすると、続きの５１２バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。５１２バイトのデータブロックの最後にＣＲＣコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
【００４７】
（拡張レジスタのライトコマンド（ＣＭＤ４９））
図６は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド（ＣＭＤ４９）において、リードコマンド（ＣＭＤ４８）と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“ｉｎｄｅｘ”により区別される。３ビットの“ＲＳ”と、９ビットの“ＯＦＳ”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。９ビットの“ＬＥＮ”フィールドにより、５１２バイトの拡張レジスタに書き込むデータ長が指定される。したがって、５１２バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
【００４８】
ライトコマンド（ＣＭＤ４９）は、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Ｍａｓｋ”は、８ビット長のマスクレジスタを示している。このマスクレジスタにより、１バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、１バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が１バイトのとき、すなわち、“ＬＥＮ＝０”(レングス１)のとき有効となる。マスクレジスタ“Ｍａｓｋ”のデータが“１”のビットは、データが書き込まれ、マスクレジスタ“Ｍａｓｋ”のデータが“０”のビットは、既にセットされた値が保存される。
【００４９】
すなわち、図７（ａ）に示すようなデータを保持している拡張レジスタを仮定した場合において、マスクレジスタのデータが、図７（ｂ）に示すようである場合、ライトコマンドが実行されることにより、図７（c）に示すように、マスクレジスタのデータが“１”のビットはデータが書き込まれ、データが“０”のビットは、元のデータが保持される。このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書き換えることが可能となる。“ｘ”で示す部分が、新しいデータが書き込まれたビットを示す。
【００５０】
また、より長いマスクデータが別な手段によって供給できれば、ＬＥＮ＞１でもマスクライトが可能であるが、図６の例では、コマンド引数にマスクデータを割り当てているため、８ビットとしている。
【００５１】
（拡張レジスタのライトコマンド、第１の動作モード）
図８は、第１の動作モードによる拡張レジスタのライト動作の例を示している。
【００５２】
メモリデバイス１１は、このコマンド（ＣＭＤ４９）を受け取ると、レスポンス（Ｒ１）を返し、その後、５１２バイトのデータブロックを受け取る。
【００５３】
メモリデバイス１１は、データブロックが正しく受け取れたかどうかを示すＣＲＣコードをホスト２０に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト２０が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ１６に保持されている。
【００５４】
コマンド処理において、コマンドの引数“ＲＳ”、“ＯＦＳ”により、拡張レジスタ内のページと位置が指定され、“ＬＥＮ”によりデータ長が指定される。バッファ１６に保持されたデータブロックのうち、先頭から“ＬＥＮ”で指定して長さのデータが拡張レジスタに書き込まれる。“ＬＥＮ”で指定されたデータ長を超えるデータブロック中のデータは無効データとして破棄される。
【００５５】
有効データをデータブロックの先頭から配置することにより、ホストシステムは有効データをデータブロックの途中に配置する操作が不要となる。
【００５６】
（拡張レジスタのライトコマンド、第２の動作モード）
図９は、第２の動作モードによるライトデータポートの動作の例を示している。
【００５７】
メモリデバイス１１は、このコマンド（ＣＭＤ４９）を受け取ると、レスポンス（Ｒ１）を返し、その後、５１２バイトのデータブロックを受け取る。
【００５８】
メモリデバイス１１は、データブロックが正しく受け取れたかどうかを示すＣＲＣコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト２０が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ１６に保持されている。
【００５９】
コマンド処理において、コマンドの引数“ＲＳ”、“ＯＦＳ”により、拡張レジスタ内のページと位置が指定されデータポートが指定される。データポートは、複数バイト割り当てることは可能であるが、１バイトで十分であるので、図９ではデータポートの使用例が示されている。データポートは、拡張レジスタマップ上において、１バイトのアドレスを占有するだけでよい。このデータポートに、バッファ１６に保持された１ブロック（５１２バイト単位）のデータをある割り当てたデバイスにライトすることができる。すなわち、１回当たり、１ブロックのデータをライトすることができる。
【００６０】
続いて同じデータポートをライトすると、続く５１２バイトのデータを割り当てたデバイスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。
【００６１】
（ページ０の情報フィールドの使用例）
図１０は、拡張レジスタ３１のページ０に示された情報フィールドの例を示している。この情報フィールドにより、ホスト２０が拡張機能を制御するドライバを特定できるようにすることにより、拡張機能を追加した場合において、ホストシステムが容易に拡張機能を使えることができ、プラグ・アンド・プレイを実現することができる。
【００６２】
図１０を参照して、標準のホストドライバが処理すべきシーケンス例を説明する。
【００６３】
（ストラクチャレビジョン）
ストラクチャレビジョンは、拡張レジスタ３１のページ０のフォーマットを定義するレビジョンである。デバイス情報フィールドに新しい情報を追加した場合、ストラクチャレビジョンを更新することにより、どのバージョンの情報フィールドを保持しているかを示す。以前のバージョンのホストドライバは、新しいフィールドを無視する。
【００６４】
（データ長）
データ長は、ページ０に記録されている有効データ長を示している。
【００６５】
（拡張機能数（＝Ｎ））
拡張機能数は、デバイスが何個の拡張機能をサポートしているかを示している。ホストドライバは、起動時に、サポートしている機能数だけ繰り返し、各拡張機能用のドライバがインストールされているかどうかを調べる。
【００６６】
（デバイスの情報領域）
デバイスの情報領域には、Ｎ個のデバイス（デバイス１〜デバイスＮ）の情報を記録することができる。各デバイスの情報を次に示す。
【００６７】
（デバイス１機能識別コード）
デバイス１機能識別コードにおいて、このコードが設定してある場合、標準ドライバ用を用いることができることを示す。ＯＳが標準ドライバをサポートしている場合、専用ドイバをインストールすることなく、このデバイスが使用できる。専用ドライバがインストールされている場合は、そちらの使用を優先する。非標準の機能は“０”を設定する。この場合は、専用ドライバによってのみこの機能は制御される。
【００６８】
（デバイス１製造者識別情報、デバイス１機能識別情報）
デバイス１製造者識別情報、デバイス１機能識別情報は、専用ドライバを特定するための情報である。ホストドライバは、これらの情報をもとにデバイス１の専用ドライバがインストールされているかどうかを探す。識別し易いように、例えばＡＳＣＩＩ文字列で記載される。機能識別情報は、デバイスの型番、レビジョンなどが記載される。
【００６９】
（次デバイスの先頭アドレス）
次デバイスの先頭アドレスは、次のデバイス情報が記載されているページ０内のアドレスを示している。ホストシステムがこのデバイスをサポートしていない場合、このデバイスは使用できないため、次のデバイスがチェックされる。これ以降のフィールドは可変長のため、この位置に定義している。
【００７０】
（デバイス１アドレスポインタ１〜Ｘ、レングスフィールド１〜Ｘ）
デバイス１アドレスポインタ１〜Ｘ、レングスフィールド１〜Ｘは、ひとつの機能に複数の拡張レジスタ領域を定義できることを示している。それぞれのアドレスとレングスを下記に列挙する。
【００７１】
（デバイス１アドレスポインタ１（開始アドレス）、レングス１）
デバイス１が使用する拡張レジスタの第１領域。拡張レジスタのページ１〜７の空間内の先頭アドレスと、使用する拡張レジスタ領域の大きさを示している。
【００７２】
すなわち、１つのデバイスに、１つ又は複数の拡張レジスタ領域を割り付けることができ、アドレスポインタは、ページ０以外の任意の拡張領域の場所（開始アドレス）を示している。レングスは、ポインタを先頭アドレスとした拡張レジスタを占有する大きさを示している。
【００７３】
（デバイス１アドレスポインタ２（開始アドレス）、レングス２）
デバイス１に割り当てられた拡張レジスタ内の第２領域の位置と領域の大きさを示している。これにより、例えば標準ドライバは、第１領域のみで制御するが、専用ドライバは、第１領域と第２領域を用いて効率良く制御することを可能にするなどの応用が可能となる。
【００７４】
（デバイス１アドレスポインタＸ（開始アドレス）、レングスＸ）
デバイス１に割り当てられた第Ｘ領域の位置と領域の大きさを示している。
【００７５】
このように、拡張レジスタ内に複数の領域を定義できる。各領域はオーバーラップしないように配置される。レングス情報によりオーバーラップがあるかどうかをチェックすることができる。
【００７６】
追加フィールドが必要になった場合、これ以降に追加定義していく。新しいフィールドが認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視する。上記の（次デバイスの先頭アドレス）フィールドによりスキップすることができる。
【００７７】
（無線ＬＡＮ対応ＳＤカード）
図１１は、無線通信機能を有したメモリデバイス（ＳＤカード）１１の使用例を示している。メモリデバイス１１は、ホストとしての例えばデジタルカメラ５１、５２や、サーバー５３、パーソナルコンピュータ５４、携帯電話５５に装着される。
【００７８】
無線通信機能を有したメモリデバイス１１は、デジタルカメラ５１とともに使用することにより、写真データを無線通信ネットワーク上で他のカメラ５２に送信したり、他のカメラ５２から受信したりすることが可能である。また、無線通信ネットワークを介して例えば外部のサーバー５３に接続し、写真データをデジタルカメラ５１からサーバー５３に転送することも可能である。さらに、無線通信ネットワークを介して例えばパーソナルコンピュータ５４や携帯電話５５などの機器に接続し、写真データをデジタルカメラ５１からこれらパーソナルコンピュータ５４や携帯電話５５に転送することができる。
【００７９】
図１２は、メモリデバイス１１が有するインターフェース機能を示している。
【００８０】
無線通信機能を有したメモリデバイス１１は、メモリデバイス１１を制御するホストデバイスとしての例えばデジタルカメラ５１とのインターフェースとなるインターフェース機能と、デジタルカメラ５１と他の電子機器、例えばカメラ５２や、サーバー５３、パーソナルコンピュータ５４、テレビ５６、プリンタ５７などと無線ＬＡＮ接続を行うネットワークインターフェースの機能を有している。
【００８１】
前述したホストインターフェース（カードインターフェース）１２は、ＳＤＡ(SD Association)で規格化された“SD Specifications Part 1”と“SD Specifications Part 2”に従って、カード内のデータにＦＡＴ３２経由でアクセス（読み書き）する機能を有するとともに、無線通信機能を有するカード特有のレジスタ（例えばＷｉ−ＦｉＳＤレジスタ）にアクセスする機能を有している。ここでＷｉ−Ｆｉ  ＳＤレジスタのアクセスには、リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）が用いられる。リードコマンド（ＣＭＤ４８）は、前述したように、対象となるレジスタに対してデータをブロック単位で読み込むコマンドであり、ライトコマンド（ＣＭＤ４９）は対象となるレジスタからデータをブロック単位で書き込むコマンドである。
【００８２】
本実施形態において、例えばホスト２０がメモリデバイス１１に対して、Ｗｉ−Ｆｉ  ＳＤカード特有のコマンドを発行する。又は、Ｗｉ−Ｆｉ  ＳＤカード特有のデータを書き込むためにライトコマンド（ＣＭＤ４９）を用いて、ホスト２０がメモリデバイス１１から、Ｗｉ−Ｆｉ  ＳＤカード特有のステータスやレスポンスを受け取る。またはＷｉ−Ｆｉ  ＳＤカード特有のデータを読み込むためにリードコマンド（ＣＭＤ４８）を用いることを特徴とする。
【００８３】
無線通信インターフェース１７ａは、物理層にＩＥＥＥ８０２．１１ｂ／ｇ／ｎを、ネットワーク層にＩＰｖ４やＩＰｖ６を、トランスポート層にＴＣＰを、プレゼンテーション層にＳＳＬ／ＴＬＳを、アプリケーション層にＨＴＴＰやＦＴＰをサポートすることを想定している。さらに、家庭内機器との通信のためＤＬＮＡ（Digital Living Network Alliance）の機能を有する場合もある。
【００８４】
メモリデバイス１１が２つのインターフェースを持つことにより、デジタルカメラで作成した写真データ（ＪＰＥＧやＲＡＷフォーマット）や動画データ（ＭＰＥＧ−２  ＴＳやＭＰ４フォーマット）を、ＨＴＴＰプロトコルをサポートするサーバーや機器に対して送信、又は受信することが可能になる。さらに、ＤＬＮＡをサポートするサーバーや機器により、写真や動画の再生が可能となるとともに、印刷を行うことも可能となる。また、写真データや動画データだけでなく、ホストデバイスが作成するデータ（ＸＭＬデータやテキストデータ）を追加して送ることにより、ホストデバイスはサーバーや周辺機器と認証作業を行ったり、メタデータの送受信を行ったりすることが可能となる。
【００８５】
図１３は、Ｗｉ−Ｆｉ  ＳＤカードとホストデバイスの構成例を示している。
【００８６】
前述したように、ホストデバイス２０は、ＳＤカード１１を制御するためのホストコントローラ２１を有し、前記カードインターフェースに従って、ＳＤＡで規格化された“SD Specifications Part 1”のコマンドと、Ｗｉ−Ｆｉ  ＳＤカード特有の制御を行うためのＣＭＤ４８とＣＭＤ４９のコマンドを発行することが可能である。
【００８７】
ＳＤカード１１は、カードコントローラ１１ａ、ＮＡＮＤメモリモジュール（ＮＡＮＤフラッシュメモリ）１８、Ｗｉ−Ｆｉネットワークモジュール（無線通信信号処理部１９ｂ）を有し、ホストコントローラ２１から発行されたコマンドに従い動作する。一般的なＳＤカードにおいて、カードコントローラ１１ａは、ＮＡＮＤメモリモジュール１８にアクセスし、データの読み出し、書き込みを行うことが可能である。本実施形態におけるＷｉ−Ｆｉ  ＳＤカードは、ＮＡＮＤメモリモジュール１８へのアクセス（読み書き）と、Ｗｉ−Ｆｉネットワークモジュール１９ｃへのアクセス、さらに、ＮＡＮＤメモリモジュール１８に記録されたデータをＷｉ−Ｆｉネットワークモジュール１９ｃへ内部転送を行う。もしくはＷｉ−Ｆｉネットワークモジュール１９ｃのデータをＮＡＮＤメモリモジュール１８に内部転送を行うことが可能である。これにより、例えばＮＡＮＤメモリモジュール１８に記録された写真データをホストデバイス２０の介在なしにＷｉ−Ｆｉネットワークモジュール１９ｃが外部に送信することができる。つまり、ホストデバイス２０はＷｉ−Ｆｉネットワークモジュール１９ｃの複雑な制御を行う必要がない。
【００８８】
さらに、写真データがカードインターフェースを経由せず内部転送されるため、転送速度を上げることができる。例えば、写真データの内部転送をカードコントローラ内部のＤＭＡ（Direct Memory Access）レジスタで制御すれば、ホストデバイス２０とＳＤカード１１とは独立して動作することが可能である。
【００８９】
また、Ｗｉ−Ｆｉネットワークモジュール１９ｃのステータス情報や、外部ネットワークのサーバーからダウンロードしたデータなどを、ホストデバイス２０が逐次管理することなく、自動的にＮＡＮＤメモリモジュール１８に直接記録することが可能である。
【００９０】
図１４は、ＳＤカード１１とホストデバイス２０の別の構成例を示す。
【００９１】
図１４は、図１３と異なり、ＳＤカード１１はＷｉ−Ｆｉ機能を有さず、カードコントローラ１１ｂとＮＡＮＤメモリモジュール１８で構成されている。また、ホストデバイス２０は、Ｗｉ−Ｆｉ機能を有している。すなわち、ホストデバイス２０は、ホストコントローラ２１と、Ｗｉ−Ｆｉネットワークモジュール１９ｃと、リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）を分離するためのカードコントローラ２５とを有している。
【００９２】
この構成は、デジタルカメラがＷｉ−Ｆｉ機能を有する場合において、図１３と同じ制御方法でＷｉ−Ｆｉネットワークモジュール１９ｃの制御が可能である。
【００９３】
図１５は、リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）でアクセスする拡張レジスタの例を示している。前述したように、拡張レジスタのページ０は、ページ１以降のページのインデックスとなっており、ホストデバイス２０は、ページ０を読むことにより、カードがどのような機能を有しているか、そのサポートされている機能の規格のバージョン情報やプロファイル情報（オプショナル機能のうちどの機能がサポートされているか）、その機能を制御するためのドライバ情報（どのメーカーから提供されているドライバか、ドライバのバージョンが何であるか）などを知ることができる。例えば、あるカードがＷｉ−Ｆｉ機能とともに、Bluetooth（登録商標）機能を有しているのであれば、Ｗｉ−Ｆｉ機能にアクセスするためのレジスタをページ１に割り当て、Bluetooth機能にアクセスするためのレジスタを例えばページ２に割り当てる。ホストデバイス２０は必要に応じてページ１、２にアクセスし、それぞれの機能を同時に用いることが可能である。これにより、Ｗｉ−Ｆｉ機能を用いて外部のサーバーからデータをダウンロードしてカードに一旦記録し、Bluetooth機能を用いて周辺機器に転送して再生や表示するといった動作を実現することができる。
【００９４】
図１６は拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合の例を示す。
【００９５】
Ｗｉ−Ｆｉ  ＳＤカードは、その用途に応じて５種類の拡張レジスタで構成されている。Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタは、書き込み専用のレジスタでありホストデバイスからカードに対してコマンドを発行するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタは、読み込み専用のレジスタであり、ホストデバイスがカードのステータス情報を取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタは、読み込み専用のレジスタであり、ホストデバイスが外部サーバーからカードにダウンロードしたデータ（ＨＴＴＰレスポンス・データ）を取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤ  カードＩＤ・リスト・レジスタは、読み込み専用のレジスタであり、そのカードに接続している（若しくは接続をリクエストしている）他のデバイスのＩＤのリストをホストデバイスが取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタは、読み込み専用のレジスタであり、カードが過去に接続したＳＳＩＤ（若しくは接続しなかったが接続するようにリクエストされたＳＳＩＤ）のリストをホストデバイスが取得するときにアクセスされる。
【００９６】
本実施形態は、これらのＷｉ−Ｆｉ  ＳＤレジスタを拡張レジスタのページにそれぞれ割り当てるケースを説明する。先ず、ホストデバイス２０は、リードコマンド（ＣＭＤ４８）を用いて拡張レジスタのページ０を読み、Ｗｉ−Ｆｉ  ＳＤ機能がカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号（ｉ、ｊ、ｋ、ｌ、ｍ）とＷｉ−Ｆｉ  ＳＤレジスタの略称（ＷＩＦＩＳＤＣＲ、ＷＩＦＩＳＤＳＲ、ＷＩＦＩＳＤＲＤ、ＷＩＦＩＳＤＩＬ、ＷＩＦＩＳＤＳＨ）のペアがページ０に記録されている。
【００９７】
ホストデバイス２０がカードに対してコマンドを発行する場合、コマンド発行用のレジスタであるＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに対してライトコマンド（ＣＭＤ４９）にて書き込みを行う。このとき、ページ０の情報から当該レジスタはページｉにあることが分かっているため、ＣＭＤ４９の引数としてページｉが指定される。同様にホストデバイス２０がカードからステータス情報等を取得する場合、データ取得のためのレジスタであるＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤ  カードＩＤ・リスト・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタのいずれかより、リードコマンド（ＣＭＤ４８）にてデータを読み出す。このとき、ＣＭＤ４８の引数としては、それぞれのレジスタに対応するページ番号であるｊ、ｋ、ｌ、ｍが指定される。
【００９８】
ここで、本実施形態において、書き込み用レジスタと読み込み用レジスタを別のページに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用となっているため、同じページに割り当てることも可能である。
【００９９】
図１７は、ホストデバイス２０の起動時の動作を示している。
【０１００】
ホストデバイス２０は、起動されると、リードコマンド（ＣＭＤ４８）を発行し、拡張レジスタ３１のページ０のデータを読み込み、ＳＤカード１１が有する拡張機能としての無線通信機能を確認する（ＳＴ１１、ＳＴ１２）。すなわち、ＳＤカード１１がＷｉ−Ｆｉや、Bluetooth など、どのような無線通信機能を実装しているかが確認される。次に、ホストデバイス２０がＳＤカード１１の拡張機能に対応しているかどうかが判別される（ＳＴ１３）。この結果、拡張機能に対応している場合、その拡張機能を有効とさせるため、拡張レジスタ３１のページｉ（ｉは０以外）のデータが読み込まれ（ＳＴ１４）、ＳＤカード１１が対応する例えば規格名、バージョン、プロファイル、デバイス情報などが確認される（ＳＴ１５）。これに基づき、ホストデバイス２０は、ホストデバイス２０が所有する最適なドライバを有効とする（ＳＴ１６）。これにより、ＳＤカード１１の拡張機能にアクセスすることが可能となる。
【０１０１】
次に、拡張レジスタ３１の全てのページの機能を確認したかどうかが判別される（ＳＴ１７）。この結果、残りのページがある場合、次のページにおけるカードの機能が確認され（ＳＴ１８、ＳＴ１６）、全てのページが確認されている場合は、機能設定が終了される。
【０１０２】
（無線ＬＡＮ設定）
図１８は、無線ＬＡＮの設定動作を示している。
【０１０３】
図１８において、ホスト２０は、先ず、ＳＤカード１１に対して、Ｗｉ−Ｆｉのネットワークを検索するため、コマンド（ＣＭＤ４９）を発行する（Ｓ１）。このコマンド（ＣＭＤ４９）のデータに、Ｗｉ−Ｆｉのネットワークを検索するため「ScanWiFi」コマンドが含まれている。この「ScanWiFi」コマンドは、拡張レジスタ３１の例えばページｉに書き込まれる。ＳＤカード１１のＣＰＵ１３は、「ScanWiFi」コマンドに応じて、無線通信インターフェース１７ａを介して無線ＬＡＮ信号処理部１９ａを起動し、無線ＬＡＮ信号処理部１９ａは、ネットワークのアクセスポイントをスキャンする（Ｓ１−１）。このスキャン結果は、無線通信インターフェース１７ａ、バッファ１６、メモリインターフェース１７ｂを介してＮＡＮＤフラッシュメモリ１８に「SSIDLIST」ファイルとして保存される（Ｓ１−２）。この「SSIDLIST」ファイルは、アクセス可能なアクセスポイントの名前（SSID）を含んでいる。ＮＡＮＤフラッシュメモリ１８の「SSIDLIST」が更新されると、拡張レジスタ３１のページｊに設けられたＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新される。
【０１０４】
この間、ホスト２０は、ポーリングにより、ＮＡＮＤフラッシュメモリ１８のステータスが更新されているか判別する（Ｓ２）。具体的には、ホスト２０は、コマンド（ＣＭＤ４８）によってＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを読み込み、ＳＤカード１１によるSSIDの走査が成功したかどうかを確認する。
【０１０５】
SSIDの走査が成功した場合、ホスト２０は、メモリのリードコマンド（ＣＭＤ１８）により、ＮＡＮＤフラッシュメモリ１８に保存された「SSIDLIST」ファイルを読み取る（Ｓ３）。
【０１０６】
この後、ホスト２０は、「SSIDLIST」ファイル中のSSIDのうちの１つを選択し、コマンド（ＣＭＤ４９）を発行する。すなわち、このコマンド（ＣＭＤ４９）により、拡張レジスタ３１のページｉに「SetSSID」コマンドを書き込む。これによりホスト２０は、SSIDをセットすることをＳＤカード１１に要求する（Ｓ４）。
【０１０７】
次いで、ホスト２０は、コマンド（ＣＭＤ４９）によって、拡張レジスタ３１のページｉに「StartApplication」コマンドを書き込む。これにより、ホスト２０は、ＳＤカード１１に無線ＬＡＮアプリケーションの動作開始を要求する（Ｓ５）。
【０１０８】
ＳＤカード１１は、「StartApplication」コマンドに応じて無線ＬＡＮ信号処理部１９ａを介して、ネットワークとの通信を可能とするため、アクセスポイントにアソシエーションを要求する（Ｓ５−１）。アクセスポイントからのアソシエーション応答を受信した場合、ＳＤカード１１は、ＤＨＣＰ（Dynamic Host Configuration Protocol）により、アクセスポイントからＩＰアドレスを取得し、通信の準備を行う（Ｓ５−２）。通信の準備が完了すると、拡張レジスタ３１のページｊに設けられたＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新される。
【０１０９】
この間、ホスト２０は、ポーリングにより、ステータスが更新されたかどうかを判断する（Ｓ６）。具体的には、ホスト２０は、コマンド（ＣＭＤ４８）によってＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを読み込み、ステータスが更新されたかどうかを判断する。ステータスが更新された場合、ＳＤカード１１とアクセスポイントとの通信が開始され、例えばホスト２０を介在せず、ネットワークよりＳＤカード１１にデータを取得することができる。
【０１１０】
（ＨＴＴＰ送信）
次に、コマンド（ＣＭＤ４８、４９）を利用して、ＨＴＴＰ通信を行う場合について説明する。
【０１１１】
本実施形態は、サーバー・アップロード・コマンドとして、例えば「SendHttpMessage」[「SendHttpFile」「SendHttpMessageByRegister」「SendHttpFileByRegister」が用意されている。これらコマンドは、コマンド（ＣＭＤ４９）により、拡張レジスタ３１のページｉに設けられたＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに登録される。コマンド「SendHttpMessage」「SendHttpFile」は、データサイズが例えば５１２バイトより大きいＨＴＴＰ通信に、ＦＡＴファイルシステムを用いて使用される。また、「SendHttpMessageByRegister」「SendHttpFileByRegister」は、データサイズが例えば５１２バイトより小さいＨＴＴＰ通信に、ＦＡＴファイルシステムを用いずに使用される。
【０１１２】
上述したように、拡張レジスタ３１のアクセスは、コマンド（ＣＭＤ４８，４９）により、５１２バイトのブロック長によるアクセスが可能である。しかし、通常のＳＤカード１１のファイルシステムに対するアクセスは、リードコマンド（ＣＭＤ１８）、ライトコマンド（ＣＭＤ２５）を用いたマルチブロックのアクセスが可能である。このため、大容量のＨＴＴＰ通信を行う場合、ＳＤカード１１のアクセスコマンドを用いてデータをＳＤカード１１に転送することにより、効率の良い処理が望まれている。
【０１１３】
すなわち、ファイルをサーバーなどに転送する場合において、ＨＴＴＰリクエストのサイズが増大する。また、転送ファイルに付属するメタ情報、すなわち、データについてのデータは、ホストデバイスの機能、又は要求に依存する部分が大きい。このため、ＨＴＴＰリクエストのフォーマットは、ホストにとって自由度が高いことが望まれる。したがって、本実施形態において、ＨＴＴＰリクエストの情報は、ホストが設定し、ＨＴＴＰプロトコル処理は、ＳＤカードが行うようにし、ホストデバイスの負担軽減を図っている。
【０１１４】
また、小容量のＨＴＴＰ通信を行う場合、コマンド（ＣＭＤ４９）のみにより、容易且つ高速な通信が望まれている。
【０１１５】
送信コマンドのフォーマットは、次の通りである。
【０１１６】
SendHttpMessage(hostname,messageFileName)
SendHttpFile(hostname,messageFileName,appendFileName)
SendHttpMessageByRegister(hostname,message)
SendHttpFileByRegister(hostname,appendFileName,message)
以下、各コマンドの動作について説明する。
【０１１７】
（コマンド「SendHttpMessage」の動作）
図１９は、コマンド「SendHttpMessage」の動作を示している。コマンド「SendHttpMessage」は、大容量のＨＴＴＰ通信をネットワークにて送受信する場合に使用される。このコマンド「SendHttpMessage」は、引数としてホスト名「hostname」とＨＴＴＰリクエストのメッセージを保存したファイルのファイル名「messageFileName」を有している。
【０１１８】
図１８のステップＳ５，Ｓ６に示すように、無線通信が開始された状態において、ＨＴＴＰ通信を行う場合、ホスト２０は、ＳＤカード１１のライトコマンド（ＣＭＤ２５）を発行し、ＨＴＴＰリクエストファイルをＳＤカード１１に送る。ＳＤカード１１のＣＰＵ１３は、ライトコマンド（ＣＭＤ２５）に応じて、ＨＴＴＰリクエストファイルをＮＡＮＤフラッシュメモリ１８に書き込む（Ｓ７）。
【０１１９】
次に、ホスト２０は、コマンド（ＣＭＤ４９）を発行し、コマンド「SendHttpMessage」をＳＤカード１１に送る。ＳＤカード１１のＣＰＵ１３は、コマンド（ＣＭＤ４９）に基づき、拡張レジスタ３１のページｉに設けられたＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタにコマンド「SendHttpMessage」を登録する（Ｓ８）。
【０１２０】
この後、ＳＤカード１１のＣＰＵ１３は、拡張レジスタに登録されたコマンド「SendHttpMessage」に基づき、ＮＡＮＤフラッシュメモリ１８に書き込まれたＨＴＴＰリクエストファイルを読み出し、無線ＬＡＮ信号処理部１９ａを介して、ＨＴＴＰリクエストファイルをネットワーク上に送信する（Ｓ８−１）。
【０１２１】
次いで、ＳＤカード１１のＣＰＵ１３は、無線ＬＡＮ信号処理部１９ａを介して、ＨＴＴＰレスポンスを受信した場合、このＨＴＴＰレスポンスをＮＡＮＤフラッシュメモリ１８にファイルとして保存する（Ｓ８−２）。
【０１２２】
受信したレスポンスファイルは、ＮＡＮＤフラッシュメモリ１８の予め定められたダウンロードのディレクトリに保存される。保存されるファイルの名前には、例えばコマンド（ＣＭＤ４９）により発行されたコマンドにて指定されたシーケンス番号が付加される。
【０１２３】
さらに、ＣＰＵ１３は、ＨＴＴＰレスポンスを受信した場合、拡張レジスタ３１のページｊに設けられたＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを更新する。
【０１２４】
一方、ホスト２０は、ポーリングにより、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新されたかどうかを判断する。すなわち、ホスト２０は、コマンド（ＣＭＤ４８）を発行し、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを読み出し、ステータスが更新されたかどうかを判断する（Ｓ９）。
【０１２５】
Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新されたものと判断された場合、ホスト２０は、ＳＤカード１１のリードコマンド（ＣＭＤ１８）を発行する。ＳＤカード１１のＣＰＵ１３は、このリードコマンド（ＣＭＤ１８）に基づき、ＮＡＮＤフラッシュメモリ１８からＨＴＴＰレスポンスのファイルを読み出し、ホスト２０に転送する（Ｓ１０）。
【０１２６】
ＨＴＴＰレスポンスのファイルがホスト２０に転送されると、ホスト２０からエンドアプリケーションが発行され、アプリケーションの動作が終了される（Ｓ１１）。
【０１２７】
上記送信コマンドを用いることにより、大容量のＨＴＴＰファイルを効率良く、サーバーに転送することができる。
【０１２８】
本実施形態は、拡張レジスタ３１のみでＨＴＴＰ通信の全てを行うのではなく、ＮＡＮＤフラッシュメモリ１８のＦＡＴ領域を使用することによって、ＨＴＴＰリクエストや、ＨＴＴＰレスポンスを送受信することができる。
【０１２９】
（コマンド「SendHttpFile」の動作）
図２０は、上記コマンド「SendHttpFile」の動作を示している。このコマンド「SendHttpFile」は、例えばＳＤカード１１内の画像ファイルをネットワークに送信する場合に用いられる。このコマンド「SendHttpFile」は、引数として例えばホスト名「hostname」、メッセージファイル名「messageFileName」、ＳＤカード１１内の例えば画像ファイルの名前を示すアペンドファイル名「appendFilename」を有している。
【０１３０】
この例の場合、図２０に示すように、ホスト２０は、先ず、例えばライトコマンド（ＣＭＤ２５）を発行し、ネットワークに転送すべき画像ファイルをＳＤカード１１に転送する（Ｓ２１）。ＳＤカード１１のＣＰＵ１３は、ライトコマンド（ＣＭＤ２５）に基づき、画像ファイルをＮＡＮＤフラッシュメモリ１８に書き込む。
【０１３１】
次に、ホスト２０は、ライトコマンド（ＣＭＤ２５）を発行し、ＨＴＴＰリクエストファイルをＳＤカード１１に転送する（Ｓ２２）。ＨＴＴＰリクエストの内容は、例えばＮＡＮＤフラッシュメモリ１８内の画像ファイルをサーバーにアップロードすることであり、メタ情報として、ＮＡＮＤフラッシュメモリ１８内の画像ファイルの例えば名前や時間情報などが定義されている。ＳＤカード１１は、ライトコマンド（ＣＭＤ２５）に基づき、ＨＴＴＰリクエストをＮＡＮＤフラッシュメモリ１８に書き込む。
【０１３２】
この後、ホスト２０は、コマンド（ＣＭＤ４９）を発行し、ＨＴＴＰ通信のコマンド「SendHttpFile」をＳＤカード１１に転送する（Ｓ２３）。ＳＤカード１１のＣＰＵ１３は、コマンド（ＣＭＤ４９）に基づき、コマンド「SendHttpFile」を、拡張レジスタ３１のページｉに設けられたＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに登録する。
【０１３３】
さらにＳＤカード１１のＣＰＵ１３は、拡張レジスタに登録されたコマンド「SendHttpFile」に基づき、ＮＡＮＤフラッシュメモリ１８に書き込まれたＨＴＴＰリクエストファイルを読み出し、このＨＴＴＰリクエストファイルの予め定義された文字列を、ＮＡＮＤフラッシュメモリ１８から読み出した画像ファイルの情報に置き換えて無線ＬＡＮ信号処理部１９ａからネットワーク上に送信する（Ｓ２３−１）。
【０１３４】
次いで、ＳＤカード１１のＣＰＵ１３は、無線ＬＡＮ信号処理部１９ａを介して、ＨＴＴＰレスポンスを受信した場合、このＨＴＴＰレスポンスをＮＡＮＤフラッシュメモリ１８にファイルとして保存する（Ｓ２３−２）。
【０１３５】
ＳＤカード１１のＣＰＵ１３は、ＨＴＴＰレスポンスを受信した場合、拡張レジスタ３１のページｊに設けられたＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを更新する。
【０１３６】
一方、ホスト２０は、ポーリングにより、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新されたかどうかを判断する。すなわち、ホスト２０は、コマンド（ＣＭＤ４８）を発行し、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスを読み出し、ステータスが更新されたかどうかを判断する（Ｓ２４）。
【０１３７】
Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのステータスが更新されたものと判断された場合、ホスト２０は、ＳＤカード１１のリードコマンド（ＣＭＤ１８）を発行する。ＳＤカード１１のＣＰＵ１３は、このリードコマンド（ＣＭＤ１８）に基づき、ＮＡＮＤフラッシュメモリ１８からＨＴＴＰレスポンスのファイルを読み出し、ホスト２０に転送する（Ｓ２５）。
【０１３８】
上記送信コマンドを用いることにより、ＳＤカード１１内の画像ファイルを効率良く、サーバーに転送することができる。
【０１３９】
（コマンド「SendHttpMessageByRegister」の動作）
図２１は、コマンド「SendHttpMessageByRegister」の動作を示している。
【０１４０】
コマンド「SendHttpMessageByRegister」は、ＨＴＴＰ通信のデータサイズが小さい場合に使用される。大容量のＨＴＴＰ通信を行うコマンド「SendHttpMessage」「SendHttpFile」は、ＨＴＴＰリクエストファイルをライトコマンド（ＣＭＤ２５）によりＮＡＮＤフラッシュメモリ１８に記録し、コマンド（ＣＭＤ４９）により、コマンド「SendHttpMessage」又は「SendHttpFile」を拡張レジスタに登録した。これに対して、コマンド「SendHttpMessageByRegister」は、コマンド（ＣＭＤ４９）のみで動作可能としている。
【０１４１】
コマンド「SendHttpMessageByRegister」は、引数として「hostname」及び「message」を有している。この「message」にＨＴＴＰリクエスト（ＨＴＴＰのヘッダー情報）が文字列として記載される。
【０１４２】
図２１に示すように、ＨＴＴＰ通信を行う場合、ホスト２０は、コマンド（ＣＭＤ４９）を発行する（Ｓ３１）。このコマンド（ＣＭＤ４９）のデータに、コマンド「SendHttpMessageByRegister」が記載される。
【０１４３】
ＳＤカード１１のＣＰＵ１３は、コマンド（ＣＭＤ４９）に基づき、コマンド「SendHttpMessageByRegister」を拡張レジスタ３１のページｉに設けられたＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに登録する。
【０１４４】
さらにＳＤカード１１のＣＰＵ１３は、拡張レジスタに登録されたコマンド「SendHttpMessageByRegister」に基づき、ＨＴＴＰリクエストを、無線ＬＡＮ信号処理部１９ａからネットワーク上に送信する（Ｓ３１−１）。
【０１４５】
次いで、ＳＤカード１１のＣＰＵ１３は、無線ＬＡＮ信号処理部１９ａを介して、ＨＴＴＰレスポンスを受信した場合、このＨＴＴＰレスポンスを拡張レジスタ３１のページｋに設けられたＷｉ−Ｆｉ  ＳＤカード・レスポンス・レジスタに保存する（Ｓ３１−２）。
【０１４６】
一方、ホスト２０は、コマンド（ＣＭＤ４８）を発行し、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・レジスタからＨＴＴＰレスポンスを読み出し、ファイルとして保存する（Ｓ３２）。
【０１４７】
上記送信コマンドを用いることにより、小容量のＨＴＴＰ通信を効率良く行うことができる。
【０１４８】
（コマンド「SendHttpFileByRegister」の動作）
図２２は、コマンド「SendHttpFileByRegister」の動作を示している。
【０１４９】
コマンド「SendHttpFileByRegister」もＨＴＴＰ通信の送信するデータファイル以外のＨＴＴＰリクエストのデータサイズが小さい場合に使用される。要求としては、ＳＤカード１１内に保存されているファイルを例えばサーバーにアップロードすることである。しかし、サーバーへの送信フォーマットはファイルのみでは送信できず、ＨＴＴＰリクエストのヘッダー情報やメタ情報の付属が必要となる。そのため、ＨＴＴＰのリクエストメッセージに予め定義された文字列が定義される。ＳＤカード１１は、ホスト２０から転送された送信要求に基づき、ＨＴＴＰリクエストメッセージの予め定義された文字列を指定されたファイルの情報に置き換えて送信する。
【０１５０】
コマンド「SendHttpFileByRegister」は、引数としてホスト名「hostname」、アペンドファイル名「appendFileName」、及びメッセージ「message」を有している。「appendFileName」に、ＮＡＮＤフラッシュメモリ１８内の画像ファイル名が記載され、「message」にＨＴＴＰリクエスト（ＨＴＴＰのヘッダー情報）が文字列として記載される。
【０１５１】
図２２に示すように、ホスト２０は、先ず、例えばライトコマンド（ＣＭＤ２５）を発行し、ネットワークに転送すべき画像ファイルをＳＤカード１１に転送する（Ｓ４１）。ＳＤカード１１のＣＰＵ１３は、ライトコマンド（ＣＭＤ２５）に基づき、画像ファイルをＮＡＮＤフラッシュメモリ１８に書き込む。
【０１５２】
次に、ホスト２０は、コマンド（ＣＭＤ４９）を発行する（Ｓ４２）。このコマンド（ＣＭＤ４９）のデータに、コマンド「SendHttpFileByRegister」が記載される。
【０１５３】
ＳＤカード１１のＣＰＵ１３は、コマンド（ＣＭＤ４９）に基づき、コマンド「SendHttpFileByRegister」を拡張レジスタ３１のページｉに設けられたＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに登録する。
【０１５４】
さらにＳＤカード１１のＣＰＵ１３は、拡張レジスタに登録されたコマンド「SendHttpFileByRegister」のアペンドファイル名に基づき、ＮＡＮＤフラッシュメモリ１８から読み出したファイルを読み出し、ＨＴＴＰリクエストのメッセージ中に予め定義された文字列を、読み出したファイルに置き換えて無線ＬＡＮ信号処理部１９ａからネットワーク上に送信する（Ｓ４１−１）。
【０１５５】
次いで、ＳＤカード１１のＣＰＵ１３は、無線ＬＡＮ信号処理部１９ａを介して、ＨＴＴＰレスポンスを受信した場合、このＨＴＴＰレスポンスを拡張レジスタ３１のページｋに設けられたＷｉ−Ｆｉ  ＳＤカード・レスポンス・レジスタに保存する（Ｓ４２−２）。
【０１５６】
一方、ホスト２０は、コマンド（ＣＭＤ４８）を発行し、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・レジスタからＨＴＴＰレスポンスを読み出し、ファイルとして保存したり処理を行う（Ｓ４３）。
【０１５７】
上記実施形態によれば、大容量のＨＴＴＰリクエストや画像データを送受信する場合、ホスト２０は、ＨＴＴＰリクエストの情報を設定し、ＳＤカード１１のアクセスコマンドを用いてデータをＳＤカード１１のＮＡＮＤフラッシュメモリに転送し、さらに、コマンド（ＣＭＤ４９）により、大容量用のＨＴＴＰ通信コマンドとしての「SendHttpMessage」、又は「SendHttpFile」を拡張レジスタ３１に保存し、ＨＴＴＰプロトコル処理は、ＳＤカード１１が行っている。したがって、ホスト２０の負担を軽減する事が可能である。
【０１５８】
すなわち、例えばネットワークにファイルを送信する場合、各種ソーシャルネットワークサービスや写真共有サイト等のフォーマットの違いを、ホスト２０がＨＴＴＰメッセージよって設定している。このため、ＳＤカード１１は、送信先のサービスを区別すること無くＨＴＴＰリクエストと付加情報とを一緒に、サーバーに送信することが可能である。
【０１５９】
また、ホスト２０は、ＨＴＴＰのリクエスト情報を作成する場合、ＳＤカード１１内のファイルシステムのファイルを読み込み、ファイルの情報と各種サービスに依存した付加情報をまとめて改めてＨＴＴＰリクエストデータのファイルを作成する必要がない。つまり、ホスト２０は、ＨＴＴＰリクエストに必要な付加情報のみを作成し、ＳＤカード１１は、拡張レジスタ３１経由の送信コマンドの情報でＳＤカード１１内に保存されているファイルのパスを設定することにより、所望のＨＴＴＰリクエストを生成することが可能である。したがって、ホスト２０及びＳＤカード１１の処理を容易化することができる。
【０１６０】
さらに、大容量のデータをＮＡＮＤフラッシュメモリ１８に保存することにより、ＳＤカード１１は、処理に必要なメモリ容量を低減できる利点を有している。
【０１６１】
また、小容量のＨＴＴＰ通信を行う場合、ホスト２０は、コマンド（ＣＭＤ４９、ＣＭＤ８）のみにより、ＨＴＴＰリクエストや、送信コマンド「SendHttpMessageByRegister」、「SendHttpFileByRegister」を拡張レジスタ３１に転送し、ＳＤカード１１により、ＨＴＴＰプロトコル処理を行っている。このため、ホスト２０とＳＤカード１１間で、ファイルシステムに関する不整合が発生しないため、転送データサイズが小さい場合において、有効なデータの受け渡しが可能である。
【０１６２】
尚、ＳＤカードが設定によりＨＴＴＰレスポンスのヘッダー部を自動的に削除可能とすることにより、ホストデバイスは、ＨＴＴＰプロトコルで受信した所望のＨＴＭＬ、ＸＭＬ、その他ＪＰＥＧ画像等を容易に取得することが可能である。したがって、ＳＤカードのホストデバイスは、一般的なＴＣＰ／ＩＰ等の処理を行うこと無く、所望のファイルを取得することができる。
【０１６３】
また、「SendHttpMessage」コマンドには、ＨＴＴＰ通信の対象となるサーバーのＤＮＳ(Domain Name System)で解決可能な名前やＩＰアドレスを含んでもよい。
【０１６４】
また、ネットワークへのアクセスプロトコルとしてＳＳＬ／ＴＬＳを使用したＨＴＴＰＳアクセスを行うコマンド「SendHttpSSLMessage」、「SendHttpSSLFile」、「SendHttpSSLMessageByRegister」、「SendHttpSSLFileByRegister」を用いてセキュリティ要求があるサーバーへのログインや認証を行うことも可能である。これらコマンド「SendHttpSSLMessage」、「SendHttpSSLFile」、「SendHttpSSLMessageByRegister」、「SendHttpSSLFileByRegister」のホストとＳＤカードとのシーケンスは、「SendHttpMessage」、「SendHttpFile」、「SendHttpMessageByRegister」、「SendHttpFileByRegister」と同様である。
【０１６５】
さらに、拡張レジスタは、複数ページに限定されるものではなく、１ページとし、１ページ内で、上記ページ０とページ１〜７に対応する領域を設定することも可能である。
【０１６６】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１６７】
１１…メモリデバイス、１３…ＣＰＵ、１４…ＲＯＭ、１５…ＲＡＭ、１６…バッファ、１８…ＮＡＮＤ型フラッシュメモリ、１９ａ…無線ＬＡＮ信号処理部、１９…Ｗｉ−Ｆｉネットワークモジュール、２０…ホスト、２１…ホストコントローラ、２２…ＣＰＵ、３１…拡張レジスタ。
【図１】
0005395824.tif 000002
【図２】
0005395824.tif 000003
【図３】
0005395824.tif 000004
【図４】
0005395824.tif 000005
【図５】
0005395824.tif 000006
【図６】
0005395824.tif 000007
【図７】
0005395824.tif 000008
【図８】
0005395824.tif 000009
【図９】
0005395824.tif 000010
【図１０】
0005395824.tif 000011
【図１１】
0005395824.tif 000012
【図１２】
0005395824.tif 000013
【図１３】
0005395824.tif 000014
【図１４】
0005395824.tif 000015
【図１５】
0005395824.tif 000016
【図１６】
0005395824.tif 000017
【図１７】
0005395824.tif 000018
【図１８】
0005395824.tif 000019
【図１９】
0005395824.tif 000020
【図２０】
0005395824.tif 000021
【図２１】
0005395824.tif 000022
【図２２】
0005395824.tif 000023