KR20110098974A - Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법 - Google Patents

Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법 Download PDF

Info

Publication number
KR20110098974A
KR20110098974A KR1020117017521A KR20117017521A KR20110098974A KR 20110098974 A KR20110098974 A KR 20110098974A KR 1020117017521 A KR1020117017521 A KR 1020117017521A KR 20117017521 A KR20117017521 A KR 20117017521A KR 20110098974 A KR20110098974 A KR 20110098974A
Authority
KR
South Korea
Prior art keywords
usb
firmware
usb device
memory
downloading
Prior art date
Application number
KR1020117017521A
Other languages
English (en)
Inventor
스티븐 에프 해리스
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20110098974A publication Critical patent/KR20110098974A/ko

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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)
  • Stored Programmes (AREA)

Abstract

예시적 실시형태는 USB 디바이스와 USB 호스트를 포함하는 USB 시스템에 있는 디바이스의 빠른 열거에 관한 것이다. 상기 USB 디바이스는 두개의 디바이스 디스크립터, USB 디바이스의 동작을 위한 펌웨어를 홀딩하는 메모리 및 펌웨어 실행을 위한 컨트롤러를 포함한다. 제 1 디바이스 디스크립터는 펌웨어 로딩 모드에서 상기 USB 디바이스를 열거하기 위한 것이고, 제 2 디바이스 디스크립터는 동작 모드에서 상기 USB 디바이스를 열거하기 위한 것이다. 상기 USB 호스트는 상기 제 1 디바이스 디스크립터를 이용하여 USB 디바이스의 제 1 열거를 컨트롤한다. 상기 제 1 열거 후에, USB 호스트는 USB 디바이스로부터 재열거 표시자를 수신하고, 제 2 디바이스 디스크립터를 이용하여 USB 디바이스의 제 2 열거를 컨트롤한다.

Description

USB 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법{SYSTEM, APPARATUS, AND METHOD FOR FAST STARTUP OF USB DEVICES}
본 출원은 USB 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법에 관한 것이다.
USB (Universal Serial Bus) 는 컴퓨터를 다양한 주변장치에 부착시키는 표준 주변장치 인터페이스이다. 이러한 주변장치들은 일반적으로 키보드, 마우스, 카메라, 모니터, 모뎀, 및 많은 다른 주변장치들과 같은 디바이스와 허브를 포함할 수도 있는 기능부 (function) 로 여겨진다.
USB 시스템 안의 디바이스들은 계층화된 스타 토폴로지로 USB 호스트에 연결되고 USB 시스템안에 각각의 다바이스는 하나 이상의 허브들을 통해 USB 호스트에 연결된다. USB 시스템은 폴링형 버스 (polled bus) 이고 그 안에 있는 호스트 컴퓨터는 하나의 USB 컨트롤러를 포함하고, USB 컨트롤러는 버스상에서 모든 통신을 관리하고, 디바이스가 부착 또는 제거됨에 의한 변화에 대해 버스 토폴로지를 모니터링한다.
대부분의 버스 트랜잭션은 세개의 패킷을 포함한다. 호스트 컨트롤러는 트랜잭션의 타입과 방향을 나타내는 토큰 패킷, 디바이스 어드레스, 엔드포인트 번호를 보낸다. 어드레싱된 USB 디바이스는 토큰 패킷으로부터 그것의 어드레스를 인식한다. 데이터는 호스트로부터 어드레싱된 디바이스로 또는 어드레싱된 디바이스로부터 토큰 패킷에서 특정된 방향에 기초한 호스트로 전달된다. 대부분 경우에, 데이터의 도착점은 전송된 데이터에 위한 대한 수신 상태를 나타내는 핸드쉐이크 (handshake) 패킷으로 응답한다.
USB 시스템은 버스에 연결된 다수의 주변장치들을 지원하지만, USB 프로토콜은 포인트 투 포인트 프로토콜이다. 다른 말로, 하나의 호스트가 한번에 데이터를 하나의 고유하게 어드레싱된 디바이스에 전달할 수 있다. 그리하여, 다양한 디바이스의 데이터들은 각각의 디바이스가 타임 슬롯 동안에 데이터를 수신하거나 또는 송신할 수 있게 하기 위해 시간 다중화된다.
USB 시스템은 일반적으로 일 밀리 세컨드 길이의 프레임을 정의하고, 그 프레임 내에서, USB 시스템은 버스상에서 많은 또는 모든 디바이스에 상이한 타임 슬롯을 할당할 수도 있다. 디바이스는 송신된 데이터가 자신에 대한 것임을 알도록 각각의 디바이스가 고유의 어드레스를 가지거나, 또는 호스트가 어느 디바이스로부터 데이터를 수신하는지를 알도록 디바이스가 전송하는 데이터와 함께 고유의 어드레스를 제공한다.
USB 디바이스가 처음 플러그인되면, USB 호스트와 클라이언트 소프트웨어로 사용하기 위한 USB 디바이스를 셋업 (set up) 하기 위해 초기화, 열거 (enumeration), 및 구성 프로세스를 거친다. 이 셋업 프로세스는 다른 셋업 요구조건이나 많은 펌웨어를 가진 복잡한 USB 디바이스의 경우 꽤 오랜 시간이 걸릴 수도 있다. 그러나, 많은 운영 시스템들은 운영 시스템에 사용하기 전에 USB 디바이스가 셋업 프로세스를 수행하되는데 얼마나 오랜 시간이 걸리는지에 대한 인증 요건을 부과한다.
USB 디바이스의 복잡한 구성을 여전히 허용하면서도 운영 시스템 요건을 만족시키는 빠른 셋업 프로세스를 수행하기 위한 시스템, 장치, 및 방법이 필요하다.
도 1은 USB 시스템에 대한 토폴로지 도를 도시한다.
도 2는 본 발명의 예시적 실시형태로 논리 통신 파이프의 단순화된 블럭도를 도시한다.
도 3은 본 발명의 예시적 실시형태로 단순화된 블럭도를 도시한다.
도 4는 본 발명의 실시형태에 따른 초기화 프로세스의 상태도를 도시한다.
도 5은 본 발명의 실시형태 따른 열거 프로세스의 단순화된 흐름도를 도시한다.
도 6a는 제 1 열거 프로세스 (enumeration process) 후의 운영 시스템에 의해 디스플레이되는 예시적인 컨트롤 패널을 도시한다.
도 6b는 제 2 열거 프로세스 (enumeration process) 후의 운영 시스템에 의해 디스플레이되는 예시적인 컨트롤 패널을 도시한다.
여기서 사용되는 "예시적"은 "예, 실례 또는 예시로 사용된다"는 의미이다. 여기에서 사용된 예시적 실시형태는 반드시 다른 실시형태에 비해 바람직하거나 이점이 있다는 것으로 이해되는 것은 아니다.
첨부 도면과 관련하여 이하에 설명되는 상세한 설명은 본 발명의 예시적인 실시형태의 기재로서 의도된 것이며, 본 발명이 그 실시만으로 실행된다는 것을 나타내기 위한 것은 아니다. "예시적" 이라는 용어는 이 설명에서 "예, 실례 또는 예시로 사용된다"는 뜻이며 반드시 다른 실시에 비해 바람직하거나 이점이 있다는 것은 아니다. 상세한 설명에는 발명의 예시적 실시형태의 철저한 이해를 제공하기 위해 구체적인 세부사항이 포함된다. 당업자라면 구체적인 세부사항 없이도 실시할 수 있을 것임이 분명하다. 몇 가지 실시예에서, 여기에 있는 예시적 실시형태의 새로운 점에 대한 모호함을 피하기 위해 잘 알려진 구조와 디바이스들이 블럭도 형태로 도시되었다.
본 발명의 예시적 실시형태는 빠른 USB 셋업 프로세스를 수행하기 위한 것으로 직결되고, 이것은 USB 디바이스의 복잡하고 비교적 긴 구성 프로세스를 여전히 허용하면서도, 초기화, 열거, 및 구성을 포함할 수도 있다.
도 1은 종래의 USB 시스템의 토폴로지 도 (100) 를 도시한다. USB 호스트 (110) 는 여러 개의 연결 점을 갖는 루트 허브를 포함한다. 도 1에서, 제 1 기능부 (105A) 는 한 연결 점에 연결되어 있고, 제 1 허브 (120A) 는 제 2 연결 점에 연결되어 있다. 제 1 허브 (120A) 는 여러 개의 연결 점을 포함한다. 제 2 기능부 (150B), 제 2 허브 (120B), 그리고 제 3 허브 (120C) 는 제 1 허브 (120A) 에 연결되어 있다. 제 2 허브 (120B) 는 여러 개의 연결점을 포함할 수도 있다. 제 3 기능부 (150C) 는 제 2 허브 (120B) 에 연결되어 있다. 제 3 허브 (120C) 는 여러 개의 연결 점을 포함한다. 제 4 기능부 (150D) 와 제 5 기능부 (150E) 는 제 3 허브 (120C) 에 연결되어 있다.
허브는 업스트림 포트상에서 수신한 데이터를 각각의 다운스트림 포트로 보내고 다운스트림 포트 중 하나의 다운스트림 포트로부터 업스트림 포트로 정보를 보냄으로써 리피터의 기능을 한다. 어느 주어진 시간에서든, 오직 하나의 기능부 또는 호스트가 버스에 정보를 놓아야만 한다. 그리하여, 예를 들어, 호스트는 제 5 기능부 (150E) 를 목적지로 하여 정보를 보낼 수도 있다. 그 정보는 제 5 기능부 (150E) 로 가는 중에 제 1 허브 (120A) 와 제 3 허브 (120C) 를 통과한다.
USB 기능부는 일반적으로 디바이스로서에 능력을 제공하는 USB 디바이스이다. 예를 들어, USB 기능부는 USB 디바이스, USB 허브, USB 호스트 컨트롤러, USB 트랜시버 등일 수도 있다.
USB 허브는 그것의 포트에 USB 디바이스들의 제거와 부착을 보고하는 상태 비트를 포함한다. USB 호스트는 USB 허브에게 토폴로지에 있는 모든 디바이스들의 연결 상태를 결정하는 것과 모든 연결된 USB 디바이스의 맵을 유지할 것인지 물어볼 수 있다. USB 디바이스가 포트로부터 제거되면, USB 허브는 포트를 디스에이블하고, 상태 비트를 통해 제거를 보고한다. 만약 제거된 디바이스가 USB 허브라면, 호스트 컨트롤러 소프트웨어는 제거된 USB 허브에 연결된 모든 USB 디바이스들이 현재 연결되지 않았다고 나타내기 위해 맵을 업데이트할 것이다.
USB 데이터 전송은, 호스트와 USB 디바이스의 특정 엔드포인트 사이에 일어난다. 일반적으로, 호스트와 엔드포인트 사이의 연계는 파이프로 나타낸다. 일반적으로, 한 파이프에서의 데이터의 이동은 다른 파이프에서의 데이터 이동과는 독립적이다. 따라서 주어진 USB 디바이스는 여러 개의 파이프를 포함할 수 있고, 전체 USB 시스템에는 많은 수의 파이프들이 있을 수 있다.
USB 프로토콜은 데이터 전송의 4가지 기본적인 유형을 지원한다; 컨트롤 전송, 벌크 데이터 전송, 인터럽트 데이터 전송, 그리고 등시성 (isochronous) 데이터 전송. 컨트롤 전송은 디바이스가 부착되었을 때 디바이스를 구성하기 위해 사용되고, 디바이스의 다른 엔드포인트를 컨트롤하는 것과 같은 다른 디바이스의 특정한 일을 관리하는데 이용된다.
벌크 데이터 전송은 일반적으로 버스티한 (bursty) 데이터에 사용되고 대역 폭 또는 지연 요건에 대한 현저한 제약은 포함하지 않는다.
인터럽트 데이터 전송은 인간 지각가능 데이터와 같은 낮은 지연 요건을 가질 수 있는 데이터에 사용된다.
등시성 데이터 전송은 실질적으로 일정한 대역 폭과 낮은 지연을 요구하는 디바이스를 위해 USB 대역 폭의 미리 정해진 부분을 사용한다. 이러한 데이터의 예로는 비디오와 오디오 스트리밍 데이터가 있다.
도 2는 본 발명의 예시적 실시형태에 있어서 논리 통신 파이프의 단순화된 블럭도를 도시한다. USB 호스트 (110) 는 여러 개의 파이프 (190) 를 위한 데이터를 수신하거나 또는 공급하는 여러 개의 버퍼 (170) 를 포함할 수도 있다. 각각의 파이프는 USB 디바이스 (200) 내의 상이한 엔드포인트 (210 및 220) 에 연결될 수도 있다. 호스트 내의 클라이언트 소프트웨어 (160) 는 다양한 버퍼 (170) 로부터 정보를 수신하거나, 또는 다양한 버퍼 (170) 로 정보를 전송한다. 엔드포인트0 (210) 는 후술되는 바와 같이 컨트롤 전송을 위한 것이다. USB 디바이스 (200) 는 다른 정보를 송수신하거나 또는 다른 기능부를 컨트롤하기 위해 다른 엔드포인트 (220) 를 포함할 수도 있다.
USB 파이프 (190) 는 USB 호스트 (110) 에 있는 소프트웨어에서 메모리 버퍼 (170) 를 거쳐 USB 디바이스 (200) 에 있는 엔드포인트 (210 및 220) 로 데이터가 이동하는 것을 나타내기 위한 논리 구조물이다. 파이프 통신 모드에는 두 가지 유형이 있다. 파이프를 통해 이동하는 스트림 데이터는 USB 로 정의된 구조를 갖지 않는다. 파이프를 통해 이동하는 메세지 데이터는 USB 아키텍처로 정의된 몇몇 유형의 구조를 포함한다.
도 3은 본 발명의 예시적 실시형태의 단순화된 블럭도를 도시한다. 도 2가 USB 시스템을 데이터흐름 표현으로 나타낸 것에 반해, 도 3은 USB 시스템을 더 기능적표현으로 나타내었다.
도 3에는 USB 호스트 (110) 가 본 발명의 실시형태에 따라 USB 버스 (205) 를 통해 USB 디바이스 (200) 에 연결되어 있다. 물론, 도 1의 USB 토폴로지 (100) 에서 설명했듯이 다양한 레벨로 연결된 많은 USB 디바이스 (200) 가 있을 수도 있다. USB 디바이스 (200) 는 어드레스 레지스터 (230) 와 엔드포인트 제로 (210) (또한 여기서는 디폴트 컨트롤 엔드포인트 (210) 로 언급되었다.) 를 포함할 수도 있다. 또한, USB 디바이스 (200) 는 다른 엔드포인트 (220) 를 포함할 수도 있다.
엔드포인트 (210 및 220) 는 USB 디바이스 (200) 의 고유하게 식별가능한 부분이다. 각 USB 디바이스 (200) 는 독립된 엔드포인트의 집합을 포함한다. 각 USB 디바이스 (200) 는 어드레스 레지스터 (230) 에 포함되고 시스템에 의해 할당받은 고유한 어드레스를 포함한다. 또한, USB 디바이스 (200) 내의 각각의 엔드포인트는 특정한 어드레스를 갖는다. 게다가 각각의 엔드포인트는 호스트 를 향한 데이터 흐름 방향 또는 엔드포인트를 향한 데이터 흐름 방향을 가진 단일방향성이다. 이렇게 호스트는 디바이스 어드레스, 엔드포인트 어드레스, 및 흐름 방향의 조합으로서 주어진 엔드포인트를 인식한다. 디폴트 컨트롤 엔드포인트 (210) 는 엔드포인트 어드레스 제로에 할당되고 컨트롤 전송을 지원한다.
모든 USB 디바이스 (200) 는 입력부와 출력부 모두에 디폴트 컨트롤 엔드포인트 (210) 를 포함하여야 한다. USB 시스템 소프트웨어는 USB 디바이스 (200) 를 초기화, 열거, 및 구성하기 위해 디폴트 컨트롤 엔드포인트 (210) 를 사용한다. 예를 들어, 컨트롤러 (280) 는 초기화, 열거, 및 구성 프로세스를 수행할 때 USB 호스트 (110) 와 협력할 수도 있다. 또한, 컨트롤러 (280) 는 USB 디바이스 (200) 가 디자인된 일을 수행하기 위해 동작 모드에서 많은 다른 기능을 수행할 수도 있다.
비 제한적인 실시예로서, USB 디바이스는 광역통신망 (WAN;Wide Area Network) 디바이스로서 구성될 수도 있고, 당업계에 공지된 바와 같이 무선 신호 (295) 를 통해 통신하기 위한 안테나를 가진 RF 모듈 (290) 을 포함할 수도 있다.
USB 디바이스 (200) 는 메모리 (260) 를 포함할 수도 있다. 비 제한적인 실시예로서, 메모리는 USB 디바이스 (200) 의 동작 모드와 관련된 정보, 열거, 및 구성과 관련된 정보, 그리고 컨트롤러에 의해 실행시키기 위한 소프트웨어를 포함할 수도 있다.
USB 디바이스 (200) 는 또한 플래시 메모리와 EEPROM (Electrically Erasable Programmable ROM) 메모리와 같은 비휘발성 메모리 (270) 를 포함할 수도 있다. 비 제한적인 실시예로서, 비휘발성 메모리 (270) 는 USB 디바이스 (200) 의 동작 모드와 관련된 정보, 열거, 및 구성과 관련된 정보, 그리고 컨트롤러에 의해 실행시키기 위한 소프트웨어를 포함할 수도 있다.
본 발명의 예시적 실시형태는 제 1 디바이스 디스크립터 (240) 와 제 2 디바이스 디스크립터 (250) 를 포함한다. 제 1 디바이스 디스크립터 (240) 는 제 1 벤더 식별자 (242) 와 제 1 프로덕트 식별자 (244) 를 포함한다. 제 2 디바이스 디스크립터 (250) 는 제 2 벤더 식별자 (252) 와 제 2 프로덕트 식별자 (254) 를 포함한다. 각각의 디바이스 디스크립터 (240 및 250) 에 대해, 벤더 식별자 및 프로덕트 식별자는 USB 버스 (205) 에 어떤 종류의 디바이스가 연결되는지 결정하기 위한 질문을 하기 위해 USB 호스트 (110) 에 대해 고유한 조합을 형성한다. 물론, 제 1 디바이스 디스크립터 (240) 와 제 2 디바이스 디스크립터 (250) 간에 벤더 식별자 및 프로덕트 식별자의 조합이 상이한 제 1 및 제 2 벤더 식별자 (252 및 254) 는 동일할 수도 있다.
운영 시스템은 신속하게 전력을 공급하는 디바이스를 요구한다. 예를 들어, Windows Vista®에 대해, 모든 디바이스는 ACPI (Advanced Configuration and Power Interface) S3 상태로부터 2초 이내에 시스템을 재개시켜야 한다. 복잡한 USB 디바이스 (200) 의 경우 이러한 조건을 만족시키기 어려울 수도 있다.
많은 디바이스는 디바이스에 보다 빠른 하드웨어를 추가함으로써, 빠른 시동을 위해 소프트웨어 이미지를 최소화하거나 제한함으로써, 또는 빠른 열거를 위해 디바이스에 있는 기능을 제한함으로써 이 문제를 해결한다. 이렇게 대부분의 USB 디바이스 (200) 는 벤더 식별자와 프로덕트 식별자를 가진 하나의 디바이스 디스크립터만을 포함한다.
본 발명의 실시형태는 이중 열거 프로세스를 사용한다. 디바이스는 두개의 열거가 사용된다면 빠르게 전력을 공급할 수 있는데 이는 제 1 열거가 짧은 시간 내 (예를 들면, 500 밀리 세컨드 미만) 에 최소한의 초기화가 일어나도록 디자인할 수 있기 때문이다. 이것은 운영 시스템이 요구하는 빠른 시동을 얻을 수 있고, 시스템 재개가 완전해지도록 허용한다. 제 1 열거 후, 디바이스는 제 1 모드에 완전히 기능적이며 그 후에 제 2 모드에서 완전히 기능적이 되기 위해 제 2 열거 프로세스를 시작한다.
이렇게, 본 발명의 실시형태는 두 개의 디바이스 디스크립터 (240 및 250) 를 포함하므로, USB 디바이스 (200) 는 두 가지의 다른 모드에서 열거되고 구성될 수 있다. 이러한 두 가지 다른 모드는 펌웨어 로딩 모드와 동작 모드이며, 아래 도 4 내지 도 6b에 더 자세히 설명되어 있다. 그 결과 USB 호스트 (110) 는 각각의 두 가지 모드에 대해 별도의 클라이언트 소프트웨어 (160) 모듈을 포함할 수도 있다. 따라서 USB 호스트 (110) 는 펌웨어 로딩 모드를 컨트롤하는 로더 드라이버 (162) 와 동작 모드를 컨트롤하는 동작 드라이버 (164) 를 포함할 수도 있다.
도 3은 디바이스 디스크립터 (240 및 250) 를 별도의 블럭으로 도시한다. 그러나 당업자라면 디바이스 스크립터 (240 및 250) 가 많은 다른 형태로 구현될 수 있다는 것을 알 수 있을 것이다. 비 제한적 실시예로, 디바이스 디스크립터 (240 및 250) 는 USB 디바이스 (200) 내의 설정가능한 스위치로서, 비휘발성 메모리 (270) 에 저장된 값으로서, 또는 컨트롤러 (280) 내의 비휘발성 메모리에 저장된 값으로서, 구현될 수도 있다.
도 4는 본 발명의 실시형태에 따른 초기화와 열거 프로세스의 상태도를 도시한다. 초기화와 열거 프로세스는 도 3과 도 4 모두를 참조하여 설명된다. USB 디바이스 (200) 가 플러그인되면, 그것이 사용되기 전에 초기화, 및 열거 프로세스를 거쳐야만 한다. 부착되면, USB 디바이스 (200) 는 부착 상태 (510) 에서 시작한다. USB 디바이스 (200) 가 부착된 허브가 적절하게 구성되면, USB 디바이스 (200) 는 전력공급 상태 (520) 로 이행하고, 여기서 USB 디바이스 (200) 에 전력이 공급될 수도 있다. USB 호스트 (110) 는 USB 디바이스 (200) 에 대한 리셋을 개시하고, 디바이스는 디폴트 상태 (530) 로 이행한다.
디폴트 상태 (530) 에서는, USB 디바이스 (200) 는 디폴트 어드레스 (일반적으로 제로) 로 응답한다. 이렇게 하여 디폴트 컨트롤 엔드포인트 (210) 는 디바이스 디스크립터의 판독을 가능하게 하고 USB 디바이스 (200) 의 일반적인 셋업을 수행하기 위한 디폴트 어드레스에 액세스할 수 있다. 그리고 나서 USB 호스트 (110) 는 USB 디바이스 (200) 에 고유의 어드레스를 할당한다. 고유의 어드레스를 할당받으면, USB 디바이스 (200) 는 어드레스 상태 (540) 로 이행한다. 모든 구성이 끝난 후, USB 디바이스 (200) 는 디자인된 동작을 수행할 준비가 된 구성 상태 (560) 로 이행한다.
본 발명의 예시적 실시형태는 2개의 초기화와 열거 프로세스를 거친다. 이렇게 하여, USB 디바이스 (200) 는 펌웨어를 USB 디바이스 (200) 의 메모리 (260) 로 로딩하기 위해 구성된 비교적 단순한 USB 디바이스 (200) 로서, 먼저 초기화되고 열거된다. 그 결과, USB 디바이스 (200) 가 먼저 구성 상태 (560) 에 들어가면, 그것이 펌웨어 로딩 모드이다. 로더가 완전히 구성되면, USB 디바이스 (200) 는 재열거 표시자에 기초하여 다시 디폴트 상태로 돌아가고, 로딩된 펌웨어에 기초하여 동작 모드에서 동작할 비교적 복잡한 USB 디바이스 (200) 로서 초기화되고 다시 열거된다. 앞서 설명했듯이, 이때 펌웨어 로딩 모드 보다는 동작 모드를 제외하고, USB 디바이스 (200) 가 디폴트 상태 (530), 어드레스 상태, 그리고 다시 구성 상태를 거쳐 이행한다.
펌웨어 로딩 모드의 끝인 구성 상태 (560) 로부터 동작 모드의 열거를 시작하기 위한 재열거 표시자에 기초하여 디폴트 상태 (530) 로의 이행은 많은 방법에 의해 이루어질 수도 있다. 비 제한적인 실시예로서, USB 디바이스 (200) 는 그것이 디폴트 상태 (530) 에 재진입하도록 부분적으로 리셋될 수도 있지만, 펌웨어 로딩 모드에서 이전에 구성된 것들은 남는다. 또 다른 비 제한적 실시예로서, 펌웨어 로딩 모드에 있는 동안, USB 디바이스 (200) 는 동작 모드에서 재구성되도록 USB 호스트 (110) 에 요청할 수도 있다.
USB 디바이스 (200) 는 전력 인터럽트가 일어날 수도 있다. 만약 구성 상태 (560), 어드레스 상태 (540), 및 디폴트 상태 (530) 중 어느 것에라도 전력 인터럽트가 일어나면, USB 디바이스 (200) 는 전력공급 상태 (520) 로 돌아가서, 펌웨어 로딩모드에서 리셋되고 재구성된다.
USB 디바이스 (200) 는 USB 호스트 (110) 로부터 리셋을 수신할 수도 있다. 전력공급 상태 (520), 구성 상태 (560), 및 어드레스 상태 (540) 중 어느 것에라도 리셋이 일어나면, USB 디바이스 (200) 는 디폴트 상태 (530) 로 돌아가서, 재구성된다.
도 5는 본 발명의 실시형태에 따른 이중 열거 프로세스 (600) 의 단순화된 흐름도이다. 이 프로세스의 부분은 WAN 디바이스의 구성에 관하여 설명될 수도 있다. 그러나 당업자라면 이 프로세스가 많은 다른 USB 디바이스에 대해 수행될 수 있고, WAN 디바이스의 특정 부분이 다른 USB 디바이스에 쉽게 적용될 수도 있다는 것을 알 수 있을 것이다. 또한 도 5에 도시된 많은 프로세스가 도 4의 상태도에 대응된다는 것이 당업자에게 분명할 것이다. 이중 열거 프로세스 (600) 의 실행은 USB 호스트 (110) 와 USB 디바이스 (200) 사이의 협동 작업이다. 결과적으로 어떤 동작은 USB 호스트 (110) 에 의해 수행되고, 어떤 프로세스는 USB 디바이스 (200) 에 의해 수행된다는 것이 당업자에게는 분명할 것이다.
도 3과 도 5는 인에이블 신호의 상태를 테스트하기 위한 동작 블럭 (602) 에서 시작하는 이중 열거 프로세스 (600) 를 도시한 것에 관한 것이다. WAN 디바이스에서, W_DISABLE_N 은 무선 통신을 디스에이블 하는데 사용될 수도 있고, 어플리케이션은 디바이스를 리셋할 수도 있고 또는 디바이스가 연결된 시스템은 디바이스에 대한 전력을 제거할 수도 있다. 그 결과, 열거 프로세스가 진행되기 전에 디바이스가 통신을 위해 준비되었는지 확인하기 위해 테스트가 실시된다. USB 디바이스 (200) 가 통신을 위한 준비가 되었다면, 동작 블럭 (604) 은 USB 디바이스 (200) 에 전력을 공급한다.
동작 블럭 (606) 에서는, USB 디바이스 (200) 가 부트 이미지로 초기화한다 (또한 여기서는 펌웨어 로딩 모드를 위한 제 1 펌웨어와 소프트웨어로 언급되었다). 이 부트 이미지는 휘발성 메모리 (270), 컨트롤러 (280) 에 있는 비휘발성 메모리, 또는 USB 디바이스 (200) 에 있는 다른 비휘발성 메모리의 일부일 수도 있다. 게다가 부트 이미지의 부분은 호스트의 하드 드라이브에 남을 수도 있고, 구성 프로세스의 일부로서 USB 디바이스 (200) 로 이동될 수도 있다. 실시형태에 따라, 부트 이미지는 휘발성 메모리 (270) 로부터 컨트롤러 (280) 에 의해 동작될 수도 있고 또는 동작을 위해 메모리 (260) 로 이동될 수도 있다.
결정 블럭 (608) 은 W_DISABLE_N 가 1 초보다 오래 활성화되는지를 알기 위해 테스트한다. 즉, 디바이스가 디스에이블 되었다면 열거 프로세스를 끝낼 필요가 없다는 것이다. 만약, USB 디바이스 (200) 가 디스에이블되었다면, 동작 블럭 (610) 은 USB 디바이스 (200) 를 전력차단시키고, USB 디바이스 (200) 가 인에이블되기를 기다리기 위해 동작 블럭 (602) 으로 돌아가는 이동을 컨트롤한다. 동작 블럭 (608) 과 동작 블럭 (610) 은 동작 블럭 (606) 후에 일어나는 것으로 도시되어 있다. 그러나, 당업자라면 디스에이블이 인터럽트 구동 사건일 수도 있고 그러므로 프로세스의 대부분의 위치로부터 일어날 수도 있다는 것을 알 수 있을 것이다.
동작 블럭 (612) 은 다른 것들 중에서 제 1 디바이스 디스크립터 (240) 를 호스트에 보냄으로써 제 1 열거 프로세스를 계속한다.
디바이스가 성공적으로 펌웨어 로딩 모드에서 열거된 후에, 동작 블럭 (614) 은 (여기서도 또한 제 2 펌웨어 또는 동작 펌웨어로 언급되는) 펌웨어를 메모리 (260) 로 이동시키는 동작을 수행한다. 동작 펌웨어는 호스트상의 하드 드라이브에 상주하고, 메모리 (260) 로 이동될 수도 있고, 또는 USB 디바이스 (200) 의 비휘발성 메모리 (270) 에 존재하고, 메모리 (260) 로 이동될 수도 있다. 복잡한 디바이스를 위해, 동작 펌웨어는 커질 수도 있고 이것의 이동 프로세스는 길 수도 있다. 그러나 USB 디바이스 (200) 는 이미 펌웨어 로딩 모드에서 열거되었고, 이렇게 하여 몇몇 운영 시스템의 빠른 열거 요건을 충족시켰다.
동작 펌웨어가 다운로딩된 후에, 결정 블럭 (616) 은 동작 펌웨어가 성공적으로 다운로딩 되었는지와 인증 프로세스를 통과하였는지를 확인하기 위해 테스트한다. 만약 그렇지 않다면, 컨트롤은 동작 블럭 (614) 으로 돌아가서 동작 펌웨어를 다시 다운로딩한다.
만약 인증이 성공적이라면, 동작 블럭 (618) 은 동작 펌웨어와 제 2 디바이스 디스크립터 (250) 를 이용하여 제 2 열거 프로세스를 수행한다. 제 2 열거 프로세스에서는 제 1 열거를 위한 USB 스택 (stack) 이 해체되고, 제 2 열거의 일부로서 동작 모드에서 새로운 USB 스택이 생긴다.
결정 블럭 (620) 은 제 2 열거가 성공적인지 확인하기 위해 테스트한다. 만약 그러지 않다면, 컨트롤은 제 1 열거가 다시 시작되는 동작 블럭 (606) 으로 다시 이동한다. 만약 제 2 열거가 성공적이라면, 동작 블럭 (622) 은 USB 디바이스 (200) 가 그 동작 모드에서 기능적임을 나타내고, 이중 열거 프로세스 (600) 가 완료된다.
도 6a는 제 1 열거 프로세스 이후에 운영 시스템에 의해 디스플레이된 예시적인 컨트롤 패널을 도시한다. 비슷하게, 도 6b는 제 2 열거 프로세스가 이후에 운영 시스템에 의해 디스플레이된 예시적 컨트롤 패널을 나타낸다. 비 제한적인 실시예로서, 열거가 완료된 경우, Windows®는 컨트롤 패널에 있는 디바이스 메니저의 디스플레이에 새로운 디바이스를 부가한다. 버스로부터 디바이스가 제거될 때, Windows®는 다바이스 메니저로부터 디바이스를 제거한다.
이렇게, 도 6a는 제 1 열거 프로세스 이후에 Windows®에 의해 디스플레이된 예시적인 컨트롤 패널을 도시한다. 로더 드라이버 (162; 도 3) 가 운영 시스템 및 다른 클라이언트 소프트웨어에 이용가능함을 나타내는 로더 (710) 포트가 도시된다. 보통 유저 스페이스 어플리케이션과 동작 드라이버 (164; 도 3) 는 로더 (710) 와는 상이한 디바이스를 찾는다. 이렇게 하여, USB 디바이스 (200) 가 펌웨어 로딩 모드에서 열거되는 동안에, 오직 로더 드라이버 (162) 만이 클라이언트 소프트웨어와 통신할 목적으로 USB 디바이스 (200) 를 인식하였다.
도 6b는 다수의 디바이스에 대한 복합 열거를 가리키는 제 2 열거 프로세스 이후에 Windows®에 의해 디스플레이되는 예시적인 컨트롤 패널을 도시한다. 다음으로, 진단 포트 (750) 와 NMEA (National Marine Electronics Association) 포트 (740) 는 클라이언트 소프트웨어로 도시되었다.
또한, 컨트롤 패널은 USB 모뎀 (720) 과 USB 네트워크 어댑터 (730) 를 나타낸다. 또한, 도 6a에서 도시된 로더 (710) 포트는 이제 도 6b의 컨트롤 패널로부터 사라졌다. 물론, 당업자라면 포트, 어댑터, 및 다른 기능부들이 본 발명의 예시적 실시형태를 이용하는 상이한 종류의 USB 디바이스 (200) 에 대해 다를 수도 있음을 알 것이다.
당업자는 정보와 신호가 다양한 다른 기술 및 기법을 이용하여 표현될 수도 있다는 것을 이해하고 있을 것이다. 예를 들어, 상기의 명세서 전체에 걸쳐 참조될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼 및 칩은 전압, 전류, 전자기파, 자계 또는 자성 입자, 광학계 또는 광학 입자, 또는 그들의 임의의 조합에 의해 나타내질 수도 있다.
당업자라면, 본 명세서에 개시된 실시형태와 관련하여 나타낸 다양한 예시적인 논리 블럭, 모듈, 회로, 및 알고리즘 단계가 전자적 하드웨어, 컴퓨터 소프트웨어, 또는 둘다의 조합으로서 구현될 수도 있다는 것을 더 잘 이해할 수 있을 것이다. 하드웨어와 소프트웨어의 이러한 호환성을 명확하게 나타내기 위해, 다양한 예시적인 컴퍼넌트, 블럭, 모듈, 회로 및 단계가 그들의 기능에 관하여 일반적으로 나타나있다. 이러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정한 어플리케이션과 전체 시스템에 부과된 디자인 제한에 의존한다. 당업자는 각각의 특정한 어플리케이션에 대해 여러 가지 방법으로 기재된 기능을 구현할 수도 있지만, 이러한 구현결정이 본 발명의 예시적인 실시형태의 범위로부터 일탈을 야기한다고 해석되어서는 안된다.
여기에 개시된 실시형태들과 관련하여 설명한 다양한 예시적인 논리 블록들, 모듈들, 컨트롤러들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그래머블 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 여기에 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다르게는, 프로세서는 임의의 종래의 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다.
여기에 개시된 실시형태와 관련하여 기재된 알고리즘 또는 방법의 단계들은 직접 하드웨어로, 프로세서에 의해 동작되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수도 있다. 소프트웨어 모듈은 RAM, 플래시 메모리, ROM, EPROM, EEPROM, 레지스터, 하드 디스크, 탈착가능 디스크, CD-ROM 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 존재할 수 있다. 예를 든 저장매체는 프로세서와 결합 되는데 이 프로세서는 저장매체로부터 정보를 읽고 저장매체에 정보를 기록할 수 있다. 대안으로, 저장매체는 프로세서에 통합될수도 있다. 프로세서와 저장 매체는 ASIC에 존재할 수도 있다. ASIC는 사용자 단말기에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 사용자 단말기 내에 있는 개별 컴포넌트로 존재할 수도 있다.
하나 이상의 예시적인 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체는 하나의 장소로부터 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체를 모두 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 비 제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 운반하거나 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체를 적절히 지칭한다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 라인 (DSL), 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 공급원으로부터 송신되면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 여기에 사용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 일반적으로 데이터를 자기적으로 재생하지만, 디스크 (disc) 는 레이저로 데이터를 광학적으로 재생한다. 상기의 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
개시된 실시형태들의 이전의 설명은 당업자로 하여금 본 발명을 제작 또는 이용할 수 있게 하기 위해 제공된다. 이들 실시형태들에 대한 다양한 변형이 당업자에게 쉽게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 벗어남 없이 다른 실시형태들에 적용될 수도 있다. 따라서, 본 발명은 여기에 나타낸 실시형태들로 제한되는 것으로 의도되지 않고 여기에 개시된 원리들 및 신규의 특징들에 부합하는 최광의 범위를 부여하려는 것이다.

Claims (32)

  1. USB (Universal Serial Bus) 디바이스의 동작을 위한 펌웨어를 홀딩하는 메모리;
    펌웨어를 실행하기 위한 컨트롤러;
    펌웨어 로딩 모드에서 상기 USB 디바이스를 열거 (enumerate) 하기 위한 제 1 디바이스 디스크립터; 및
    동작 모드에서 상기 USB 디바이스를 열거하기 위한 제 2 디바이스 디스크립터를 포함하고,
    상기 펌웨어는,
    상기 펌웨어 로딩 모드를 컨트롤하기 위한 제 1 펌웨어; 및
    상기 동작 모드를 컨트롤하기 위한 제 2 펌웨어를 포함하는, USB 디바이스.
  2. 제 1 항에 있어서,
    상기 제 1 펌웨어는 USB 호스트에 있고, 상기 펌웨어 로딩 모드 동안 상기 메모리에 다운로딩하기 위한 것인, USB 디바이스.
  3. 제 1 항에 있어서,
    비휘발성 메모리를 더 포함하고,
    상기 제 1 펌웨어는, 상기 펌웨어 로딩 모드 동안 상기 메모리로 이동시키는 것 또는 상기 펌웨어 로딩 모드 동안 상기 비휘발성 메모리로부터 상기 컨트롤러에 의해 실행시키는 것으로 이루어진 그룹으로부터 선택된 모드를 위한 것인, USB 디바이스.
  4. 제 1 항에 있어서,
    상기 제 2 펌웨어는 USB 호스트에 있고, 상기 펌웨어 로딩 모드 동안 상기 메모리에 다운로딩하기 위한 것인, USB 디바이스.
  5. 제 1 항에 있어서,
    비휘발성 메모리를 더 포함하고,
    상기 제 2 펌웨어는 상기 펌웨어 로딩 모드 동안 상기 메모리로 이동시키는 것 또는 상기 동작 모드 동안 상기 비휘발성 메모리로부터 상기 컨트롤러에 의해 실행시키는 것으로 이루어진 그룹으로부터 선택된 모드를 위한 것인, USB 디바이스.
  6. 제 1 항에 있어서,
    상기 제 1 디바이스 디스크립터는 제 1 벤더 식별자 (vendor identifier) 와 제 1 프로덕트 식별자 (product identifier) 를 포함하는, USB 디바이스.
  7. 제 6 항에 있어서,
    상기 제 2 디바이스 디스크립터는 제 2 벤더 식별자와 제 2 프로덕트 식별자를 포함하는, USB 디바이스.
  8. 제 7 항에 있어서,
    상기 제 1 벤더 식별자와 상기 제 2 벤더 식별자는 동일한, USB 디바이스.
  9. 제 1 항에 있어서,
    상기 USB 디바이스는 안테나를 더 포함하고,
    상기 USB 디바이스는 광역통신망 디바이스로서 무선 동작을 위한 것인, USB 디바이스.
  10. USB (Universal Serial Bus) 디바이스에 동작가능하게 커플링하고, 컴퓨터에 의해
    상기 USB 디바이스로부터 제 1 디바이스 디스크립터를 사용하여 상기 USB 디바이스의 제 1 열거 (enumeration) 를 수행하고;
    상기 USB 디바이스로부터 재열거 (re-enumerate) 표시자를 수신하고; 그리고
    상기 USB 디바이스로부터 제 2 디바이스 디스크립터를 사용하여 상기 USB 디바이스의 제 2 열거를 수행하도록
    실행하기 위한 컴퓨팅 명령을 포함하는, USB 호스트.
  11. 제 10 항에 있어서,
    상기 컴퓨터에 의해 실행하기 위한 상기 컴퓨팅 명령은, 상기 제 1 열거 동안 상기 USB 디바이스의 동작을 컨트롤하는 제 1 펌웨어를, 상기 제 1 열거 동안 상기 USB 호스트로부터 상기 USB 디바이스에 있는 메모리로 이동시키기 위한 명령을 더 포함하는, USB 호스트.
  12. 제 10 항에 있어서,
    상기 컴퓨터에 의해 실행하기 위한 상기 컴퓨팅 명령은, 상기 제 2 열거 후 동작 모드 동안 상기 USB 디바이스의 동작을 컨트롤하는 제 2 펌웨어를, 상기 제 1 열거 동안 상기 USB 호스트로부터 상기 USB 디바이스에 있는 메모리로 이동시키기 위한 명령을 더 포함하는, USB 호스트.
  13. USB (Universal Serial Bus) 디바이스; 및
    상기 USB 디바이스에 동작가능하게 커플링된 USB 호스트를 포함하고,
    상기 USB 디바이스는,
    상기 USB 디바이스의 동작을 위한 펌웨어를 홀딩하는 메모리;
    상기 펌웨어를 실행하기 위한 컨트롤러;
    펌웨어 로딩 모드에서 상기 USB 디바이스를 열거 (enumerate) 하기 위한 제 1 디바이스 디스크립터; 및
    동작 모드에서 상기 USB 디바이스를 열거하기 위한 제 2 디바이스 디스크립터를 포함하고,
    상기 USB 호스트는,
    상기 제 1 디바이스 디스크립터를 이용하여 상기 USB 디바이스의 제 1 열거 (enumeration) 를 컨트롤하고; 그리고
    상기 제 1 열거 후, 상기 USB 디바이스로부터 재열거 (re-enumerate) 표시자를 수신하고, 상기 제 2 디바이스 디스크립터를 이용하여 상기 USB 디바이스의 제 2 열거를 컨트롤함으로써,
    상기 USB 디바이스를 컨트롤하기 위한 것인, 시스템.
  14. 제 13 항에 있어서,
    제 1 펌웨어가 상기 펌웨어 로딩 모드 동안 상기 메모리에 다운로딩하기 위해 상기 USB 호스트에 존재하는, 시스템.
  15. 제 13 항에 있어서,
    상기 USB 디바이스는 비휘발성 메모리를 더 포함하고,
    상기 비휘발성 메모리에 있는 제 1 펌웨어는 상기 펌웨어 로딩 모드 동안 상기 메모리로 이동시키는 것 또는 상기 펌웨어 로딩 모드 동안 상기 비휘발성 메모리로부터 상기 컨트롤러에 의해 실행시키는 것으로 이루어진 그룹으로부터 선택된 모드를 위한 것인, 시스템.
  16. 제 13 항에 있어서,
    상기 동작 모드를 컨트롤하기 위한 제 2 펌웨어가 상기 USB 호스트에 있고, 상기 펌웨어 로딩 모드 동안 상기 메모리에 다운로딩하기 위한 것인, 시스템.
  17. USB (Universal Serial Bus) 토폴로지상에서 USB 디바이스를 검출하는 단계;
    제 1 디바이스 디스크립터와 제 1 펌웨어로 상기 USB 디바이스를 열거 (enumerate) 하는 단계;
    펌웨어 로딩 모드에서 제 1 클라이언트 소프트웨어에 의한 액세스를 위해 상기 USB 디바이스를 인에이블 하는 단계;
    상기 USB 디바이스의 메모리에 제 2 펌웨어를 다운로딩하는 단계;
    제 2 디바이스 디스크립터로 상기 USB 디바이스를 열거하는 단계; 및
    상기 제 2 펌웨어를 이용하여 동작 모드에서 제 2 클라이언트 소프트웨어에 의한 액세스를 위해 상기 USB 디바이스를 인에이블 하는 단계를 포함하는, 방법.
  18. 제 17 항에 있어서,
    상기 USB 디바이스를 무선 통신으로 광역통신망 디바이스에서 동작시키는 단계를 더 포함하는, 방법.
  19. 제 17 항에 있어서,
    상기 제 2 펌웨어를 다운로딩하는 단계는, USB 호스트로부터 상기 메모리로 다운로딩하는 것과 상기 USB 디바이스에 있는 비휘발성 메모리로부터 상기 메모리로 다운로딩하는 것으로 이루어진 그룹에서 선택된 동작을 포함하는, 방법.
  20. 제 17 항에 있어서,
    상기 제 1 디바이스 디스크립터와 상기 제 1 펌웨어로 상기 USB 디바이스를 열거하는 단계는 상기 제 1 펌웨어를 상기 메모리에 다운로딩하는 단계를 더 포함하는, 방법.
  21. 제 20 항에 있어서,
    상기 제 1 펌웨어를 다운로딩하는 단계는, USB 호스트로부터 상기 메모리로 다운로딩하는 것과 상기 USB 디바이스에 있는 비활성 메모리로부터 상기 메모리로 다운로딩하는 것으로 이루어진 그룹에서 선택된 동작을 포함하는, 방법.
  22. 제 17 항에 있어서,
    상기 제 1 디바이스 디스크립터는 제 1 벤더 식별자와 제 1 프로덕트 식별자를 포함하는, 방법.
  23. 제 22 항에 있어서,
    상기 제 2 디바이스 디스크립터는 제 2 벤더 식별자와 제 2 프로덕트 식별자를 포함하는, 방법.
  24. 제 23 항에 있어서,
    상기 제 1 벤더 식별자와 상기 제 2 벤더 식별자는 동일한, 방법.
  25. USB (Universal Serial Bus) 토폴로지상에서 USB 디바이스를 검출하는 수단;
    제 1 디바이스 디스크립터와 제 1 펌웨어로 상기 USB 디바이스를 열거 (enumerate) 하는 수단;
    펌웨어 로딩 모드에서 제 1 클라이언트 소프트웨어에 의한 액세스를 위해 상기 USB 디바이스를 인에이블 하는 수단;
    상기 USB 디바이스의 메모리에 제 2 펌웨어를 다운로딩하는 수단;
    상기 USB 디바이스를 제 2 디바이스 디스크립터로 열거하는 수단; 및
    상기 제 2 펌웨어를 이용하여 동작 모드에서 제 2 클라이언트 소프트웨어에 의한 액세스를 위해 상기 USB 디바이스를 인에이블 하는 수단을 포함하는, 시스템.
  26. 제 25 항에 있어서,
    상기 USB 디바이스를 광역통신망 디바이스에서 무선 통신으로 동작시키는 수단을 더 포함하는, 시스템.
  27. 제 25 항에 있어서,
    상기 제 2 펌웨어를 다운로딩하는 수단은, USB 호스트로부터 상기 메모리로 다운로딩하는 수단과 상기 USB 디바이스에 있는 비휘발성 메모리로부터 상기 메모리로 다운로딩하는 수단으로 이루어진 그룹에서 선택된 수단을 포함하는, 시스템.
  28. 제 25 항에 있어서,
    상기 제 1 디바이스 디스크립터와 상기 제 1 펌웨어로 상기 USB 디바이스를 열거하는 수단은 상기 제 1 펌웨어를 상기 메모리에 다운로딩하는 수단을 더 포함하는, 시스템.
  29. 제 28 항에 있어서,
    상기 제 1 펌웨어를 다운로딩하는 수단은 USB 호스트로부터 상기 메모리로 다운로딩하는 수단과 상기 USB 디바이스에 있는 비휘발성 메모리로부터 상기 메모리로 다운로딩하는 수단으로 이루어진 그룹에서 선택된 수단을 포함하는, 시스템.
  30. 제 25 항에 있어서,
    상기 제 1 디바이스 디스크립터는 제 1 벤더 식별자와 제 1 프로덕트 식별자를 포함하는, 시스템.
  31. 제 30 항에 있어서,
    상기 제 2 디바이스 디스크립터는 제 2 벤더 식별자와 제 2 프로덕트 식별자를 포함하는, 시스템.
  32. 제 31 항에 있어서,
    상기 제 1 벤더 식별자와 상기 제 2 벤더 식별자는 동일한, 시스템.
KR1020117017521A 2009-01-13 2010-01-13 Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법 KR20110098974A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/353,214 US8713209B2 (en) 2009-01-13 2009-01-13 System, apparatus, and method for fast startup of USB devices
US12/353,214 2009-01-13

Publications (1)

Publication Number Publication Date
KR20110098974A true KR20110098974A (ko) 2011-09-02

Family

ID=41682387

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117017521A KR20110098974A (ko) 2009-01-13 2010-01-13 Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법

Country Status (7)

Country Link
US (1) US8713209B2 (ko)
EP (1) EP2387749A2 (ko)
JP (1) JP2012515400A (ko)
KR (1) KR20110098974A (ko)
CN (1) CN102272723A (ko)
TW (1) TW201042460A (ko)
WO (1) WO2010083257A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468332B2 (en) * 2009-06-13 2013-06-18 Kinglite Holdings Inc. Dynamic link loading in extensible firmware interface compliant systems
CN101615165A (zh) * 2009-08-06 2009-12-30 北京中星微电子有限公司 一种获得usb设备的序列号的方法及装置
US20120070019A1 (en) * 2010-09-21 2012-03-22 Barry Corlett Methods for addressing equipment in tree networks
WO2012098516A2 (en) * 2011-01-19 2012-07-26 Valens Semiconductor Ltd. Usb network having multiple hosts
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
US8996747B2 (en) 2011-09-29 2015-03-31 Cypress Semiconductor Corporation Methods and physical computer-readable storage media for initiating re-enumeration of USB 3.0 compatible devices
US8843664B2 (en) 2011-09-29 2014-09-23 Cypress Semiconductor Corporation Re-enumeration of USB 3.0 compatible devices
KR20130087747A (ko) * 2012-01-30 2013-08-07 삼성전자주식회사 디스플레이장치, 업그레이드장치 및 이를 포함하는 디스플레이시스템 및 그 제어방법
US8909818B2 (en) 2012-09-27 2014-12-09 Qualcomm Incorporated Method for shortening enumeration of tightly coupled USB device
EP2901298A4 (en) * 2012-09-30 2016-04-27 Cypress Semiconductor Corp NUMBERING OF USB 3.0 COMPATIBLE DEVICES
US20140208134A1 (en) * 2013-01-21 2014-07-24 Texas Instruments Incorporated Host controller interface for universal serial bus (usb) power delivery
US10165130B2 (en) 2014-02-13 2018-12-25 Emerge Print Management, Llc System and method for the passive monitoring and reporting of printer-related data on USB cables
US9225527B1 (en) 2014-08-29 2015-12-29 Coban Technologies, Inc. Hidden plug-in storage drive for data integrity
US9307317B2 (en) 2014-08-29 2016-04-05 Coban Technologies, Inc. Wireless programmable microphone apparatus and system for integrated surveillance system devices
CN105515811A (zh) * 2014-10-14 2016-04-20 中兴通讯股份有限公司 Usb无线网卡配置方法、主机、usb无线网卡及通信系统
US10165171B2 (en) 2016-01-22 2018-12-25 Coban Technologies, Inc. Systems, apparatuses, and methods for controlling audiovisual apparatuses
US10370102B2 (en) 2016-05-09 2019-08-06 Coban Technologies, Inc. Systems, apparatuses and methods for unmanned aerial vehicle
US10789840B2 (en) 2016-05-09 2020-09-29 Coban Technologies, Inc. Systems, apparatuses and methods for detecting driving behavior and triggering actions based on detected driving behavior
US10152858B2 (en) 2016-05-09 2018-12-11 Coban Technologies, Inc. Systems, apparatuses and methods for triggering actions based on data capture and characterization
EP3433751A4 (en) * 2016-08-22 2019-12-11 Hewlett-Packard Development Company, L.P. INFORMATION OF CONNECTED DEVICES
US10635345B2 (en) * 2018-08-31 2020-04-28 Micron Technology, Inc. Live firmware activation in a memory system
TWI745997B (zh) * 2020-06-09 2021-11-11 慧榮科技股份有限公司 生產固態硬碟的方法及裝置以及電腦程式產品
CN113778915B (zh) 2020-06-09 2023-10-10 慧荣科技股份有限公司 生产固态硬盘的方法及计算机可读取存储介质及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4553279B2 (ja) * 2000-03-09 2010-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送システム、データ転送端末、コントローラ、およびインターフェイス方法
US6658489B1 (en) * 2000-03-29 2003-12-02 International Business Machines Corporation Method for replacing a device driver during system operation
US6687774B2 (en) * 2000-12-19 2004-02-03 Semtech New York Corporation Wireless host with improved roustness and boot capabilities
WO2003012577A2 (en) * 2001-07-31 2003-02-13 Silicom Ltd. Device-related software installation
US7209971B1 (en) * 2001-12-11 2007-04-24 Microsoft Corporation Architecture and run-time environment for network filter drivers
EP1532525A1 (en) 2002-07-15 2005-05-25 Axalto SA Usb device
CN1302659C (zh) * 2003-03-27 2007-02-28 三星电子株式会社 数字成像装置和用于选择它的数据传输模式的方法
CN101208657B (zh) * 2003-04-11 2017-11-14 富意科技 一种便携式集成电路存储设备及其运行方法
US7562360B2 (en) * 2003-12-01 2009-07-14 Texas Instruments Incorporated Method and system for firmware downloads
JP2006185012A (ja) 2004-12-27 2006-07-13 Kyocera Mita Corp インタフェース装置及びインタフェースプログラム
US20090222907A1 (en) * 2005-06-14 2009-09-03 Patrice Guichard Data and a computer system protecting method and device
US8238972B2 (en) * 2006-03-03 2012-08-07 Newport Media, Inc. Device, system, and method for providing wireless data access, digital TV access, radio, and storage capability
US7574534B2 (en) * 2006-05-23 2009-08-11 International Business Machines Corporation Method for using device enumeration information to identify an operating system running on a computer system
US8626931B2 (en) * 2007-02-05 2014-01-07 Broadcom Corporation Media transport protocol extensions for system information exchange, and applications thereof
US20080189554A1 (en) * 2007-02-05 2008-08-07 Asad Ali Method and system for securing communication between a host computer and a secure portable device
JP2009009211A (ja) * 2007-06-26 2009-01-15 Sony Corp 通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラム
US7890664B1 (en) * 2008-03-31 2011-02-15 Emc Corporation Methods and apparatus for non-disruptive upgrade by redirecting I/O operations

Also Published As

Publication number Publication date
CN102272723A (zh) 2011-12-07
WO2010083257A2 (en) 2010-07-22
US8713209B2 (en) 2014-04-29
EP2387749A2 (en) 2011-11-23
US20100180051A1 (en) 2010-07-15
TW201042460A (en) 2010-12-01
JP2012515400A (ja) 2012-07-05
WO2010083257A3 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
KR20110098974A (ko) Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법
US8185759B1 (en) Methods and systems for interfacing bus powered devices with host devices providing limited power levels
US8010843B2 (en) System and method for debugging a target computer using SMBus
US7739487B2 (en) Method for booting a host device from an MMC/SD device, a host device bootable from an MMC/SD device and an MMC/SD device method a host device may booted from
US8359408B2 (en) Enabling functional dependency in a multi-function device
JP5085334B2 (ja) Usb・otgコントローラ
US10509758B1 (en) Emulated switch with hot-plugging
EP1753190A1 (en) Method and system for USB re-direct over a network
US20080005446A1 (en) Emulating a USB host controller
CN106933753B (zh) 智能接口卡的控制方法及装置
TW200522583A (en) IP-based method and apparatus for booting computers remotely in wide-area-network environment
JP2002300229A (ja) Usb通信制御装置、usb通信システムおよびusb通信制御方法
IL186893A (en) Virtual media systems, methods and devices
EP3062216A1 (en) Network bios management
EP1372069A2 (en) Method system and software for configuring a graphics processing communication mode
US7610482B1 (en) Method and system for managing boot trace information in host bus adapters
JP2018074565A (ja) データスイッチにて学習するサーバデータポート
WO2016058427A1 (zh) Usb无线网卡配置方法、主机、usb无线网卡及通信系统
EP3382567B1 (en) Multiple storage devices implemented using a common connector
US8527667B2 (en) Apparatuses and methods for transferring data
CN111124985A (zh) 一种移动终端只读控制方法及装置
US7124235B2 (en) USB apparatus with switchable host/hub functions and control method thereof
JP2018524697A (ja) ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合
EP1394682B1 (en) Data transfer control device, program and method of fabricating an electronic instrument
US20050182615A1 (en) Method and system for creating an automatically adjusting USB mass storage device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right