JP6622512B2 - 仮想ディバイスを有するディバイスとその動作方法 - Google Patents

仮想ディバイスを有するディバイスとその動作方法 Download PDF

Info

Publication number
JP6622512B2
JP6622512B2 JP2015161644A JP2015161644A JP6622512B2 JP 6622512 B2 JP6622512 B2 JP 6622512B2 JP 2015161644 A JP2015161644 A JP 2015161644A JP 2015161644 A JP2015161644 A JP 2015161644A JP 6622512 B2 JP6622512 B2 JP 6622512B2
Authority
JP
Japan
Prior art keywords
firmware
virtual
command
response
virtual device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015161644A
Other languages
English (en)
Other versions
JP2016045953A (ja
JP2016045953A5 (ja
Inventor
チャン−ウン チョイ,
チャン−ウン チョイ,
ビン ル,
ビン ル,
ヤン ユ,
ヤン ユ,
シャー,カーニック
フエン,ヒンクワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2016045953A publication Critical patent/JP2016045953A/ja
Publication of JP2016045953A5 publication Critical patent/JP2016045953A5/ja
Application granted granted Critical
Publication of JP6622512B2 publication Critical patent/JP6622512B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ディバイスとその動作方法に関し、より詳細には、選択的にイネーブルすることが可能な仮想ディバイスを有するディバイスとその動作方法に関する。
特定のシステムは、物理的及び機能的の両方で、相対的にアクセス不可能な機能を有するディバイスを含む。例えば、eMMCディバイスのようなメモリ装置は多様な場所にソルダリング(soldering)される。その結果、ディバイスに物理的にアクセスすることは相対的に難しい。更に、ディバイスの特定の機能にアクセスすることはカスタムコマンドを必要とし、ディバイスにコマンドを伝送するためのカスタムOS(operating system)を必要とする。その結果、ディバイスにアクセスすることは相対的に難しく、OS又はOSの構成要素を代替することを必要とする。ディバイスにアクセスするか、或いはテストするためのこのようなオプションはディバイスを含むシステムのエンドユーザーのような特定のユーザーには利用できないこともある。
米国特許第8,078,788号明細書 米国特許第8,732、527号明細書 米国特許出願公開第2010/0185874号明細書 米国特許出願公開第2012/0042376号明細書
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、選択的にイネーブルすることが可能な仮想ディバイスを有するディバイスとその動作方法を提供することにある。
上記目的を達成するためになされた本発明の一態様によるシステムは、制御信号に応答して論理的ディバイスを提供し、仮想ディバイスをイネーブルさせるディバイスと、前記ディバイスに連結され、第1ディバイスインターフェイスを通じて前記論理的ディバイスを提供し、前記制御信号を前記ディバイスに伝達して前記仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、第2ディバイスインターフェイスを通じて前記仮想ディバイスを提供するプロセッサと、を備える。
前記制御信号は、有効でないファームウェアを含み得る。
前記プロセッサは、有効でないファームウェアを前記ディバイスに伝達し、前記ディバイスは、前記有効でないファームウェアに含まれるコマンドに応答して前記仮想ディバイスをイネーブルさせ得る。
前記ディバイスは、ストレージディバイスを含み、前記論理的ディバイスは、前記ストレージディバイスの第1パーティションであり、前記仮想ディバイスは、前記ストレージディバイスの第2パーティションであり得る。
前記第2パーティションの少なくとも一部は、前記ディバイスの属性に対するメモリマップインターフェイス(memory mapped interface)を含み得る。
前記ディバイスの属性は、前記ディバイスに対するファームウェア、コマンドキュー、応答キュー、及び前記ディバイスのメタ−データの中の少なくとも1つを含み得る。
前記システムは、前記プロセッサに連結された通信インターフェイスと、前記通信インターフェイスに連結され、前記第2ディバイスインターフェイスを通じて前記ディバイスにアクセスするホストシステムと、を更に含むことができる。
前記ホストシステムは、前記第2ディバイスインターフェイスを通じて前記ディバイスに対する最適化、診断、及びパフォーマンステストの中の少なくとも1つを遂行し得る。
上記目的を達成するためになされた本発明の一態様によるディバイスは、通信インターフェイスと、前記通信インターフェイスに連結されたコントローラと、を備え、前記コントローラは、前記通信インターフェイスを通じて論理的ディバイスを提供し、前記通信インターフェイスを通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、前記通信インターフェイスを通じて前記仮想ディバイスを提供する。
前記コントローラは、パーティションテーブルを提供し、前記論理的ディバイスは、前記パーティションテーブル内の第1パーティションであり、前記仮想ディバイスがイネーブルされた場合、前記仮想ディバイスは、前記パーティションテーブル内の第2パーティションであり得る。
前記ディバイスは、前記コントローラに連結されたメモリを更に含み、前記論理的ディバイスは、前記メモリに格納されたデータに関連する論理的ストレージディバイスであり、前記コントローラは、前記仮想ディバイスの少なくとも一部として前記メモリに関連するメタ−データを提供し得る。
前記コントローラは、前記通信インターフェイスを通じて受信されたディスエーブル信号に応答して前記仮想ディバイスをディスエーブルさせ得る。
前記イネーブル信号は、有効でないファームウェアを含み得る。
上記目的を達成するためになされた本発明の一態様によるディバイスの動作方法は、論理的ディバイスを提供するディバイスによって、制御信号を受信する段階と、前記ディバイスによって、イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、前記ディバイスによって、前記イネーブルコマンドに応答して仮想ディバイスをイネーブルさせる段階と、を有する。
前記方法は、前記ディバイスによって、ディスエーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことができる。
前記制御信号を受信する段階は、前記ディバイスによって、前記ディバイスのためのファームウェアの伝送を受信する段階を含み得る。
前記イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階は、前記ディバイスによって、前記伝送されたファームウェアが有効でないか否かを判断する段階と、前記伝送されたファームウェアが有効でない場合、前記ディバイスによって、前記イネーブルコマンドが前記伝送されたファームウェアに含まれるか否かを判断する段階と、を含み得る。
前記方法は、前記ディバイスによって、前記伝送されたファームウェアが有効でないか否かを判断する段階と、前記伝送されたファームウェアが有効でない場合、前記ディバイスによって、ディスエーブルコマンドが前記伝送されたファームウェアに含まれるか否かを判断する段階と、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことができる。
前記方法は、前記ディバイスによって、前記仮想ディバイスに対するアクセスを受信する段階と、前記ディバイスによって、前記仮想ディバイスに対するアクセスに応答して前記ディバイスのためのファームウェアにアクセスする段階と、を更に含むことができる。
前記方法は、前記ディバイスによって、前記仮想ディバイスに対する、コマンドを含む書込みを受信する段階と、前記ディバイスによって、前記コマンドを実行する段階と、前記ディバイスによって、前記コマンドの実行に対する応答を生成する段階と、前記ディバイスによって、前記仮想ディバイスに関連する読出しを受信する段階と、前記ディバイスによって、前記読出しに応答して前記コマンドの実行に対する応答を伝送する段階と、を更に含むことができる。
本発明のディバイスは選択的にイネーブルすることが可能な仮想ディバイスを有するため、ソルダリングされたディバイスのテストや特定機能に対するアクセスのような非標準的な目的などにおいてカスタムOSやカスタムコマンド更には高いアクセス権限を必要とせず、またこれらの権限や構成要素を変更せずにディバイスにアクセスすることが可能になる。
一実施形態によるシステムを示す図である。 一実施形態による図1のシステムの機能を示すブロック図である。 一実施形態による仮想ディバイスをイネーブルさせた後の図1のシステムの機能を示すブロック図である。 他の実施形態による図1のシステムの機能を示すブロック図である。 他の実施形態による図1のシステムの機能を示すブロック図である。 他の実施形態による仮想ディバイスをイネーブルさせた後の図1のシステムの機能を示すブロック図である。 一実施形態によるアドレス指定可能な範囲を示すブロック図である。 一実施形態による有効でないファームウェアを示すブロック図である。 一実施形態による状態値のテーブルである。 一実施形態による仮想ディバイスのメモリマッピングを示すブロック図である。 一実施形態によるディバイスを示すブロック図である。 一実施形態によるメモリディバイスを示すブロック図である。 一実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。 一実施形態による有効でないファームウェアを使用する方法を示すフローチャートである。 他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。 他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。 一実施形態によるホスト及びターゲットシステムを示すブロック図である。 一実施形態による仮想ディバイスにアクセスする方法を示すフローチャートである。 一実施形態による電子システムを示すブロック図である。 一実施形態によるテストセットアップを示す図である。 一実施形態によるeMMCを示すブロック図である。 一実施形態によるSSDを備えたシステムを示すブロック図である。
本明細書における説明の全ては、例示的なものであり、本発明の付加的な説明が提供されるものとして看做される。参照符号は、本発明の実施形態で示され、その例が参照図面に示される。同一の参照符号は同一又は類似な部分を参照する。
一要素又は層が異なる要素又は層に“連結される”、“結合される”、又は“隣接する”と言及する場合は、他の要素又は層に直接的に連結されるか、結合されるか、又は隣接することであり、或いはその間に挟まれる要素又は層が存在する。本明細書で使用する“及び/又は”という用語は羅列した要素の1つ又はそれ以上の可能な組合せを含む。
本明細書で、“第1”、“第2”等の用語を多様な要素を説明するために使用するが、これらの要素はこの用語によって限定されない。これらの用語は単なる他のものから1つの構成要素を区別するために使用される。従って、本明細書で使用する第1構成要素、区間、層のような用語は本発明の技術思想を逸脱しない範囲内で第2構成要素、区間、層等に使用される。
“下の”、“下部の”、“上の”、“上部の”、及びこれと類似な用語は直接的に又は他の層を介在して配置される場合を全て含む。そして、空間的に相対的なこのような用語は図面に示す方向に加えて他の方向を含むものと理解される。例えば、装置が裏返しの場合、“下の”として説明する構成要素は“上の“になる。
本明細書で説明する用語は単なる特定の実施形態を説明するための目的として使用されるが、それに限定されない。“1つの”のような用語は異なって明確に言及しない限り、複数の形態を含むものと理解される。“含む”又は“構成される”のような用語は説明する特徴、段階、動作、成分、及び/又は構成要素の存在を明示し、追加的な1つ又はそれ以上の特徴、段階、動作、成分、構成要素、及び/又はそれらのグループの存在を排除しない。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
図1は、一実施形態によるシステムを示す図である。本実施形態で、システム100はプロセッサ104に連結されたディバイス102を含む。ディバイス102はプロセッサ104と通信するように連結される多様な形態のディバイスを含む。例えば、ディバイス102は、メモリディバイス、大容量ストレージディバイス、ユーザーインターフェイスディバイス、ディスプレイディバイス、ネットワークディバイス、又はこれらと類似なものである。プロセッサ104は、汎用プロセッサ、ASIC(application specific integrated circuit)、SoC(system on chip)、PLD(programmable logic device)、マイクロコントローラ、ディスクリートロジックディバイス(discrete logic device)、そのような構成要素の組合せ、又はこれらと類似なものを含む。
ディバイス102は多様な方法の通信連結を通じてプロセッサ104と連結される。例えば、ディバイス102とプロセッサ104との間の連結は、ワイヤ、シリコン貫通電極(through−silicon via:TSV)、又は集積回路の連結に適合する他の構造を含む。他の例として、連結は、システムバス、印刷回路基板(PCB)上のトレース(trace)、又はこれらと類似なものを含む。更に他の例として、USB(universal serial bus)、SATA(serial ATA)、SAS(serial attached SCSI)、多様なJEDEC標準、又はこれらと類似なものに互換されるインターフェイス、及びケーブルを含む。本実施形態で、特定の例として連結を説明したが、ディバイス102とプロセッサ104とは他の多様な方法で連結され得る。
図2は、一実施形態による図1のシステム100の機能を示すブロック図である。図1及び図2を参照すると、本実施形態で、プロセッサ104の機能はカーネル空間210及びユーザー空間212で構成される。カーネル空間210は、OS、ディバイスドライバ、メモリマネージャー、又はこれらと類似なものを含む。ユーザー空間212はカーネル空間210の外部ソフトウェアを含む。本実施形態で、カーネル空間210におけるソフトウェアはユーザー空間212におけるソフトウェアより高い権限水準(privilege level)で駆動される。本実施形態で、ソフトウェアの特定の分類(division)を例として使用するが、他の実施形態で、分類が存在しないか、又は他の分類が存在し得る。
本実施形態で、ディバイス102は論理的ディバイス209−1〜209−Nで表現される1つ又はそれ以上の論理的ディバイス209を提供する。論理的ディバイス209はディバイス102の特定の構成の表現である。しかし、論理的ディバイス209は物理的分類に対応するか又は対応しない論理的分類(logical division)に関連する。例えば、一実施形態として、ディバイス102は論理的ディバイス209の各々に関連するプロセッサ104に対する専用連結を有する。しかし、他の実施形態で、論理的ディバイス209がディバイス102に対して論理的に分類されるのに反して、論理的ディバイス209の各々は共用通信回線を通じてプロセッサ104と通信する。
論理的ディバイス209は、全体ディバイス102、ディバイス102のサブセット、又はこれと類似なものに関連する。例として、データストレージディバイスを使用した場合、論理的ディバイス209−1はディバイス102の全体ストレージ領域であり、他の論理的ディバイス209−2がディバイス102の全体ストレージ領域内のパーティション(partition)である。本実施形態で、論理的ディバイス209は、同一のタイプの論理的ディバイスであるが、同一のタイプの論理的ディバイスである必要はない。例えば、論理的ディバイス209−1はディスプレイディバイスであり、同一のディバイス102内の他の論理的ディバイス209−2はオーディオ出力ディバイスである。
プロセッサ104は、ディバイスインターフェイス208−1〜208−Nで表現される1つ又はそれ以上のディバイスインターフェイス208を提供する。ディバイスインターフェイス208は、ディバイス102及び論理的ディバイス209にアクセスし、ユーザー空間212にあるアプリケーション211又はカーネル空間210にある他の態様のOSのような、他のソフトウェアを通じたインターフェイスである。例えば、データストレージディバイスを使用した場合、ディバイスインターフェイス208は、ディバイス102の全体ストレージ領域、全体ストレージ領域のパーティション、又はこれと類似なものに対するインターフェイスである。
本実施形態で、アプリケーション211はディバイスインターフェイス208−1と通信する。ディバイスインターフェイス208−1は論理的ディバイス209−1に関連する。従って、アプリケーション211は論理的ディバイス209−1にアクセスする。アプリケーション211は他の全てのディバイスインターフェイス208(従って、論理的ディバイス209に関連する)と通信する。しかし、説明を明確にするために、図面でそのような通信は省略する。
本実施形態で、ディバイスインターフェイス208と論理的ディバイス209との間で1対1に対応するように図示したが、ディバイスインターフェイス208及び論理的ディバイス209は他の方法によっても関連し得る。例えば、1つのディバイスインターフェイス208は複数の論理的ディバイス209に関連する。他の例として、複数のディバイスインターフェイス208は1つの論理的ディバイス209に関連する。
図3は、一実施形態による仮想ディバイスをイネーブルさせた後の図1のシステムの機能を示すブロック図である。図1及び図3を参照すると、一実施形態として、プロセッサ104は制御信号をディバイス102に伝送する。例えば、アプリケーション211はディバイスインターフェイス208−1又は他のディバイスインターフェイス208を通じて制御信号をディバイス102に伝送する。これに応答して、ディバイス102は仮想ディバイス313をイネーブルさせる。プロセッサ104は仮想ディバイス313に対応する新しいディバイスインターフェイス314を提供する。本実施形態で、1つのディバイスインターフェイス314を例として用いたが、複数のディバイスインターフェイス314が仮想ディバイス313にアクセスするために用いられ得る。更に、本実施形態で、ディバイスインターフェイス314がディバイスインターフェイス208−1〜208−Nの中の1つ又はそれ以上から分離されているが、ディバイスインターフェイス314は、ディバイスインターフェイス208−1〜208−Nの中の1つの他の態様を示し、ディバイスインターフェイス208−1〜208−Nを通じて仮想ディバイス313がアクセスされ得る。即ち、1つのディバイスインターフェイス208−1は、イネーブルされると、論理的ディバイス209−1及び仮想ディバイス313に対するアクセスを許容する。
仮想ディバイス313はディバイス102のハードウェアに直接的に関連しないディバイスである。データストレージディバイスを例として使用した場合、仮想ディバイス313は仮想パーティションである。即ち、データストレージディバイスの他のパーティションと比較して、仮想パーティションとして、仮想ディバイスはデータストレージディバイスのストレージ構成要素に直接的に対応しない。
仮想ディバイス313はディバイス102内の論理的ディバイス209のいずれかと同一のタイプのディバイスである必要はない。例えば、論理的ディバイス209がデータストレージディバイスのパーティションである場合、仮想ディバイスはシリアルポートである。しかし、他の実施形態で、仮想ディバイス313はOSの一部の代替無しにOSによって使用可能なタイプのディバイスである。例えば、仮想ディバイス313及び論理的ディバイス209−1の全てがパーティションである場合、OSが変化無しにパーティションとして論理的ディバイス209−1にアクセスすると、OSはパーティションとして仮想ディバイス313にアクセスすることができる。例えば、仮想ディバイス313と論理的ディバイス209−1との全てがネットワークディバイスである場合、OSはネットワークディバイスの全てにアクセスすることができる。
仮想ディバイス313をイネーブルさせるために用いられる制御信号は多くの多様な形態を取る。一実施形態として、制御信号はディバイス102のタイプに特定される。例えば、詳細に後述するが、ディバイス102はファームウェアアップデートを受信する。有効でないファームウェア(invalid firmware)は仮想ディバイス313がイネーブルされなければならないことを指示する制御信号としてディバイス102に伝送される。
同様に、制御信号は仮想ディバイス313をディスエーブルさせるために用いられる。上述した有効でないファームウェアを使用した場合、有効でないファームウェアはディバイス102に伝送される。これに応答して、ディバイス102は仮想ディバイス313をディスエーブルさせる。
一実施形態として、仮想ディバイス313をディスエーブルさせるために用いられる制御信号は仮想ディバイス313をイネーブルさせるために用いられる制御信号と実質的に同一である。即ち、制御信号は仮想ディバイス313の現在の状態に依存して仮想ディバイス313をイネーブル又はディスエーブルさせるトグル信号として動作する。しかし、他の実施形態で、仮想ディバイス313をイネーブルさせるか又はディスエーブルさせるために用いられる制御信号は異なる。
本実施形態の例として有効でないファームウェアを使用したが、制御信号は異なる形態を取り得る。例えば、パーティションの特定のアドレス範囲に書き込まれた特定のコードが制御信号を伝送するために用いられる。他の例として、特定のアドレス、ペイロード(payload)、チェックサム(checksum)、又はこれらと類似なものを含む特定のパケットが制御信号としてネットワークディバイスに伝送される。通信がディバイス102に伝送されてディバイス102が制御信号を他の通信と区別するというような方法に変更された場合、どのような通信も制御信号として用いられる。
図4は、他の実施形態による図1のシステムの機能を示すブロック図である。図1及び図4を参照すると、一実施形態として、追加的な論理的ディバイス415がディバイス102によって提供される。論理的ディバイス415はディバイスインターフェイス416を通じてアクセスされる。ディバイス102はディバイスインターフェイス416を通じて(その結果、論理的ディバイス415を通じて)制御信号を受信する。従って、インターフェイスを通じて、アプリケーション211又は他のソフトウェアは、仮想ディバイスがイネーブルされるか又はディスエーブルされるか、或いは構成されなければならないことを指示し、インターフェイスは特定の論理的ディバイス415に対応する特定のディバイスインターフェイス416を通じて制御信号を受信する。
図5は、他の実施形態による図1のシステムの機能を示すブロック図である。図1及び図5を参照すると、一実施形態として、ディバイス102は4つのパーティション517−1〜517−4を初期に提供するストレージディバイスである。例えば、ディバイス102はeMMCのようなMMC(Multi−Media Card)である。ここで、パーティション517−1及び517−2はブートパーティションであり、パーティション517−3はRPMB(replay protected memory block)パーティションであり、パーティション517−4はユーザーパーティションである。本実施形態で、特定のパーティションを例として用いたが、ディバイス102は多様な数のパーティション及び多様なタイプのパーティションを有し得る。
カーネル空間210は、MMCホストコントローラドライバ522、MMCサブシステム524、ジェネリックブロックレイヤー(generic block layer)526、及びVFS(仮想ファイルシステム)/FS(ファイルシステム)/バッファキャッシュレイヤー528を含む。これらのレイヤーはパーティション517に対するアクセスを許諾するカーネル空間210にあるソフトウェアの一部の例である。カーネル空間210にあるレイヤーを通じて、パーティション517はマウントポイント518にマウントされる。例えば、ブートパーティション517−1及び517−2、RPMBパーティション517−3、及びユーザーパーティション517−4は、各々マウントポイント518−1、マウントポイント518−2、マウントポイント518−3、及びマウントポイント518−4にマウントされる。マウントポイント518とパーティション517との間の関係を示す矢印又は説明は説明を簡単にするために省略する。
一実施形態として、ディバイス102はファームウェアアップデートを受信する。ファームウェアアップデートを通じて、制御信号はディバイス102に伝送されて仮想パーティションをイネーブルさせる。例えば、有効でないファームウェアアップデートはディバイス102に伝送される。この場合、ファームウェアは任意に不正確なチェックサム、不正確であるか又は過渡なサイズ、或いはこれと類似なものを有することによって有効でないことになる。しかし、有効でないファームウェアを生成する他の技術が、ファームウェアが有効であるか否かに対する条件に依存して使用される。一度、ディバイス102が有効でないファームウェアを受信すると、ディバイス102は仮想パーティションをイネーブルさせる。
図6は、他の実施形態による仮想ディバイスをイネーブルさせた後の図1のシステムの機能を示すブロック図である。図1、図5、及び図6を参照すると、図5に示したモードで、仮想パーティション519はディバイス102でイネーブルされない。例えば、ディバイス102のパーティションを指示するパーティションテーブル又は他の技術は仮想パーティション519が提供されないことを初期に指示する。しかし、有効でないファームウェアを受信した後、ディバイス102は仮想パーティション519をイネーブルさせる。
一実施形態として、仮想パーティション519は直ちにマウントされる必要はない。例えば、仮想パーティション519をイネーブルさせた後、システム100は再ブーティングされる。再ブーティングの後、仮想パーティションはイネーブルされるため、OSは仮想パーティション519をマウントポイント520に自動的にマウントする。他の実施形態で、OSは、例えば、仮想パーティション519が利用可能であることの感知に応答して、再ブーティング無しに仮想パーティション519を仮想パーティションのマウントポイント520に自動的にマウントする。
有効でないファームウェアは再びディバイス102に伝送される。これに応答して仮想パーティション519はディスエーブルされる。上述したように、有効でないファームウェアは仮想パーティション519をイネーブルさせるために使用された有効でないファームウェアと同一であるか又は異なる。更に、システム100の再ブーティングは、仮想パーティションのマウントポイント520から仮想パーティション519をアンマウントさせるために使用される必要はない。
特定の実施形態で、ディバイス102はフィールドファームウェアアップデート(field firmware update:FFU)コマンドを受信する。FFUコマンドを通じて、有効でないコマンドはディバイス102に伝送される。特に、仮想パーティション519をイネーブルさせるための有効でないファームウェアを使用するFFUコマンド及びファームウェアアップデートは、フィールドで用いられ、特定のOS、システム100のサービスセンターへのリターン、又はこれらと類似なものを必要としない。
図7は、一実施形態によるアドレス指定可能な(addressable)範囲を示すブロック図である。本実施形態で、実線で示した部分はストレージディバイスのアドレス指定可能な範囲700のパーティション及び潜在的パーティションを示す。ここで、ブートパーティション718−1及び718−2、RPMBパーティション718−3、及びユーザーパーティション718−4は全てストレージディバイスの物理的ストレージ空間732内のパーティションである。未使用空間730は任意のパーティションによって使用されない物理的ストレージ空間732の残りの部分を示す。しかし、本実施形態で、仮想パーティション720は、物理的ストレージ空間732に直接対応せず、物理的ストレージ空間732にあるか又は物理的ストレージ空間732から分離された情報を示す。例えば、仮想パーティション720は、物理的ストレージ空間732に格納されたデータから分離された情報、物理的ストレージ空間732に格納された情報、又はそのような情報の組合せを示す。
仮想パーティション720は他のパーティション718と同一の方法によってアクセスされる。例えば、仮想パーティション720は分離された独立的なアドレス範囲を有する。しかし、他の実施形態で、物理的ストレージ空間732は、ブロック、セクター、又はこれと類似なもののような連続的なアドレス範囲によってアドレス指定される。仮想パーティション720は物理的ストレージ空間732の端部に連続するアドレス範囲を通じてアクセスされる。しかし、仮想パーティション720は、物理的ストレージ空間732のアドレス範囲に対応しないことから、物理的ストレージ空間732に直接対応しない。
一実施形態で、仮想パーティション720をイネーブルさせることは他のパーティション718−1〜718−4の態様を変化させない。例えば、パーティション718−1〜718−4のデータ、大きさ、配向(orientation)、又はこれらと類似なものの全ては仮想パーティション720がイネーブルされた後にも同じ状態に維持される。特に、全体の物理的ストレージ空間732が現存するパーティション718によって占有されるとしても、仮想パーティション720は依然としてイネーブルされる。
一実施形態において、特定のディバイス102は予め設定されたセットのパーティションを提供する。例えば、eMMCディバイスは4つまでの汎用パーティション(general purpose partitions:GPPs)を提供する。仮想パーティション720はそのようなGPPの空間をチャージする。
図8は、一実施形態による有効でないファームウェアを示すブロック図である。上述したように、仮想ディバイスをイネーブル又はディスエーブルさせるために使用される制御信号は有効でないファームウェア840を含む。ここで、有効でないファームウェア840はコマンド842を含む。
コマンド842は多様な異なるコマンドを含む。例えば、コマンド842は、仮想ディバイスをイネーブルさせるコマンド、仮想ディバイスをディスエーブルさせるコマンド、仮想ディバイスを再構成するコマンド、又はこれらと類似なものを含む。本実施形態で、コマンド842が有効でないファームウェア840の特定の部分にあることを示しているが、コマンド842は有効でないファームウェア840内の他の部分にあってもよい。更に、本実施形態で、1つのコマンド842が有効でないファームウェア840を図示したが、複数の他の又は類似のコマンド842が有効でないファームウェア840に提供され得る。例えば、有効でないファームウェア840にある第1コマンドは先にイネーブルされた仮想ディバイスをディスエーブルさせる反面、有効でないファームウェア840にある第2コマンドは他の現在ディスエーブルされた仮想ディバイスをイネーブルさせる。
図9は、一実施形態による状態値のテーブルである。図1及び図9を参照すると、本実施形態で、ファームウェアアップデートを試みた後、値はディバイス102から読み出される。値はファームウェアをアップデートするための試みに関連する情報を伝達する。有効でないファームウェアがディバイス102に伝達された場合、ディバイス102からの応答は、ファームウェア設置(インストール)エラーを示す0x11の値を含むか、又は発生したエラー及びエラーがファームウェアを設置することに関連することを示す特定のビットセット(bits set)を含む。
他のフィールド、ビット、又はこれらと類似なものは、成功、失敗、状態を含み、或いはそうではない場合、仮想ディバイスに関連する有効でないファームウェアを他の有効でないファームウェアと区別する。例えば、イネーブルコマンドを有する有効でないファームウェアがディバイス102に伝送された場合、値がディバイス102から読み出される時、値はファームウェアの設置にエラーがあったことを示すビットセット及びコマンドを実行することが成功したか否かを示すビットを有する。指定された範囲にある値を発生させるビットは成功又は失敗を示すように設定される。例えば、第3番目のLSB(least−significant bit)は、コマンドを実行することが成功した場合、設定される。従って、有効でないファームウェアの成功的な伝送及びコマンドの成功的な実行は、エラーが発生し、エラーがファームウェア設置に関連し、そして有効でないファームウェア内のコマンドが成功的に実行されたことを示すように設定されたビットである0x15又は00010101bの値をもたらす。反面、有効でないファームウェアの成功的な伝送、及びコマンドの成功的でない実行又はコマンドの欠如は0x11又は00010001bの値をもたらす。本実施形態で、特定の例を説明したが、他の実施形態で、ビットは、コマンドが受信されたが成功的に実行されなかったことのようなコマンドが有効でないか、或いは仮想ディバイスの状態又はこれと類似な他の情報を示すために設定されるか、或いはクリアーされる。
図10は、一実施形態による仮想ディバイスのメモリマッピングを示すブロック図である。上述したように、仮想ディバイスは仮想パーティションとして提供される。パーティションはディバイス102の多様な属性に対するメモリマップインターフェイス(memory mapped interface)を含む。例えば、アドレス空間1014は多様な他のメモリマップ情報を含む。
本実施形態で、ヘッダー1002は、仮想パーティションに関連する利用可能な情報、アドレススパン(span)、又はこれらと類似なもののタイプを指示する。ファームウェア1004はディバイス102のファームウェアにマッピングされる。即ち、ディバイス102の現在のファームウェアは、仮想ディバイスを通じて読み出されるか、或いは書き込まれる。一実施形態において、ファームウェア1004のアドレス範囲はファームウェアに対する利用可能な全体ストレージ空間にマッピングされる。しかし、他の実施形態で、ファームウェア1004のアドレス範囲は現在存在するファームウェアの範囲にマッピングされる。
SFRマップ1005はディバイス102の特殊機能レジスター(special function register:SFR)に対するメモリマップインターフェイスである。従って、SFRは、パーティションのSFRマップ1005を通じて読み出されるか、或いは書き込まれる。
コマンド(CMD)トレイ1008及び応答トレイ1010は、コマンドが書き込まれて、応答が受信されるアドレス空間である。例えば、ディバイス102で実行されるコマンドはコマンドトレイ1008に書き込まれる。ディバイス102は、コマンドを実行し、応答を生成する。応答は応答トレイ1010のアドレス範囲から読み出される。一実施形態において、バイト(byte)をコマンドトレイ1008のアドレス範囲にある最後の位置に書き込むように、特定のアクションが発生すると、ディバイス102は、コマンドがコマンドトレイ1008に書き込まれると、今実行できるという表示としてそのアクションを使用する。従って、コマンドがコマンドトレイ1008に書き込まれ、コマンドが書き込まれた後、バイトがコマンドトレイ1008の最後のバイトに書き込まれると、ディバイス102は先に書き込まれたコマンドを実行するように命令する。本実施形態で、ディバイス102に対するコマンドの実行を発生させる特定のシークェンスを説明したが、他のシークェンスが使用され得る。
ディバイス102はディバイスに関連する多様なメタ−データを有する。このメタ−データは、メタ−データ1012にマッピングされ、従ってパーティションを通じてアクセスされる。例えば、ディバイス102に関連するパフォーマンスデータ、エラーデータ、状態データ、又はこれらと類似なものはメタ−データ1012のアドレス範囲を通じて露出される。特に、そうではなく、ディバイス102がJEDEC標準のような特定の標準に準拠する場合、そのようなメタ−データは利用可能でないデータを含む。
本実施形態で、ディバイス102に関連する特定のタイプの情報、情報の組織、又はこれらと類似なものを例として用いたが、他の実施形態で、ディバイスに関連する他のタイプの情報がメモリマップパーティション(memory mapped partition)を通じて提供され得る。
図11は、一実施形態によるディバイスを示すブロック図である。本実施形態で、ディバイス1100は、通信インターフェイス1102、コントローラ1104、及び内部構成要素1106を含む。通信インターフェイス1102はコントローラ1104に連結される。通信インターフェイス1102は、ディバイス1100、そして他のディバイス及び/又はシステム間の通信をイネーブルさせる。例えば、通信インターフェイス1102は、他のディバイスとの通信をイネーブルさせるための端子、ピン、コネクター、ドライバ、バッファ、プロセッサ、又はこれらと類似なものを含む。特定の実施形態で、通信インターフェイス1102は1つ又はそれ以上のJEDEC標準に従うインターフェイスである。他の実施形態で、通信インターフェイス1102は、USBインターフェイス、ストレージディバイスインターフェイス、拡張バス又は他のコンピューターバスインターフェイス、或いはこれらと類似なものである。
コントローラ1104は、汎用プロセッサ、ASIC(application specific integrated circuit)、SOC(system on a chip)、プログラム可能なロジックディバイス、マイクロコントローラ、ディスクリートロジックディバイス(discrete logic device、又はこれらの組合せを含む。コントローラ1104及び通信インターフェイス1102と他の内部構成要素1106との間でインターフェイスを遂行する。しかし、他の実施形態で、コントローラ1104は内部構成要素1106に対するアクセスを制御する。
内部構成要素1106は通信インターフェイス1102及びコントローラ1104以外のディバイス1100内の他の構成要素を含む。例えば、内部構成要素1106は、データストレージ構成要素(storage element)、センサー、アクチュエーター(actuator)、他の通信インターフェイス、又はこれらと類似なものを含む。
コントローラ1104は通信インターフェイス1102を通じて論理的ディバイスを提供する。論理的ディバイスの提供は、管理されるコントローラ1104の特定の構成、内部構成要素1106に対する特定のウェイアクセス(way access)、又はこれらと類似なものを含む。例えば、コントローラ1104は1つ又はそれ以上の論理的ディバイスとして1つ又はそれ以上のパーティションを列挙するパーティションテーブルを提供する。他の実施形態で、コントローラ1104は論理的ディバイスにアドレス指定された通信に応答する。
コントローラ1104は通信インターフェイス1102を通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせる。仮想ディバイスがイネーブルされると、コントローラ1104は通信インターフェイス1102を通じて仮想ディバイスを提供する。例えば、仮想ディバイスをイネーブルすることは仮想ディバイスを反映するパーティションテーブルを変更することを含む。他の例で、コントローラ1104は仮想ディバイス(即ち、現存する論理的ディバイスのアドレスでないアドレスに関連する仮想ディバイス)にアドレス指定された通信に応答する。
一度、仮想ディバイスがイネーブルされると、仮想ディバイスは上述したようにアクセスされる。従って、多様な動作が仮想ディバイスを通じてディバイス1100で実行される。例えば、非標準コマンド及び応答は、特定の標準に従って利用可能でない仮想ディバイスを通じて使用される。非標準コマンド及び応答は、最適化、デバッギング、パフォーマンステスト、又はこれらと類似なもののために使用される。
コントローラ1104は通信インターフェイス1102を通じてディスエーブル信号を受信する。従って、コントローラ1104はディスエーブル信号に応答して仮想ディバイスをディスエーブルさせる。本実施形態で、論理的ディバイスを提供するか、或いは仮想ディバイスをイネーブルさせる特定の技術を例として使用したが、ディバイスを提供する他の技術が使用され得る。
図12は、一実施形態によるメモリディバイスを示すブロック図である。本実施形態で、メモリディバイス1200は図11の通信インターフェイス1102及びコントローラ1104と類似な通信インターフェイス1202及びコントローラ1204を含む。しかし、図11の内部構成要素1106はメモリ1206である。例えば、メモリ1206はデータを格納する。メモリ1206は、メモリセル、ディスクフラッタ、又はこれらと類似なデータストレージ媒体を含む。
一実施形態で、コントローラ1204はメモリ1206に格納されたデータに関連する論理的ストレージディバイスを提供する。例えば、論理的ストレージディバイスはパーティションである。上述したように、コントローラ1204は仮想ディバイスをイネーブルさせて提供する。
従って、上述したような多様なデータは仮想ディバイスを通じてアクセス可能である。例えば、一実施形態で、コントローラ1204は仮想ディバイスの少なくとも一部としてメモリ1206に関連するメタ−データを提供する。ここで、メモリ1206に関連するメタ−データはメモリディバイス1200に関連する所定のデータである。特定の実施形態で、メタ−データはメモリ1206に格納された実際のデータでないメモリディバイス1200に関連する所定の情報を含む。本実施形態で、メタ−データはメモリ1206に格納された実際のデータを含まないが、他の実施形態で、メモリ1206に格納されたデータは仮想ディバイスを通じてアクセスされる。即ち、仮想ディバイスはメモリディバイス1200に関連するメタ−データを提供する必要が無い。
特定の実施形態で、メモリディバイス1200はモバイルディバイスのメインメモリであるeMMCディバイスである。そのようなメモリディバイス1200は、ターゲットシステムにソルダリングされることから、メモリディバイス1200をテストのような非標準目的のためにアクセスすることは難しい。しかし、上述したような多様なデータは仮想ディバイスを通じて利用可能であるため、テスト又は他の類似なアクセスは容易である。
図13は、一実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図11及び図13を参照すると、1300段階でディバイス1100は制御信号を受信する。例えば、有効でないファームウェアのような制御信号は通信インターフェイス1102を通じてディバイス1100によって受信される。
1302段階で、制御信号がイネーブルコマンドを含む場合、コントローラ1104は仮想ディバイスをイネーブルさせる。例えば、コントローラ1104はイネーブルコマンドが制御信号に含まれるか否かを判断する。イネーブルコマンドが制御信号に含まれる場合、コントローラ1104は仮想ディバイスをイネーブルさせる。
同様に、1304段階で、制御信号がディスエーブルコマンドを含む場合、コントローラ1104は仮想ディバイスをディスエーブルさせる。例えば、コントローラ1104はディスエーブルコマンドが制御信号に含まれるか否かを判断する。ディスエーブルコマンドが制御信号に含まれる場合、コントローラ1104は仮想ディバイスをディスエーブルさせる。
図14は、一実施形態による有効でないファームウェアを使用する方法を示すフローチャートである。図11及び図14を参照すると、有効でないファームウェアは制御信号の特定の例として使用される。1400段階でファームウェアアップデートが受信される。1406段階でコントローラ1104はファームウェアが有効であるか否かを判断する。ファームウェアが有効である場合、1408段階でコントローラ1104はファームウェアの処理を続ける。従って、有効なファームウェアアップデートは通常のように処理される。
しかし、ファームウェアが有効でない場合、1410段階でコントローラ1104はコマンドが有効でないファームウェアに提供されたか否かを判断する。コマンドが提供されなかった場合、ファームウェアは単なる有効でないファームウェアであり、従って1412段階で処理される。しかし、コマンドが識別された場合、1414段階でコントローラ1104はコマンドを処理する。上述したように、コマンドがイネーブルコマンドである場合、仮想ディバイスはイネーブルされる。同様に、コマンドがディスエーブルコマンドである場合、仮想ディバイスはディスエーブルされる。他のコマンドも同様に処理される。
図15は、他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図11及び図15を参照すると、本実施形態において、1500段階で、ディバイス1100は仮想ディバイスに対するアクセスを受信する。そのようなアクセスは、読出し、書込み、又はこれらと類似なものである。アクセスに応答して、ディバイス1000はそのアクセスに応答する多様なアクションを取る。
1502段階で、ディバイス1100はアクセスに応答してディバイス1100のファームウェアにアクセスする。即ち、ファームウェアは、仮想ディバイスを通じて書き込まれ、読み出される。例えば、仮想ディバイスはストレージディバイスのパーティションである。パーティションに対する読出し及び書込みは、メインストレージ構成要素よりもディバイス1100に対するファームウェアを格納するメモリに方向を変えられる。
1504段階で、ディバイス1100は仮想ディバイスに書き込まれたコマンドを受信する。1505段階で、ディバイス1100はコマンドを実行する。1506段階で、そのようなコマンドに対する応答は、仮想ディバイス、即ちディバイス1100によって提供される。
パーティションの例を用いて、コマンドは特定のアドレス範囲に書き込まれる。コマンドを書き込んだ後、他の書込み、他のアクセス、又は他の信号はディバイスがコマンドを実行するようにする。上述したように、1505段階で、コマンドに対するアドレス範囲にある最後のバイトに対する書込みはコマンドを実行するためのトリガー(trigger)として使用される。コマンドが実行された後、ディバイス1100はコマンドの実行に対する応答を生成する。応答はディバイスに対する読出しを仮想ディバイスのパーティションの特定の部分に発行することによって得られる。
図16は、他の実施形態による仮想ディバイスに関連する動作方法を示すフローチャートである。図1及び図16を参照すると、本実施形態において、1600段階でプロセッサ104はイネーブル信号をディバイス102に伝送してディバイス102の仮想ディバイスをイネーブルさせる。1602段階で、プロセッサ104は再ブーティングされ、仮想ディバイスはマウントされる。例えば、一実施形態で、仮想ディバイスがイネーブルされた後、プロセッサ104は再ブーティングされる。プロセッサ104は、仮想ディバイスを認識し、仮想ディバイスをマウントする。しかし、他の実施形態で、プロセッサ104は再ブーティングされずに仮想ディバイスをマウントする。いずれの場合も、1604段階で仮想ディバイスに対するディバイスインターフェイスが提供される。
仮想ディバイスを必要としなくなった後、1606段階でディスエーブル信号はディバイス102に伝送される。1608段階で、プロセッサ104は再び再ブーティングされ、仮想ディバイスはアンマウントされる。本実施形態で、仮想ディバイスをアンマウントすること、及びディスエーブル信号を伝送することに関して再ブーティングすることについて特定の順序を説明したが、この動作は他の順序で実行され得る。例えば、仮想ディバイスはディスエーブル信号が伝送される前にアンマウントされ、システムはディスエーブル信号が伝送された後に再ブーティングされる。
図17は、一実施形態によるホスト及びターゲットシステムを示すブロック図である。本実施形態で、システム1700はホストシステム1712に連結されたターゲットシステム1710を含む。ターゲットシステム1710はプロセッサ1704に連結されたディバイス1702を含む。ディバイス1702及びプロセッサ1704は本明細書で上述したディバイス及びプロセッサの中のいずれか1つである。
プロセッサ1704は通信インターフェイス1708に連結される。通信インターフェイス1708は、プロセッサが外部ディバイス、特にホストシステム1712と通信する多様なインターフェイスである。例えば、通信インターフェイス1708は、USBインターフェイス、ネットワークインターフェイス、ブルートゥース(登録商標)インターフェイス、又はそれらを通じてシステムが通信可能な他の多様なインターフェイスを含む。
ホストシステム1712はターゲットシステム1710と通信するディバイス1702に関連するディバイスインターフェイスにアクセスする所定のシステムである。例えば、ホストシステム1712は、個人用コンピューター、ワークステーション、モバイルディバイス、テストセットアップ、又はこれらと類似なものである。ホストシステム1712は通信インターフェイス1708を通じてディバイス1702にアクセスする。
一実施形態で、ホストシステム1712はディバイス1702に第1動作モードから第2動作モードに変換するように命令する。第1動作モードで、ディバイス1702はディバイス1702に関連する仮想ディバイスをディスエーブルさせ、第2動作モードで、ディバイス1702は仮想ディバイスをイネーブルさせる。ホストシステム1712はディバイス1702に多様な方法で変換をするように命令する。例えば、ホスト1712は上述したように仮想ディバイスをイネーブルさせるための制御信号を伝送するターゲットシステム1710にアプリケーションを設置(インストール)する。他の実施形態で、ホストシステム1712は制御信号を伝達し、プロセッサ1704は制御信号をディバイス1702に転送(forward)する。
一度、仮想ディバイスがイネーブルされると、プロセッサ1704は通信インターフェイス1708を通じて利用可能な仮想ディバイスに関連するディバイスインターフェイスを生成する。ホストシステム1712は通信インターフェイス1708及びプロセッサ1704によって提供されたディバイスインターフェイスを通じて仮想ディバイスにアクセスする。
一実施形態で、ホストシステム1712は、ディバイスインターフェイスを通じてディバイスに対する最適化、診断(diagnostics)、及びパフォーマンステストの中の少なくとも1つを遂行する。通信インターフェイス1708を通じたディバイス1702に対するアクセスと共に、ホストシステム1712は上述したように仮想ディバイスにアクセスする。図10及び図17を参照し、図10のメモリマップを用いて、ホストシステム1712は、ファームウェア1004のアドレス範囲を通じてディバイス1702のファームウェアを検証するか、或いは変更する。ホストシステム1712はSFRマップ1005を通じて特殊機能レジスターにアクセスする。ホストシステム1712は、ディバイスで実行するために、そして応答トレイ1010を通じて応答を受信するためにコマンドをコマンドトレイ1008に書き込む。最終的にホストシステム1712はディバイス1702のメタ−データ1012にアクセスする。ディバイス1702の仮想ディバイスを通じて利用可能な所定の情報又は他の情報は、何らかの種類の最適化、診断、パフォーマンステスト、又はこれらと類似なものに用いられる。
特定の実施形態で、ディバイス1702の仮想ディバイスを通じた情報の提供はそのようなテストを単純化させる。例えば、ディバイス1702はカスタム又は独占コマンド(custom or proprietary command)に応答する。しかし、ターゲットシステム1710のOSはそのようなコマンドを伝送できないこともある。OS、OSのカーネル、OSのモジュール、又はこれらと類似なものはそのようなコマンドを伝送する構成要素で代替される。この技術はOS又はカーネルの変更を必要とすることもある。そのような変更は一般的なユーザーに利用可能なものよりも高い権限水準(privilege level)を必要とする。
反面、OSによって一般的にマウントされるか又はアクセス可能な論理的ディバイスであるディバイス1702の仮想ディバイスをイネーブルさせることによって、OSに対する変更を必要としない。即ち、仮想ディバイスが、カーネルがマウントされるか又はアクセスされるタイプの論理的ディバイスである場合、カーネルに対する変更はそのようなアクセスを達成するために必要である。更に、仮想ディバイスがプロセッサ1704によって自動的にマウントされることにより、ターゲットシステム1710を再ブーティングしてマウントするか又はより低い権限にアクセスすることによって、ターゲットシステム1710のユーザーは、OSを代替するために更に高い権限を必要としない。
一実施形態で、ソフトウェアはターゲットシステム1710に設置(インストール)される。例えば、アプリケーションはターゲットシステム1710に設置される。そのようなソフトウェアはホストシステム1712によって設置されるか、ターゲットシステム1710によって設置されるか、又は他のシステムによって設置される。ソフトウェアはイネーブル信号を伝送してディバイス1702を仮想ディバイスがディスエーブルされる第1動作モードから仮想ディバイスがイネーブルされる第2動作モードに転換させる。イネーブル信号は、上述したようなイネーブルコマンドを含む有効でないファームウェアのような、多様な信号である。
本実施形態で、ソフトウェアはホストシステム1712と仮想ディバイスとの間のインターフェイスを提供する。例えば、ソフトウェアはターゲットシステム1710とホストシステム1712との間の通信回線を形成する。
図18は、一実施形態による仮想ディバイスにアクセスする方法を示すフローチャートである。図17及び図18を参照すると、1800段階で、アプリケーションはターゲットシステム1710に設置(インストール)される。1802段階で、アプリケーションはディバイス1702の仮想ディバイスをイネーブルさせるように命令を受ける。一実施形態で、アプリケーションは、ホストシステム1712によるか、ターゲットシステム1710のユーザーによるか、設置の後に自動的に、又は他の技術によって仮想ディバイスをイネーブルさせるように命令を受ける。1804段階で、ディバイス1702をテストすること、ディバイス1702を最適化すること、又はこれらと類似なことのような所望の動作が実行される。
一度、所望の動作が実行されると、1806段階で、アプリケーションは仮想ディバイスをディスエーブルさせるように命令を受ける。仮想ディバイスをイネーブルさせることと同様に、アプリケーションはホストシステム1712によって又はターゲットシステム1710のユーザーによって仮想ディバイスをディスエーブルさせるように命令を受ける。
1808段階で、アプリケーションはターゲットシステム1710から除去(アンインストール)される。一実施形態で、除去は仮想ディバイスをディスエーブルさせるためにアプリケーションに命令した後、自動的に実行される。他の実施形態で、除去される時に、アプリケーションは仮想ディバイスを自動的にディスエーブルさせる。
図19は、一実施形態による電子システムを示すブロック図である。電子システム1900はポータブルノートブック型コンピューター、UMPC(Ultra Mobile PC)、タブレットPC、ラップトップコンピューター、デスクトップコンピュータ、サーバー、ワークステーション、モバイル通信装置等を含むが、これらに限定されない多様な電子装置の一部である。例えば、電子システム1900は、バス1920を用いてデータ通信を遂行するメモリシステム1912、プロセッサ1914、RAM1916、ユーザーインターフェイス1918を含む。
プロセッサ1914はマイクロプロセッサ又はモバイルプロセッサAPである。プロセッサ1914はFPU(floating point unit)、ALU(arithmetic logic unit)、GPU(graphics processing unit)、DSPコア(digital signal processing core)、又はこれらの組合せを含む。 プロセッサ1914はプログラムを実行して電子システム1900を制御する。
RAM1916はプロセッサ1914の動作メモリとして使用される。或いはプロセッサ1914及びRAM1916は1つのパッケージとしてパッケージングされる。
ユーザーインターフェイス1918は電子システム1900にデータを入力するか又は電子システム1900からデータを出力するために使用される。例えば、インターフェイス1918は、タッチスクリーン、キーボード、ポインティングディバイス、ネットワークインターフェイス、周辺インターフェイス、又はこれらと類似なものを含む。
メモリ1912は、プロセッサ1914を動作させるためのコード、プロセッサ1914によって処理されたデータ、又は外部入力データを格納する。メモリ1912はコントローラ及びメモリディバイスを含む。メモリ1912はコンピューター読み取り可能な記録媒体(computer readable media)に対するインターフェイスを含む。そのようなコンピューター読み取り可能な記録媒体は上述した多様な動作を実行するための命令を格納する。
一実施形態で、プロセッサ1914は上述したような多様なプロセッサの動作の一部又は全てを遂行する。更に、RAM1916、メモリ1912、ユーザーインターフェイス1918、又は電子システム1900の他の構成要素の中のいずれも上述したディバイスを含む。従って、プロセッサ1914はそのようなディバイスの仮想ディバイスをイネーブルさせ、関連する動作の中のいずれをも遂行する。
図20は、一実施形態によるテストセットアップを示す図である。本実施形態で、テストセットアップ2000はホストシステム2002を含む。ホストシステム2002はインターフェイス2004に連結される。インターフェイス2004は被試験装置(device under test:DUT)のインターフェイス2008に対応する連結に適切な所定のインターフェイスである。例えば、インターフェイス2004は、有線インターフェイス、無線インターフェイス、USBインターフェイス、ブルートゥース(登録商標)インターフェイス、又はこれらと類似なものである。インターフェイス2008は類似な対応するインターフェイスである。
DUT2006は上述したような仮想ディバイスを提供する所定のディバイスである。従って、ホストシステム2002は、DUT2006、特にDUT2006内のディバイスをテストする。一実施形態で、テストセットアップ2000は製造環境の外であるか又は現場(in field)で使用される。従って、テストセットアップ2000の使用者は、他のカーネルを再コンパイルするか或いは設置してユーザーがDUT2006のディバイスをテストするためのDUT2006に関する権限を有しないこともある。更に、DUT2006のディバイスはソルダリングされることから、除去可能(リムーバブル)なディバイスに比べてテストすることが相対的に難しい。しかし、上述したように、ユーザーがDUT2006にアプリケーションを単に設置してテストすることができるため、相対的にアクセス不可能な位置にあるディバイスをテストする難しさは減少する。
図21は、一実施形態によるeMMCを示すブロック図である。本実施形態で、システム2100はeMMC2102及びプロセッサ2104を含む。eMMC2102はシステム2100のためのメインメモリディバイスである。特定の実施形態で、システム2100はモバイル通信ディバイスである。しかし、システムは他の実施形態であってもよい。eMMC2102及びプロセッサ2104は上述したようにディバイス又はプロセッサで構成される。
図22は、一実施形態によるSSDを備えたシステムを示すブロック図である。本実施形態で、システム2200はSSD(solid state disk)2202を含む。SSD2202はシステム2200のためのメインストレージディバイスである。特定の実施形態で、システム2200は、ラップトップコンピューター、タブレットコンピューター、又はデスクトップコンピュータである。しかし、システムは他の実施形態であってもよい。SSD2202及びプロセッサ2204は上述したようにディバイス及びプロセッサで構成される。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
100、1700、2100、2200 システム
102、1100、1702 ディバイス
104、1704、1914、2104、2204 プロセッサ
208、314、416 ディバイスインターフェイス
209、415 論理的ディバイス
210 カーネル空間
211 アプリケーション
212 ユーザー空間
313 仮想ディバイス
517、718 ブートパーティション
517−3、718−3 RPMBパーティション
517−4、718−4 ユーザーパーティション
518、520 マウントポイント
519、720 仮想パーティション
522 MMCホストコントローラディバイス
524 MMCサブシステム
526 ジェネリックブロックレイヤー
528 VFS/FS/バッファキャッシュレイヤー
700 アドレス指定可能な範囲
730 未使用空間
732 物理的ストレージ空間
840 有効でないファームウェア
842 コマンド
1002 ヘッダー
1004 ファームウェア
1005 SFRマップ
1008 コマンド(CMD)トレイ
1010 応答トレイ
1012 メタ−データ
1014 アドレス空間
1102、1202、1708 通信インターフェイス
1104、1206、1912 コントローラ
1106 内部構成要素
1200 メモリディバイス
1206 メモリ
1710 ターゲットシステム
1712、2002 ホストシステム
1900 電子システム
1918 ユーザーインターフェイス
1920 バス
2000 テストセットアップ 2004、2008 インターフェイス
2006 被試験装置(DUT)
2102 eMMC
2202 SSD

Claims (10)

  1. 通信インターフェイスと、
    前記通信インターフェイスに連結されたコントローラと、を備え、
    前記コントローラは、
    前記通信インターフェイスを通じて論理的ディバイスを提供し、
    前記通信インターフェイスを通じて受信されたイネーブル信号に応答して仮想ディバイスをイネーブルさせ、前記仮想ディバイスがイネーブルされると、前記通信インターフェイスを通じて前記仮想ディバイスを提供し、
    前記イネーブル信号は、有効でないファームウェアを含むことを特徴とするディバイス。
  2. 前記イネーブル信号は、前記有効でないファームウェア内のコマンドであることを特徴とする請求項1に記載のディバイス。
  3. 前記コントローラは、
    前記通信インターフェイスを通じてファームウェアを受信し、前記ファームウェアが有効でないか否かを判断し、
    前記ファームウェアが有効でない場合、前記イネーブル信号が前記ファームウェアに含まれるか否かを判断することを特徴とする請求項1に記載のディバイス。
  4. 前記コントローラは、
    前記通信インターフェイスを通じてファームウェアを受信し、前記ファームウェアが有効でないか否かを判断し、
    前記ファームウェアが有効でない場合、ディスエーブルコマンドが前記ファームウェアに含まれるか否かを判断し、
    前記ファームウェアにディスエーブルコマンドが含まれる場合、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせることを特徴とする請求項1に記載のディバイス。
  5. 前記コントローラは、
    前記通信インターフェイスを通じて前記仮想ディバイスに対するアクセスを受信し、
    前記仮想ディバイスに対するアクセスに応答して前記ディバイスのためのファームウェアにアクセスすることを特徴とする請求項1に記載のディバイス。
  6. 前記コントローラは、
    前記通信インターフェイスを通じて、前記仮想ディバイスに入力されるコマンドを含む書込みを受信し、
    前記コマンドを実行し、前記コマンドの実行に対する応答を生成すると共に、
    前記通信インターフェイスを通じて、前記仮想ディバイスに関連する読出しを受信し、
    前記読出しに応答して前記コマンドの実行に対する応答を伝送することを特徴とする請求項1に記載のディバイス。
  7. ディバイスの動作方法であって、
    論理的ディバイスを提供するディバイスによって、制御信号を受信する段階と、
    前記ディバイスによって、イネーブルコマンドが前記制御信号に含まれるか否かを判断する段階と、
    前記ディバイスによって、前記イネーブルコマンドに応答して仮想ディバイスをイネーブルさせる段階と、を有し、
    前記制御信号を受信する段階は、前記ディバイスによって、前記ディバイスのための有効でないファームウェアの伝送を受信する段階を含むことを特徴とする方法。
  8. 前記ディバイスによって、前記仮想ディバイスに対するアクセスを受信する段階と、
    前記ディバイスによって、前記仮想ディバイスに対するアクセスに応答して前記ディバイスのための現在のファームウェアにアクセスする段階と、を更に含むことを特徴とする請求項に記載の方法。
  9. 前記ディバイスによって、前記仮想ディバイスに入力されるコマンドを含む書込みを受信する段階と、
    前記ディバイスによって、前記コマンドを実行する段階と、
    前記ディバイスによって、前記コマンドの実行に対する応答を生成する段階と、
    前記ディバイスによって、前記仮想ディバイスに関連する読出しを受信する段階と、
    前記ディバイスによって、前記読出しに応答して前記コマンドの実行に対する応答を伝送する段階と、を更に含むことを特徴とする請求項に記載の方法。
  10. 前記ディバイスによって、ディスエーブルコマンドが前記有効でないファームウェアに含まれるか否かを判断する段階と、
    前記ファームウェアにディスエーブルコマンドが含まれる場合、前記ディバイスによって、前記ディスエーブルコマンドに応答して前記仮想ディバイスをディスエーブルさせる段階と、を更に含むことを特徴とする請求項7に記載の方法。
JP2015161644A 2014-08-19 2015-08-19 仮想ディバイスを有するディバイスとその動作方法 Active JP6622512B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462039400P 2014-08-19 2014-08-19
US62/039,400 2014-08-19
US14/676,518 2015-04-01
US14/676,518 US9720855B2 (en) 2014-08-19 2015-04-01 Virtual device based systems with access to parts other than data storage elements through the virtual device

Publications (3)

Publication Number Publication Date
JP2016045953A JP2016045953A (ja) 2016-04-04
JP2016045953A5 JP2016045953A5 (ja) 2018-09-27
JP6622512B2 true JP6622512B2 (ja) 2019-12-18

Family

ID=55348388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015161644A Active JP6622512B2 (ja) 2014-08-19 2015-08-19 仮想ディバイスを有するディバイスとその動作方法

Country Status (4)

Country Link
US (2) US9720855B2 (ja)
JP (1) JP6622512B2 (ja)
KR (1) KR102234261B1 (ja)
CN (1) CN105426265B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331434B2 (en) * 2016-12-21 2019-06-25 Quanta Computer Inc. System and method for remotely updating firmware
US11328089B2 (en) * 2019-09-20 2022-05-10 International Business Machines Corporation Built-in legal framework file management
US11102519B2 (en) * 2020-01-15 2021-08-24 Panasonic Avionics Corporation Centralized architecture for in-vehicle entertainment systems
US11492119B1 (en) * 2021-06-23 2022-11-08 Panasonic Avionics Corporation Methods and systems for streaming content on a transportation vehicle
US11445231B1 (en) 2021-06-23 2022-09-13 Panasonic Avionics Corporation Credential management systems and associated methods thereof for streaming content on a transportation vehicle
US11606583B1 (en) * 2022-06-08 2023-03-14 Panasonic Avionics Corporation Distributed data storage for in-vehicle entertainment system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334077B2 (en) * 2003-10-17 2008-02-19 Renesas Technology America, Inc. Method and apparatus for smart memory pass-through communication
US8078788B2 (en) 2005-12-08 2011-12-13 Sandisk Technologies Inc. Media card command pass through methods
US7787969B2 (en) * 2007-06-15 2010-08-31 Caterpillar Inc Virtual sensor system and method
CN101394301A (zh) * 2007-09-21 2009-03-25 华为技术有限公司 小型电信和计算通用硬件平台***、装置及其通信方法
US8868929B2 (en) 2008-04-08 2014-10-21 Microelectronica Espanola S.A.U. Method of mass storage memory management for large capacity universal integrated circuit cards
US8996851B2 (en) 2010-08-10 2015-03-31 Sandisk Il Ltd. Host device and method for securely booting the host device with operating system code loaded from a storage device
US8776060B2 (en) * 2010-11-04 2014-07-08 Lsi Corporation Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor
US8561066B2 (en) * 2010-12-08 2013-10-15 International Business Machines Corporation Simplified DMA mappings for self-virtualizing input/output device virtual functions
US8732527B2 (en) 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method
US20140047144A1 (en) * 2012-08-07 2014-02-13 Hitachi, Ltd. I/o device and storage management system
TW201504937A (zh) * 2013-07-31 2015-02-01 Ibm 由實體儲存裝置中所選分區所構成的虛擬儲存裝置

Also Published As

Publication number Publication date
US20160055011A1 (en) 2016-02-25
CN105426265B (zh) 2020-11-20
JP2016045953A (ja) 2016-04-04
US9720855B2 (en) 2017-08-01
KR102234261B1 (ko) 2021-04-01
KR20160022277A (ko) 2016-02-29
US20170300348A1 (en) 2017-10-19
US10127063B2 (en) 2018-11-13
CN105426265A (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
JP6622512B2 (ja) 仮想ディバイスを有するディバイスとその動作方法
US11216206B2 (en) Method of operating data storage device
JP6082389B2 (ja) ホストから見たデバイスファームウェア更新の影響の管理
US8296467B2 (en) Single-chip flash device with boot code transfer capability
JPH10207637A (ja) コンピュータをデータ記憶装置と通信させる方法及び構成
US9164703B2 (en) Solid state drive interface controller and method selectively activating and deactivating interfaces and allocating storage capacity to the interfaces
US9886408B2 (en) Data access protection for computer systems
KR102238650B1 (ko) 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
US20150347151A1 (en) System and method for booting from a non-volatile memory
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US10108542B2 (en) Serial link storage interface (SLSI) hybrid block storage
US20090240876A1 (en) Information processing apparatus, information processing method and storage system
US10042585B2 (en) Pervasive drive operating statistics on SAS drives
US20140047288A1 (en) Storage interface apparatus for solid state drive tester
US20150347324A1 (en) System and Method for Shared Memory for FPGA Based Applications
CN114174973A (zh) 串行存储器设备i/o模式选择
US20090019211A1 (en) Establishing A Redundant Array Of Inexpensive Drives
US9361123B2 (en) Boot from logical volume spanning plurality of PCI devices
TW201504937A (zh) 由實體儲存裝置中所選分區所構成的虛擬儲存裝置
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
JP2008276691A (ja) ハードディスクインターフェースを模擬したインターフェースカード
US20230140164A1 (en) System and method for bmc and bios booting using a shared non-volatile memory module
US11256435B2 (en) Method and apparatus for performing data-accessing management in a storage server
US10628042B2 (en) Control device for connecting a host to a storage device
KR20060095133A (ko) 비휘발성 메모리에 저장된 시스템 프로그램을 구동시키는방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180815

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191023

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191122

R150 Certificate of patent or registration of utility model

Ref document number: 6622512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250