(57)【特許請求の範囲】
【請求項１】
通信インターフェイスと、
前記通信インターフェイスに連結されたコントローラと、を備え、
前記コントローラは、
前記通信インターフェイスを通じて論理的ディバイスを提供し、
前記通信インターフェイスを通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、前記通信インターフェイスを通じて前記仮想ディバイスを提供し、
前記イネーブル信号は、有効でないファームウェアを含むことを特徴とするディバイス。
【請求項２】
前記イネーブル信号は、前記有効でないファームウェア内のコマンドであることを特徴とする請求項１に記載のディバイス。
【請求項３】
前記コントローラは、
前記通信インターフェイスを通じてファームウェアを受信し、前記ファームウェアが有効でないか否かを判断し、
前記ファームウェアが有効でない場合、前記イネーブル信号が前記ファームウェアに含まれるか否かを判断することを特徴とする請求項１に記載のディバイス。
【請求項４】
前記コントローラは、
前記通信インターフェイスを通じてファームウェアを受信し、前記ファームウェアが有効でないか否かを判断し、
前記ファームウェアが有効でない場合、ディスエーブルコマンドが前記ファームウェアに含まれるか否かを判断し、
前記ファームウェアにディスエーブルコマンドが含まれる場合、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせることを特徴とする請求項１に記載のディバイス。
【請求項５】
前記コントローラは、
前記通信インターフェイスを通じて前記仮想ディバイスに対するアクセスを受信し、
前記仮想ディバイスに対するアクセスに応答して前記ディバイスのためのファームウェアにアクセスすることを特徴とする請求項１に記載のディバイス。
【請求項６】
前記コントローラは、
前記通信インターフェイスを通じて、前記仮想ディバイスに入力されるコマンドを含む書込みを受信し、
前記コマンドを実行し、前記コマンドの実行に対する応答を生成すると共に、
前記通信インターフェイスを通じて、前記仮想ディバイスに関連する読出しを受信し、
前記読出しに応答して、前記コマンドの実行に対する応答を伝送することを特徴とする請求項１に記載のディバイス。
【請求項７】
ディバイスの動作方法であって、
論理的ディバイスを提供するディバイスによって、制御信号を受信する段階と、
前記ディバイスによって、イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、
前記ディバイスによって、前記イネーブルコマンドに応答して仮想ディバイスをイネーブルさせる段階と、を有し、
前記制御信号を受信する段階は、前記ディバイスによって、前記ディバイスのための有効でないファームウェアの伝送を受信する段階を含むことを特徴とする方法。
【請求項８】
前記ディバイスによって、前記仮想ディバイスに対するアクセスを受信する段階と、
前記ディバイスによって、前記仮想ディバイスに対するアクセスに応答して前記ディバイスのための現在のファームウェアにアクセスする段階と、を更に含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ディバイスによって、前記仮想ディバイスに入力されるコマンドを含む書込みを受信する段階と、
前記ディバイスによって、前記コマンドを実行する段階と、
前記ディバイスによって、前記コマンドの実行に対する応答を生成する段階と、
前記ディバイスによって、前記仮想ディバイスに関連する読出しを受信する段階と、
前記ディバイスによって、前記読出しに応答して前記コマンドの実行に対する応答を伝送する段階と、を更に含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記ディバイスによって、ディスエーブルコマンドが前記有効でないファームウェアに含まれるか否かを判断する段階と、
前記ファームウェアにディスエーブルコマンドが含まれる場合、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディバイスとその動作方法に関し、より詳細には、選択的にイネーブルすることが可能な仮想ディバイスを有するディバイスとその動作方法に関する。
【背景技術】
【０００２】
特定のシステムは、物理的及び機能的の両方で、相対的にアクセス不可能な機能を有するディバイスを含む。例えば、ｅＭＭＣディバイスのようなメモリ装置は多様な場所にソルダリング（ｓｏｌｄｅｒｉｎｇ）される。その結果、ディバイスに物理的にアクセスすることは相対的に難しい。更に、ディバイスの特定の機能にアクセスすることはカスタムコマンドを必要とし、ディバイスにコマンドを伝送するためのカスタムＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）を必要とする。その結果、ディバイスにアクセスすることは相対的に難しく、ＯＳ又はＯＳの構成要素を代替することを必要とする。ディバイスにアクセスするか、或いはテストするためのこのようなオプションはディバイスを含むシステムのエンドユーザーのような特定のユーザーには利用できないこともある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８，０７８，７８８号明細書
【特許文献２】米国特許第８，７３２、５２７号明細書
【特許文献３】米国特許出願公開第２０１０／０１８５８７４号明細書
【特許文献４】米国特許出願公開第２０１２／００４２３７６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、選択的にイネーブルすることが可能な仮想ディバイスを有するディバイスとその動作方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するためになされた本発明の一態様によるシステムは、制御信号に応答して論理的ディバイスを提供し、仮想ディバイスをイネーブルさせるディバイスと、前記ディバイスに連結され、第１ディバイスインターフェイスを通じて前記論理的ディバイスを提供し、前記制御信号を前記ディバイスに伝達して前記仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、第２ディバイスインターフェイスを通じて前記仮想ディバイスを提供するプロセッサと、を備える。
【０００６】
前記制御信号は、有効でないファームウェアを含み得る。
前記プロセッサは、有効でないファームウェアを前記ディバイスに伝達し、前記ディバイスは、前記有効でないファームウェアに含まれるコマンドに応答して前記仮想ディバイスをイネーブルさせ得る。
前記ディバイスは、ストレージディバイスを含み、前記論理的ディバイスは、前記ストレージディバイスの第１パーティションであり、前記仮想ディバイスは、前記ストレージディバイスの第２パーティションであり得る。
前記第２パーティションの少なくとも一部は、前記ディバイスの属性に対するメモリマップインターフェイス（ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ｉｎｔｅｒｆａｃｅ）を含み得る。
前記ディバイスの属性は、前記ディバイスに対するファームウェア、コマンドキュー、応答キュー、及び前記ディバイスのメタ−データの中の少なくとも１つを含み得る。
前記システムは、前記プロセッサに連結された通信インターフェイスと、前記通信インターフェイスに連結され、前記第２ディバイスインターフェイスを通じて前記ディバイスにアクセスするホストシステムと、を更に含むことができる。
前記ホストシステムは、前記第２ディバイスインターフェイスを通じて前記ディバイスに対する最適化、診断、及びパフォーマンステストの中の少なくとも１つを遂行し得る。
【０００７】
上記目的を達成するためになされた本発明の一態様によるディバイスは、通信インターフェイスと、前記通信インターフェイスに連結されたコントローラと、を備え、前記コントローラは、前記通信インターフェイスを通じて論理的ディバイスを提供し、前記通信インターフェイスを通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、前記通信インターフェイスを通じて前記仮想ディバイスを提供する。
【０００８】
前記コントローラは、パーティションテーブルを提供し、前記論理的ディバイスは、前記パーティションテーブル内の第１パーティションであり、前記仮想ディバイスがイネーブルされた場合、前記仮想ディバイスは、前記パーティションテーブル内の第２パーティションであり得る。
前記ディバイスは、前記コントローラに連結されたメモリを更に含み、前記論理的ディバイスは、前記メモリに格納されたデータに関連する論理的ストレージディバイスであり、前記コントローラは、前記仮想ディバイスの少なくとも一部として前記メモリに関連するメタ−データを提供し得る。
前記コントローラは、前記通信インターフェイスを通じて受信されたディスエーブル信号に応答して前記仮想ディバイスをディスエーブルさせ得る。
前記イネーブル信号は、有効でないファームウェアを含み得る。
【０００９】
上記目的を達成するためになされた本発明の一態様によるディバイスの動作方法は、論理的ディバイスを提供するディバイスによって、制御信号を受信する段階と、前記ディバイスによって、イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、前記ディバイスによって、前記イネーブルコマンドに応答して仮想ディバイスをイネーブルさせる段階と、を有する。
【００１０】
前記方法は、前記ディバイスによって、ディスエーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことができる。
前記制御信号を受信する段階は、前記ディバイスによって、前記ディバイスのためのファームウェアの伝送を受信する段階を含み得る。
前記イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階は、前記ディバイスによって、前記伝送されたファームウェアが有効でないか否かを判断する段階と、前記伝送されたファームウェアが有効でない場合、前記ディバイスによって、前記イネーブルコマンドが前記伝送されたファームウェアに含まれるか否かを判断する段階と、を含み得る。
前記方法は、前記ディバイスによって、前記伝送されたファームウェアが有効でないか否かを判断する段階と、前記伝送されたファームウェアが有効でない場合、前記ディバイスによって、ディスエーブルコマンドが前記伝送されたファームウェアに含まれるか否かを判断する段階と、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことができる。
前記方法は、前記ディバイスによって、前記仮想ディバイスに対するアクセスを受信する段階と、前記ディバイスによって、前記仮想ディバイスに対するアクセスに応答して前記ディバイスのためのファームウェアにアクセスする段階と、を更に含むことができる。
前記方法は、前記ディバイスによって、前記仮想ディバイスに対する、コマンドを含む書込みを受信する段階と、前記ディバイスによって、前記コマンドを実行する段階と、前記ディバイスによって、前記コマンドの実行に対する応答を生成する段階と、前記ディバイスによって、前記仮想ディバイスに関連する読出しを受信する段階と、前記ディバイスによって、前記読出しに応答して前記コマンドの実行に対する応答を伝送する段階と、を更に含むことができる。
【発明の効果】
【００１１】
本発明のディバイスは選択的にイネーブルすることが可能な仮想ディバイスを有するため、ソルダリングされたディバイスのテストや特定機能に対するアクセスのような非標準的な目的などにおいてカスタムＯＳやカスタムコマンド更には高いアクセス権限を必要とせず、またこれらの権限や構成要素を変更せずにディバイスにアクセスすることが可能になる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態によるシステムを示す図である。
【図２】一実施形態による図１のシステムの機能を示すブロック図である。
【図３】一実施形態による仮想ディバイスをイネーブルさせた後の図１のシステムの機能を示すブロック図である。
【図４】他の実施形態による図１のシステムの機能を示すブロック図である。
【図５】他の実施形態による図１のシステムの機能を示すブロック図である。
【図６】他の実施形態による仮想ディバイスをイネーブルさせた後の図１のシステムの機能を示すブロック図である。
【図７】一実施形態によるアドレス指定可能な範囲を示すブロック図である。
【図８】一実施形態による有効でないファームウェアを示すブロック図である。
【図９】一実施形態による状態値のテーブルである。
【図１０】一実施形態による仮想ディバイスのメモリマッピングを示すブロック図である。
【図１１】一実施形態によるディバイスを示すブロック図である。
【図１２】一実施形態によるメモリディバイスを示すブロック図である。
【図１３】一実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。
【図１４】一実施形態による有効でないファームウェアを使用する方法を示すフローチャートである。
【図１５】他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。
【図１６】他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。
【図１７】一実施形態によるホスト及びターゲットシステムを示すブロック図である。
【図１８】一実施形態による仮想ディバイスにアクセスする方法を示すフローチャートである。
【図１９】一実施形態による電子システムを示すブロック図である。
【図２０】一実施形態によるテストセットアップを示す図である。
【図２１】一実施形態によるｅＭＭＣを示すブロック図である。
【図２２】一実施形態によるＳＳＤを備えたシステムを示すブロック図である。
【発明を実施するための形態】
【００１３】
本明細書における説明の全ては、例示的なものであり、本発明の付加的な説明が提供されるものとして看做される。参照符号は、本発明の実施形態で示され、その例が参照図面に示される。同一の参照符号は同一又は類似な部分を参照する。
【００１４】
一要素又は層が異なる要素又は層に“連結される”、“結合される”、又は“隣接する”と言及する場合は、他の要素又は層に直接的に連結されるか、結合されるか、又は隣接することであり、或いはその間に挟まれる要素又は層が存在する。本明細書で使用する“及び／又は”という用語は羅列した要素の１つ又はそれ以上の可能な組合せを含む。
【００１５】
本明細書で、“第１”、“第２”等の用語を多様な要素を説明するために使用するが、これらの要素はこの用語によって限定されない。これらの用語は単なる他のものから１つの構成要素を区別するために使用される。従って、本明細書で使用する第１構成要素、区間、層のような用語は本発明の技術思想を逸脱しない範囲内で第２構成要素、区間、層等に使用される。
【００１６】
“下の”、“下部の”、“上の”、“上部の”、及びこれと類似な用語は直接的に又は他の層を介在して配置される場合を全て含む。そして、空間的に相対的なこのような用語は図面に示す方向に加えて他の方向を含むものと理解される。例えば、装置が裏返しの場合、“下の”として説明する構成要素は“上の“になる。
【００１７】
本明細書で説明する用語は単なる特定の実施形態を説明するための目的として使用されるが、それに限定されない。“１つの”のような用語は異なって明確に言及しない限り、複数の形態を含むものと理解される。“含む”又は“構成される”のような用語は説明する特徴、段階、動作、成分、及び／又は構成要素の存在を明示し、追加的な１つ又はそれ以上の特徴、段階、動作、成分、構成要素、及び／又はそれらのグループの存在を排除しない。
【００１８】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【００１９】
図１は、一実施形態によるシステムを示す図である。本実施形態で、システム１００はプロセッサ１０４に連結されたディバイス１０２を含む。ディバイス１０２はプロセッサ１０４と通信するように連結される多様な形態のディバイスを含む。例えば、ディバイス１０２は、メモリディバイス、大容量ストレージディバイス、ユーザーインターフェイスディバイス、ディスプレイディバイス、ネットワークディバイス、又はこれらと類似なものである。プロセッサ１０４は、汎用プロセッサ、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＳｏＣ（ｓｙｓｔｅｍ  ｏｎ  ｃｈｉｐ）、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、マイクロコントローラ、ディスクリートロジックディバイス（ｄｉｓｃｒｅｔｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、そのような構成要素の組合せ、又はこれらと類似なものを含む。
【００２０】
ディバイス１０２は多様な方法の通信連結を通じてプロセッサ１０４と連結される。例えば、ディバイス１０２とプロセッサ１０４との間の連結は、ワイヤ、シリコン貫通電極（ｔｈｒｏｕｇｈ−ｓｉｌｉｃｏｎ  ｖｉａ：ＴＳＶ）、又は集積回路の連結に適合する他の構造を含む。他の例として、連結は、システムバス、印刷回路基板（ＰＣＢ）上のトレース（ｔｒａｃｅ）、又はこれらと類似なものを含む。更に他の例として、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）、ＳＡＴＡ（ｓｅｒｉａｌ  ＡＴＡ）、ＳＡＳ（ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ）、多様なＪＥＤＥＣ標準、又はこれらと類似なものに互換されるインターフェイス、及びケーブルを含む。本実施形態で、特定の例として連結を説明したが、ディバイス１０２とプロセッサ１０４とは他の多様な方法で連結され得る。
【００２１】
図２は、一実施形態による図１のシステム１００の機能を示すブロック図である。図１及び図２を参照すると、本実施形態で、プロセッサ１０４の機能はカーネル空間２１０及びユーザー空間２１２で構成される。カーネル空間２１０は、ＯＳ、ディバイスドライバ、メモリマネージャー、又はこれらと類似なものを含む。ユーザー空間２１２はカーネル空間２１０の外部ソフトウェアを含む。本実施形態で、カーネル空間２１０におけるソフトウェアはユーザー空間２１２におけるソフトウェアより高い権限水準（ｐｒｉｖｉｌｅｇｅ  ｌｅｖｅｌ）で駆動される。本実施形態で、ソフトウェアの特定の分類（ｄｉｖｉｓｉｏｎ）を例として使用するが、他の実施形態で、分類が存在しないか、又は他の分類が存在し得る。
【００２２】
本実施形態で、ディバイス１０２は論理的ディバイス２０９−１〜２０９−Ｎで表現される１つ又はそれ以上の論理的ディバイス２０９を提供する。論理的ディバイス２０９はディバイス１０２の特定の構成の表現である。しかし、論理的ディバイス２０９は物理的分類に対応するか又は対応しない論理的分類（ｌｏｇｉｃａｌ  ｄｉｖｉｓｉｏｎ）に関連する。例えば、一実施形態として、ディバイス１０２は論理的ディバイス２０９の各々に関連するプロセッサ１０４に対する専用連結を有する。しかし、他の実施形態で、論理的ディバイス２０９がディバイス１０２に対して論理的に分類されるのに反して、論理的ディバイス２０９の各々は共用通信回線を通じてプロセッサ１０４と通信する。
【００２３】
論理的ディバイス２０９は、全体ディバイス１０２、ディバイス１０２のサブセット、又はこれと類似なものに関連する。例として、データストレージディバイスを使用した場合、論理的ディバイス２０９−１はディバイス１０２の全体ストレージ領域であり、他の論理的ディバイス２０９−２がディバイス１０２の全体ストレージ領域内のパーティション（ｐａｒｔｉｔｉｏｎ）である。本実施形態で、論理的ディバイス２０９は、同一のタイプの論理的ディバイスであるが、同一のタイプの論理的ディバイスである必要はない。例えば、論理的ディバイス２０９−１はディスプレイディバイスであり、同一のディバイス１０２内の他の論理的ディバイス２０９−２はオーディオ出力ディバイスである。
【００２４】
プロセッサ１０４は、ディバイスインターフェイス２０８−１〜２０８−Ｎで表現される１つ又はそれ以上のディバイスインターフェイス２０８を提供する。ディバイスインターフェイス２０８は、ディバイス１０２及び論理的ディバイス２０９にアクセスし、ユーザー空間２１２にあるアプリケーション２１１又はカーネル空間２１０にある他の態様のＯＳのような、他のソフトウェアを通じたインターフェイスである。例えば、データストレージディバイスを使用した場合、ディバイスインターフェイス２０８は、ディバイス１０２の全体ストレージ領域、全体ストレージ領域のパーティション、又はこれと類似なものに対するインターフェイスである。
【００２５】
本実施形態で、アプリケーション２１１はディバイスインターフェイス２０８−１と通信する。ディバイスインターフェイス２０８−１は論理的ディバイス２０９−１に関連する。従って、アプリケーション２１１は論理的ディバイス２０９−１にアクセスする。アプリケーション２１１は他の全てのディバイスインターフェイス２０８（従って、論理的ディバイス２０９に関連する）と通信する。しかし、説明を明確にするために、図面でそのような通信は省略する。
【００２６】
本実施形態で、ディバイスインターフェイス２０８と論理的ディバイス２０９との間で１対１に対応するように図示したが、ディバイスインターフェイス２０８及び論理的ディバイス２０９は他の方法によっても関連し得る。例えば、１つのディバイスインターフェイス２０８は複数の論理的ディバイス２０９に関連する。他の例として、複数のディバイスインターフェイス２０８は１つの論理的ディバイス２０９に関連する。
【００２７】
図３は、一実施形態による仮想ディバイスをイネーブルさせた後の図１のシステムの機能を示すブロック図である。図１及び図３を参照すると、一実施形態として、プロセッサ１０４は制御信号をディバイス１０２に伝送する。例えば、アプリケーション２１１はディバイスインターフェイス２０８−１又は他のディバイスインターフェイス２０８を通じて制御信号をディバイス１０２に伝送する。これに応答して、ディバイス１０２は仮想ディバイス３１３をイネーブルさせる。プロセッサ１０４は仮想ディバイス３１３に対応する新しいディバイスインターフェイス３１４を提供する。本実施形態で、１つのディバイスインターフェイス３１４を例として用いたが、複数のディバイスインターフェイス３１４が仮想ディバイス３１３にアクセスするために用いられ得る。更に、本実施形態で、ディバイスインターフェイス３１４がディバイスインターフェイス２０８−１〜２０８−Ｎの中の１つ又はそれ以上から分離されているが、ディバイスインターフェイス３１４は、ディバイスインターフェイス２０８−１〜２０８−Ｎの中の１つの他の態様を示し、ディバイスインターフェイス２０８−１〜２０８−Ｎを通じて仮想ディバイス３１３がアクセスされ得る。即ち、１つのディバイスインターフェイス２０８−１は、イネーブルされると、論理的ディバイス２０９−１及び仮想ディバイス３１３に対するアクセスを許容する。
【００２８】
仮想ディバイス３１３はディバイス１０２のハードウェアに直接的に関連しないディバイスである。データストレージディバイスを例として使用した場合、仮想ディバイス３１３は仮想パーティションである。即ち、データストレージディバイスの他のパーティションと比較して、仮想パーティションとして、仮想ディバイスはデータストレージディバイスのストレージ構成要素に直接的に対応しない。
【００２９】
仮想ディバイス３１３はディバイス１０２内の論理的ディバイス２０９のいずれかと同一のタイプのディバイスである必要はない。例えば、論理的ディバイス２０９がデータストレージディバイスのパーティションである場合、仮想ディバイスはシリアルポートである。しかし、他の実施形態で、仮想ディバイス３１３はＯＳの一部の代替無しにＯＳによって使用可能なタイプのディバイスである。例えば、仮想ディバイス３１３及び論理的ディバイス２０９−１の全てがパーティションである場合、ＯＳが変化無しにパーティションとして論理的ディバイス２０９−１にアクセスすると、ＯＳはパーティションとして仮想ディバイス３１３にアクセスすることができる。例えば、仮想ディバイス３１３と論理的ディバイス２０９−１との全てがネットワークディバイスである場合、ＯＳはネットワークディバイスの全てにアクセスすることができる。
【００３０】
仮想ディバイス３１３をイネーブルさせるために用いられる制御信号は多くの多様な形態を取る。一実施形態として、制御信号はディバイス１０２のタイプに特定される。例えば、詳細に後述するが、ディバイス１０２はファームウェアアップデートを受信する。有効でないファームウェア（ｉｎｖａｌｉｄ  ｆｉｒｍｗａｒｅ）は仮想ディバイス３１３がイネーブルされなければならないことを指示する制御信号としてディバイス１０２に伝送される。
【００３１】
同様に、制御信号は仮想ディバイス３１３をディスエーブルさせるために用いられる。上述した有効でないファームウェアを使用した場合、有効でないファームウェアはディバイス１０２に伝送される。これに応答して、ディバイス１０２は仮想ディバイス３１３をディスエーブルさせる。
【００３２】
一実施形態として、仮想ディバイス３１３をディスエーブルさせるために用いられる制御信号は仮想ディバイス３１３をイネーブルさせるために用いられる制御信号と実質的に同一である。即ち、制御信号は仮想ディバイス３１３の現在の状態に依存して仮想ディバイス３１３をイネーブル又はディスエーブルさせるトグル信号として動作する。しかし、他の実施形態で、仮想ディバイス３１３をイネーブルさせるか又はディスエーブルさせるために用いられる制御信号は異なる。
【００３３】
本実施形態の例として有効でないファームウェアを使用したが、制御信号は異なる形態を取り得る。例えば、パーティションの特定のアドレス範囲に書き込まれた特定のコードが制御信号を伝送するために用いられる。他の例として、特定のアドレス、ペイロード（ｐａｙｌｏａｄ）、チェックサム（ｃｈｅｃｋｓｕｍ）、又はこれらと類似なものを含む特定のパケットが制御信号としてネットワークディバイスに伝送される。通信がディバイス１０２に伝送されてディバイス１０２が制御信号を他の通信と区別するというような方法に変更された場合、どのような通信も制御信号として用いられる。
【００３４】
図４は、他の実施形態による図１のシステムの機能を示すブロック図である。図１及び図４を参照すると、一実施形態として、追加的な論理的ディバイス４１５がディバイス１０２によって提供される。論理的ディバイス４１５はディバイスインターフェイス４１６を通じてアクセスされる。ディバイス１０２はディバイスインターフェイス４１６を通じて（その結果、論理的ディバイス４１５を通じて）制御信号を受信する。従って、インターフェイスを通じて、アプリケーション２１１又は他のソフトウェアは、仮想ディバイスがイネーブルされるか又はディスエーブルされるか、或いは構成されなければならないことを指示し、インターフェイスは特定の論理的ディバイス４１５に対応する特定のディバイスインターフェイス４１６を通じて制御信号を受信する。
【００３５】
図５は、他の実施形態による図１のシステムの機能を示すブロック図である。図１及び図５を参照すると、一実施形態として、ディバイス１０２は４つのパーティション５１７−１〜５１７−４を初期に提供するストレージディバイスである。例えば、ディバイス１０２はｅＭＭＣのようなＭＭＣ（Ｍｕｌｔｉ−Ｍｅｄｉａ  Ｃａｒｄ）である。ここで、パーティション５１７−１及び５１７−２はブートパーティションであり、パーティション５１７−３はＲＰＭＢ（ｒｅｐｌａｙ  ｐｒｏｔｅｃｔｅｄ  ｍｅｍｏｒｙ  ｂｌｏｃｋ）パーティションであり、パーティション５１７−４はユーザーパーティションである。本実施形態で、特定のパーティションを例として用いたが、ディバイス１０２は多様な数のパーティション及び多様なタイプのパーティションを有し得る。
【００３６】
カーネル空間２１０は、ＭＭＣホストコントローラドライバ５２２、ＭＭＣサブシステム５２４、ジェネリックブロックレイヤー（ｇｅｎｅｒｉｃ  ｂｌｏｃｋ  ｌａｙｅｒ）５２６、及びＶＦＳ（仮想ファイルシステム）／ＦＳ（ファイルシステム）／バッファキャッシュレイヤー５２８を含む。これらのレイヤーはパーティション５１７に対するアクセスを許諾するカーネル空間２１０にあるソフトウェアの一部の例である。カーネル空間２１０にあるレイヤーを通じて、パーティション５１７はマウントポイント５１８にマウントされる。例えば、ブートパーティション５１７−１及び５１７−２、ＲＰＭＢパーティション５１７−３、及びユーザーパーティション５１７−４は、各々マウントポイント５１８−１、マウントポイント５１８−２、マウントポイント５１８−３、及びマウントポイント５１８−４にマウントされる。マウントポイント５１８とパーティション５１７との間の関係を示す矢印又は説明は説明を簡単にするために省略する。
【００３７】
一実施形態として、ディバイス１０２はファームウェアアップデートを受信する。ファームウェアアップデートを通じて、制御信号はディバイス１０２に伝送されて仮想パーティションをイネーブルさせる。例えば、有効でないファームウェアアップデートはディバイス１０２に伝送される。この場合、ファームウェアは任意に不正確なチェックサム、不正確であるか又は過渡なサイズ、或いはこれと類似なものを有することによって有効でないことになる。しかし、有効でないファームウェアを生成する他の技術が、ファームウェアが有効であるか否かに対する条件に依存して使用される。一度、ディバイス１０２が有効でないファームウェアを受信すると、ディバイス１０２は仮想パーティションをイネーブルさせる。
【００３８】
図６は、他の実施形態による仮想ディバイスをイネーブルさせた後の図１のシステムの機能を示すブロック図である。図１、図５、及び図６を参照すると、図５に示したモードで、仮想パーティション５１９はディバイス１０２でイネーブルされない。例えば、ディバイス１０２のパーティションを指示するパーティションテーブル又は他の技術は仮想パーティション５１９が提供されないことを初期に指示する。しかし、有効でないファームウェアを受信した後、ディバイス１０２は仮想パーティション５１９をイネーブルさせる。
【００３９】
一実施形態として、仮想パーティション５１９は直ちにマウントされる必要はない。例えば、仮想パーティション５１９をイネーブルさせた後、システム１００は再ブーティングされる。再ブーティングの後、仮想パーティションはイネーブルされるため、ＯＳは仮想パーティション５１９をマウントポイント５２０に自動的にマウントする。他の実施形態で、ＯＳは、例えば、仮想パーティション５１９が利用可能であることの感知に応答して、再ブーティング無しに仮想パーティション５１９を仮想パーティションのマウントポイント５２０に自動的にマウントする。
【００４０】
有効でないファームウェアは再びディバイス１０２に伝送される。これに応答して仮想パーティション５１９はディスエーブルされる。上述したように、有効でないファームウェアは仮想パーティション５１９をイネーブルさせるために使用された有効でないファームウェアと同一であるか又は異なる。更に、システム１００の再ブーティングは、仮想パーティションのマウントポイント５２０から仮想パーティション５１９をアンマウントさせるために使用される必要はない。
【００４１】
特定の実施形態で、ディバイス１０２はフィールドファームウェアアップデート（ｆｉｅｌｄ  ｆｉｒｍｗａｒｅ  ｕｐｄａｔｅ：ＦＦＵ）コマンドを受信する。ＦＦＵコマンドを通じて、有効でないコマンドはディバイス１０２に伝送される。特に、仮想パーティション５１９をイネーブルさせるための有効でないファームウェアを使用するＦＦＵコマンド及びファームウェアアップデートは、フィールドで用いられ、特定のＯＳ、システム１００のサービスセンターへのリターン、又はこれらと類似なものを必要としない。
【００４２】
図７は、一実施形態によるアドレス指定可能な（ａｄｄｒｅｓｓａｂｌｅ）範囲を示すブロック図である。本実施形態で、実線で示した部分はストレージディバイスのアドレス指定可能な範囲７００のパーティション及び潜在的パーティションを示す。ここで、ブートパーティション７１８−１及び７１８−２、ＲＰＭＢパーティション７１８−３、及びユーザーパーティション７１８−４は全てストレージディバイスの物理的ストレージ空間７３２内のパーティションである。未使用空間７３０は任意のパーティションによって使用されない物理的ストレージ空間７３２の残りの部分を示す。しかし、本実施形態で、仮想パーティション７２０は、物理的ストレージ空間７３２に直接対応せず、物理的ストレージ空間７３２にあるか又は物理的ストレージ空間７３２から分離された情報を示す。例えば、仮想パーティション７２０は、物理的ストレージ空間７３２に格納されたデータから分離された情報、物理的ストレージ空間７３２に格納された情報、又はそのような情報の組合せを示す。
【００４３】
仮想パーティション７２０は他のパーティション７１８と同一の方法によってアクセスされる。例えば、仮想パーティション７２０は分離された独立的なアドレス範囲を有する。しかし、他の実施形態で、物理的ストレージ空間７３２は、ブロック、セクター、又はこれと類似なもののような連続的なアドレス範囲によってアドレス指定される。仮想パーティション７２０は物理的ストレージ空間７３２の端部に連続するアドレス範囲を通じてアクセスされる。しかし、仮想パーティション７２０は、物理的ストレージ空間７３２のアドレス範囲に対応しないことから、物理的ストレージ空間７３２に直接対応しない。
【００４４】
一実施形態で、仮想パーティション７２０をイネーブルさせることは他のパーティション７１８−１〜７１８−４の態様を変化させない。例えば、パーティション７１８−１〜７１８−４のデータ、大きさ、配向（ｏｒｉｅｎｔａｔｉｏｎ）、又はこれらと類似なものの全ては仮想パーティション７２０がイネーブルされた後にも同じ状態に維持される。特に、全体の物理的ストレージ空間７３２が現存するパーティション７１８によって占有されるとしても、仮想パーティション７２０は依然としてイネーブルされる。
【００４５】
一実施形態において、特定のディバイス１０２は予め設定されたセットのパーティションを提供する。例えば、ｅＭＭＣディバイスは４つまでの汎用パーティション（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｐａｒｔｉｔｉｏｎｓ：ＧＰＰｓ）を提供する。仮想パーティション７２０はそのようなＧＰＰの空間をチャージする。
【００４６】
図８は、一実施形態による有効でないファームウェアを示すブロック図である。上述したように、仮想ディバイスをイネーブル又はディスエーブルさせるために使用される制御信号は有効でないファームウェア８４０を含む。ここで、有効でないファームウェア８４０はコマンド８４２を含む。
【００４７】
コマンド８４２は多様な異なるコマンドを含む。例えば、コマンド８４２は、仮想ディバイスをイネーブルさせるコマンド、仮想ディバイスをディスエーブルさせるコマンド、仮想ディバイスを再構成するコマンド、又はこれらと類似なものを含む。本実施形態で、コマンド８４２が有効でないファームウェア８４０の特定の部分にあることを示しているが、コマンド８４２は有効でないファームウェア８４０内の他の部分にあってもよい。更に、本実施形態で、１つのコマンド８４２が有効でないファームウェア８４０を図示したが、複数の他の又は類似のコマンド８４２が有効でないファームウェア８４０に提供され得る。例えば、有効でないファームウェア８４０にある第１コマンドは先にイネーブルされた仮想ディバイスをディスエーブルさせる反面、有効でないファームウェア８４０にある第２コマンドは他の現在ディスエーブルされた仮想ディバイスをイネーブルさせる。
【００４８】
図９は、一実施形態による状態値のテーブルである。図１及び図９を参照すると、本実施形態で、ファームウェアアップデートを試みた後、値はディバイス１０２から読み出される。値はファームウェアをアップデートするための試みに関連する情報を伝達する。有効でないファームウェアがディバイス１０２に伝達された場合、ディバイス１０２からの応答は、ファームウェア設置（インストール）エラーを示す０ｘ１１の値を含むか、又は発生したエラー及びエラーがファームウェアを設置することに関連することを示す特定のビットセット（ｂｉｔｓ  ｓｅｔ）を含む。
【００４９】
他のフィールド、ビット、又はこれらと類似なものは、成功、失敗、状態を含み、或いはそうではない場合、仮想ディバイスに関連する有効でないファームウェアを他の有効でないファームウェアと区別する。例えば、イネーブルコマンドを有する有効でないファームウェアがディバイス１０２に伝送された場合、値がディバイス１０２から読み出される時、値はファームウェアの設置にエラーがあったことを示すビットセット及びコマンドを実行することが成功したか否かを示すビットを有する。指定された範囲にある値を発生させるビットは成功又は失敗を示すように設定される。例えば、第３番目のＬＳＢ（ｌｅａｓｔ−ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ）は、コマンドを実行することが成功した場合、設定される。従って、有効でないファームウェアの成功的な伝送及びコマンドの成功的な実行は、エラーが発生し、エラーがファームウェア設置に関連し、そして有効でないファームウェア内のコマンドが成功的に実行されたことを示すように設定されたビットである０ｘ１５又は０００１０１０１ｂの値をもたらす。反面、有効でないファームウェアの成功的な伝送、及びコマンドの成功的でない実行又はコマンドの欠如は０ｘ１１又は０００１０００１ｂの値をもたらす。本実施形態で、特定の例を説明したが、他の実施形態で、ビットは、コマンドが受信されたが成功的に実行されなかったことのようなコマンドが有効でないか、或いは仮想ディバイスの状態又はこれと類似な他の情報を示すために設定されるか、或いはクリアーされる。
【００５０】
図１０は、一実施形態による仮想ディバイスのメモリマッピングを示すブロック図である。上述したように、仮想ディバイスは仮想パーティションとして提供される。パーティションはディバイス１０２の多様な属性に対するメモリマップインターフェイス（ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ｉｎｔｅｒｆａｃｅ）を含む。例えば、アドレス空間１０１４は多様な他のメモリマップ情報を含む。
【００５１】
本実施形態で、ヘッダー１００２は、仮想パーティションに関連する利用可能な情報、アドレススパン（ｓｐａｎ）、又はこれらと類似なもののタイプを指示する。ファームウェア１００４はディバイス１０２のファームウェアにマッピングされる。即ち、ディバイス１０２の現在のファームウェアは、仮想ディバイスを通じて読み出されるか、或いは書き込まれる。一実施形態において、ファームウェア１００４のアドレス範囲はファームウェアに対する利用可能な全体ストレージ空間にマッピングされる。しかし、他の実施形態で、ファームウェア１００４のアドレス範囲は現在存在するファームウェアの範囲にマッピングされる。
【００５２】
ＳＦＲマップ１００５はディバイス１０２の特殊機能レジスター（ｓｐｅｃｉａｌ  ｆｕｎｃｔｉｏｎ  ｒｅｇｉｓｔｅｒ：ＳＦＲ）に対するメモリマップインターフェイスである。従って、ＳＦＲは、パーティションのＳＦＲマップ１００５を通じて読み出されるか、或いは書き込まれる。
【００５３】
コマンド（ＣＭＤ）トレイ１００８及び応答トレイ１０１０は、コマンドが書き込まれて、応答が受信されるアドレス空間である。例えば、ディバイス１０２で実行されるコマンドはコマンドトレイ１００８に書き込まれる。ディバイス１０２は、コマンドを実行し、応答を生成する。応答は応答トレイ１０１０のアドレス範囲から読み出される。一実施形態において、バイト（ｂｙｔｅ）をコマンドトレイ１００８のアドレス範囲にある最後の位置に書き込むように、特定のアクションが発生すると、ディバイス１０２は、コマンドがコマンドトレイ１００８に書き込まれると、今実行できるという表示としてそのアクションを使用する。従って、コマンドがコマンドトレイ１００８に書き込まれ、コマンドが書き込まれた後、バイトがコマンドトレイ１００８の最後のバイトに書き込まれると、ディバイス１０２は先に書き込まれたコマンドを実行するように命令する。本実施形態で、ディバイス１０２に対するコマンドの実行を発生させる特定のシークェンスを説明したが、他のシークェンスが使用され得る。
【００５４】
ディバイス１０２はディバイスに関連する多様なメタ−データを有する。このメタ−データは、メタ−データ１０１２にマッピングされ、従ってパーティションを通じてアクセスされる。例えば、ディバイス１０２に関連するパフォーマンスデータ、エラーデータ、状態データ、又はこれらと類似なものはメタ−データ１０１２のアドレス範囲を通じて露出される。特に、そうではなく、ディバイス１０２がＪＥＤＥＣ標準のような特定の標準に準拠する場合、そのようなメタ−データは利用可能でないデータを含む。
【００５５】
本実施形態で、ディバイス１０２に関連する特定のタイプの情報、情報の組織、又はこれらと類似なものを例として用いたが、他の実施形態で、ディバイスに関連する他のタイプの情報がメモリマップパーティション（ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ｐａｒｔｉｔｉｏｎ）を通じて提供され得る。
【００５６】
図１１は、一実施形態によるディバイスを示すブロック図である。本実施形態で、ディバイス１１００は、通信インターフェイス１１０２、コントローラ１１０４、及び内部構成要素１１０６を含む。通信インターフェイス１１０２はコントローラ１１０４に連結される。通信インターフェイス１１０２は、ディバイス１１００、そして他のディバイス及び／又はシステム間の通信をイネーブルさせる。例えば、通信インターフェイス１１０２は、他のディバイスとの通信をイネーブルさせるための端子、ピン、コネクター、ドライバ、バッファ、プロセッサ、又はこれらと類似なものを含む。特定の実施形態で、通信インターフェイス１１０２は１つ又はそれ以上のＪＥＤＥＣ標準に従うインターフェイスである。他の実施形態で、通信インターフェイス１１０２は、ＵＳＢインターフェイス、ストレージディバイスインターフェイス、拡張バス又は他のコンピューターバスインターフェイス、或いはこれらと類似なものである。
【００５７】
コントローラ１１０４は、汎用プロセッサ、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＳＯＣ（ｓｙｓｔｅｍ  ｏｎ  ａ  ｃｈｉｐ）、プログラム可能なロジックディバイス、マイクロコントローラ、ディスクリートロジックディバイス（ｄｉｓｃｒｅｔｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、又はこれらの組合せを含む。コントローラ１１０４及び通信インターフェイス１１０２と他の内部構成要素１１０６との間でインターフェイスを遂行する。しかし、他の実施形態で、コントローラ１１０４は内部構成要素１１０６に対するアクセスを制御する。
【００５８】
内部構成要素１１０６は通信インターフェイス１１０２及びコントローラ１１０４以外のディバイス１１００内の他の構成要素を含む。例えば、内部構成要素１１０６は、データストレージ構成要素（ｓｔｏｒａｇｅ  ｅｌｅｍｅｎｔ）、センサー、アクチュエーター（ａｃｔｕａｔｏｒ）、他の通信インターフェイス、又はこれらと類似なものを含む。
【００５９】
コントローラ１１０４は通信インターフェイス１１０２を通じて論理的ディバイスを提供する。論理的ディバイスの提供は、管理されるコントローラ１１０４の特定の構成、内部構成要素１１０６に対する特定のウェイアクセス（ｗａｙ  ａｃｃｅｓｓ）、又はこれらと類似なものを含む。例えば、コントローラ１１０４は１つ又はそれ以上の論理的ディバイスとして１つ又はそれ以上のパーティションを列挙するパーティションテーブルを提供する。他の実施形態で、コントローラ１１０４は論理的ディバイスにアドレス指定された通信に応答する。
【００６０】
コントローラ１１０４は通信インターフェイス１１０２を通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせる。仮想ディバイスがイネーブルされると、コントローラ１１０４は通信インターフェイス１１０２を通じて仮想ディバイスを提供する。例えば、仮想ディバイスをイネーブルすることは仮想ディバイスを反映するパーティションテーブルを変更することを含む。他の例で、コントローラ１１０４は仮想ディバイス（即ち、現存する論理的ディバイスのアドレスでないアドレスに関連する仮想ディバイス）にアドレス指定された通信に応答する。
【００６１】
一度、仮想ディバイスがイネーブルされると、仮想ディバイスは上述したようにアクセスされる。従って、多様な動作が仮想ディバイスを通じてディバイス１１００で実行される。例えば、非標準コマンド及び応答は、特定の標準に従って利用可能でない仮想ディバイスを通じて使用される。非標準コマンド及び応答は、最適化、デバッギング、パフォーマンステスト、又はこれらと類似なもののために使用される。
【００６２】
コントローラ１１０４は通信インターフェイス１１０２を通じてディスエーブル信号を受信する。従って、コントローラ１１０４はディスエーブル信号に応答して仮想ディバイスをディスエーブルさせる。本実施形態で、論理的ディバイスを提供するか、或いは仮想ディバイスをイネーブルさせる特定の技術を例として使用したが、ディバイスを提供する他の技術が使用され得る。
【００６３】
図１２は、一実施形態によるメモリディバイスを示すブロック図である。本実施形態で、メモリディバイス１２００は図１１の通信インターフェイス１１０２及びコントローラ１１０４と類似な通信インターフェイス１２０２及びコントローラ１２０４を含む。しかし、図１１の内部構成要素１１０６はメモリ１２０６である。例えば、メモリ１２０６はデータを格納する。メモリ１２０６は、メモリセル、ディスクフラッタ、又はこれらと類似なデータストレージ媒体を含む。
【００６４】
一実施形態で、コントローラ１２０４はメモリ１２０６に格納されたデータに関連する論理的ストレージディバイスを提供する。例えば、論理的ストレージディバイスはパーティションである。上述したように、コントローラ１２０４は仮想ディバイスをイネーブルさせて提供する。
【００６５】
従って、上述したような多様なデータは仮想ディバイスを通じてアクセス可能である。例えば、一実施形態で、コントローラ１２０４は仮想ディバイスの少なくとも一部としてメモリ１２０６に関連するメタ−データを提供する。ここで、メモリ１２０６に関連するメタ−データはメモリディバイス１２００に関連する所定のデータである。特定の実施形態で、メタ−データはメモリ１２０６に格納された実際のデータでないメモリディバイス１２００に関連する所定の情報を含む。本実施形態で、メタ−データはメモリ１２０６に格納された実際のデータを含まないが、他の実施形態で、メモリ１２０６に格納されたデータは仮想ディバイスを通じてアクセスされる。即ち、仮想ディバイスはメモリディバイス１２００に関連するメタ−データを提供する必要が無い。
【００６６】
特定の実施形態で、メモリディバイス１２００はモバイルディバイスのメインメモリであるｅＭＭＣディバイスである。そのようなメモリディバイス１２００は、ターゲットシステムにソルダリングされることから、メモリディバイス１２００をテストのような非標準目的のためにアクセスすることは難しい。しかし、上述したような多様なデータは仮想ディバイスを通じて利用可能であるため、テスト又は他の類似なアクセスは容易である。
【００６７】
図１３は、一実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図１１及び図１３を参照すると、１３００段階でディバイス１１００は制御信号を受信する。例えば、有効でないファームウェアのような制御信号は通信インターフェイス１１０２を通じてディバイス１１００によって受信される。
【００６８】
１３０２段階で、制御信号がイネーブルコマンドを含む場合、コントローラ１１０４は仮想ディバイスをイネーブルさせる。例えば、コントローラ１１０４はイネーブルコマンドが制御信号に含まれるか否かを判断する。イネーブルコマンドが制御信号に含まれる場合、コントローラ１１０４は仮想ディバイスをイネーブルさせる。
【００６９】
同様に、１３０４段階で、制御信号がディスエーブルコマンドを含む場合、コントローラ１１０４は仮想ディバイスをディスエーブルさせる。例えば、コントローラ１１０４はディスエーブルコマンドが制御信号に含まれるか否かを判断する。ディスエーブルコマンドが制御信号に含まれる場合、コントローラ１１０４は仮想ディバイスをディスエーブルさせる。
【００７０】
図１４は、一実施形態による有効でないファームウェアを使用する方法を示すフローチャートである。図１１及び図１４を参照すると、有効でないファームウェアは制御信号の特定の例として使用される。１４００段階でファームウェアアップデートが受信される。１４０６段階でコントローラ１１０４はファームウェアが有効であるか否かを判断する。ファームウェアが有効である場合、１４０８段階でコントローラ１１０４はファームウェアの処理を続ける。従って、有効なファームウェアアップデートは通常のように処理される。
【００７１】
しかし、ファームウェアが有効でない場合、１４１０段階でコントローラ１１０４はコマンドが有効でないファームウェアに提供されたか否かを判断する。コマンドが提供されなかった場合、ファームウェアは単なる有効でないファームウェアであり、従って１４１２段階で処理される。しかし、コマンドが識別された場合、１４１４段階でコントローラ１１０４はコマンドを処理する。上述したように、コマンドがイネーブルコマンドである場合、仮想ディバイスはイネーブルされる。同様に、コマンドがディスエーブルコマンドである場合、仮想ディバイスはディスエーブルされる。他のコマンドも同様に処理される。
【００７２】
図１５は、他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図１１及び図１５を参照すると、本実施形態において、１５００段階で、ディバイス１１００は仮想ディバイスに対するアクセスを受信する。そのようなアクセスは、読出し、書込み、又はこれらと類似なものである。アクセスに応答して、ディバイス１０００はそのアクセスに応答する多様なアクションを取る。
【００７３】
１５０２段階で、ディバイス１１００はアクセスに応答してディバイス１１００のファームウェアにアクセスする。即ち、ファームウェアは、仮想ディバイスを通じて書き込まれ、読み出される。例えば、仮想ディバイスはストレージディバイスのパーティションである。パーティションに対する読出し及び書込みは、メインストレージ構成要素よりもディバイス１１００に対するファームウェアを格納するメモリに方向を変えられる。
【００７４】
１５０４段階で、ディバイス１１００は仮想ディバイスに書き込まれたコマンドを受信する。１５０５段階で、ディバイス１１００はコマンドを実行する。１５０６段階で、そのようなコマンドに対する応答は、仮想ディバイス、即ちディバイス１１００によって提供される。
【００７５】
パーティションの例を用いて、コマンドは特定のアドレス範囲に書き込まれる。コマンドを書き込んだ後、他の書込み、他のアクセス、又は他の信号はディバイスがコマンドを実行するようにする。上述したように、１５０５段階で、コマンドに対するアドレス範囲にある最後のバイトに対する書込みはコマンドを実行するためのトリガー（ｔｒｉｇｇｅｒ）として使用される。コマンドが実行された後、ディバイス１１００はコマンドの実行に対する応答を生成する。応答はディバイスに対する読出しを仮想ディバイスのパーティションの特定の部分に発行することによって得られる。
【００７６】
図１６は、他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図１及び図１６を参照すると、本実施形態において、１６００段階でプロセッサ１０４はイネーブル信号をディバイス１０２に伝送してディバイス１０２の仮想ディバイスをイネーブルさせる。１６０２段階で、プロセッサ１０４は再ブーティングされ、仮想ディバイスはマウントされる。例えば、一実施形態で、仮想ディバイスがイネーブルされた後、プロセッサ１０４は再ブーティングされる。プロセッサ１０４は、仮想ディバイスを認識し、仮想ディバイスをマウントする。しかし、他の実施形態で、プロセッサ１０４は再ブーティングされずに仮想ディバイスをマウントする。いずれの場合も、１６０４段階で仮想ディバイスに対するディバイスインターフェイスが提供される。
【００７７】
仮想ディバイスを必要としなくなった後、１６０６段階でディスエーブル信号はディバイス１０２に伝送される。１６０８段階で、プロセッサ１０４は再び再ブーティングされ、仮想ディバイスはアンマウントされる。本実施形態で、仮想ディバイスをアンマウントすること、及びディスエーブル信号を伝送することに関して再ブーティングすることについて特定の順序を説明したが、この動作は他の順序で実行され得る。例えば、仮想ディバイスはディスエーブル信号が伝送される前にアンマウントされ、システムはディスエーブル信号が伝送された後に再ブーティングされる。
【００７８】
図１７は、一実施形態によるホスト及びターゲットシステムを示すブロック図である。本実施形態で、システム１７００はホストシステム１７１２に連結されたターゲットシステム１７１０を含む。ターゲットシステム１７１０はプロセッサ１７０４に連結されたディバイス１７０２を含む。ディバイス１７０２及びプロセッサ１７０４は本明細書で上述したディバイス及びプロセッサの中のいずれか１つである。
【００７９】
プロセッサ１７０４は通信インターフェイス１７０８に連結される。通信インターフェイス１７０８は、プロセッサが外部ディバイス、特にホストシステム１７１２と通信する多様なインターフェイスである。例えば、通信インターフェイス１７０８は、ＵＳＢインターフェイス、ネットワークインターフェイス、ブルートゥース（登録商標）インターフェイス、又はそれらを通じてシステムが通信可能な他の多様なインターフェイスを含む。
【００８０】
ホストシステム１７１２はターゲットシステム１７１０と通信するディバイス１７０２に関連するディバイスインターフェイスにアクセスする所定のシステムである。例えば、ホストシステム１７１２は、個人用コンピューター、ワークステーション、モバイルディバイス、テストセットアップ、又はこれらと類似なものである。ホストシステム１７１２は通信インターフェイス１７０８を通じてディバイス１７０２にアクセスする。
【００８１】
一実施形態で、ホストシステム１７１２はディバイス１７０２に第１動作モードから第２動作モードに変換するように命令する。第１動作モードで、ディバイス１７０２はディバイス１７０２に関連する仮想ディバイスをディスエーブルさせ、第２動作モードで、ディバイス１７０２は仮想ディバイスをイネーブルさせる。ホストシステム１７１２はディバイス１７０２に多様な方法で変換をするように命令する。例えば、ホスト１７１２は上述したように仮想ディバイスをイネーブルさせるための制御信号を伝送するターゲットシステム１７１０にアプリケーションを設置（インストール）する。他の実施形態で、ホストシステム１７１２は制御信号を伝達し、プロセッサ１７０４は制御信号をディバイス１７０２に転送（ｆｏｒｗａｒｄ）する。
【００８２】
一度、仮想ディバイスがイネーブルされると、プロセッサ１７０４は通信インターフェイス１７０８を通じて利用可能な仮想ディバイスに関連するディバイスインターフェイスを生成する。ホストシステム１７１２は通信インターフェイス１７０８及びプロセッサ１７０４によって提供されたディバイスインターフェイスを通じて仮想ディバイスにアクセスする。
【００８３】
一実施形態で、ホストシステム１７１２は、ディバイスインターフェイスを通じてディバイスに対する最適化、診断（ｄｉａｇｎｏｓｔｉｃｓ）、及びパフォーマンステストの中の少なくとも１つを遂行する。通信インターフェイス１７０８を通じたディバイス１７０２に対するアクセスと共に、ホストシステム１７１２は上述したように仮想ディバイスにアクセスする。図１０及び図１７を参照し、図１０のメモリマップを用いて、ホストシステム１７１２は、ファームウェア１００４のアドレス範囲を通じてディバイス１７０２のファームウェアを検証するか、或いは変更する。ホストシステム１７１２はＳＦＲマップ１００５を通じて特殊機能レジスターにアクセスする。ホストシステム１７１２は、ディバイスで実行するために、そして応答トレイ１０１０を通じて応答を受信するためにコマンドをコマンドトレイ１００８に書き込む。最終的にホストシステム１７１２はディバイス１７０２のメタ−データ１０１２にアクセスする。ディバイス１７０２の仮想ディバイスを通じて利用可能な所定の情報又は他の情報は、何らかの種類の最適化、診断、パフォーマンステスト、又はこれらと類似なものに用いられる。
【００８４】
特定の実施形態で、ディバイス１７０２の仮想ディバイスを通じた情報の提供はそのようなテストを単純化させる。例えば、ディバイス１７０２はカスタム又は独占コマンド（ｃｕｓｔｏｍ  ｏｒ  ｐｒｏｐｒｉｅｔａｒｙ  ｃｏｍｍａｎｄ）に応答する。しかし、ターゲットシステム１７１０のＯＳはそのようなコマンドを伝送できないこともある。ＯＳ、ＯＳのカーネル、ＯＳのモジュール、又はこれらと類似なものはそのようなコマンドを伝送する構成要素で代替される。この技術はＯＳ又はカーネルの変更を必要とすることもある。そのような変更は一般的なユーザーに利用可能なものよりも高い権限水準（ｐｒｉｖｉｌｅｇｅ  ｌｅｖｅｌ）を必要とする。
【００８５】
反面、ＯＳによって一般的にマウントされるか又はアクセス可能な論理的ディバイスであるディバイス１７０２の仮想ディバイスをイネーブルさせることによって、ＯＳに対する変更を必要としない。即ち、仮想ディバイスが、カーネルがマウントされるか又はアクセスされるタイプの論理的ディバイスである場合、カーネルに対する変更はそのようなアクセスを達成するために必要である。更に、仮想ディバイスがプロセッサ１７０４によって自動的にマウントされることにより、ターゲットシステム１７１０を再ブーティングしてマウントするか又はより低い権限にアクセスすることによって、ターゲットシステム１７１０のユーザーは、ＯＳを代替するために更に高い権限を必要としない。
【００８６】
一実施形態で、ソフトウェアはターゲットシステム１７１０に設置（インストール）される。例えば、アプリケーションはターゲットシステム１７１０に設置される。そのようなソフトウェアはホストシステム１７１２によって設置されるか、ターゲットシステム１７１０によって設置されるか、又は他のシステムによって設置される。ソフトウェアはイネーブル信号を伝送してディバイス１７０２を仮想ディバイスがディスエーブルされる第１動作モードから仮想ディバイスがイネーブルされる第２動作モードに転換させる。イネーブル信号は、上述したようなイネーブルコマンドを含む有効でないファームウェアのような、多様な信号である。
【００８７】
本実施形態で、ソフトウェアはホストシステム１７１２と仮想ディバイスとの間のインターフェイスを提供する。例えば、ソフトウェアはターゲットシステム１７１０とホストシステム１７１２との間の通信回線を形成する。
【００８８】
図１８は、一実施形態による仮想ディバイスにアクセスする方法を示すフローチャートである。図１７及び図１８を参照すると、１８００段階で、アプリケーションはターゲットシステム１７１０に設置（インストール）される。１８０２段階で、アプリケーションはディバイス１７０２の仮想ディバイスをイネーブルさせるように命令を受ける。一実施形態で、アプリケーションは、ホストシステム１７１２によるか、ターゲットシステム１７１０のユーザーによるか、設置の後に自動的に、又は他の技術によって仮想ディバイスをイネーブルさせるように命令を受ける。１８０４段階で、ディバイス１７０２をテストすること、ディバイス１７０２を最適化すること、又はこれらと類似なことのような所望の動作が実行される。
【００８９】
一度、所望の動作が実行されると、１８０６段階で、アプリケーションは仮想ディバイスをディスエーブルさせるように命令を受ける。仮想ディバイスをイネーブルさせることと同様に、アプリケーションはホストシステム１７１２によって又はターゲットシステム１７１０のユーザーによって仮想ディバイスをディスエーブルさせるように命令を受ける。
【００９０】
１８０８段階で、アプリケーションはターゲットシステム１７１０から除去（アンインストール）される。一実施形態で、除去は仮想ディバイスをディスエーブルさせるためにアプリケーションに命令した後、自動的に実行される。他の実施形態で、除去される時に、アプリケーションは仮想ディバイスを自動的にディスエーブルさせる。
【００９１】
図１９は、一実施形態による電子システムを示すブロック図である。電子システム１９００はポータブルノートブック型コンピューター、ＵＭＰＣ（Ｕｌｔｒａ  Ｍｏｂｉｌｅ  ＰＣ）、タブレットＰＣ、ラップトップコンピューター、デスクトップコンピュータ、サーバー、ワークステーション、モバイル通信装置等を含むが、これらに限定されない多様な電子装置の一部である。例えば、電子システム１９００は、バス１９２０を用いてデータ通信を遂行するメモリシステム１９１２、プロセッサ１９１４、ＲＡＭ１９１６、ユーザーインターフェイス１９１８を含む。
【００９２】
プロセッサ１９１４はマイクロプロセッサ又はモバイルプロセッサＡＰである。プロセッサ１９１４はＦＰＵ（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｕｎｉｔ）、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、ＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ＤＳＰコア（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｃｏｒｅ）、又はこれらの組合せを含む。  プロセッサ１９１４はプログラムを実行して電子システム１９００を制御する。
【００９３】
ＲＡＭ１９１６はプロセッサ１９１４の動作メモリとして使用される。或いはプロセッサ１９１４及びＲＡＭ１９１６は１つのパッケージとしてパッケージングされる。
【００９４】
ユーザーインターフェイス１９１８は電子システム１９００にデータを入力するか又は電子システム１９００からデータを出力するために使用される。例えば、インターフェイス１９１８は、タッチスクリーン、キーボード、ポインティングディバイス、ネットワークインターフェイス、周辺インターフェイス、又はこれらと類似なものを含む。
【００９５】
メモリ１９１２は、プロセッサ１９１４を動作させるためのコード、プロセッサ１９１４によって処理されたデータ、又は外部入力データを格納する。メモリ１９１２はコントローラ及びメモリディバイスを含む。メモリ１９１２はコンピューター読み取り可能な記録媒体（ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉａ）に対するインターフェイスを含む。そのようなコンピューター読み取り可能な記録媒体は上述した多様な動作を実行するための命令を格納する。
【００９６】
一実施形態で、プロセッサ１９１４は上述したような多様なプロセッサの動作の一部又は全てを遂行する。更に、ＲＡＭ１９１６、メモリ１９１２、ユーザーインターフェイス１９１８、又は電子システム１９００の他の構成要素の中のいずれも上述したディバイスを含む。従って、プロセッサ１９１４はそのようなディバイスの仮想ディバイスをイネーブルさせ、関連する動作の中のいずれをも遂行する。
【００９７】
図２０は、一実施形態によるテストセットアップを示す図である。本実施形態で、テストセットアップ２０００はホストシステム２００２を含む。ホストシステム２００２はインターフェイス２００４に連結される。インターフェイス２００４は被試験装置（ｄｅｖｉｃｅ  ｕｎｄｅｒ  ｔｅｓｔ：ＤＵＴ）のインターフェイス２００８に対応する連結に適切な所定のインターフェイスである。例えば、インターフェイス２００４は、有線インターフェイス、無線インターフェイス、ＵＳＢインターフェイス、ブルートゥース（登録商標）インターフェイス、又はこれらと類似なものである。インターフェイス２００８は類似な対応するインターフェイスである。
【００９８】
ＤＵＴ２００６は上述したような仮想ディバイスを提供する所定のディバイスである。従って、ホストシステム２００２は、ＤＵＴ２００６、特にＤＵＴ２００６内のディバイスをテストする。一実施形態で、テストセットアップ２０００は製造環境の外であるか又は現場（ｉｎ  ｆｉｅｌｄ）で使用される。従って、テストセットアップ２０００の使用者は、他のカーネルを再コンパイルするか或いは設置してユーザーがＤＵＴ２００６のディバイスをテストするためのＤＵＴ２００６に関する権限を有しないこともある。更に、ＤＵＴ２００６のディバイスはソルダリングされることから、除去可能（リムーバブル）なディバイスに比べてテストすることが相対的に難しい。しかし、上述したように、ユーザーがＤＵＴ２００６にアプリケーションを単に設置してテストすることができるため、相対的にアクセス不可能な位置にあるディバイスをテストする難しさは減少する。
【００９９】
図２１は、一実施形態によるｅＭＭＣを示すブロック図である。本実施形態で、システム２１００はｅＭＭＣ２１０２及びプロセッサ２１０４を含む。ｅＭＭＣ２１０２はシステム２１００のためのメインメモリディバイスである。特定の実施形態で、システム２１００はモバイル通信ディバイスである。しかし、システムは他の実施形態であってもよい。ｅＭＭＣ２１０２及びプロセッサ２１０４は上述したようにディバイス又はプロセッサで構成される。
【０１００】
図２２は、一実施形態によるＳＳＤを備えたシステムを示すブロック図である。本実施形態で、システム２２００はＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ）２２０２を含む。ＳＳＤ２２０２はシステム２２００のためのメインストレージディバイスである。特定の実施形態で、システム２２００は、ラップトップコンピューター、タブレットコンピューター、又はデスクトップコンピュータである。しかし、システムは他の実施形態であってもよい。ＳＳＤ２２０２及びプロセッサ２２０４は上述したようにディバイス及びプロセッサで構成される。
【０１０１】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１０２】
１００、１７００、２１００、２２００    システム
１０２、１１００、１７０２    ディバイス
１０４、１７０４、１９１４、２１０４、２２０４    プロセッサ
２０８、３１４、４１６    ディバイスインターフェイス
２０９、４１５    論理的ディバイス
２１０    カーネル空間
２１１    アプリケーション
２１２    ユーザー空間
３１３    仮想ディバイス
５１７、７１８    ブートパーティション
５１７−３、７１８−３    ＲＰＭＢパーティション
５１７−４、７１８−４    ユーザーパーティション
５１８、５２０    マウントポイント
５１９、７２０    仮想パーティション
５２２    ＭＭＣホストコントローラディバイス
５２４    ＭＭＣサブシステム
５２６    ジェネリックブロックレイヤー
５２８    ＶＦＳ／ＦＳ／バッファキャッシュレイヤー
７００    アドレス指定可能な範囲
７３０    未使用空間
７３２    物理的ストレージ空間
８４０    有効でないファームウェア
８４２    コマンド
１００２    ヘッダー
１００４    ファームウェア
１００５    ＳＦＲマップ
１００８    コマンド（ＣＭＤ）トレイ
１０１０    応答トレイ
１０１２    メタ−データ
１０１４    アドレス空間
１１０２、１２０２、１７０８    通信インターフェイス
１１０４、１２０６、１９１２    コントローラ
１１０６    内部構成要素
１２００    メモリディバイス
１２０６    メモリ
１７１０    ターゲットシステム
１７１２、２００２    ホストシステム
１９００    電子システム
１９１８    ユーザーインターフェイス
１９２０    バス
２０００    テストセットアップ  ２００４、２００８    インターフェイス
２００６    被試験装置（ＤＵＴ）
２１０２    ｅＭＭＣ
２２０２    ＳＳＤ
【図１】
0006622512.tif 000002
【図２】
0006622512.tif 000003
【図３】
0006622512.tif 000004
【図４】
0006622512.tif 000005
【図５】
0006622512.tif 000006
【図６】
0006622512.tif 000007
【図７】
0006622512.tif 000008
【図８】
0006622512.tif 000009
【図９】
0006622512.tif 000010
【図１０】
0006622512.tif 000011
【図１１】
0006622512.tif 000012
【図１２】
0006622512.tif 000013
【図１３】
0006622512.tif 000014
【図１４】
0006622512.tif 000015
【図１５】
0006622512.tif 000016
【図１６】
0006622512.tif 000017
【図１７】
0006622512.tif 000018
【図１８】
0006622512.tif 000019
【図１９】
0006622512.tif 000020
【図２０】
0006622512.tif 000021
【図２１】
0006622512.tif 000022
【図２２】
0006622512.tif 000023