KR102234261B1 - 가상 디바이스 기반의 시스템 - Google Patents
가상 디바이스 기반의 시스템 Download PDFInfo
- Publication number
- KR102234261B1 KR102234261B1 KR1020150116749A KR20150116749A KR102234261B1 KR 102234261 B1 KR102234261 B1 KR 102234261B1 KR 1020150116749 A KR1020150116749 A KR 1020150116749A KR 20150116749 A KR20150116749 A KR 20150116749A KR 102234261 B1 KR102234261 B1 KR 102234261B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtual
- firmware
- command
- virtual device
- response
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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)
Abstract
본 발명의 실시 예에 따른 시스템은, 제어 신호에 응답하여 논리적 디바이스를 제공하고 가상 디바이스를 인에이블 시키도록 구성되는 디바이스, 그리고 상기 디바이스에 연결되고, 제 1 디바이스 인터페이스를 통하여 상기 논리적 디바이스를 제공하고, 상기 제어 신호를 상기 디바이스로 전달하여 상기 가상 디바이스를 인에이블 시키고, 상기 가상 디바이스가 인에이블 된 후 제 2 디바이스 인터페이스를 통하여 상기 가상 디바이스를 제공하도록 구성되는 프로세서를 포함할 수 있다.
Description
본 발명은 디바이스 및 시스템에 관한 것으로, 좀 더 상세하게는, 선택적으로 인에이블 될 수 있는 가상 디바이스를 갖는 디바이스 및 시스템에 관한 것이다.
어떤 시스템은, 물리적으로 그리고 기능적으로, 상대적으로 액세스할 수 없는 기능을 갖는 디바이스들을 포함할 수 있다. 예를 들어, eMMC 디바이스와 같은 메모리 장치는 어떤 장소에 솔더링(soldering) 될 수 있다. 그 결과, 디바이스로의 물리적인 액세스를 하는 것은 상대적으로 어렵다. 게다가, 디바이스의 어떤 기능에 액세스하는 것은 커스텀 커맨드(custom command)를 필요로 할 수 있고, 디바이스로 커맨드를 전송하기 위한 커스텀 운영 체제(custom operating system)를 필요로 할 수 있다. 그 결과, 디바이스를 액세스하는 것은 상대적으로 어려울 수 있고, 운영 체제 또는 운영 체제의 구성요소를 대체하는 것을 필요로 할 수 있다. 디바이스를 액세스하거나 테스트하기 위한 이러한 옵션들은 디바이스를 포함하는 시스템의 엔드-유저와 같은 특정한 유저에게는 이용 가능하지 않을 수 있다.
본 발명의 기술적 사상은 선택적으로 인에이블 될 수 있는 가상 디바이스를 포함하는 디바이스를 제공한다.
본 발명의 실시 예에 따른 시스템은, 제어 신호에 응답하여 논리적 디바이스를 제공하고 가상 디바이스를 인에이블 시키도록 구성되는 디바이스, 그리고 상기 디바이스에 연결되고, 제 1 디바이스 인터페이스를 통하여 상기 논리적 디바이스를 제공하고, 상기 제어 신호를 상기 디바이스로 전달하여 상기 가상 디바이스를 인에이블 시키고, 상기 가상 디바이스가 인에이블 된 후 제 2 디바이스 인터페이스를 통하여 상기 가상 디바이스를 제공하도록 구성되는 프로세서를 포함할 수 있다.
예를 들어, 상기 제어 신호는 유효하지 않은 펌웨어를 포함할 수 있다.
예를 들어, 상기 프로세서는 유효하지 않은 펌웨어를 상기 디바이스로 전달하도록 구성되고, 상기 디바이스는 상기 유효하지 않은 펌웨어에 포함된 커맨드에 응답하여 상기 가상 디바이스를 인에이블 시키도록 구성될 수 있다.
예를 들어, 상기 디바이스는 스토리지 디바이스를 포함하고, 상기 논리적 디바이스는 상기 스토리지 디바이스의 제 1 파티션이고, 상기 가상 디바이스는 상기 스토리지 디바이스의 제 2 파티션일 수 있다.
예를 들어, 상기 제 2 파티션의 적어도 일부는 상기 디바이스의 속성들에 대한 메모리-맵 인터페이스(memory-mapped interface)를 포함할 수 있다.
예를 들어, 상기 디바이스의 속성들은, 상기 디바이스에 대한 펌웨어, 커맨드 큐, 응답 큐, 및 상기 디바이스의 메타-데이터 중 적어도 하나를 포함할 수 있다.
예를 들어, 상기 프로세서에 연결된 통신 인터페이스, 그리고 상기 통신 인터페이스에 연결되고, 상기 제 2 인터페이스를 통하여 상기 디바이스를 액세스하도록 구성되는 호스트 시스템을 더 포함할 수 있다.
예를 들어, 상기 호스트 시스템은 상기 제 2 인터페이스를 통하여 상기 디바이스에 대한 최적화, 진단, 퍼포먼스 테스트 중 적어도 하나를 수행하도록 구성될 수 있다.
본 발명의 실시 예에 따른 디바이스는, 통신 인터페이스, 그리고 상기 통신 인터페이스에 연결된 컨트롤러를 포함하되, 상기 컨트롤러는 상기 통신 인터페이스를 통하여 논리적 디바이스를 제공하고, 상기 통신 인터페이스를 통하여 수신된 인에이블 신호에 응답하여 가상 디바이스를 인에이블 시키고, 상기 가상 디바이스가 인에이블 되었을 때, 상기 통신 인터페이스를 통하여 상기 가상 디바이스를 제공하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 파티션 테이블을 제공하도록 구성되고, 상기 논리적 디바이스는 상기 파티션 테이블에 있는 제 1 파티션이고, 그리고 상기 가상 디바이스가 인에이블 되었을 때, 상기 가상 디바이스는 상기 파티션 테이블에 있는 제 2 파티션일 수 있다.
예를 들어, 상기 컨트롤러에 연결된 메모리를 더 포함하되, 상기 논리적 디바이스는 상기 메모리에 저장된 데이터와 관련된 논리적 스토리지 디바이스이고, 상기 컨트롤러는 상기 가상 디바이스의 적어도 일부로써 상기 메모리와 관련된 메타-데이터를 제공하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 상기 통신 인터페이스를 통하여 수신된 디스에이블 신호에 응답하여 상기 가상 디바이스를 디스에이블 시키도록 구성될 수 있다.
예를 들어, 상기 인에이블 신호는 유효하지 않은 펌웨어를 포함할 수 있다.
본 발명의 실시 예에 따른 방법은, 논리적 디바이스를 제공하는 디바이스에 의해, 제어 신호를 수신하는 단계, 상기 디바이스에 의해, 인에이블 커맨드가 상기 제어 신호에 포함되었는지 여부를 판단하는 단계, 그리고 상기 디바이스에 의해, 상기 인에이블 커맨드에 응답하여 가상 디바이스를 인에이블 시키는 단계를 포함할 수 있다.
예를 들어, 상기 디바이스에 의해, 디스에이블 커맨드가 상기 제어 신호에 포함되었는지 여부를 판단하는 단계, 그리고 상기 디바이스에 의해, 상기 디스에이블 커맨드에 응답하여 상기 가상 디바이스를 디스에이블 시키는 단계를 더 포함할 수 있다.
예를 들어, 상기 제어 신호를 수신하는 단계는, 상기 디바이스에 의해, 상기 디바이스를 위한 펌웨어의 전송을 수신하는 단계를 포함할 수 있다.
예를 들어, 인에이블 신호가 상기 제어 신호에 포함되었는지 여부를 판단하는 단계는, 상기 디바이스에 의해, 상기 전송된 펌웨어가 유효하지 않은지 여부를 판단하는 단계, 그리고 상기 전송된 펌웨어가 유효하지 않다면, 상기 디바이스에 의해, 상기 인에이블 커맨드가 상기 전송된 펌웨어에 포함되었는지 여부를 판단하는 단계를 포함할 수 있다.
예를 들어, 상기 디바이스에 의해, 상기 전송된 펌웨어가 유효하지 않은지 여부를 판단하는 단계, 만일 상기 전송된 펌웨어가 유효하지 않다면, 상기 디바이스에 의해, 디스에이블 커맨드가 상기 전송된 펌웨어에 포함되었는지 여부를 판단하는 단계, 그리고 상기 디바이스에 의해, 상기 디스에이블 커맨드에 응답하여 상기 가상 디바이스를 디스에이블 시키는 단계를 더 포함할 수 있다.
예를 들어, 상기 디바이스에 의해, 상기 가상 디바이스로의 액세스를 수신하는 단계, 그리고 상기 디바이스에 의해, 상기 가상 디바이스로의 상기 액세스에 응답하여 상기 디바이스를 위한 펌웨어를 액세스하는 단계를 더 포함할 수 있다.
예를 들어, 상기 디바이스에 의해, 상기 가상 디바이스로의 쓰기를 수신하는 단계를 더 포함하되, 상기 쓰기는, 상기 디바이스에 의해 상기 커맨드를 실행하고, 상기 디바이스에 의해 상기 커맨드의 상기 실행에 대한 응답을 생성하고, 상기 디바이스에 의해 상기 가상 디바이스와 관련된 읽기를 수신하고, 상기 디바이스에 의해 상기 읽기에 응답하여 상기 커맨드의 상기 실행에 대한 응답을 전송하는 커맨드를 포함하는 방법.
본 발명의 실시 예에 따르면, 선택적으로 인에이블 될 수 있는 가상 디바이스를 포함하는 디바이스를 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 보여주는 도면이다.
도 2는 도 1에 도시된 시스템의 기능을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 가상 디바이스를 인에이블 시킨 후 도 1의 시스템의 기능을 보여주는 블록도이다.
도 4는 본 발명의 다른 실시 예에 따른 도 1의 시스템의 기능을 보여주는 블록도이다.
도 5는 본 발명의 다른 실시 예에 따른 도 1의 시스템의 기능을 보여주는 블록도이다.
도 6은 본 발명의 다른 실시 예에 따라 가상 디바이스를 인에이블 시킨 후 도 1의 시스템의 기능을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 주소 지정 가능한 범위를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 유효하지 않은 펌웨어를 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 값들의 상태의 테이블이다.
도 10은 본 발명의 실시 예에 따른 가상 디바이스의 메모리 매핑을 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 디바이스를 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 메모리 디바이스를 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 가상 디바이스와 관련된 방법을 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 유효하지 않은 펌웨어를 사용하는 방법을 보여주는 순서도이다.
도 15는 본 발명의 다른 실시 예에 따른 가상 디바이스와 관련된 동작 방법을 보여주는 순서도이다.
도 16은 본 발명의 다른 실시 예에 따른 가상 디바이스와 관련된 방법을 보여주는 순서도이다.
도 17은 본 발명의 실시 예에 따른 호스트 및 타깃 시스템을 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 가상 디바이스를 액세스하는 방법을 보여주는 순서도이다.
도 19는 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 20은 본 발명의 실시 예에 따른 테스트 셋업을 보여주는 도면이다.
도 21은 본 발명의 실시 예에 따른 eMMC를 보여주는 블록도이다.
도 22는 본 발명의 실시 예에 따른 SSD를 갖춘 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 시스템의 기능을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 가상 디바이스를 인에이블 시킨 후 도 1의 시스템의 기능을 보여주는 블록도이다.
도 4는 본 발명의 다른 실시 예에 따른 도 1의 시스템의 기능을 보여주는 블록도이다.
도 5는 본 발명의 다른 실시 예에 따른 도 1의 시스템의 기능을 보여주는 블록도이다.
도 6은 본 발명의 다른 실시 예에 따라 가상 디바이스를 인에이블 시킨 후 도 1의 시스템의 기능을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 주소 지정 가능한 범위를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 유효하지 않은 펌웨어를 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 값들의 상태의 테이블이다.
도 10은 본 발명의 실시 예에 따른 가상 디바이스의 메모리 매핑을 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 디바이스를 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 메모리 디바이스를 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 가상 디바이스와 관련된 방법을 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 유효하지 않은 펌웨어를 사용하는 방법을 보여주는 순서도이다.
도 15는 본 발명의 다른 실시 예에 따른 가상 디바이스와 관련된 동작 방법을 보여주는 순서도이다.
도 16은 본 발명의 다른 실시 예에 따른 가상 디바이스와 관련된 방법을 보여주는 순서도이다.
도 17은 본 발명의 실시 예에 따른 호스트 및 타깃 시스템을 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 가상 디바이스를 액세스하는 방법을 보여주는 순서도이다.
도 19는 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 20은 본 발명의 실시 예에 따른 테스트 셋업을 보여주는 도면이다.
도 21은 본 발명의 실시 예에 따른 eMMC를 보여주는 블록도이다.
도 22는 본 발명의 실시 예에 따른 SSD를 갖춘 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 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), 또는 집적 회로들을 연결하기에 적합한 다른 구조들을 포함할 수 있다. 다른 예로써, 연결은 시스템 버스, 인쇄 회로 기판(printed circuit board; 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)은 운영 체제, 디바이스 드라이버, 메모리 관리자, 또는 이와 유사한 것들을 포함할 수 있다. 유저 공간(212)은 커널 공간(210) 외부의 소프트웨어를 포함할 수 있다. 본 실시 예에서, 커널 공간(210)에서의 소프트웨어는 유저 공간(212)에서의 소프트웨어보다 더 높은 권한 수준(privilege level)에서 구동될 수 있다. 비록 소프트웨어의 특정한 분류(division)가 예로써 사용되었다 하더라도, 다른 실시 예에서, 분류가 존재하지 않거나 또는 다른 분류들이 존재할 수 있다.
본 실시 예에서, 디바이스(102)는 논리적 디바이스(209-1 내지 209-N)로 표현되는 하나 또는 그 이상의 논리적 디바이스들(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)로 표현되는, 하나 또는 그 이상의 디바이스 인터페이스들(208)을 제공하도록 구성될 수 있다. 디바이스 인터페이스(208)는, 디바이스(102) 및 논리적 디바이스(209)를 액세스할 수 있는, 유저 공간(212)에 있는 애플리케이션(211) 또는 커널 공간(210)에 있는 다른 국면의 운영 체제와 같은, 다른 소프트웨어를 통한 인터페이스이다. 예를 들어, 데이터 스토리지 디바이스를 사용하여, 디바이스 인터페이스(208)는 디바이스(102)의 전체 스토리지 영역, 전체 스토리지 영역의 파티션, 또는 이와 유사한 것들에 대한 인터페이스일 수 있다.
본 실시 예에서, 애플리케이션(211)은 디바이스 인터페이스(208-1)와 통신하도록 구성될 수 있다. 디바이스 인터페이스(208-1)는 논리적 디바이스(209-1)와 관련될 수 있다. 따라서, 애플리케이션(211)은 논리적 디바이스(209-1)를 액세스할 수 있다. 애플리케이션(211)은 다른 어떤 디바이스 인터페이스들(208)(따라서, 논리적 디바이스들(209)과 관련됨)과 통신할 수 있다. 그러나, 명확한 설명을 위해, 도면에서 그러한 통신들은 생략되었다.
비록 디바이스 인터페이스(208)와 논리적 디바이스(209) 사이에 1 대 1로 대응하는 것으로 도시되었다 하더라도, 디바이스 인터페이스들(208) 및 논리적 디바이스들(209)은 다른 방법으로 연관될 수 있다. 예를 들어, 하나의 디바이스 인터페이스(208)는 복수의 논리적 디바이스들(209)과 관련될 수 있다. 다른 예로써, 복수의 디바이스 인터페이스들(208)은 하나의 논리적 디바이스(209)와 관련될 수 있다.
도 3은 본 발명의 실시 예에 따른 가상 디바이스를 인에이블 시킨 후 도 1의 시스템의 기능을 보여주는 블록도이다. 도 1 및 도 3을 참조하면, 실시 예로써, 프로세서(104)는 제어 신호를 디바이스(102)로 전송하도록 구성될 수 있다. 예를 들어, 애플리케이션(211)은 디바이스 인터페이스(208-1) 또는 다른 디바이스 인터페이스(208)를 통하여 제어 신호를 디바이스(102)로 전송할 수 있다. 이에 응답하여, 디바이스(102)는 가상 디바이스(313)를 인에이블 시키도록 구성될 수 있다. 프로세서(104)는 가상 디바이스(313)에 대응하는 새로운 디바이스 인터페이스(314)를 제공하도록 구성될 수 있다. 비록 하나의 디바이스 인터페이스(314)가 예로써 사용되었다 하더라도, 복수의 디바이스 인터페이스들(314)이 가상 디바이스(313)를 액세스하는데 사용될 수 있다. 게다가, 비록 디바이스 인터페이스(314)가 디바이스 인터페이스들(208-1 내지 208-N) 중 하나 또는 그 이상으로부터 분리될 수 있다 하더라도, 디바이스 인터페이스(314)는 디바이스 인터페이스들(208-1 내지 208-N) 중 하나의 다른 국면을 나타낼 수 있는데, 디바이스 인터페이스들(208-1 내지 208-N)을 통하여 가상 디바이스(313)가 액세스 될 수 있다. 즉, 하나의 디바이스 인터페이스(208-1)는, 인에이블 되었을 때, 논리적 디바이스(209-1) 및 가상 디바이스(313)에 대한 액세스를 허용할 수 있다.
가상 디바이스(313)는 디바이스(102)의 하드웨어와 직접적으로 관련되지 않는 디바이스일 수 있다. 데이터 스토리지 디바이스를 예로써 사용하면, 가상 디바이스(313)는 가상의 파티션일 수 있다. 즉, 데이터 스토리지 디바이스의 다른 파티션들과 비교해서, 가상 파티션으로써, 가상 디바이스는 데이터 스토리지 디바이스의 스토리지 구성요소들에 직접적으로 대응하지 않을 수 있다.
가상 디바이스(313)는 디바이스(102)의 논리적 디바이스들(209)의 어떤 것으로써 동일한 타입의 디바이스일 필요는 없다. 예를 들어, 만일 논리적 디바이스(209)가 데이터 스토리지 디바이스의 파티션이라면, 가상 디바이스는 시리얼 포트일 수 있다. 그러나, 어떤 실시 예에서, 가상 디바이스(313)는 운영 체제의 일부의 대체 없이 운영 체제에 의해 사용 가능한 타입의 디바이스일 수 있다. 예를 들어, 만일 가상 디바이스(313) 및 논리적 디바이스(209-1) 모두 파티션이라면, 운영 체제가 변화없이 파티션으로써 논리적 디바이스(209-1)를 액세스할 때, 운영 체제는 파티션으로써 가상 디바이스(313)를 액세스할 수 있다. 예를 들어, 만일 가상 디바이스(313)과 논리적 디바이스(209-1) 모두 네트워크 디바이스들이라면, 운영 체제는 네트워크 디바이스들 모두를 액세스할 수 있다.
가상 디바이스(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)는 네 개의 파티션들(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)은 재부팅될 수 있다. 재부팅 후, 가상 파티션은 인에이블 되기 때문에, 운영 체제는 가상 파티션(519)을 마운트 포인트(520)에 자동으로 마운트 하도록 구성될 수 있다. 다른 실시 예에서, 운영 체제는, 예를 들어, 가상 파티션(519)이 이용 가능하다는 것을 감지하는 것에 응답하여, 재부팅 없이 가상 파티션(519)을 가상 파티션 마운트 포인트(520)에 자동으로 마운트 하도록 구성될 수 있다.
유효하지 않은 펌웨어는 다시 디바이스(102)로 전송될 수 있다. 이에 응답하여 가상 파티션(519)은 디스에이블 될 수 있다. 앞서 설명된 바와 같이, 유효하지 않은 펌웨어는 가상 파티션(519)을 인에이블 시키는데 사용된 유효하지 않은 펌웨어와 같거나 또는 다를 수 있다. 게다가, 시스템(100)의 재부팅은 가상 파티션 마운트 포인트(520)로부터 가상 파티션(519)을 언마운트 시키는데 사용될 필요는 없다.
특정한 실시 예에서, 디바이스(102)는 필드-펌웨어-업데이트 (field-firmware-update; FFU) 커맨드를 수신할 수 있다. FFU 커맨드들을 통하여, 유효하지 않은 커맨드는 디바이스(102)로 전송될 수 있다. 특히, 가상 파티션(519)을 인에이블 시키기 위한 유효하지 않은 펌웨어를 사용하는 FFU 커맨드들 및 펌웨어 업데이트는 필드에서 사용될 수 있고, 특정한 운영 체제, 시스템(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)의 어드레스 범위에 대응하지 않을 수 있고, 가상 파티션(720)은 물리적 스토리지 공간(732)에 직접 대응하지 않을 수 있다.
실시 예에서, 가상 파티션(720)을 인에이블 시키는 것은 다른 파티션들(718-1 내지 718-4)의 양상을 변화시키지 않을 수 있다. 예를 들어, 파티션들(718-1 내지 718-4)의 데이터의 모든 것, 크기, 지향(orientation), 또는 이와 유사한 것들은 가상 파티션(720)이 인에이블 된 후에도 같은 상태로 유지될 수 있다. 특히, 전체의 물리적 스토리지 공간(732)은 현존하는 파티션들(718)에 의해 점유될 수 있으며, 가상 파티션(720)은 아직 인에이블 될 수 있다.
실시 예에 있어서, 특정한 디바이스(102)는 미리 정해진 세트의 파티션들을 제공하도록 구성될 수 있다. 예를 들어, eMMC 디바이스는 네 개까지의 범용 파티션들(general purpose partitions; GPPs)을 제공하도록 구성될 수 있다. 가상 파티션(720)은 그러한 GPP의 공간을 차지할 수 있다.
도 8은 본 발명의 실시 예에 따른 유효하지 않은 펌웨어를 보여주는 블록도이다. 앞서 설명된 바와 같이, 가상 디바이스를 인에이블 또는 디스에이블 시키는데 사용되는 제어 신호는 유효하지 않은 펌웨어(840)를 포함할 수 있다. 여기서, 유효하지 않은 펌웨어(840)는 커맨드(842)를 포함할 수 있다.
커맨드(842)는 다양한 다른 커맨드들을 포함할 수 있다. 예를 들어, 커맨드(842)는 가상 디바이스를 인에이블 시키는 커맨드, 가상 디바이스를 디스에이블 시키는 커맨드, 가상 디바이스를 재구성하는 커맨드, 또는 이와 유사한 것들을 포함할 수 있다. 비록 커맨드(842)가 유효하지 않은 펌웨어(840)의 특정한 일부에 도시되었다 하더라도, 커맨드(842)는 유효하지 않은 펌웨어(840) 내의 다른 부분에 있을 수 있다. 게다가, 비록 하나의 커맨드(842)가 유효하지 않은 펌웨어(840)에 도시되었다 하더라도, 복수의 다른 또는 유사한 커맨드들(842)이 유효하지 않은 펌웨어(840)에 제공될 수 있다. 예를 들어, 유효하지 않은 펌웨어(840)에 있는 제 1 커맨드는 앞서 인에이블 된 가상 디바이스를 디스에이블 시킬 수 있는 반면, 유효하지 않은 펌웨어(840)에 있는 제 2 커맨드는 다른 현재 디스에이블 된 가상 디바이스를 인에이블 시킬 수 있다.
도 9는 본 발명의 실시 예에 따른 값들의 상태의 테이블이다. 도 1 및 도 9를 참조하면, 본 실시 예에서, 펌웨어 업데이트를 시도한 후, 값은 디바이스(102)로부터 읽혀질 수 있다. 값들은 펌웨어를 업데이트 하기 위한 시도와 관련된 정보들을 전달할 수 있다. 만일 유효하지 않은 펌웨어가 디바이스(102)로 전달되면, 디바이스(102)로부터의 응답은 펌웨어 설치 에러를 나타내는 0x11의 값을 포함할 수 있거나, 또는 발생한 에러 그리고 에러가 펌웨어를 설치하는 것과 관련되었다는 것을 나타내는 특정한 비트들 세트(bits set)를 포함할 수 있다.
다른 필드, 비트, 또는 이와 유사한 것들은 성공, 실패, 상태를 포함할 수 있고, 또는 그렇지 않으면 가상 디바이스와 관련된 유효하지 않은 펌웨어를 다른 유효하지 않은 펌웨어와 구별할 수 있다. 예를 들어, 만일 인에이블 커맨드를 갖는 유효하지 않은 펌웨어가 디바이스(102)로 전송되면, 값이 디바이스(102)로부터 읽혀질 때, 값은 펌웨어를 설치하는데 에러가 있었다는 것을 나타내는 비트 세트, 그리고 커맨드를 실행하는 것이 성공했는지 여부를 나타내는 비트를 가질 수 있다. 지정된 범위에 있는 값을 초래하는 비트는 성공 또는 실패를 나타내도록 설정될 수 있다. 예를 들어, 세 번째 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)을 통하여 읽혀지거나 기록될 수 있다.
커맨드 트레이(1008) 및 응답 트레이(1010)는 커맨드들이 기록되고 응답들이 수신되는 어드레스 공간일 수 있다. 예를 들어, 디바이스(102)에서 실행될 커맨드는 커맨드 트레이(1008)에 기록될 수 있다. 디바이스(102)는 커맨드를 실행하고 응답을 생성할 수 있다. 응답은 응답 트레이(1010)의 어드레스 범위로부터 읽혀질 수 있다. 실시 예에 있어서, 바이트(byte)를 커맨드 트레이(1008)의 어드레스 범위에 있는 마지막 위치에 기록하는 것과 같은, 특정한 액션이 발생하면, 디바이스(102)는 커맨드가 커맨드 트레이(1009)에 기록되었고 지금 실행될 수 있다는 표시로써 그 액션을 사용할 수 있다. 따라서, 커맨드는 커맨드 트레이(1008)에 기록될 수 있고, 커맨드를 기록한 후, 바이트는 커맨드 트레이(1008)의 마지막 바이트에 기록되어 디바이스(102)에게 앞서 기록된 커맨드를 실행하도록 명령할 수 있다. 비록 디바이스(102)에 대한 커맨드를 실행하는 것을 초래하는 특정한 시퀀스가 설명되었다 하더라도, 다른 시퀀스들이 사용될 수 있다.
디바이스(102)는 디바이스와 관련된 다양한 메타-데이터를 가질 수 있다. 이 메타-데이터는 메타-데이터(1012)에 맵핑될 수 있고, 따라서 파티션을 통하여 액세스 가능할 수 있다. 예를 들어, 디바이스(1012)와 관련된 퍼포먼스 데이터, 에러 데이터, 상태 데이터, 또는 이와 유사한 것들은 메타-데이터(1012) 어드레스 범위를 통하여 드러날 수 있다. 특히, 그렇지 않으면 디바이스(102)가 JEDEC 표준과 같은 특정한 표준을 준수할 때, 그러한 메타-데이터는 이용 가능하지 않은 데이터를 포함할 수 있다.
비록 디바이스(102)와 관련된 특정한 타입의 정보, 정보의 조직, 또는 이와 유사한 것들이 예로써 사용되었다 하더라도, 다른 실시 예에서, 디바이스와 관련된 다른 타입의 정보가 메모리-맵 파티션(memory-mapped partition)을 통하여 제공될 수 있다.
도 11은 본 발명의 실시 예에 따른 디바이스를 보여주는 블록도이다. 본 실시 예에서, 디바이스(1000)는 통신 인터페이스(1102), 컨트롤러(1104), 및 내부 구성요소들(1106)을 포함할 수 있다. 통신 인터페이스(1102)는 컨트롤러(1104)에 연결될 수 있다. 통신 인터페이스(1102)는 디바이스(1100), 그리고 다른 디바이스들 및/또는 시스템들 사이에서의 통신을 인에이블 시키도록 구성될 수 있다. 예를 들어, 통신 인터페이스(1102)는 다른 디바이스들과의 통신을 인에이블 시키기 위한 단자들, 핀들, 커넥터들, 드라이버들, 버퍼들, 프로세서들, 또는 이와 유사한 것들을 포함할 수 있다. 특정한 실시 예에서, 통신 인터페이스(1102)는 하나 또는 둘 이상의 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)는 하나 또는 그 이상의 논리적 디바이스들로써 하나 또는 그 이상의 파티션들을 열거하는 파티션 테이블을 제공하도록 구성될 수 있다. 다른 실시 예에서, 컨트롤러(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 단계에서, 그러한 커맨드에 대한 응답은 가상 디바이스, 따라서 디바이스(100)에 의해 제공될 수 있다.
파티션의 예를 사용하여, 커맨드는 특정한 어드레스 범위에 기록될 수 있다. 커맨드를 기록한 후, 다른 쓰기, 다른 액세스, 또는 다른 신호는 디바이스가 커맨드를 실행하도록 할 수 있다. 앞서 설명된 바와 같이, 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)는 본 명세서에서 설명된 디바이스들 및 프로세서들 중 어느 것일 수 있다.
프로세서(1704)는 통신 인터페이스(1708)에 연결될 수 있다. 통신 인터페이스(1708)는 프로세서가 외부 디바이스들, 그리고 특히, 호스트 시스템(1712)과 통신하도록 하는 다양한 인터페이스들일 수 있다. 예를 들어, 통신 인터페이스(1708)는 USB 인터페이스, 네트워크 인터페이스, 블루투스 인터페이스, 또는 그것을 통하여 시스템이 통신할 수 있는 다른 다양한 인터페이스를 포함할 수 있다.
호스트 시스템(1712)은 타깃 시스템(1710)과 통신할 수 있고 디바이스(1702)와 관련된 디바이스 인터페이스를 액세스할 수 있는 어떤 시스템일 수 있다. 예를 들어, 호스트 시스템(1712)은 개인용 컴퓨터, 워크스테이션(workstation), 모바일 디바이스(mobile device), 테스트 셋업(test setup), 또는 이와 유사한 것들일 수 있다. 호스트 시스템(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), 및 퍼포먼스 테스트 중 적어도 하나를 수행하도록 구성될 수 있다. 통신 인터페이스(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)의 운영 체제는 그러한 커맨드들을 전송할 수 없을 수 있다. 운영 체제, 운영 체제의 커널, 운영 체제의 모듈들, 또는 이와 유사한 것들은 그러한 커맨드들을 전송할 수 있는 구성요소들로 대체될 수 있다. 이 기술은 운영 체제 또는 커널의 변경을 필요로 할 수도 있다. 그러한 변경은 일반적인 유저들에게 이용 가능한 것보다는 더 높은 권한 수준(privilege level)을 필요로 할 수 있다.
반면, 운영 체제에 의해 일반적으로 마운트 되거나 또는 액세스 가능한 논리적 디바이스인 디바이스(1702)의 가상 디바이스를 인에이블 시킴으로써, 운영 체제에 대한 변경은 필요하지 않을 수 있다. 즉, 만일 가상 디바이스가 커널이 마운트되거나 또는 액세스 될 수 있는 타입의 논리적 디바이스라면, 커널에 대한 변경은 그러한 액세스를 달성하기 위해 필요하다. 게다가, 가상 디바이스가 프로세서(1704)에 의해 자동으로 마운트 됨으로써, 타깃 시스템(1710)을 재부팅 함으로써 마운트 함으로써, 또는 더 낮은 권한으로 액세스 함으로써, 타깃 시스템(1710)의 유저는, 운영 체제를 대체하기 위한 것과 같은, 더 높은 권한을 필요로 하지 않을 수 있다.
실시 예에서, 소프트웨어는 타깃 시스템(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), RAM(1916), 유저 인터페이스(1918)를 포함할 수 있다.
프로세서(1914)는 마이크로 프로세서 또는 모바일 프로세서(AP)일 수 있다. 프로세서(1914)는 FPU (floating point unit), ALU (arithmetic logic unit), GPU (graphics processing unit), 및 DSP 코어 (digital signal processing core), 또는 이들의 조합을 포함할 수 있다. 프로세서(1914)는 프로그램을 실행할 수 있고, 전자 시스템(1900)을 제어할 수 있다.
RAM(1916)은 프로세서(1914)의 동작 메모리로서 사용될 수 있다. 또는 프로세서(1914) 및 RAM(1916)은 하나의 패키지로써 패키징 될 수 있다.
유저 인터페이스(1918)는 전자 시스템(1900)으로 데이터를 입력하거나 또는 전자 시스템(1900)으로부터 데이터를 출력하는데 사용될 수 있다. 예를 들어, 인터페이스(1918)는 터치 스크린, 키보드, 포인팅 디바이스(pointing device), 네트워크 인터페이스, 주변 인터페이스, 또는 이와 유사한 것들을 포함할 수 있다.
메모리(1912)는 프로세서(1914)를 동작시키기 위한 코드, 프로세서(1914)에 의해 처리된 데이터, 또는 외부 입력 데이터를 저장할 수 있다. 메모리(1912)는 컨트롤러 및 메모리 디바이스를 포함할 수 있다. 메모리(1912)는 컴퓨터 판독가능 매체(computer readable media)로의 인터페이스를 포함할 수 있다. 그러한 컴퓨터 판독가능 매체는 앞서 설명된 다양한 동작들을 실행하기 위한 명령들을 저장할 수 있다.
실시 예에서, 프로세서(1914)는 앞서 설명된 것과 같은 다양한 프로세서들의 동작들의 일부 또는 전부를 수행하도록 구성될 수 있다. 게다가, RAM(1916), 메모리(1912), 유저 인터페이스(1918), 또는 전자 시스템(1900)의 다른 구성요소들 중 어느 것이라도 앞서 설명된 디바이스를 포함할 수 있다. 따라서, 프로세서(1914)는 그러한 디바이스의 가상 디바이스를 인에이블 시킬 수 있고, 관련된 동작들의 어떤 것이라도 수행할 수 있다.
도 20은 본 발명의 실시 예에 따른 테스트 셋업을 보여주는 도면이다. 본 실시 예에서, 테스트 셋업(2000)은 호스트 시스템(2002)을 포함할 수 있다. 호스트 시스템(2002)은 인터페이스(2004)에 연결될 수 있다. 인터페이스(2004)는 피시험 장치(device under test; DUT)의 인터페이스(2008)에 대응하는 연결에 적당한 어떤 인터페이스일 수 있다. 예를 들어, 인터페이스(2004)는 유선 인터페이스, 무선 인터페이스, USB 인터페이스, 블루투스 인터페이스, 또는 이와 유사한 것들일 수 있다. 인터페이스(2008)는 유사한 대응하는 인터페이스일 수 있다.
DUT(2006)는 앞서 설명된 바와 같은 가상 디바이스를 제공할 수 있는 어떤 디바이스일 수 있다. 따라서, 호스트 시스템(2002)은 DUT(2006), 특히, DUT(2006) 내의 디바이스를 테스트하도록 구성될 수 있다. 실시 예에서, 테스트 셋업(2000)은 제조 환경의 밖에 있거나, 현장(in field)에 있을 수 있다. 따라서, 테스트 셋업(2000)의 사용자는, 다른 커널을 재컴파일하거나 설치하여 유저가 DUT(2006)의 디바이스를 테스트하기 위한, DUT(2006)에 관한 권한을 갖지 않을 수 있다. 게다가, DUT(2006)의 디바이스는 솔더링 되므로, 제거 가능한 디바이스에 비해 테스트하는 것이 상대적으로 더 어려울 수 있다. 그러나, 앞서 설명된 바와 같이 유저가 DUT(2006)에 애플리케이션을 단지 설치하고 테스트할 수 있음으로써, 상대적으로 접근 불가능한 위치에 있는 그러한 디바이스를 테스트하는 어려움은 감소할 수 있다.
도 21은 본 발명의 실시 예에 따른 eMMC를 보여주는 블록도이다. 본 실시 예에서, 시스템(2100)은 eMMC(2102) 및 프로세서(2104)를 포함할 수 있다. eMMC(2102)는 시스템(2100)을 위한 메인 메모리 디바이스일 수 있다. 특정한 실시 예에서, 시스템(2100)은 모바일 통신 디바이스일 수 있다. 그러나, 시스템은 다른 형태를 취할 수 있다. eMMC(2102) 및 프로세서(2104)는 앞서 설명된 바와 같이 디바이스들 또는 프로세서들로 구성될 수 있다.
도 22는 본 발명의 실시 예에 따른 SSD를 갖춘 시스템을 보여주는 블록도이다. 본 실시 예에서, 시스템(2200)은 SSD (solid state disk)(2202)를 포함할 수 있다. SSD(2202)는 시스템(2200)을 위한 메인 스토리지 디바이스일 수 있다. 특정한 실시 예에서, 시스템(2200)은 랩톱 컴퓨터, 태블릿 컴퓨터, 또는 데스크톱 컴퓨터일 수 있다. 그러나, 시스템은 다른 형태를 취할 수 있다. SSD(2202) 및 프로세서(2204)는 앞서 설명된 바와 같이 디바이스들 및 프로세서들로 구성될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 시스템 102: 디바이스
104: 프로세서 208: 디바이스 인터페이스
209: 논리적 디바이스 210: 커널 공간
211: 애플리케이션 212: 유저 공간
415: 논리적 디바이스 416: 디바이스 인터페이스
517: 부트 파티션 518: 마운트 포인트
519: 가상 파티션 522: MMC 호스트 컨트롤러 디바이스
524: MMC 서브 시스템 526: 제네릭 블록 레이어
528: VFS/FS/버퍼 캐시 718: 부트 파티션
730: 미사용 공간 720: 가상 파티션
840: 유효하지 않은 펌웨어 842: 커맨드
1002: 헤더 1004: 펌웨어
1005: SFR 맵 1008: 커맨드 트레이
1010: 응답 트레이 1012: 메타-데이터
1100: 디바이스 1102: 통신 인터페이스
1104: 컨트롤러 1106: 내부 구성요소들
1200: 메모리 디바이스 1202: 통신 인터페이스
1204: 컨트롤러 1206: 메모리
104: 프로세서 208: 디바이스 인터페이스
209: 논리적 디바이스 210: 커널 공간
211: 애플리케이션 212: 유저 공간
415: 논리적 디바이스 416: 디바이스 인터페이스
517: 부트 파티션 518: 마운트 포인트
519: 가상 파티션 522: MMC 호스트 컨트롤러 디바이스
524: MMC 서브 시스템 526: 제네릭 블록 레이어
528: VFS/FS/버퍼 캐시 718: 부트 파티션
730: 미사용 공간 720: 가상 파티션
840: 유효하지 않은 펌웨어 842: 커맨드
1002: 헤더 1004: 펌웨어
1005: SFR 맵 1008: 커맨드 트레이
1010: 응답 트레이 1012: 메타-데이터
1100: 디바이스 1102: 통신 인터페이스
1104: 컨트롤러 1106: 내부 구성요소들
1200: 메모리 디바이스 1202: 통신 인터페이스
1204: 컨트롤러 1206: 메모리
Claims (20)
- 통신 인터페이스;
상기 통신 인터페이스에 연결된 컨트롤러를 포함하되;
상기 컨트롤러는:
상기 통신 인터페이스를 통하여 논리적 디바이스를 제공하고;
상기 통신 인터페이스를 통하여 수신된 인에이블 신호에 응답하여 가상 디바이스를 인에이블 시키고;
상기 가상 디바이스가 인에이블 되었을 때, 상기 통신 인터페이스를 통하여 상기 가상 디바이스를 제공하도록 구성되고; 그리고
상기 인에이블 신호는 유효하지 않은 펌웨어를 포함하는 디바이스. - 논리적 디바이스를 제공하는 디바이스에 의해, 제어 신호를 수신하는 단계;
상기 디바이스에 의해, 인에이블 커맨드가 상기 제어 신호에 포함되었는지 여부를 판단하는 단계; 및
상기 디바이스에 의해, 상기 인에이블 커맨드에 응답하여 가상 디바이스를 인에이블 시키는 단계를 포함하되,
상기 디바이스에 의해 상기 제어 신호를 수신하는 단계는, 상기 디바이스에 의해, 상기 디바이스를 위한 유효하지 않은 펌웨어의 전송을 수신하는 단계를 포함하는 방법. - 제 2 항에 있어서,
상기 디바이스에 의해, 상기 가상 디바이스로의 액세스를 수신하는 단계; 그리고
상기 디바이스에 의해, 상기 가상 디바이스로의 상기 액세스의 응답하여 상기 디바이스를 위한 펌웨어를 액세스하는 단계를 더 포함하는 방법. - 제 2 항에 있어서,
상기 디바이스에 의해, 상기 가상 디바이스로의, 커맨드를 포함하는 쓰기를 수신하는 단계;
상기 디바이스에 의해, 상기 커맨드를 실행하는 단계;
상기 디바이스에 의해, 상기 커맨드의 실행에 대한 응답을 생성하는 단계;
상기 디바이스에 의해, 상기 가상 디바이스와 관련된 읽기를 수신하는 단계; 및
상기 디바이스에 의해, 상기 읽기에 응답하여 상기 커맨드의 상기 실행에 대한 상기 응답을 전송하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 인에이블 신호는 상기 유효하지 않은 펌웨어에 포함된 커맨드인 디바이스. - 제 1 항에 있어서,
상기 컨트롤러는:
상기 통신 인터페이스를 통하여 펌웨어를 수신하고;
상기 펌웨어가 유효하지 않은지 여부를 판단하고; 그리고
상기 펌웨어가 유효하지 않은 경우, 상기 인에이블 신호가 상기 펌웨어에 포함되어 있는지 여부를 판단하도록 구성되는 디바이스. - 제 1 항에 있어서,
상기 컨트롤러는:
상기 통신 인터페이스를 통하여 펌웨어를 수신하고,
상기 펌웨어가 유효하지 않은지 여부를 판단하고;
상기 펌웨어가 유효하지 않은 경우, 디스에이블 커맨드가 상기 펌웨어에 포함되어 있는지 여부를 판단하고; 그리고
상기 디스에이블 커맨드에 응답하여 상기 가상 디바이스를 디스에이블 시키도록 구성되는 디바이스. - 제 1 항에 있어서,
상기 컨트롤러는:
상기 통신 인터페이스를 통하여 상기 가상 디바이스로의 액세스를 수신하고; 그리고
상기 가상 디바이스로의 상기 액세스에 응답하여 상기 디바이스를 위한 펌웨어를 액세스하도록 구성되는 디바이스. - 제 1 항에 있어서,
상기 컨트롤러는:
상기 통신 인터페이스를 통하여 상기 가상 디바이스로의 쓰기를 수신하고, 상기 쓰기는 커맨드를 포함하고;
상기 커맨드를 실행하고;
상기 커맨드의 상기 실행에 대한 응답을 생성하고;
상기 가상 디바이스와 관련된 읽기를 수신하고; 그리고
상기 통신 인터페이스를 통해 상기 읽기에 응답하여 상기 커맨드의 상기 실행에 대한 상기 응답을 전송하도록 구성되는 디바이스. - 제 2 항에 있어서,
상기 디바이스에 의해, 디스에이블 커맨드가 상기 유효하지 않은 펌웨어에 포함되어 있는지 여부를 판단하는 단계; 및
상기 디바이스에 의해, 상기 디스에이블 커맨드에 응답하여 상기 가상 디바이스를 디스에이블 시키는 단계를 더 포함하는 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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 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 |
US14/676,518 | 2015-04-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160022277A KR20160022277A (ko) | 2016-02-29 |
KR102234261B1 true KR102234261B1 (ko) | 2021-04-01 |
Family
ID=55348388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150116749A KR102234261B1 (ko) | 2014-08-19 | 2015-08-19 | 가상 디바이스 기반의 시스템 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9720855B2 (ko) |
JP (1) | JP6622512B2 (ko) |
KR (1) | KR102234261B1 (ko) |
CN (1) | CN105426265B (ko) |
Families Citing this family (6)
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 |
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 |
US11492119B1 (en) * | 2021-06-23 | 2022-11-08 | Panasonic Avionics Corporation | Methods and systems 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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122725A (ja) | 2003-10-17 | 2005-05-12 | Renesas Technology Corp | スマートメモリパススルー通信のための方法及び装置 |
US20120117562A1 (en) | 2010-11-04 | 2012-05-10 | Lsi Corporation | Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor |
US20140047144A1 (en) | 2012-08-07 | 2014-02-13 | Hitachi, Ltd. | I/o device and storage management system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
TW201504937A (zh) * | 2013-07-31 | 2015-02-01 | Ibm | 由實體儲存裝置中所選分區所構成的虛擬儲存裝置 |
-
2015
- 2015-04-01 US US14/676,518 patent/US9720855B2/en active Active
- 2015-08-19 JP JP2015161644A patent/JP6622512B2/ja active Active
- 2015-08-19 KR KR1020150116749A patent/KR102234261B1/ko active IP Right Grant
- 2015-08-19 CN CN201510511587.7A patent/CN105426265B/zh active Active
-
2017
- 2017-06-27 US US15/635,174 patent/US10127063B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122725A (ja) | 2003-10-17 | 2005-05-12 | Renesas Technology Corp | スマートメモリパススルー通信のための方法及び装置 |
US20120117562A1 (en) | 2010-11-04 | 2012-05-10 | Lsi Corporation | Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor |
US20140047144A1 (en) | 2012-08-07 | 2014-02-13 | Hitachi, Ltd. | I/o device and storage management system |
JP2014035767A (ja) | 2012-08-07 | 2014-02-24 | Hitachi Ltd | I/oデバイス、i/o管理部及びi/oデバイスの管理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2016045953A (ja) | 2016-04-04 |
KR20160022277A (ko) | 2016-02-29 |
CN105426265A (zh) | 2016-03-23 |
US9720855B2 (en) | 2017-08-01 |
JP6622512B2 (ja) | 2019-12-18 |
US20170300348A1 (en) | 2017-10-19 |
CN105426265B (zh) | 2020-11-20 |
US10127063B2 (en) | 2018-11-13 |
US20160055011A1 (en) | 2016-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102234261B1 (ko) | 가상 디바이스 기반의 시스템 | |
CN107643996B (zh) | 包括单端口存储控制器的基于pci express的双端口存储盒 | |
US8275599B2 (en) | Embedded bus emulation | |
US7890690B2 (en) | System and method for dual-ported flash memory | |
US10452596B2 (en) | Memory cells configured in multiple configuration modes | |
US20180067890A1 (en) | Embedding protocol parameters in data streams between host devices and storage devices | |
US20150347324A1 (en) | System and Method for Shared Memory for FPGA Based Applications | |
US9245613B2 (en) | Storage interface apparatus for solid state drive tester | |
US8883521B2 (en) | Control method of multi-chip package memory device | |
US9361123B2 (en) | Boot from logical volume spanning plurality of PCI devices | |
US9946552B2 (en) | System and method for detecting redundant array of independent disks (RAID) controller state from baseboard management controller (BMC) | |
US20090019211A1 (en) | Establishing A Redundant Array Of Inexpensive Drives | |
US20080222365A1 (en) | Managed Memory System | |
CN108733479B (zh) | 卸载固态硬盘卡的方法以及使用该方法的装置 | |
US11256435B2 (en) | Method and apparatus for performing data-accessing management in a storage server | |
CN114385070A (zh) | 主机、数据存储装置、数据处理系统以及数据处理方法 | |
US10628042B2 (en) | Control device for connecting a host to a storage device | |
CN109643295B (zh) | 从发起者节点访问耦合到目标节点的存储器 | |
JP2008276691A (ja) | ハードディスクインターフェースを模擬したインターフェースカード | |
CN112540881A (zh) | 存储装置测试管理方法以及存储装置测试管理系统 | |
US11544013B2 (en) | Array-based copy mechanism utilizing logical addresses pointing to same data block | |
US20150348651A1 (en) | Multiple access test architecture for memory storage devices | |
US20240061614A1 (en) | Error detection and correction in a controller | |
US20140317328A1 (en) | Serial attached scsi expander and interface expanding device with the same | |
CN115617272A (zh) | 多个NVMe硬盘的管理方法和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |