KR20170140267A - 범용 직렬 버스 스마트 허브 - Google Patents

범용 직렬 버스 스마트 허브 Download PDF

Info

Publication number
KR20170140267A
KR20170140267A KR1020177032674A KR20177032674A KR20170140267A KR 20170140267 A KR20170140267 A KR 20170140267A KR 1020177032674 A KR1020177032674 A KR 1020177032674A KR 20177032674 A KR20177032674 A KR 20177032674A KR 20170140267 A KR20170140267 A KR 20170140267A
Authority
KR
South Korea
Prior art keywords
usb
processor
hub
port
usb device
Prior art date
Application number
KR1020177032674A
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 KR20170140267A publication Critical patent/KR20170140267A/ko

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/266Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3812USB port controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/40Bus coupling
    • G06F2213/4004Universal serial bus hub with a plurality of upstream ports

Abstract

USB 스마트 허브는 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환을 제공할 수 있다. 스마트 허브는 업스트림 포트, 복수의 다운스트림 포트들, 프로세서 및 USB 호스트 스택 코드 및 환경 설정 파라미터들을 저장하기 위해 프로세서에 연결된 메모리를 포함할 수 있다. 스마트 허브는 표준 USB 허브 인터페이스를 구현하는 코어를 갖는 USB 허브 코어를 포함할 수 있다. 스마트 허브는 다운스트림 포트들, 코어 다운스트림 포트들 및 프로세서 사이에 결합된 복수의 2:1 멀티플렉서들을 포함할 수 있다. 프로세서는 2:1 멀티플렉서들을 제어할 수 있다. 프로세서는 USB 디바이스가 다운스트림 포트에 연결될 때를 검출하고 USB 호스트 스택 코드를 실행하고 USB 디바이스를 열거하도록 구성될 수 있다. 프로세서는 환경 설정 파라미터들에 근거하여 향상된 기능을 제공할 수 있다.

Description

범용 직렬 버스 스마트 허브
본 발명은 범용 직렬 버스(USB) 허브와의 사용을 위한 시스템들 및 방법들에 관한 것으로, 특히, USB 허브 디바이스에서의 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환(role switching)을 향상시키기 위한 개선된 시스템 및 방법에 관한 것이다.
USB 허브들은 현대의 전자 디바이스들(예컨대, 개인용 컴퓨터들("PC들"), 태블릿 PC들, 셀폰들, 자동차 인포테인먼트 시스템들, 개인용 게임 시스템들, 장난감들 등)에 편재(ubiquitous)되어 있다. 키보드들, 모니터들, 프린터들, 저장 디바이스들, 카메라들, 폰들, 장난감들, 게임기들 및 수많은 다른 전자 디바이스가 단일 인터페이스상에서 동작할 수 있게 하는 것은 바로 "범용" 인터페이스이다. 범용이라는 것은 무엇보다도 인증, 유효성, 보안 및 사용자 지정 데이터 처리와 관련된 것들을 포함하는 그 자신의 도전 과제들을 야기한다. 벤더들은 운영 체제 및/또는 USB 스택/드라이버들을 사용자 주문에 응하여 제조(customize)함으로써 이러한 도전 과제를 극복하려고 시도해오고 있다. 이러한 유형들의 사용자 지정(customization)은 비용이 많이 들며 그 결과는 USB 인터페이스에 연결된 전자 디바이스들 간의 차선의(sub-optimal) 호환성을 가져올 수 있다.
그러므로 운영 체제 또는 USB 스택/드라이버들을 변경하지 않고도, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환을 제공할 수 있는 개선된 USB 허브가 필요하다.
일 실시예에 따르면, 허브 업스트림 포트, 복수의 허브 다운스트림 포트들, 프로세서, 및 USB 호스트 스택 코드 및 복수의 환경 설정 파라미터들을 저장하기 위해 상기 프로세서에 통신 가능하게 결합되는 메모리를 포함할 수 있는 USB 허브가 제공된다. 상기 USB 허브는 코어 업스트림 포트 및 복수의 코어 다운스트림 포트들을 구비하는 USB 허브 코어를 더 포함할 수 있다. 상기 USB 허브 코어는 상기 코어 업스트림 포트와 상기 복수의 코어 다운스트림 포트들 사이에 USB 허브 인터페이스를 구현하도록 동작 가능할 수 있다. 상기 USB 허브는 복수의 멀티플렉서들을 더 포함할 수 있고, 각 멀티플렉서는 상기 허브 다운스트림 포트들 중 하나의 다운스트림 포트에 통신 가능하게 결합된 제1 포트, 상기 복수의 코어 다운스트림 포트들 중 하나에 통신 가능하게 결합된 제2 포트, 상기 프로세서에 통신 가능하게 결합된 제3 포트와, 상기 프로세서에 통신 가능하게 결합되고 그리고 상기 제1 포트를 상기 제2 포트, 상기 제3 포트, 또는 상기 제2 포트 및 상기 제3 포트 둘 다와 통신 가능하게 결합하도록 동작할 수 있는 선택 입력부를 구비할 수 있다. 상기 프로세서는, 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하도록 구성될 수 있다. 상기 프로세서는 추가로 상기 제1 포트가 상기 제3 포트에 연결되도록 상기 제1 허브 다운스트림 포트에 대응하는 제1 멀티플렉서의 상기 선택 입력부를 제어하도록 구성될 수 있다. 또한, 상기 프로세서는 상기 USB 호스트 스택 코드를 실행하고 그리고 상기 USB 디바이스를 열거하도록 구성될 수 있다.
추가 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 향상된 배터리 충전을 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고 그리고 상기 USB 디바이스를 열거할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득할 수 있고, 그리고 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스를 위해 사용자 지정 배터리 충전 프로토콜을 결정할 수 있다. 상기 프로세서는 이어서 상기 USB 디바이스에 대응하는 특정 배터리 충전 프로토콜을 사용하여 상기 USB 허브가 상기 USB 디바이스를 충전하게 할 수 있다.
추가 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 보안을 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고 그리고 상기 USB 디바이스를 열거할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 정보(예컨대, 디바이스 클래스 코드, 디스크립터 정보 등)를 획득할 수 있고, 그리고 상기 디바이스 클래스 코드를 사용하여 상기 USB 디바이스가 차단되어야 한다고 결정할 수 있다. 상기 프로세서는 이어서 상기 USB 디바이스가 차단되어야 한다고 결정시 상기 USB 허브가 상기 USB 디바이스 연결을 차단하게 할 수 있다.
추가 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 보안을 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고 그리고 상기 USB 디바이스를 열거할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 정보(예컨대, 디바이스 클래스 코드, 디스크립터 정보 등)를 획득할 수 있고, 그리고 상기 디바이스 클래스 코드를 사용하여 상기 USB 디바이스와 업스트림 USB 호스트 사이에 상기 USB 허브가 USB 대 USB 브리지를 설정해야 한다고 결정할 수 있다. 상기 프로세서는 이어서 상기 USB 디바이스와 상기 업스트림 USB 호스트 간에 상기 USB 대 USB 브리지를 구현할 수 있다.
추가 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 벤더 디바이스 선호(preference)를 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고 그리고 상기 USB 디바이스를 열거할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득할 수 있고, 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스가 벤더 선택 디바이스가 아니라고 결정할 수 있다. 상기 프로세서는 이어서 상기 USB 디바이스가 벤더 선택 디바이스가 아니라고 결정시 상기 USB 디바이스가 차선의 환경 설정으로 열거되도록 할 수 있다.
또 하나의 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 디바이스 인증을 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고 그리고 상기 USB 디바이스를 열거할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득할 수 있고, 그리고 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스가 인증을 필요로 한다고 결정할 수 있다. 상기 프로세서는 이어서 상기 USB 디바이스가 인증을 필요로 한다고 결정시 상기 인증 시도를 상기 USB 디바이스에 발할 수 있다. 상기 프로세서는 추가로 상기 USB 디바이스로부터 인증 시도 응답을 획득할 수 있고, 그리고 상기 응답이 부정확하다고 결정시 상기 USB 디바이스 연결을 차단할 수 있다.
또 하나의 실시예에 따르면, 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 반영을 위한 방법이 제공된다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들로부터 소스 포트를 결정할 수 있다. 상기 프로세서는 상기 복수의 허브 다운스트림 포트들로부터 목적지 포트를 결정할 수 있다. 상기 프로세서는 상기 소스 포트에서의 데이터가 상기 목적지 포트에서 반영되게 할 수 있다.
본 개시는 첨부 도면들과 결합된 이하의 설명을 참조하면 보다 완전하게 이해될 수 있을 것이다.
도 1은 본 개시의 특정 실시예들에 따른, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환을 제공할 수 있는 예시적인 USB 허브의 블록도를 도시한다.
도 2는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 배터리 충전, 벤더 매칭 및 디바이스 인증을 제공하기 위한 예시적인 데이터베이스의 표를 도시한다.
도 3은 본 개시의 특정 실시예들에 따른, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환을 제공하기 위한 예시적인 환경 설정(configuration) 옵션들을 도시한다.
도 4는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 배터리 충전을 제공하기 위한 예시적인 방법의 흐름도를 도시한다.
도 5는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 데이터 저장 보안을 제공하기 위한 예시적인 방법의 흐름도를 도시한다.
도 6은 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 벤더 매칭을 제공하기 위한 예시적인 방법의 흐름도를 도시한다.
도 7은 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 디바이스 인증을 제공하기 위한 예시적인 방법의 흐름도를 도시한다.
도 8은 본 개시의 특정 실시예들에 따른, 데이터 캡처/디버그를 제공할 수 있는 예시적인 USB 허브의 블록도를 도시한다.
도 9는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 역할 전환을 제공하기 위한 예시적인 방법의 흐름도를 도시한다.
본 개시는 다양한 변형들 및 대안의 형태들을 허용하지만, 그의 특정 예시의 실시예들이 도면들에 도시되었고 본 명세서에서 상세히 설명된다. 하지만, 그 특정 예시의 실시예들에 대한 설명은 본 개시를 여기에서 개시된 특정 형태들로 한정하고자 하는 것이 아니고, 오히려, 본 개시는 특허청구범위에 의해 정의되는 모든 변형들 및 균등물들을 포괄하는 것으로 이해되어야 한다.
다양한 실시예들에 따르면, 운영 체제 또는 USB 스택/드라이버들을 변경하지 않고도, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그, 및 역할 전환을 제공할 수 있는 USB 허브가 제공될 수 있다.
이제 도면들을 보면, 특정 예시의 실시예들의 세부 사항들이 개략적으로 도시되어 있다. 도면들에서 같은 요소들은 같은 숫자들로 나타내어지며, 유사한 요소들은 같은 숫자들에 다른 소문자 첨자를 붙여서 나타내어질 것이다.
도 1은 본 개시의 특정 실시예들에 따른, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡쳐/디버그 및 역할 전환을 제공할 수 있는 예시적인 USB 허브의 블록도를 도시한다. 도 1에 도시된 바와 같이, USB 허브(100)는 USB 허브 코어(102), 업스트림 포트(104), 제어 프로세서(106), USB 호스트 스택 + 미니 스케줄러 + 메시지 파이프들(108), 및 다운스트림 포트들(116a-d)을 예를 들어, USB 허브 코어(102) 출력 신호들(110a-d) 및 신호들(112a-d)과 통신 가능하게 결합시키는 2:1 멀티플렉서들/디멀티플렉서들(114a-d)을 포함할 수 있다. 업스트림 포트(104) 및 다운스트림 포트들(116a-d)은 USB 허브(100)와 업스트림/다운스트림 포트들 간에 USB-호환 신호(signaling)를 운반할 수 있다. 도 1에 도시된 실시예는, 4 포트 USB 허브를 포함하지만, 대안적인 실시예들은 많은 포트들(예를 들어, 2, 3, 10, 16 등)을 포함할 수 있다.
제어 프로세서(106)는 프로그램 명령어들 및/또는 프로세스 데이터를 해석 및/또는 실행할 수 있는 임의의 시스템, 디바이스 또는 장치를 포함할 수 있으며, 제한 없이 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서, 주문형 집적 회로(ASIC), 또는 프로그램 명령어들 및/또는 프로세스 데이터를 해석 및/또는 실행하도록 구성된 기타 디지털 또는 아날로그 회로망을 포함할 수 있다. USB 허브뿐만 아니라 본 개시의 다양한 실시예들에 의해 제공되는 추가 기능부를 구현/제어하기에 적합한 신호를 제공하기 위해, 제어 프로세서(106)는 USB 허브 코어(102)에 통신 가능하게 결합될 수 있다. 제어 프로세서(106)는 또한, (미니 스케줄러 및 메시지 파이프들을 포함하는) USB 호스트 스택(108)에 통신(예컨대, 구현, 제어 등) 가능하게 결합될 수 있다. 또한, 제어 프로세서(106)는 예를 들어 신호들(112a-d)을 송신 또는 수신하고/하거나 멀티플렉서들/디멀티플렉서들(114a-d)에 선택 신호(미도시됨)를 제공하기 위해 멀티플렉서들/디멀티플렉서들(114a-d)에 통신 가능하게 결합될 수 있다. 또한, 제어 프로세서는 메모리(예컨대, 휘발성, 비휘발성 등), 저장 매체(예컨대, 플래시, EEPROM, 솔리드 스테이트 저장 매체 등) 등을 포함한 다른 리소스들(미도시됨)에 통신 가능하게 결합될 수 있다.
USB 허브 코어(102)는 USB 허브 인터페이스를 구현하도록 동작 가능한 임의의 시스템, 디바이스 또는 장치를 포함할 수 있으며, 제한 없이, USB 허브 인터페이스를 구현하도록 구성된 ASIC(application specific integrated circuit) 또는 기타 디지털 또는 아날로그 회로망 (및 필요한 소프트웨어/펌웨어)을 포함할 수 있다. 특정 실시예들에서, USB 허브 코어는 USB OTG(On the Go) 신호를 지원할 수 있다. 동일 또는 추가의 실시예들에서, USB 허브 코어(102)는 마이크로칩의 플렉스커넥트(Flexconnect) 기능을 지원하는 마이크로칩 테크놀로지 인코포레이티드(마이크로칩)에 의해 제공된 허브 컨트롤러일 수 있다. 플렉스커넥트 기능으로 인해, 상기 허브가 업스트림 및 다운스트림 포트들로서 동작하는 물리적 포트들을 동적으로 변경할 수 있다. 이러한 기능들은 2개의 전용 커넥터들을 필요로 하지 않고도 USB 호스트와 USB 디바이스 둘 다로서 동작하는 다수의 제품에 연결을 가능하게 할 수 있다.
USB 호스트 스택(108)은 USB 호스트 컨트롤러를 구현하도록 동작할 수 있는 임의의 소프트웨어, 하드웨어, 또는 소프트웨어/하드웨어의 조합을 포함할 수 있다. 특정 실시예들에서, USB 호스트 스택(108)은 완전한 USB 호환이어서, 임의의 USB 규격에 의해 정의된 모든 유효한 트랜잭션들을 지원할 수 있다. 대안적인 실시예들에서, USB 호스트 스택(108)은 예를 들어, (i) 특정의 주변 디바이스들 및/또는 디바이스 클래스들만을 지원하고, (ii) 지원되는 디바이스에 의해 요구되는 특정의 전송 유형만을 지원하고, (iii) 완화된 전력 요구 조건들을 가짐에 의해, 그리고 (iv) 등등에 의해 USB 규격의 특정 측면들만을 구현할 수 있다. 일 실시예에서, USB 호스트 스택(108)은 마이크로칩 마이크로컨트롤러들과의 사용을 위해 마이크로칩에 의해 제공되는 로열티가 없는 임베디드 호스트 스택일 수 있다.
동작 중에, USB 허브(100)는 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡쳐/디버그, 및 역할 전환과 같은 향상된 USB 기능들을 제공할 수 있다. 제어 프로세서(106)는 본 개시의 특정 실시예들에 따른, USB 허브 코어(102)와 상호 동작하고 그리고 USB 호스트 스택 + 미니 스케줄러 + 메시지 파이프들(108)을 구현하도록 일반적으로 동작 가능한 소프트웨어 및/또는 펌웨어를 실행할 수 있다. 특정 실시예들에서, 제어 프로세서(106)는 제한 없이, 도 2 및 도 3에 도시된 것과 유사한 데이터베이스 표들 및/또는 환경 설정 정보를 포함하는 정보를 저장 및 검색하도록 일반적으로 동작 가능한 소프트웨어 및/또는 펌웨어를 실행할 수 있다.
도 2는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 배터리 충전, 벤더 매칭 및 디바이스 인증을 제공하기 위한 예시적인 데이터베이스(200)의 표를 도시한다. 데이터베이스(200)는 텍스트 파일들, 바이너리 파일들, 관계형 데이터베이스 등을 제한 없이 포함하는 많은 서로 다른 포맷들로 구현될 수 있다. 데이터베이스(200)의 각 행은 USB 허브(100)에 의해 지원되는 USB 디바이스와 관련된 엔트리를 함유할 수 있으며, 지원되는 디바이스를 포함하는 트랜잭션들에 USB 허브(100)에 의해 사용되는 정보를 저장할 수 있다. 특정의 예시적인 실시예들에서, 데이터베이스(200)는 벤더 ID("VID")(열 A), 제품 ID("PID")(열 B), 향상된 충전 표시기(열 C), 충전 유형(D 열), 충전 규격(E 열), 벤더 선택 표시기(vendor of choice indicator)(F 열), 인증 요구 표시기(G 열), 인증 규격(H 열) 및 플렉스커넥트 표시기(열 I)를 저장할 수 있다. USB 규격에 따르면, 각 USB 컴포넌트(디바이스, 호스트, 허브 등)에는 예를 들어, 컴포넌트를 쉽게 식별할 수 있도록 VID 및 PID가 할당될 수 있다. 데이터베이스(200)의 VID 및 PID 열들은 이들 사전 할당된 VID/PID 값에 대응할 수 있다. 이러한 방식으로, USB 허브(100)는 USB 허브(100)에 연결될 수 있는 서로 다른 USB 컴포넌트에 특유한 향상된 배터리 충전, 벤더 매칭 및 디바이스 인증을 제공할 수 있다.
동작 중에, USB 컴포넌트가 USB 허브(100)에 연결될 때에는, 제어 프로세서(106)는 디바이스로부터 VID/PID 정보를 획득할 수 있다. 일 실시예에서, USB 허브(100)는 디바이스를 열거(enumerate)하기 위해 그리고 (VID/PID 정보를 포함하는) 디바이스 디스크립터들을 획득하기 위해, USB 호스트 스택 + 미니 스케줄러 + 메시지 파이프들(108)을 이용하여 USB 호스트로서 동작할 수 있다. 대안적인 실시예에서, 제어 프로세서는 업스트림 포트(104)에 연결된 호스트가 USB 허브 코어(102)(표준 USB 프로토콜)를 통해 새로이 부착된 디바이스를 열거할 때에 열거 프로세스에 "주목(listening)"함으로써 디바이스로부터 VID/PID 정보를 얻을 수 있다. 전자의 실시예에서, 제어 프로세서(106)는 USB 허브 코어(102)가 디바이스 부착 이벤트를 감지(recognize)하지 않도록 멀티플렉서들/디멀티플렉서들(114a-d)을 환경 설정할 수 있다. 디바이스를 열거한 후에, USB 허브(100)는 디바이스가 업스트림 호스트에 의해 적절하게 열거되도록 업스트림 포트(104)에서 새로이 부착된 디바이스와 USB 호스트 간의 연결을 관리할 수 있다. USB 허브(100)는 USB 프로토콜에 익숙한 자들에게 공지된 많은 방식으로 이것을 달성할 수 있다. 예를 들어, USB 허브(100)는 디바이스가 부착된 다운스트림 포트에 분리(disconnect) 이벤트를 강제로 수행한 다음 업스트림 호스트에 의한 열거를 가능하게 할 수 있다. 대안적인 실시예에서, USB 허브(100)는 디바이스를 리셋한 다음 업스트림 호스트에 의한 열거를 가능하게 할 수 있다. 대안적인 실시예에서, USB 허브(100)는 업스트림 호스트에 새로운 부착 이벤트를 에뮬레이트(emulate)하고, 그리고 업스트림 포트(104)에서 디바이스의 디스크립터들을 USB 호스트로 포워딩한 다음 적절한 시간에 정상적인 허브 신호를 다시 시작한다(즉, 에뮬레이션을 중단한다). 이들 실시예에서, 제어 프로세서(106)는 신호가 (1) USB 허브 코어 및 (2) USB 호스트 스택을 실행하는 제어 프로세서 중 어느 하나로 적절하게 라우팅되도록 멀티플렉서들/디멀티플렉서들(114a-d)을 제어한다. 특정 실시예들에서, 멀티플렉서들/디멀티플렉서들(114a-d)이 다운스트림 포트 신호를 제어 프로세서로 라우팅할 때에는, USB 허브 코어에 연결된 신호들(110a-d)은 어떠한 부착된 디바이스들도 반영하지 않도록 환경 설정될 수 있다. 따라서, 멀티플렉서들/디멀티플렉서들(114a-d)의 선택 입력부를 변경함으로써(즉, 그 결과 USB 허브 코어로 라우팅됨), USB 허브 코어는 디바이스 부착 이벤트가 발생하였다고 결정할 수 있다.
USB 허브(100)가 VID/PID 정보를 획득하는 방식과는 관계없이, VID/PID 정보를 획득한 후에, USB 허브(100)는 매칭 VID/PID를 위해 데이터베이스(200)를 검색할 수 있다. VID/PID가 데이터베이스(200)에서 발견되면, 제어 프로세서(106)는 연결된 USB 컴포넌트가 USB 허브(100)에 의해 지원되고 있다고 결정하고 해당 USB 컴포넌트에 대응하는 데이터베이스(200)에 저장된 나머지(the other) 파라미터들에 따라 소정의 향상된 기능을 제공할 수 있다. 예를 들어, 향상된 충전 표시기(열 C)가 매칭 VID/PID에 대해 인에이블되어 있으면(예컨대 행 2), USB 허브(100)는 해당 USB 포트에서 향상된 배터리 충전을 제공할 수 있다. 이 경우, 데이터베이스(200)의 충전 유형(열 D) 및 충전 규격(열 E) 엔트리들은 USB 컴포넌트가 충전되어야 하는 방식에 관한 추가 정보를 제공할 수 있다. (향상된 충전에 관한 더욱 세부적인 사항은 도 4의 설명에서 제공될 수 있다.) 또 하나의 예로서, 벤더 선택 표시기(열 F)가 매칭 VID/PID에 대해 인에이블되어 있으면(예컨대, 행 4), USB 허브(100)는 향상된 벤더 매칭 기능들을 제공할 수 있다. (향상된 벤더 매칭 기능들에 관한 더욱 세부적인 사항은 도 3 및 도 6의 설명에서 제공된다.) 또 하나의 다른 예에서, 인증 요구 표시기(열 G)가 매칭 VID/PID에 대해 인에이블되어 있으면(예컨대, 행 6), USB 허브(100)는 USB 컴포넌트를 완전히 연결하기 전에 인증을 요구할 수 있다. 이 경우에, 데이터베이스(200)의 인증 규격(열 H) 엔트리는 USB 컴포넌트가 인증되어야 하는 방식과 관련된 추가적인 세부 사항들을 제공할 수 있다. (인증 기능들에 관한 더욱 세부적인 사항은 도 7의 설명에서 제공된다.) 또 하나의 다른 예에서, 플렉스커넥트 표시기(열 I)가 매칭 VID/PID에 대해 인에이블되어 있으면(예컨대, 행 1), USB 허브(100)는 디바이스에 초기 역할 전환의 옵션을 제공하고 USB 호스트로서 동작할 수 있다. (역할 전환 기능과 관련된 더 상세한 내용은 도 9의 설명에서 제공된다)
데이터베이스(200)에 저장된 값들은 하드 코딩되거나, 환경 설정 가능하거나, 또는 2가지의 일부 조합일 수 있다. 특정 실시예들에서, USB 허브(100)의 제조자는 상기 데이터베이스가 수정될 수 없도록 USB 허브(100)를 판매하기 전에 데이터베이스(200)의 값들을 하드-코딩하기를 원할 수 있다. 예를 들어, 데이터베이스(200)는 메모리의 판독 전용 섹션에 저장되거나 또는 기록이 보호될 수 있다. 다른 실시예들에서, 제조자는 데이터베이스(200)에 디폴트 값들을 제공할 수 있지만, 나중에 사용자에 의한 수정을 가능하게 할 수 있다. 예를 들어, USB 허브(100)의 사용자는 허브를 USB 호스트에 플러그하고 USB 호스트의 소프트웨어를 사용하여 데이터베이스를 업데이트함으로써 (예를 들어, 인터넷으로부터 새로운 벤더/제품 정보를 다운로드하고 그리고 수동으로 표를 편집하는 등에 의해) 데이터베이스(200)를 수정할 수 있다. 특정 실시예들에서, 데이터베이스(200)의 수정은 USB 허브(100)의 임의의 사용자가 데이터베이스를 수정할 수 있도록 보안되지 않은 방식으로 수행될 수 있다. 다른 실시예들에서, 데이터베이스(200)의 수정은 정확한 자격 증명서(예컨대, 패스워드 등)를 가진 사용자에 의해서만 수행될 수 있다.
도 3은 본 개시의 특정 실시예들에 따른, 데이터 저장 보안, 벤더 매칭, 데이터 캡쳐/디버그 및 역할 전환을 제공하기 위한 예시적인 환경 설정 옵션 표(300)를 도시한다. 일부 실시예들에서, 환경 설정 옵션 표(300)는 텍스트 파일, 바이너리 파일, 관계형 데이터베이스 등을 제한 없이 포함하는 소프트웨어로 저장될 수 있다. 다른 실시예들에서, 환경 설정 옵션 표(300)는 하드웨어에서 하드-와이어링(예컨대, 제어 프로세서(106)의 GPIO 핀 등에 연결된 타이드(tired) 로우(디스에이블), 타이드 하이(인에이블))될 수 있다. 환경 설정 옵션 표(300)의 제1열은 본 개시의 예시적인 실시예에서 이용될 수 있는 환경 설정 옵션들에 대응할 수 있다. 다른 실시예들에서, 특정 USB 허브(100)에 의해 지원되는 기능들에 따라, 더 많거나 적은 열이 존재할 수 있다. 환경 설정 옵션 표(300)의 제2열은 USB 허브(100)의 벤더 또는 사용자에 의해 결정되는 환경 설정 값들에 대응할 수 있다.
환경 설정 옵션 표(300)에 저장된 값은 하드 코딩되거나, 환경 설정 가능하거나, 또는 2가지의 일부 조합일 수 있다. 특정 실시예들에서, USB 허브(100)의 제조자는 환경 설정 옵션들이 수정될 수 없도록(즉, 환경 설정이 불가능하도록) USB 허브(100)를 판매하기 전에 환경 설정 옵션 표(300)의 값을 하드-코딩하기를 원할 수 있다. 예를 들어, 환경 설정 옵션 표(300)의 값은 메모리의 읽기 전용 섹션에 저장될 수 있다. 다른 실시예들에서, 제조자는 환경 설정 옵션 표(300)에 디폴트 값을 제공할 수 있지만, 나중에 사용자에 의한 수정을 가능하게 할 수 있다. 예를 들어, USB 허브(100)의 사용자는 허브를 USB 호스트에 플러그하고 USB 호스트의 소프트웨어를 사용하여 값을 설정함으로써 환경 설정 표(300)의 값을 수정할 수 있다. 특정 실시예들에서, 이러한 수정은 USB 허브(100)의 임의의 사용자가 값들을 수정할 수 있도록 보안되지 않은 방식으로 수행될 수 있다. 다른 실시예들에서, 환경 설정 표(300)의 값들의 수정은 정확한 자격 증명서(예를 들어, 패스워드 등)을 가진 사용자들에 의해서만 수행될 수 있다.
도 3에 도시된 실시예에서, 환경 설정 옵션 표(300)는 다음의 환경 설정 옵션들을 포함한다 : "데이터 보안?" 옵션은 데이터 보안 기능이 인에이블되어 있는지를 결정하는데 사용된다. "데이터 보안 레벨 2?" 옵션은 데이터 보안 레벨 2 기능의 인에이블되어 있는지를 결정하는데 사용된다. "데이터 보안 규격(Data Security Specification)" 엔트리는 USB 허브(100)가 데이터 보안 기능을 구현해야 하는 방식과 관련된 추가 정보를 제공한다. (데이터 보안 기능과 관련된 더 상세한 내용은 도 5의 설명에서 제공된다.) "벤더 선택" 옵션은 벤더 선택 기능이 인에이블되어 있는지를 결정하는데 사용된다. "벤더 선택 규격" 엔트리는 USB 허브(100)가 벤더 선택 기능을 구현해야 하는 방식과 관련된 추가 정보를 제공한다. (향상된 벤더 매칭 기능과 관련된 더 상세한 내용은 도 3 및 도 6의 설명에서 제공된다.) "자동 응답?" 옵션은 자동 응답 기능이 인에이블되어 있는지를 결정하는데 사용된다. "자동 응답 규격(Auto Respond Specification)" 엔트리는 USB 허브(100)가 자동 응답 기능을 구현해야 하는 방식과 관련된 추가 정보를 제공한다. "데이터 반영?" 옵션은 데이터 반영 기능이 인에이블되어 있는지를 결정하는데 사용된다. "데이터 반영 규격(Data Reflect Specification)" 엔트리는 USB 허브(100)가 데이터 반영 기능을 구현해야 하는 방식과 관련된 추가 정보를 제공한다. (자동 응답 및 데이터 반영 기능과 관련된 더 상세한 내용은 도 8의 설명에서 제공된다.) "플렉스커넥트 전환?" 옵션은 플렉스커넥트 전환 기능이 인에이블되어 있는지를 결정하는데 사용된다. (플렉스커넥트 전환 기능과 관련된 더 상세한 내용은 도 9의 설명에서 제공된다)
배터리 충전
USB 커넥터들은 스마트폰들, 태블릿들, 게임기들, 장난감들 등을 제한 없이 포함하는 모든 유형의 전자 디바이스들의 충전에 사용된다. USB 규격은 모든 USB 연결에 걸쳐서(over) USB 디바이스들을 충전하기 위한 프로토콜을 정의한다. 그러나, 많은 USB 디바이스들은 이 프로토콜을 따르지 않으며 대신 사용자 지정 전기 핸드셰이크 또는 사용자 지정 USB 메시지 기반 핸드셰이크와 같은 벤더 특정 또는 제품 특정 충전 프로토콜을 구현한다. 그 결과 이들 디바이스를 충전하기 위해 표준 USB 충전 프로토콜을 사용(즉, 범용 USB 허브에 의해 사용되는 방식)할 때에는, 충전 속도가 최적 이하(sub-optimal)로 떨어질 수 있다. 벤더 특정 및/또는 제품 특정 충전 정보를 저장함으로써, USB 허브(100)는 USB 허브(100)에 연결된 임의의 디바이스에 최적의 충전 프로토콜을 구현할 수 있다.
도 4는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 배터리 충전을 제공하기 위한 예시적인 방법(400)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(400)은 단계(402)에서 시작하는 것이 바람직하다. 전술한 바와 같이, 본 개시의 교시는 USB 허브(100)의 다양한 환경 설정으로 구현될 수 있다. 이와 같이, 방법(400)에 대한 바람직한 초기화 포인트 및 방법(400)을 포함하는 단계들(402-418)의 순서는 선택된 구현에 의존할 수 있다.
단계(402)에서, USB 허브(100)가 초기화될 수 있다. 예를 들어, USB 허브(100)는 (전원 또는 USB 호스트에의 연결을 통해) 전원이 켜질 수 있으며, USB 허브 코어(102)는 초기화될 수 있다. 단계(404)에서, USB 허브(100)는 다운스트림 디바이스가 예를 들어 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 부착되었는지를 결정하기 위해 계속 체크할 수 있다. 어떠한 다운스트림 디바이스도 부착되어 있지 않으면, USB 허브(100)는 단계(404)로 돌아가서 이러한 방식으로 다운스트림 디바이스가 검출될 때까지 계속될 수 있다. 다운스트림 디바이스 연결 검출시, USB 허브(100)는 단계(406)에서 검출된 디바이스에 연결할 수 있고, 그리고 단계(408)에서 디바이스를 열거할 수 있다. 열거 중에, USB 허브(100)는 새로이 부착된 디바이스의 VID 및 PID를 판독할 수 있다.
단계(410)에서, USB 허브(100)는 새로이 부착된 디바이스가 비표준 충전 프로토콜을 구현하는지를 결정할 수 있다. 예를 들어, VID/PID는 제어 프로세서(106)에 제공될 수 있고, 제어 프로세서(106)는 데이터베이스(200)에 질의(query)하여 데이터베이스(200)가 새로 부착된 디바이스의 VID/PID와 매칭하는 엔트리(행)를 함유하는지 및 임의의 매칭 엔트리가 상기 디바이스가 벤더 특정 또는 제품 특정 충전 프로토콜을 따르는 것(즉, 열 C "충전?"이 인에이블됨)을 나타내는지를 결정한다. 데이터베이스(200)에 어떠한 VID/PID 매칭도 없으면, 방법(400)은 단계(410)로부터 단계(412)로 진행할 수 있고, 표준 USB 충전 프로토콜을 사용하여 새로이 부착된 디바이스를 충전하려고 시도할 수 있다. 유사하게, 데이터베이스(200)에 VID/PID 일치가 있지만, 매칭 행에서의 "충전?" 열이 인에이블되어 있지 않으면, 방법(400)은 단계(410)로부터 단계(412)로 진행할 수 있고, 표준 USB 충전 프로토콜을 사용하여 새로이 부착된 디바이스를 충전하려고 시도할 수 있다. 데이터베이스(200)에 VID/PID 매칭이 있고 그리고 해당하는 매칭 행에서의 "충전?" 열이 인에이블되어 있으면, 방법(400)은 단계(414)로 진행할 수 있다.
단계(414)에서, USB 허브(100)는 매칭 데이터베이스 엔트리가 사용자 지정 전기 핸드셰이크 충전 프로토콜을 나타내는지를 결정할 수 있다. 도 2에 도시된 예에서, "충전 유형" 열의 영(0)은 사용자 지정 전기 핸드셰이크 충전 프로토콜(예컨대, 2행)을 나타내는 반면, "충전 유형" 열의 일(1)은 사용자 지정 메시지 기반 핸드셰이크 충전 프로토콜(예컨대, 3행)을 나타낼 수 있다. 이 실시예에 따르면, USB 허브(100)가 "충전 유형"이 사용자 지정 전기 핸드셰이크를 나타내는 제로(0)로 설정되어 있다고 단계(414)에서 결정하면, 방법(400)은 단계(418)로 진행할 수 있다. USB 허브(100)가 "충전 유형"이 사용자 지정 메시지 기반 핸드셰이크를 나타내는 일(1)로 설정되어 있다고 단계(414)에서 결정하면, 방법(400)은 단계(416)로 진행할 수 있다.
단계(416)에서, USB 허브(100)는 사용자 지정 메시지 기반 핸드셰이크 프로토콜을 사용하여 새로이 부착된 디바이스를 충전할 수 있다. 특정 실시예들에서,이 프로토콜의 상세한 사항은 "충전 규격" 열의 "메시지 기반 핸드셰이크 규격"(예컨대, 3행)으로서 데이터베이스(200)에 저장될 수 있다. 메시지 기반 핸드셰이크 규격는 USB 컴포넌트에 의해 구현되는 사용자 지정 메시지 기반 핸드셰이크 프로토콜을 기술하는 명령어, 디스크립터 또는 다수의 명령어/디스크립터를 포함할 수 있다. 필요한 명령어들/디스크립터들의 수는 구현에 따라 달라질 수 있으며 USB 허브(100)에 의해 지원되는 디바이스들의 수에 근거하여 변경될 수 있다. 제어 프로세서(106)는 임의의 지원되는 디바이스에 대한 메시지 기반 핸드셰이크 규격을 디코딩하도록 동작 가능할 수 있으며, 다운스트림 포트의(on) 프로토콜을 제어하기 위해 상기 정보를 이용할 수 있다. 이러한 방식으로, USB 허브(100)는 최적의 벤더 특정 또는 제품 특정 메시지 기반 핸드셰이크 충전 프로토콜을 구현할 수 있다.
단계(418)에서, USB 허브(100)는 예를 들어 다운스트림 포트에 대한 특정한 저항, 전압 또는 전류를 설정함으로써, 사용자 지정 전기 핸드셰이크 프로토콜을 사용하여 새로이 부착된 디바이스를 충전할 수 있다. 특정 실시예들에서, 이 프로토콜의 상세한 사항은 "충전 규격" 열의 "전기 신호 규격"(예컨대, 3행)으로서 데이터베이스(200)에 저장될 수 있다. 전기 신호 규격은 USB 컴포넌트에 의해 구현된 사용자 지정 전기 핸드셰이크 프로토콜을 설명하는 명령어, 디스크립터 또는 다수의 명령어/디스크립터를 포함할 수 있다. 필요한 명령어들/디스크립터들의 수는 구현에 따라 달라질 수 있으며, USB 허브(100)에 의해 지원되는 디바이스들의 수에 근거하여 변경될 수 있다. 제어 프로세서(106)는 임의의 지원되는 디바이스에 대한 전기 신호 규격을 디코드하도록 동작 가능할 수 있으며, 다운스트림 포트의 프로토콜을 제어하기 위해 상기 정보를 이용할 수 있다. 이러한 방식으로, USB 허브(100)는 최적의 벤더 특정 또는 제품 특정 전기 핸드셰이크 충전 프로토콜을 구현할 수 있다.
데이터 보안
보안 설비들(facilities)에서는 보안 데이터의 도용이 주요 관심사이다. 키보드, 마우스 또는 프린터를 연결하는데 사용되는 USB 포트는 또한, 대용량 데이터가 매우 짧은 시간 내에 다운로드될 수 있는 저장 디바이스를 연결하는데 사용될 수도 있다. 인증되지 않은 데이터 액세스를 금지하기 위해, USB 허브(100)의 특정 실시예들은 데이터 보안 기능을 구현할 수 있다. 예를 들어, USB 허브(100)는 예를 들어 디바이스가 키보드, 마우스 또는 저장 디바이스인지를 결정할 수 있다. USB 허브(100)는 디바이스의 클래스를 봄으로써 열거 동안에 이 정보를 얻을 수 있다. USB 허브(100)는 이어서 데이터가 저장 디바이스로 전송되지 않도록 저장 디바이스를 선택적으로 차단할 수 있다. 특정 실시예들에서, USB 허브(100)는 디바이스가 완전히 열거되지 않도록 연결 프로세스를 정지(halting)시킴으로써 저장 디바이스들을 차단할 수 있다. 다른 실시예들에서, USB 허브(100)는 분리(detach) 이벤트를 강제함으로써 저장 디바이스들을 차단할 수 있다. 또 다른 실시예들에서, USB 허브(100)는 매우 낮은 속도로 통신하도록 상기 연결을 강제함으로써 저장 디바이스를 차단할 수 있다. 이 이후의 기능은 연결을 완전히 차단하지 못할 수도 있지만 다량의 데이터가 단기간에 다운로드될 수 없게 함으로써 데이터 보안을 제공할 수 있다. 저장 디바이스가 연결을 시도할 때, USB 허브(100)는 이들 서로 다른 차단 방식들을 구현할 수 있다. 동일 또는 서로 다른 실시예들에서, 모든 프린터 클래스 디바이스들은 차단될 수 있다. 동일 또는 또 하나의 실시예들에서, 벌크 아웃(BULK OUT) 엔드포인트들(즉, 아웃고잉 데이터)을 갖는 모든 디바이스들은 차단될 수 있다. 따라서, USB 허브(100)는 잠재적으로 위험한 디바이스 유형으로부터의 연결을 차단함으로써 데이터 보안을 제공할 수 있다. 역으로, USB 허브(100)로 인해, 키보드 또는 마우스 디바이스가 정상적으로 열거되어 동작할 수 있다.
다른 실시예들에서, USB 허브(100)는 USB 대 USB 브리지로서 동작함으로써 데이터 보안을 제공할 수 있다. 예를 들어, 디바이스가 USB 허브(100)의 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 연결을 시도할 때에는, USB 허브(100)는 연결을 시도하는 디바이스의 유형을 결정할 수 있다. 이 실시예에서, USB 허브(100)는 키보드들 및 마우스들 이외의 모든 디바이스들을 차단할 수 있다. 키보드 또는 마우스가 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 연결을 시도할 때에는, USB 허브(100)는 상기 포트를 에뮬레이션 키보드 또는 에뮬레이션 마우스로서 각각 열거할 수 있다. 이 시나리오에서, 제어 프로세서(106)는 USB 키보드 또는 USB 마우스를 에뮬레이트하는 소프트웨어를 구현할 수 있으며, USB 허브(100)는 이어서 호스트와 디바이스 중 어느 하나가 USB 대 USB 브리지에 대해 알지 못한 상태에서 업스트림 호스트 포트와 키보드/마우스 디바이스 사이의 트래픽을 관리할 수 있다. 예를 들어, 제어 프로세서(106)는 디바이스로부터 호스트로 송신된 데이터가 USB 허브 코어(102)보다는 제어 프로세서(106)로 향하게 할 수 있도록 멀티플렉서들/디멀티플렉서들(114a-d)을 제어할 수 있다. 제어 프로세서(106)는 유사하게 업스트림 포트(104)를 통해 호스트로부터 송신들을 수신할 수 있을 것이다. 마우스/키보드 디바이스를 에뮬레이트함으로써, 제어 프로세서(106)는 안전한 데이터 트래픽을 겨우 가능하게 할 수 있다. 따라서, 데이터 트래픽은 단방향일 수 있고 양방향 트래픽은 브리지에 의해 종료될 수 있다. 특정 실시예들에 따르면, 특별한 드라이버를 필요로 할 수 있는 새로운 생성 디바이스들의 특수 모드들 또는 기능들은 USB 대 USB 브리지에 의해 차단될 수 있다.
도 5는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 데이터 저장 보안을 제공하기 위한 예시적인 방법(500)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(500)은 단계(502)에서 시작하는 것이 바람직하다. 전술한 바와 같이, 본 개시의 교시는 USB 허브(100)의 다양한 환경 설정들로 구현될 수 있다. 이와 같이, 방법(500)에 대한 바람직한 초기화 포인트 및 방법(500)을 포함하는 단계들(502-526)의 순서는 선택된 구현에 의존할 수 있다.
단계(502)에서, USB 허브(100)가 초기화될 수 있다. 예를 들어, USB 허브(100)는 (전원 또는 USB 호스트에의 연결을 통해) 전원이 켜질 수 있으며, USB 허브 코어(102)는 초기화될 수 있다. 단계(504)에서, USB 허브(100)는 다운스트림 디바이스가 예를 들어 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 부착되었는지를 결정하기 위해 계속 체크할 수 있다. 어떠한 다운스트림 디바이스도 부착되어 있지 않으면, USB 허브(100)는 단계(504)로 돌아가서 다운스트림 디바이스가 검출될 때까지 이러한 방식으로 계속될 수 있다. 다운스트림 디바이스 연결 검출시, USB 허브(100)는 단계(506)에서 검출된 디바이스에 연결할 수 있고, 그리고 단계(508)에서 디바이스를 열거할 수 있다. 열거 중에, USB 허브(100)는 새로이 부착된 디바이스의 VID, PID 및 디바이스 클래스를 판독할 수 있다.
단계(510)에서, USB 허브(100)는 예를 들어, 환경 설정 표(300)의 "데이터 보안" 값을 체크함으로써 데이터 보안 기능이 인에이블되어 있는지를 결정할 수 있다. "데이터 보안?" 값이 인에이블되어 있지 않으면, 방법(500)은 단계(512)로 진행하고 표준 USB 프로토콜에 따라 디바이스를 열거할 수 있다. "데이터 보안?" 값이 인에이블되어 있으면, 방법(500)은 단계(514)로 진행하고, 예를 들어 환경 설정 표(300)의 "데이터 보안 레벨 2?" 값을 체크함으로써 데이터 보안 레벨 2 기능(즉, USB 대 USB 브리지 기능)이 인에이블되어 있는지를 결정할 수 있다. 인에이블되어 있지 않으면, 방법(500)은 단계(516)로 진행하고 USB 허브(100)에 부착하려는 디바이스가 데이터 보안 기능에 의해 차단되어야 하는 클래스 또는 타입의 것인지를 결정할 수 있다. 일 실시예에서, USB 허브(100)는 환경 설정 표(300)의 "데이터 보안 규격" 값(DS_Specification)을 사용하여, 데이터 보안 기능이 인에이블되어 있을 때 어떤 클래스 또는 유형의 디바이스가 차단되어야 하는지를 결정할 수 있다. 예를 들어 그리고 제한 없이, DS_Specification에는 차단되어야 하는 디바이스 클래스들(예컨대, 대용량 저장 디바이스, 프린터들 등) 또는 디바이스 유형들(예 : 벌크 아웃 종단점들을 가진 디바이스들)의 목록이 함유될 수 있다.
방법(500)은 DS_Specification에 있는 이 정보를 사용하여 단계(516)에서 USB 허브(100)에 연결하려는 디바이스가 차단되어야 하는지를 결정할 수 있다. USB 허브(100)에 연결을 시도하는 디바이스가 DS_Specification에 열거된 이들 디바이스들에 속하지 않으면, 방법(500)은 단계(512)로 진행하여 표준 USB 프로토콜에 따라 디바이스를 열거할 수 있다. 그렇지 않으면, 방법(500)은 단계(518)로 진행하여 데이터 보안 기능이 상술한 "저속" 차단 기능을 구현하는지를 결정할 수 있다. 특정 실시예들에서, 이 환경 설정 옵션은 (차단되어야 하는 디바이스 클래스/유형들과 함께) DS_Specification 환경 설정 값에서 제공된다. 대안적인 실시예들에서, 환경 설정 표(300)는 별도의 "저속 차단?" 환경 설정 옵션을 포함할 수 있다. 단계(518)에서, USB 허브(100)가 저속 차단 기능이 인에이블되어 있다고 결정하면, 방법(500)은 디바이스가 열거될 수 있고 저속 디바이스로서 환경 설정될 수 있는 단계(522)로 진행할 수 있다. 단계(518)에서, USB 허브(100)가 저속 차단 기능이 인에이블되어 있지 않은 것으로 결정하면, 방법(500)은 디바이스 연결이 차단될 수 있는 단계(520)로 진행한다.
단계(514)로 돌아가서, USB 허브(100)가 레벨 2 보안 기능이 인에이블되어 있다고 결정하면, 방법(500)은 단계(524)로 진행하여 USB 허브(100)에 부착하려고 시도하는 디바이스가 레벨 2 보안 기능에 의해 차단되어야 하는 클래스 또는 유형의 것인지를 결정할 수 있다. 방법(500)은 단계(516)에서 설명된 것과 유사한 방식으로 단계(524)에서 결정할 수 있다. USB 허브(100)가 부착을 시도하는 디바이스가 차단되어야 한다고 결정하면, 방법(500)은 디바이스 연결이 차단 될 수 있는 단계(512)로 진행할 될 수 있다. 그렇지 않으면, 방법(500)은 USB 허브(100)가 (전술한 바와 같이) USB 대 USB 브리지를 확립할 수 있는 단계(526)로 진행할 수 있다.
벤더 매칭
USB 허브(100)는 하나 이상의 벤더들에 의해 제조된 디바이스들에 우선권을 부여하는 벤더 매칭 기능을 제공할 수 있다. 예를 들어, 선호 벤더에 의해 제조된 디바이스에는 최고의 대역폭 연결 또는 이용 가능한 최대 전력이 제공될 수 있다. 대조적으로, 비-선호 벤더에 의해 제조한 디바이스에는 보다 낮은 대역폭 연결 또는 보다 낮은 전원 연결이 부여될 수 있다. 이러한 방식으로, 선호 벤더들에 의해 제공된 디바이스들은 우수한 성능을 갖는 것처럼 보일 수 있다.
도 6은 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 벤더 매칭을 제공하기 위한 예시적인 방법(600)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(600)은 단계(602)에서 시작하는 것이 바람직하다. 전술한 바와 같이, 본 개시의 교시는 USB 허브(100)의 다양한 환경 설정으로 구현될 수 있다. 이와 같이, 방법(600)을 위한 바람직한 초기화 포인트 및 방법(600)을 포함하는 단계들(602-616)의 순서는 선택된 구현에 의존할 수 있다.
단계(602)에서, USB 허브(100)가 초기화될 수 있다. 예를 들어, USB 허브(100)는 (전원 또는 USB 호스트에의 연결을 통해) 전원이 켜질 수 있으며, USB 허브 코어(102)는 초기화될 수 있다. 단계(604)에서, USB 허브(100)는 다운스트림 디바이스가 예를 들어 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 부착되었는지를 결정하기 위해 계속 체크할 수 있다. 어떠한 다운스트림 디바이스도 부착되어 있지 않으면, USB 허브(100)는 단계(604)로 돌아가서 다운스트림 디바이스가 검출될 때까지 이러한 방식으로 계속할 수 있다. 다운스트림 디바이스 연결 검출시, USB 허브(100)는 단계(606)에서 검출된 디바이스에 연결할 수 있고 단계(608)에서 디바이스를 열거할 수 있다. 열거 중에, USB 허브(100)는 새로이 부착된 디바이스의 VID 및 PID를 판독할 수 있다.
단계(610)에서, USB 허브(100)는 예를 들어, 환경 설정 표(300)의 "벤더 선택?" 값을 체크함으로써 벤더 선택 기능이 인에이블되어 있는지를 결정할 수 있다. "벤더 선택?" 값이 인에이블되어 있지 않으면, 방법(600)은 단계(612)로 진행하여 표준 USB 프로토콜에 따라 디바이스를 열거할 수 있다. "벤더 선택?" 값이 인에이블되어 있으면, 방법(600)은 단계(614)로 진행하여 연결을 시도하는 디바이스가 벤더 선택에 의해 제공되는지를 결정할 수 있다. 일 실시예에 따르면, USB 허브(100)는 환경 설정 표(300)의 "벤더 선택 규격" 값(VoC_Specification)을 사용하여 어떤 벤더(또는 벤더들)가 선호 벤더인지를 결정할 수 있다. 예를 들어 그리고 제한 없이, VoC_Specification은 선호 벤더들에 해당하는 하나 이상의 벤더 ID들(VID들)의 목록을 포함할 수 있다. 이 실시예에서, USB 허브(100)는 연결을 시도하는 디바이스의 VID가 VoC_Specification 목록의 VID와 매칭하는지를 간단히 결정할 수 있다. 대안적인 실시예들에서, USB 허브(100)는 연결을 시도하는 디바이스가 매칭 VID/PID 조합에 대해 데이터베이스(200)를 검색함으로써 선호 벤더에 의해 제공되는지를 결정할 수 있고, 매칭이 발견되면 데이터베이스(200)의 매칭 행에 있는 "벤더 선택?" 열이 인에이블되어 있는지를 결정할 수 있다. 단계(614)에서, USB 허브(100)가 디바이스가 선호 벤더에 의해 제공된다고 결정하면, 방법(600)은 단계(612)로 진행하여 표준 (또는 향상된, 예를 들어 더 많은 전력 등) USB 프로토콜에 따라 디바이스를 열거할 수 있다. 단계(614)에서 USB 허브(100)는 디바이스가 선호 벤더에 의해 제공되지 않는다고 결정하면, 방법(600)은 단계(616)로 진행할 수 있으며, 차선의 전력 및/또는 속도 환경 설정으로 디바이스를 열거할 수 있다. 일 실시예에서, 환경 설정 표(300)의 VoC_Specification은 비-선호 벤더들에 의해 제공되는 디바이스들에 할당되어야 하는 세팅들(예를 들어, 차선의 전력, 속도 또는 이들 둘 다로 디바이스를 환경 설정할 지의 여부)을 제공한다.
디바이스 인증
USB 허브(100)는 디바이스가 적절한 자격 증명서 없이 업스트림 USB 호스트에 부착되는 것을 방지하는 디바이스 인증 기능을 제공할 수 있다. 일 실시예에서, 디바이스가 USB 허브(100)에 부착하려고 시도할 때, USB 허브(100)는 USB 호스트 스택 + 미니 스케줄러 + 메시지 파이프들(108)을 활용하여 디바이스를 열거할 수 있으며, USB 허브(100)는 USB 호스트로서 디바이스에 연결된다. 이 실시예에서, USB 허브(100)는 인증 시도(authentication challenge)를 포함하는 트랜잭션들(transactions)을 개시할 수 있다. 디바이스가 인증 시도에 응답하지 않거나 부정확하게 응답하면 USB 허브(100)는 연결을 차단할 수 있다. 일부 실시예들에서, USB 허브(100)는 디바이스가 제1 시도에 대해 부정확하게 응답하는 경우에 하나 이상의 인증 시도를 발하도록 구성될 수 있다.
도 7은 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 디바이스 인증을 제공하기 위한 예시적인 방법(700)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(700)은 단계(702)에서 시작하는 것이 바람직하다. 전술한 바와 같이, 본 개시의 교시는 USB 허브(100)의 다양한 환경 설정으로 구현될 수 있다. 이와 같이, 방법(700)을 위한 바람직한 초기화 포인트 및 방법(700)을 포함하는 단계들(702-718)의 순서는 선택된 구현에 의존할 수 있다.
단계(702)에서, USB 허브(100)가 초기화될 수 있다. 예를 들어, USB 허브(100)는 (전원 또는 USB 호스트에의 연결을 통해) 전원이 켜질 수 있으며, USB 허브 코어(102)는 초기화될 수 있다. 단계(704)에서, USB 허브(100)는 다운스트림 디바이스가 예를 들어 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 부착되었는지를 결정하기 위해 계속 체크할 수 있다. 어떠한 다운스트림 디바이스도 부착되지 않았으면, USB 허브(100)는 단계(704)로 돌아가서 다운스트림 디바이스가 검출될 때까지 이러한 방식으로 계속될 수 있다. 다운스트림 디바이스 연결 검출시, USB 허브(100)는 단계(706)에서 검출된 디바이스에 연결될 수 있고 단계(708)에서 디바이스를 열거할 수 있다. 일 실시예에서, USB 허브(100)는 USB 호스트 스택 + 미니 스케쥴러 + 메시지 파이프들(108)을 활용하여 USB 허브(100)가 USB 호스트로서 디바이스에 연결되도록 디바이스를 열거할 수 있다. 열거 중에, USB 허브(100)는 새로이 부착된 디바이스의 VID 및 PID를 판독할 수 있다.
단계(710)에서, USB 허브(100)는 새로이 부착된 디바이스가 인증을 필요로 하는지를 결정할 수 있다. 예를 들어, VID/PID는 제어 프로세서(106)에 제공될 수 있고, 제어 프로세서(106)는 데이터베이스(200)에 질의하여 데이터베이스가 새로이 부착된 디바이스의 VID/PID와 매칭하는 엔트리(행)을 함유하고 있는지 그리고 임의의 매칭 엔트리가 디바이스가 인증을 필요로 한다(즉, 열 G "Auth Req'd?"가 인에이블되어 있음)는 것을 나타내는지를 결정할 수 있다. 데이터베이스(200)에 어떠한 VID/PID 매칭도 없으면, 방법(700)은 단계(710)에서 단계(712)로 진행할 수 있고, 그리고 USB 허브(100)가 USB 호스트로서 연결되었던 실례들과 관련 있는 상기 설명된 임의의 방식으로 디바이스를 업스트림 USB 포트(104)에 연결하게 할 수 있다. USB 허브(100)가 데이터베이스(200)에 VID/PID 일치가 있다고 단계(710)에서 결정하면, 방법(700)은 단계(710)에서 단계(714)로 진행할 수 있다.
단계(714)에서, USB 허브(100)는 디바이스에 인증 시도를 발할 수 있다. 인증 시도는 통상의 기술자에게 공지된 많은 형태를 취할 수 있고, 일반적으로 새로이 부착된 디바이스 VID/PID에 대응하는 데이터베이스(200)에 있는 인증 규격(열 H)에 정의될 수 있다. 예를 들어, 인증 규격은 디바이스가 특정 핀 번호 또는 암호를 사용하여 인증 시도에 응답해야 함을 나타낼 수 있다. 다른 실시예들에서(즉, USB 허브(100)가 인터넷에 연결됨), 인증 규격은 원격 인증 등을 제한 없이 포함하는 더욱 복잡한 인증 방법들을 제공할 수 있다.
단계(716)에서, USB 허브(100)는 디바이스가 인증 시도에 대해 정확하게 응답하였는지를 결정할 수 있다. 디바이스가 정확한 응답을 제공하였다면, 방법(700)은 단계(716)에서 단계(712)로 진행할 수 있고, USB 허브(100)가 USB 호스트로로서 디바이스에 연결되었던 실례들과 관련 있는 상기 설명된 임의의 방식으로 디바이스를 업스트림 USB 포트(104)에 연결되게 할 수 있다. 디바이스가 부정확한 응답을 제공한 경우, 인증 규격이 재시도를 허용하면 USB 허브(100)는 단계 714(점선 720)로 되돌아감으로써 시도를 다시 발하려고 시도할 수 있다. 그렇지 않으면, 방법(700)은 단계(718)로 진행할 수 있고 디바이스는 업스트림 포트(104)에 있는 USB 호스트에 연결하는 것이 허용되지 않는다.
데이터 캡처/디버그
USB 허브(100)는 데이터 캡처 및/또는 디버그 기능을 제공할 수 있다. 예를 들어, USB 허브(100)는 특정 방식으로 특정 USB 트래픽에 응답하도록 프로그래밍될 수 있다. 대안으로 또는 부가적으로, USB 허브(100)는 하나의 다운스트림 포트로부터 또 하나의 다운스트림 포트로 트래픽을 반영하도록 프로그래밍될 수 있다.
일 실시예에 따르면, USB 허브(100)는 특정 유형들의 USB 트래픽에 자동 응답을 제공할 수 있다. USB 허브(100)는 예를 들어, 환경 설정 표(300)의 "자동 응답?" 값을 체크함으로써 자동 응답 기능이 인에이블되어 있는지를 결정할 수 있다. 일 실시예에서, USB 허브(100)는 환경 설정 표(300)의 "자동 응답 규격" 값(AR_Specification)을 사용하여 어떤 트랜잭션들이 자동 응답을 필요로 하는지 그리고 상기 응답이 무엇인지를 결정할 수 있다. 예를 들어 그리고 제한 없이, AR_Specification은 모니터링해야 하는 다운스트림 포트들, 디바이스 클래스들(예컨대, 대용량 저장 디바이스, 프린터들 등) 또는 디바이스 유형들(예컨대, 벌크 인 종단점들을 가진 디바이스들 등)의 목록을 함유할 수 있다. 유사하게, AR_Specification은 자동 응답을 수신해야 하는 트래픽 유형(예컨대, 벌크 인 패킷, 제어 판독 등)의 목록을 포함할 수 있다. 또한, AR_Specification은 특정 트래픽과 마주칠 때 USB 허브(100)가 제공해야 하는 응답을 제공할 수 있다. 비-제한적인 예로서, AR_Specification은 다운스트림 포트(116c)의 벌크 인 트랜잭션들의 데이터 페이즈가 NAK 핸드셰이크를 수신해야 한다고 명기할 수 있다. 이 예에서, USB 허브(100)는 다운스트림 포트(116c)를 모니터링할 수 있고, 디바이스에 의한 벌크 인 데이터의 전송 후에, USB 호스트(100)는 멀티플렉서/디멀티플렉서(114c)가 (신호(110c)를 통해 USB 허브 코어(102)에 연결된 멀티플렉서/디멀티플렉서(114c) 입력을 통해) 달리 업스트림 호스트로부터 전송될 응답을 통과하게 할 수 있게 하기보다는 제어 프로세서(106)로부터 다운스트림 포트(116c)로 NAK 핸드셰이크를 통과하게 할 수 있다. 멀티플렉서들/디멀티플렉서들(114a-d)을 제어함으로써, USB 제어 프로세서(106)는 어느 방향(즉, 업스트림 또는 다운스트림)으로든 자동 응답들을 제공할 수 있다.
동일 또는 대안적인 실시예에 따르면, USB 허브(100)는 하나의 다운스트림 포트로부터 다른 다운스트림 포트로 데이터 반영을 제공할 수 있다(USB 규격에 따라, 업스트림 포트(104)에서 시작된 모든 트래픽은 모든 다운스트림 디바이스로 제공(broadcast)된다). USB 허브(100)는 예를 들어, 환경 설정 표(300)의 "데이터 반영?" 값을 체크함으로써 데이터 반영 기능이 인에이블되어 있는지를 결정할 수 있다. 일 실시예에서, USB 허브(100)는 환경 설정 표(300)의 "데이터 반영 규격" 값(DR_Specification)을 사용하여 어떤 트랜잭션들이 데이터 반영을 필요로 하는지를 결정할 수 있다. 예를 들어 그리고 제한 없이, DR_Specification은 데이터가 반영되어야 하는 다운스트림 포트들, 디바이스 클래스들(예컨대, 대용량 저장 디바이스, 프린터들 등) 또는 디바이스 유형들(예 : 벌크 인 종단점들을 갖는 디바이스들 등)을 포함할 수 있다. 또한, DR_Specification은 데이터가 반영되어야 하는 목적지 포트를 지정할 수 있다.
도 8은 본 개시의 특정 실시예들에 따른, 데이터 반영 기능을 이용하는 USB 허브(800)에서의 예시적인 데이터 반영의 블록도를 도시한다. 이 예에서, DR_Specification은 다운스트림 포트(D)로부터의 신호(810)가 다운스트림 포트(A)에 신호(812)로서 반영되어야 한다고 명기할 수 있다. 멀티플렉서들/디멀티플렉서들(814a 및 814d)을 제어함으로써, USB 제어 프로세서(106)는 신호(810)로부터 신호(812)로 데이터 반영(점선)을 제공할 수 있다. 동시에, 다운스트림 포트(810)의 신호(810)는 연결(816)을 통해 USB 허브 코어(802)로 (그리고 이어서 업스트림 포트(818)로) 통과된다. 이 실시예에 따르면, 다운스트림 포트(A)는 예를 들어 디버그 또는 다른 목적을 위해 상기 반영된 데이터를 모니터링할 수 있는 디바이스에 연결될 수 있다.
대안적인 실시예에서, 데이터 반영은 USB 허브(800)의 물리적 입력부들을 통해 제어될 수 있다. 이러한 실시예에서, 제어 프로세서는 물리적 스위치들에 연결된 범용 I/O 핀들을 포함할 수 있다. DR_Specification과 유사하게, 이들 물리적 스위치들은 (1) 데이터 반영이 인에이블되어 있는지 및 (2) 데이터 반영 기능의 소스 및 목적지 포트들, 중 하나 또는 둘 다를 지정할 수 있다. 예를 들어, (도 8에 도시된 바와 같은) 본 개시의 4 포트 허브 실시예는 물리적 "DR 온/오프" 버튼, 4 위치 "DR 소스" 스위치, 및 4 위치 "DR 목적지" 스위치를 제공할 수 있다. USB 허브(800)의 사용자는 "DR 소스" 스위치를 다운스트림 포트(D)로 설정하고 "DR 목적지" 스위치를 다운스트림 포트(A)로 설정하고, 그리고 "DR 온/오프" 스위치를 온 위치로 돌림으로써 데이터 반영을 가능하게 할 수 있다. 이러한 설정으로, 다운스트림 포트(D)로부터의 데이터가 다운스트림 포트(A)로 반영될 것이라는 점에서, USB 허브(800)는 도 8에 묘사된 바와 같이 동작할 것이다. 본 개시의 특정 실시예들은 데이터 반영 기능의 다양한 레벨의 물리적 대 소프트웨어 제어를 제공하기 위해 DR_Specification와 함께 물리적 스위치들의 사용을 결합할 수 있다.
역할 전환
플렉스커넥트는 마이크로칩 USB 허브에 고유한 기능이다. 이 기능으로 인해, 허브가 업스트림 및 다운스트림 포트들로서 동작하는 물리적 포트들을 동적으로 변경할 수 있다. 이 기능으로 인해, 시스템 설계자는 2개의 전용 커넥터들을 필요로 하지 않고도 USB 호스트 및 USB 디바이스로서 동작하는 제품을 개발할 수 있다. 또한, 이 기능으로 인해, 하나의 포트에 이 기능을 가진 시스템이 플렉스커넥트 허브를 통해 해당 포트에 연결된 디바이스들을 확장할 수 있다. 마이크로칩의 플렉스 커넥트(플렉스커넥트) 기능은 마이크로칩 애플리케이션 노트 AN1700에 더 자세히 설명되어 있으며, 상기 문헌의 전체는 참조로서 본 명세서에 통합된다. 현재, 플렉스커넥트 기능을 사용하려면 디바이스 및 호스트가 둘 다 플렉스커넥트를 감지해야 한다.
USB 허브(100)는 USB 허브(100)에 연결된 플렉스커넥트 디바이스이 역할 전환할 수 있게 하고 USB 호스트로서 동작할 수 있게 하는 역할 전환 기능을 구현할 수 있으며, 이 경우에 USB 허브(100)의 업스트림 포트(104)에 연결된 USB 호스트가 플렉스커넥트를 감지하지 않거나 또는 업스트림 USB 호스트가 존재하지 않는다.
도 9는 본 개시의 특정 실시예들에 따른, USB 허브에서의 향상된 역할 전환을 제공하기 위한 예시적인 방법(900)의 흐름도를 도시한다. 일 실시예에 따르면, 방법(900)은 단계(902)에서 시작하는 것이 바람직하다. 전술한 바와 같이, 본 개시의 교시는 USB 허브(100)의 다양한 환경 설정으로 구현될 수 있다. 이와 같이, 방법(900)을 위한 바람직한 초기화 포인트 및 방법(900)을 포함하는 단계들(902-918)의 순서는 선택된 구현에 의존할 수 있다.
단계(902)에서, USB 허브(100)가 초기화될 수 있다. 예를 들어, USB 허브(100)는 (전원 또는 USB 호스트에의 연결을 통해) 전원이 켜질 수 있으며, USB 허브 코어(102)는 초기화될 수 있다. 단계(904)에서, USB 허브(100)는 다운스트림 디바이스가 예를 들어 다운스트림 포트들(116a-d) 중 하나의 다운스트림 포트에 부착되었는지를 결정하기 위해 계속 체크 할 수 있다. 어떠한 다운스트림 디바이스도 부착되어 있지 않으면, USB 허브(100)는 단계(904)로 돌아가서 다운스트림 디바이스가 검출될 때까지 이러한 방식으로 계속될 수 있다. 다운스트림 디바이스 연결 검출시, USB 허브(100)는 단계(906)에서 검출된 디바이스에 연결될 수 있고 단계(908)에서 디바이스를 열거할 수 있다. USB 허브(100)는 USB 호스트 스택 + 미니 스케줄러 + 메시지 파이프들(108)을 이용하여, USB 허브(100)가 USB 호스트로서 디바이스에 연결되도록 디바이스를 열거할 수 있다. 열거 중에, USB 허브(100)는 새로이 부착된 디바이스의 VID 및 PID를 판독할 수 있다.
단계(910)에서, USB 허브(100)는 새로이 부착된 디바이스가 플렉스커넥트를 감지하는지를 결정할 수 있다. 예를 들어, VID/PID는 제어 프로세서(106)에 제공될 수 있고, 제어 프로세서(106)는 데이터베이스(200)에 질의하여 데이터베이스가 새로 부착된 디바이스의 VID/PID와 매칭하는 엔트리(행)를 함유하고 있는지 그리고 임의의 매칭 엔트리가 디바이스가 플렉스커넥트를 감지하는 것(즉, "플렉스커넥트?" 열 I가 이 인에이블되어 있음)을 나타내는지를 결정할 수 있다. 데이터베이스(200)에 어떠한 VID/PID 일치도 없다면, 방법(900)은 단계(910)에서 단계(912)로 진행할 수 있고, USB 허브(100)가 USB 호스트로서 디바이스에 연결되었던 실례들과 관련된 전술한 임의의 방식으로 디바이스가 업스트림 USB 포트(104)에 연결되게 할 수 있다. USB 허브(100)가 데이터베이스(200)에 VID/PID 매칭이 존재하고 상기 매칭이 플렉스커넥트 감지 디바이스를 나타낸다고 단계(910)에서 결정되면, 방법(900)은 단계(910)에서 단계(914)로 진행할 수 있다.
단계(914)에서, USB 허브(100)는 플렉스커넥트 감지 디바이스가 USB 호스트가 되기를 원하는지를 결정할 수 있다. 예를 들어, USB 허브(100)는 제어 판독 트랜잭션을 개시하고 디바이스에 의해 제공된 응답에 근거하여 역할 전환이 수행되어야 한다고 결정할 수 있다. 특정 실시예들에서, 디바이스는 항상 역할 전환을 일으키도록 환경 설정될 수 있다. 다른 실시예들에서, 디바이스는 디바이스가 USB 호스트가 되는 것을 디바이스의 사용자가 요청할 수 있도록 사용자 인터페이스를 포함할 수 있다. 예를 들어, 디바이스는 USB 허브(100)의 업스트림 포트(104)에 USB 호스트로서 연결된 자동차 인포테인먼트 시스템의 헤드 유닛을 구비한 USB 허브(100)에 연결된 스마트폰일 수 있다. 스마트폰은 사용자가 스마트폰으로부터 인포테인먼트 시스템을 제어하는 것을 선택할 수 있도록 사용자에게 하나의 스위치를 제공할 수 있다. 단계(914)에서 방법(900)이 역할 전환이 필요하지 않는다고 결정하면, 방법(900)은 단계(910)에서 단계(912)로 진행할 수 있고, USB 허브(100)가 USB 호스트로서 디바이스에 연결되었던 실례들과 관련된 전술한 임의의 방식으로 디바이스를 업스트림 USB 포트(104)에 연결되게 할 수 있다.
단계(914)에서, 방법(900)은 역할 전환이 필요한 것으로 결정하면, 방법(900)은 단계(916)로 진행할 수 있다. 단계(916)에서, USB 허브(100)는 (존재한다면) 현재 USB 호스트를 디바이스 모드로 스위칭되게 할 수 있다. 예를 들어, USB 허브(100)는 USB OTG 호스트 협상 프로토콜 또는 세션 요청 프로토콜을 사용하여 방향 변경을 개시할 수 있다. 대안으로, USB 허브(100)는 호스트가 역할을 전환해야 한다는 것을 나타내는 패킷을 USB 호스트에 보낼 수 있다. 단계(918)에서, USB 허브는 새로이 부착된 디바이스가 호스트 모드로 전환되게 할 수 있다. 예를 들어, USB 허브(100)는 USB OTG 호스트 협상 프로토콜 또는 세션 요청 프로토콜 또는 마이크로칩 플렉스커넥트 프로토콜을 사용하여 방향 변경을 개시할 수 있다. 대안으로, USB 허브(100)는 역할 전환을 나타내는 패킷을 디바이스에 전송할 수 있다. 단계(918)에서, USB 허브(100)는 또한, 배터리 충전을 위해 얼마나 많은 전력을 디바이스가 인출할 수 있는지를 디바이스에 알릴 수 있다. 새로운 호스트는 버스 상의 모든 디바이스를 열거하여 모든 디바이스를 제어할 수 있다. 스마트폰 및 자동차 인포테인먼트 시스템을 포함하는 이전의 예에서, 이러한 역할 전환으로 인해, 스마트폰이 예를 들어 음악을 재생하고, 자동차 등의 볼륨을 조절함으로써 인포테인먼트 시스템을 제어할 수 있다. 새로운 호스트(예컨대, 스마트폰)가 분리된 경우, USB 허브(100)는 (존재한다면) 종전의 호스트에게 역할을 전환하고 다시 USB 호스트로서 동작하도록 알릴 수 있다.
또한, 도 4-7 및 도 9는 여기에 도시된 방법들과 관련하여 취해질 특정 수의 단계들을 개시하지만, 이들 방법은 도시된 것보다 더 많거나 적은 단계들로 실행될 수 있다. 또한, 도 4-7 및 도 9는 여기에 묘사된 방법들과 관련하여 취해질 단계들의 특정 순서를 개시하고, 이들 단계는 임의의 적절한 순서로 완료될 수 있다.
본 명세서에 개시된 방법 및 시스템을 사용하여, 운영 체제 또는 USB 스택/드라이버를 변경하지 않고도, 향상된 배터리 충전, 데이터 저장 보안, 벤더 매칭, 디바이스 인증, 데이터 캡처/디버그 및 역할 전환을 제공할 수 있는 USB 허브가 제공될 수 있다.
본 개시가 상세하게 설명되었을지라도, 본 개시는 첨부된 청구범위에 의해 정의된 바와 같은 본 개시의 사상 및 범위를 벗어나지 않고 다양한 변경, 대체 및 변형이 이루어질 수 있다고 이해해야 한다.

Claims (33)

  1. USB 허브로서,
    허브 업스트림 포트;
    복수의 허브 다운스트림 포트들;
    프로세서;
    USB 호스트 스택 코드 및 복수의 환경 설정 파라미터들을 저장하기 위해 상기 프로세서에 통신 가능하게 결합되는 메모리;
    코어 업스트림 포트 및 복수의 코어 다운스트림 포트들을 구비하는 USB 허브 코어 - 상기 USB 허브 코어는 상기 코어 업스트림 포트와 상기 복수의 코어 다운스트림 포트들 사이에 USB 허브 인터페이스를 구현하도록 동작 가능함 - ; 및
    복수의 멀티플렉서들을 포함하고,
    각 멀티플렉서는:
    상기 허브 다운스트림 포트들 중 하나의 다운스트림 포트에 통신 가능하게 결합된 제1 포트,
    상기 복수의 코어 다운스트림 포트들 중 하나에 통신 가능하게 결합된 제2 포트,
    상기 프로세서에 통신 가능하게 결합된 제3 포트와,
    상기 프로세서에 통신 가능하게 결합되고 그리고 상기 제1 포트를 상기 제2 포트, 상기 제3 포트, 또는 상기 제2 포트 및 상기 제3 포트 둘 다와 통신 가능하게 결합하도록 동작할 수 있는 선택 입력부를 구비하고,
    상기 프로세서는,
    상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 USB 디바이스가 결합될 때를 검출하고,
    상기 제1 포트가 상기 제3 포트에 연결되도록 상기 제1 허브 다운스트림 포트에 대응하는 제1 멀티플렉서의 상기 선택 입력부를 제어하고,
    상기 USB 호스트 스택 코드를 실행하고, 그리고
    상기 USB 디바이스를 열거하도록 구성된, USB 허브.
  2. 제1항에 있어서,
    상기 USB 디바이스를 열거한 후에, 상기 프로세서는 상기 허브 업스트림 포트에 결합된 업스트림 USB 호스트에 의해 상기 USB 디바이스가 열거될 수 있도록 더 구성된, USB 허브.
  3. 제1항 또는 제2항에 있어서,
    상기 프로세서가 상기 업스트림 USB 호스트에 의해 상기 USB 디바이스가 열거될 수 있게 하는 것은:
    상기 프로세서는 상기 제1 포트가 상기 제2 포트에 연결되도록 상기 제1 멀티플렉서의 상기 선택 입력부를 제어하는 것; 그리고
    상기 프로세서는 상기 USB 디바이스로 리셋 신호를 보내는 것을 포함하는, USB 허브.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 복수의 환경 설정 파라미터들은 복수의 필드들을 갖는 복수의 레코드들을 함유하는 데이터베이스를 포함하고, 각 레코드는 상기 USB 허브에 의해 처리되는 특정 USB 디바이스에 대응하는, USB 허브.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하고;
    상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스를 위해 사용자 지정 배터리 충전 프로토콜을 결정하고; 그리고
    상기 USB 디바이스에 대응하는 특정 배터리 충전 프로토콜을 사용하여 상기 USB 허브가 상기 USB 디바이스를 충전할 수 있도록 더 구성된, USB 허브.
  6. 제5항에 있어서,
    상기 특정 배터리 충전 프로토콜은 사용자 지정 전기 핸드셰이크 및 사용자 지정 메시지 기반 핸드셰이크 중 하나인, USB 허브.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 정보를 획득하고;
    상기 획득된 정보를 사용하여, 상기 USB 디바이스가 차단되어야 한다고 결정하고; 그리고
    상기 USB 허브가 상기 USB 디바이스 연결을 차단하게 하도록 더 구성된, USB 허브.
  8. 제7항에 있어서,
    상기 획득된 정보는 디바이스 클래스 코드인, USB 허브.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 USB 디바이스 연결은 상기 USB 디바이스를 저속 디바이스로서 환경 설정함으로써 차단되는, USB 허브.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 정보를 획득하고;
    상기 획득된 정보를 사용하여 상기 USB 허브가 상기 USB 디바이스와 업스트림 USB 호스트 간에 USB 대 USB 브리지를 설정해야 한다고 결정하고; 그리고
    상기 USB 대 USB 브리지를 구현하도록 더 구성된, USB 허브.
  11. 제10항에 있어서,
    상기 획득된 정보는 디바이스 클래스 코드인, USB 허브.
  12. 제10항에 있어서,
    상기 USB 대 USB 브리지를 구현하는 것은, 상기 제1 허브 다운스트림 포트를 상기 업스트림 USB 호스트에 대한 에뮬레이션 디바이스로서 열거하는 것을 포함하는, USB 허브.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하고;
    상기 PID와 상기 VID를 사용하여, 상기 USB 디바이스가 벤더 선택 디바이스(vendor of choice device)가 아니라고 결정하고, 그리고
    상기 USB 디바이스가 벤더 선택 디바이스가 아니라고 결정한 것에 근거하여, 상기 USB 디바이스가 차선의(sub-optimal) 환경 설정으로 열거되게 하도록 더 구성된, USB 허브.
  14. 제13항에 있어서,
    상기 차선의 환경 설정은 차선의 전력 환경 설정 및 차선의 속도 환경 설정 중 하나 이상인, USB 허브.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하고;
    상기 PID와 상기 VID를 사용하여 상기 USB 디바이스가 인증을 필요로 한다고 결정하고;
    상기 USB 디바이스가 인증을 필요로 한다고 결정한 것에 근거하여, 상기 USB 디바이스에 인증 시도를 발(issue)하고;
    상기 USB 디바이스로부터 인증 시도 응답을 획득하고; 그리고
    상기 응답이 부정확하다고 결정시 상기 USB 디바이스 연결을 차단하도록 더 구성된, USB 허브.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 프로세서는 상기 USB 버스에서 특정 트랜잭션을 검출시 미리 결정된 응답을 송신하도록 더 구성된, USB 허브.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 프로세서는 소스 허브 다운스트림 포트로부터 목적지 허브 다운스트림 포트로 데이터를 반영하도록 더 구성된. USB 허브.
  18. 제17항에 있어서,
    상기 소스 허브 다운스트림 포트 및 상기 목적지 허브 다운스트림 포트는 하나 이상의 물리적 스위치들에 근거하여 결정되는, USB 허브.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서,
    상기 프로세서는,
    상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하고;
    상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스가 플렉스커넥트(FlexConnect) 역할 전환 프로토콜을 지원한다고 결정하고;
    상기 허브 업스트림 포트에 연결된 USB 호스트가 없거나 상기 허브 업스트림 포트에 연결된 상기 USB 호스트가 상기 플렉스커넥트 역할 전환 프로토콜을 지원하지 않을 때에는, 상기 USB 디바이스가 플렉스커넥트를 지원한다고 결정한 것에 근거하여, 상기 USB 디바이스가 역할 전환하여 USB 호스트가 되게 하도록 더 구성된, USB 허브.
  20. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 향상된 배터리 충전을 제공하기 위한 방법으로서,
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 결합된 USB 디바이스를 검출하는 것;
    상기 프로세서가 상기 USB 디바이스를 열거하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하는 것;
    상기 프로세서가 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스를 위해 사용자 지정 배터리 충전 프로토콜을 결정하는 것; 그리고
    상기 프로세서가 상기 USB 디바이스에 대응하는 특정 배터리 충전 프로토콜을 사용하여 상기 USB 허브가 상기 USB 디바이스를 충전하게 하는 것을 포함하는 방법.
  21. 제20항에 있어서,
    상기 프로세서는 사용자 지정 전기 핸드셰이크 프로토콜 및 사용자 지정 메시지 기반 핸드셰이크 프로토콜 중 하나를 사용하여 상기 USB 허브가 상기 USB 디바이스를 충전하게 하는, 방법.
  22. 제20항 또는 제21항에 있어서,
    상기 USB 허브는 메모리를 더 포함하고,
    상기 프로세서는 상기 메모리에 저장된 환경 설정 파일로부터 사용자 지정 전기 핸드셰이크 프로토콜 및 사용자 지정 메시지 기반 핸드셰이크 프로토콜 중 하나에 대한 규격을 획득하는, 방법.
  23. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 보안을 제공하기 위한 방법으로서,
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 결합된 USB 디바이스를 검출하는 것;
    상기 프로세서가 상기 USB 디바이스를 열거하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 정보를 획득하는 것;
    상기 프로세서가 상기 획득된 정보를 사용하여 상기 USB 디바이스가 차단되어야 한다고 결정하는 것; 그리고
    상기 프로세서가 상기 USB 디바이스가 차단되어야 한다고 결정시 상기 USB 허브가 상기 USB 디바이스 연결을 차단하게 하는 것을 포함하는 방법.
  24. 제23항에 있어서,
    상기 획득된 정보는 디바이스 클래스 코드인, 방법.
  25. 제23항 또는 제24항에 있어서,
    상기 프로세서는 상기 USB 디바이스를 저속 디바이스로서 환경 설정함으로써 상기 USB 허브가 상기 USB 디바이스 연결을 차단하게 하는, 방법.
  26. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 보안을 제공하기 위한 방법으로서,
    상기 프로세서는 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 결합된 USB 디바이스를 검출하는 것;
    상기 프로세서가 상기 USB 디바이스를 열거하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 정보를 획득하는 것;
    상기 프로세서가 상기 획득된 정보를 사용하여 상기 USB 디바이스와 업스트림 USB 호스트 사이에 상기 USB 허브가 USB 대 USB 브리지를 설정해야 한다고 결정하는 것; 그리고
    상기 프로세서가 상기 USB 대 USB 브리지를 구현하는 것을 포함하는 방법.
  27. 제26항에 있어서,
    상기 획득된 정보는 디바이스 클래스 코드인, 방법.
  28. 제26항 또는 제27항에 있어서,
    상기 프로세서가 상기 USB 대 USB 브리지를 구현하는 것은, 상기 제1 허브 다운스트림 포트를 상기 업스트림 USB 호스트에 대한 에뮬레이션 디바이스로서 열거하는 것을 포함하는, 방법.
  29. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 벤더 디바이스 선호(preference)를 제공하기 위한 방법으로서,
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 결합된 USB 디바이스를 검출하는 것;
    상기 프로세서가 상기 USB 디바이스를 열거하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하는 것;
    상기 프로세서가 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스가 벤더 선택 디바이스가 아니라고 결정하는 것; 그리고
    상기 프로세서가 상기 USB 디바이스가 벤더 선택 디바이스가 아니라고 결정시 상기 USB 디바이스가 차선의 환경 설정으로 열거되도록 하는 것을 포함하는 방법.
  30. 제29항에 있어서,
    상기 차선의 환경 설정은 차선의 전력 환경 설정 및 차선의 속도 환경 설정 중 하나 이상인, 방법.
  31. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 디바이스 인증을 제공하기 위한 방법으로서,
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들 중 제1 허브 다운스트림 포트에 결합된 USB 디바이스를 검출하는 것;
    상기 프로세서가 상기 USB 디바이스를 열거하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 제품 ID(PID) 및 벤더 ID(VID)를 획득하는 것;
    상기 프로세서가 상기 PID 및 상기 VID를 사용하여 상기 USB 디바이스가 인증을 필요로 한다고 결정하는 것;
    상기 프로세서가 상기 USB 디바이스가 인증을 필요로 한다고 결정시 상기 인증 시도를 상기 USB 디바이스에 발하는 것;
    상기 프로세서가 상기 USB 디바이스로부터 인증 시도 응답을 획득하는 것; 그리고
    상기 프로세서가 상기 응답이 부정확하다고 결정시 상기 USB 디바이스 연결을 차단하는 것을 포함하는 방법.
  32. 복수의 허브 다운스트림 포트들 및 USB 호스트 스택 코드를 실행하는 프로세서를 포함하는 USB 허브에서의 데이터 반영을 제공하기 위한 방법으로서,
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들로부터 소스 포트를 결정하는 것;
    상기 프로세서가 상기 복수의 허브 다운스트림 포트들로부터 목적지 포트를 결정하는 것; 그리고
    상기 프로세서가 상기 소스 포트에서의 데이터가 상기 목적지 포트에서 반영되게 하는 것을 포함하는 방법.
  33. 제32항에 있어서,
    상기 USB 허브는 상기 프로세서에 결합된 물리적 소스 스위치 및 상기 프로세서에 결합된 물리적 목적지 스위치를 더 포함하고;
    상기 프로세서는 소스 포트 환경 설정 값 및 상기 물리적 소스 스위치 중 하나에 근거하여 상기 소스 포트를 결정하고; 그리고
    상기 프로세서는 목적지 포트 환경 설정 값 및 상기 물리적 목적지 스위치 중 하나에 근거하여 상기 목적지 포트를 결정하는, 방법.
KR1020177032674A 2015-04-28 2016-04-03 범용 직렬 버스 스마트 허브 KR20170140267A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/698,428 US9804977B2 (en) 2015-04-28 2015-04-28 Universal serial bus smart hub
US14/698,428 2015-04-28
PCT/US2016/025798 WO2016175983A1 (en) 2015-04-28 2016-04-03 Universal serial bus smart hub

Publications (1)

Publication Number Publication Date
KR20170140267A true KR20170140267A (ko) 2017-12-20

Family

ID=55861156

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032674A KR20170140267A (ko) 2015-04-28 2016-04-03 범용 직렬 버스 스마트 허브

Country Status (7)

Country Link
US (2) US9804977B2 (ko)
EP (1) EP3289469B1 (ko)
JP (1) JP2018514871A (ko)
KR (1) KR20170140267A (ko)
CN (2) CN107533529B (ko)
TW (2) TWI701549B (ko)
WO (1) WO2016175983A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102195564B1 (ko) * 2020-09-25 2020-12-28 조성호 데이터 복사 시스템 및 그 동작 방법
WO2023128219A1 (ko) * 2021-12-31 2023-07-06 삼성전자 주식회사 외부 전자 장치들과의 연결을 제어하기 위한 전자 장치 및 방법

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841904B2 (en) * 2015-03-02 2017-12-12 Samsung Electronics Co., Ltd. Scalable and configurable non-volatile memory module array
US9804977B2 (en) 2015-04-28 2017-10-31 Microchip Technology Incorporated Universal serial bus smart hub
US10468893B2 (en) * 2015-08-19 2019-11-05 Delta Electronics, Inc. USB charging method having protection function
TWI597608B (zh) * 2016-08-12 2017-09-01 The hub-to-bus converter that supports master-slave translation operates as a hub
US10572644B2 (en) 2017-01-26 2020-02-25 Microsoft Technology Licensing, Llc Interacting with a computing device via identity-bearing peripheral devices
JP6625076B2 (ja) * 2017-01-30 2019-12-25 株式会社日立製作所 Usb中継装置を用いたusb管理システム及びusb管理方法
US10725939B2 (en) 2017-02-13 2020-07-28 Microchip Technology Incorporated Host-detecting USB hub
US10331604B2 (en) * 2017-05-17 2019-06-25 Microchip Technology Incorporated USB host-to-host auto-switching
US10231273B2 (en) * 2017-06-02 2019-03-12 GM Global Technology Operations LLC Vehicle wireless device connection management with switchover of primary connected device
CN107453428B (zh) * 2017-08-08 2019-05-17 天津瑞发科半导体技术有限公司 一种自动识别苹果和安卓设备的方法
TWI634428B (zh) * 2017-10-20 2018-09-01 致伸科技股份有限公司 集線裝置
CN109709833A (zh) * 2017-10-25 2019-05-03 致伸科技股份有限公司 集线装置/ hub
US10684972B2 (en) 2017-12-29 2020-06-16 Barco Nv Method and system for making functional devices available to participants of meetings
CN108268398A (zh) * 2018-02-01 2018-07-10 百度在线网络技术(北京)有限公司 用于操作外围设备的方法、设备和计算机可读存储介质
JP6808666B2 (ja) * 2018-02-20 2021-01-06 Jmacs株式会社 認証デバイスおよびこれを備えるデバイス管理システム
US20210048850A1 (en) * 2018-04-17 2021-02-18 Hewlett-Packard Development Company, L.P. Firmware setup menu options for docking stations
JP6540980B1 (ja) * 2018-05-29 2019-07-10 レノボ・シンガポール・プライベート・リミテッド 情報処理装置、制御方法、及びプログラム
CN109063459A (zh) * 2018-07-17 2018-12-21 北京云智信安科技有限公司 一种usb设备过滤装置和方法
US11068613B2 (en) * 2018-08-07 2021-07-20 Dell Products L.P. Differentiating and managing identical USB devices
US20200078071A1 (en) 2018-09-07 2020-03-12 Ethicon Llc Instrument tracking arrangement based on real time clock information
US11804679B2 (en) 2018-09-07 2023-10-31 Cilag Gmbh International Flexible hand-switch circuit
US11684400B2 (en) 2018-09-07 2023-06-27 Cilag Gmbh International Grounding arrangement of energy modules
US11923084B2 (en) 2018-09-07 2024-03-05 Cilag Gmbh International First and second communication protocol arrangement for driving primary and secondary devices through a single port
US10635618B2 (en) 2018-09-17 2020-04-28 2236008 Ontario Inc. Modifying a configuration of a port hub
CN111522762B (zh) * 2019-02-02 2022-03-29 智微科技股份有限公司 传输接口电路
US11016919B2 (en) * 2019-02-22 2021-05-25 Seagate Technology Llc Intelligent switching peripheral connector
US11743665B2 (en) 2019-03-29 2023-08-29 Cilag Gmbh International Modular surgical energy system with module positional awareness sensing with time counter
IT201900005822A1 (it) 2019-04-15 2020-10-15 Phoenix Ict S R L S Adattore di periferiche general purpose per computer
US11599641B2 (en) * 2019-04-24 2023-03-07 Crowdstrike, Inc. Firmware retrieval and analysis
USD939545S1 (en) 2019-09-05 2021-12-28 Cilag Gmbh International Display panel or portion thereof with graphical user interface for energy module
US11169584B2 (en) * 2020-03-31 2021-11-09 Western Digital Technologies, Inc. Dual-connector storage system and method for simultaneously providing power and memory access to a computing device
CN112000374B (zh) * 2020-07-13 2024-01-02 深圳市智微智能软件开发有限公司 应用于安卓系统的usb触摸屏更换方法、装置、设备及介质
TWI749658B (zh) * 2020-07-22 2021-12-11 旺玖科技股份有限公司 具自動更新韌體功能的usb集線裝置及具有該usb集線裝置的主機系統
CN113971146A (zh) * 2020-07-22 2022-01-25 旺玖科技股份有限公司 具自动更新固件功能的usb集线装置及具有该usb集线装置的主机系统
US11768529B2 (en) * 2021-01-12 2023-09-26 Siliconch Systems Pvt Ltd System and method for enabling power sharing in a multiport power sourcing device
KR20220124006A (ko) * 2021-03-02 2022-09-13 삼성전자주식회사 전원 공급 장치 및 전원 공급 장치의 전원 공급 제어 방법
US11950860B2 (en) 2021-03-30 2024-04-09 Cilag Gmbh International User interface mitigation techniques for modular energy systems
US11963727B2 (en) 2021-03-30 2024-04-23 Cilag Gmbh International Method for system architecture for modular energy system
US11968776B2 (en) 2021-03-30 2024-04-23 Cilag Gmbh International Method for mechanical packaging for modular energy system
US20220318179A1 (en) * 2021-03-30 2022-10-06 Cilag Gmbh International Intelligent data ports for modular energy systems
US20220313369A1 (en) * 2021-03-30 2022-10-06 Cilag Gmbh International Method for intelligent instruments for modular energy system
US11978554B2 (en) 2021-03-30 2024-05-07 Cilag Gmbh International Radio frequency identification token for wireless surgical instruments
US11857252B2 (en) 2021-03-30 2024-01-02 Cilag Gmbh International Bezel with light blocking features for modular energy system
CN113839274B (zh) * 2021-08-10 2024-02-06 立讯精密工业股份有限公司 一种用于数码设备与vr、ar或mr设备之间的供电装置及供电方法
TWI802065B (zh) * 2021-10-29 2023-05-11 飛捷科技股份有限公司 可控制周邊裝置電源與訊號的通信介面轉接器、動態分配通信介面轉接器識別碼的方法及自動化診斷周邊裝置並修復問題的方法
TWI810032B (zh) * 2021-12-01 2023-07-21 威鋒電子股份有限公司 Usb積體電路、usb積體電路的操作方法及usb裝置

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5675813A (en) 1995-10-26 1997-10-07 Microsoft Corporation System and method for power control in a universal serial bus
US5983327A (en) 1995-12-01 1999-11-09 Nortel Networks Corporation Data path architecture and arbitration scheme for providing access to a shared system resource
US5784581A (en) 1996-05-03 1998-07-21 Intel Corporation Apparatus and method for operating a peripheral device as either a master device or a slave device
KR100189781B1 (ko) 1996-05-07 1999-06-01 윤종용 디스플레이 장치 및 그의 전원공급제어방법
US6119190A (en) 1996-11-06 2000-09-12 Intel Corporation Method to reduce system bus load due to USB bandwidth reclamation
US6308239B1 (en) 1996-11-07 2001-10-23 Hitachi, Ltd. Interface switching apparatus and switching control method
US6205501B1 (en) 1998-01-07 2001-03-20 National Semiconductor Corp. Apparatus and method for handling universal serial bus control transfers
US6408351B1 (en) 1998-03-31 2002-06-18 Compaq Computer Corporation Host modem having a peripheral codec powered by a peripheral bus
JP2000076038A (ja) 1998-08-28 2000-03-14 Matsushita Electric Ind Co Ltd Usbハブ回路及びディスプレイ装置
GB2350212B (en) 1999-02-09 2003-10-08 Adder Tech Ltd Data routing device and system
US6601109B1 (en) 1999-03-31 2003-07-29 International Business Machines Corporation USB-based networking and I/O hub
GB9909849D0 (en) 1999-04-28 1999-06-23 Adder Tech Ltd Usb switching device and system
JP2000316006A (ja) 1999-04-28 2000-11-14 Nec Corp バスマネージャ機能自動切換対応ノード、移動端末、及び、移動端末システム
US6704824B1 (en) 1999-07-27 2004-03-09 Inline Connection Corporation Universal serial bus adapter with automatic installation
FR2799288B1 (fr) 1999-09-23 2005-02-25 Ibm Systeme de communication sans fil utilisant un bus serie universel (usb)
US6957287B2 (en) 2001-11-09 2005-10-18 Aten International Co., Ltd. Asynchronous/synchronous KVMP switch for console and peripheral devices
JP2003256351A (ja) 2002-03-04 2003-09-12 Yamaha Corp Usbハブ
KR20040008365A (ko) 2002-07-18 2004-01-31 삼성전자주식회사 디스플레이 장치 및 방법
US6732218B2 (en) 2002-07-26 2004-05-04 Motorola, Inc. Dual-role compatible USB hub device and method
AU2003901297A0 (en) 2003-03-20 2003-04-03 Silverbrook Research Pty Ltd Systems and apparatus (fpd001)
US7711006B2 (en) 2003-08-15 2010-05-04 Napatech A/S Data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network
US7073010B2 (en) 2003-12-02 2006-07-04 Super Talent Electronics, Inc. USB smart switch with packet re-ordering for interleaving among multiple flash-memory endpoints aggregated as a single virtual USB endpoint
US20060056401A1 (en) 2004-09-14 2006-03-16 Standard Microsystems Corporation Peripheral sharing USB hub
US20060059293A1 (en) 2004-09-14 2006-03-16 Henry Wurzburg Universal serial bus switching hub
US20060227759A1 (en) 2004-09-14 2006-10-12 Bohm Mark R Peripheral Sharing USB Hub
JP2006127252A (ja) 2004-10-29 2006-05-18 Fujitsu Component Ltd 切替機、切替方法及びプログラム
US7346728B1 (en) 2005-04-18 2008-03-18 Intel Corporation Method and apparatus for a hub capable of being self-powered for use in a USB-compliant system
CN1976310B (zh) * 2005-07-08 2014-04-16 美国博通公司 在网络中通过总线接口进行通信的方法
CN100493018C (zh) * 2005-07-08 2009-05-27 美国博通公司 一种通过网络中的总线接口进行通信的方法和系统
US7657691B2 (en) * 2005-09-30 2010-02-02 Cypress Semiconductor Corporation Simplified universal serial bus (USB) hub architecture
DE602005005065T2 (de) * 2005-10-13 2009-03-19 Research In Motion Ltd., Waterloo Vorrichtung und Verfahren zur Unterstützung der USB-Aufzählung eines BUS-betriebenen tragbaren Geräts
US7246189B2 (en) 2005-11-18 2007-07-17 Vetra Systems Corporation Method and apparatus for enhancing universal serial bus
US7523243B2 (en) 2006-04-14 2009-04-21 Standard Microsystems Corporation Multi-host USB device controller
US7478191B2 (en) 2006-04-14 2009-01-13 Standard Microsystems Corporation Method for automatically switching USB peripherals between USB hosts
US7644217B2 (en) * 2007-03-02 2010-01-05 Microchip Technology Incorporated Detecting connection to a USB host or hub without using an extra status input
JP5130984B2 (ja) * 2008-03-25 2013-01-30 セイコーエプソン株式会社 Usbホスト、その制御方法、コンピュータプログラム、システム
KR101329014B1 (ko) * 2008-10-30 2013-11-12 삼성전자주식회사 휴대단말에서 스위칭 회로의 모드 제어 방법 및 장치
US20100262726A1 (en) 2009-01-13 2010-10-14 Tauscher Brian E Method and apparatus for implementing a limited functionality embedded universal serial (USB) host controller on a fully functional downstream USB port
US8055919B2 (en) 2009-02-06 2011-11-08 Standard Microsystems Corporation Port power controller for USB hubs with legacy battery charge support
US7882297B2 (en) * 2009-02-20 2011-02-01 Standard Microsystems Corporation Serial bus hub with low power devices
DE102009038760B3 (de) * 2009-08-27 2011-01-05 Wago Verwaltungsgesellschaft Mbh Verfahren zur Datenkommunikation zwischen einem Automatisierungsgerät und einem Datenverarbeitungsgerät sowie Schnittstellentreiberprogramm und Schnittstellenumsetzer hierzu
TWI498740B (zh) * 2010-05-05 2015-09-01 Genesys Logic Inc 通用串列匯流排充電系統及其充電方法
US8850082B2 (en) * 2010-08-30 2014-09-30 Qualcomm Incorporated Virtual USB compound device enumeration
US20120105201A1 (en) * 2010-10-29 2012-05-03 Cisco Technology, Inc. Validating Sensor Data at a Property Sensor-Coordinating Entity
US9201480B2 (en) * 2010-12-23 2015-12-01 Standard Microsystems Corporation Method and system for determining an arbitrary charging protocol in USB charging ports
CN102064582B (zh) * 2010-12-28 2012-11-21 鸿富锦精密工业(深圳)有限公司 可对外供电的终端
US9958507B2 (en) * 2011-05-09 2018-05-01 Analog Devices, Inc. Channel verification of multiple channels on one chip
WO2013049955A1 (en) * 2011-10-08 2013-04-11 Hewlett-Packard Development Company, L.P. Power adapter and method of adapting power for electronic devices
US8843770B2 (en) * 2011-10-31 2014-09-23 Smsc Holdings S.A.R.L. Device charging over USB using a plurality of handshakes
EP2602721B1 (en) * 2011-12-07 2017-07-12 VIA Technologies, Inc. USB charging module
EP2602722B1 (en) * 2011-12-07 2020-04-08 VIA Technologies, Inc. USB charging module
CN103309835A (zh) * 2012-03-12 2013-09-18 祥硕科技股份有限公司 通用串行总线装置及其供电方法
WO2013147789A1 (en) * 2012-03-29 2013-10-03 Intel Corporation Buffer-related usb communication
US9026712B2 (en) * 2012-06-25 2015-05-05 Intel Corporation USB device control using endpoint type detection during enumeration
JP2014115687A (ja) * 2012-12-06 2014-06-26 Canon Inc データ処理装置、データ処理装置の制御方法、及びプログラム
US9081705B2 (en) * 2013-06-11 2015-07-14 Apple Inc. Methods and apparatus for reliable detection and enumeration of devices
US9785595B2 (en) * 2013-09-09 2017-10-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Multi-channel universal serial bus (USB) to subrate channel systems
US9460037B2 (en) 2013-09-26 2016-10-04 Delphi Technologies, Inc. Flexible mobile device connectivity to automotive systems with USB hubs
US9804977B2 (en) 2015-04-28 2017-10-31 Microchip Technology Incorporated Universal serial bus smart hub

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102195564B1 (ko) * 2020-09-25 2020-12-28 조성호 데이터 복사 시스템 및 그 동작 방법
WO2023128219A1 (ko) * 2021-12-31 2023-07-06 삼성전자 주식회사 외부 전자 장치들과의 연결을 제어하기 위한 전자 장치 및 방법

Also Published As

Publication number Publication date
CN107533529B (zh) 2021-09-03
US10282313B2 (en) 2019-05-07
CN113609050A (zh) 2021-11-05
US9804977B2 (en) 2017-10-31
US20160321195A1 (en) 2016-11-03
CN107533529A (zh) 2018-01-02
WO2016175983A1 (en) 2016-11-03
TW201706772A (zh) 2017-02-16
TWI757809B (zh) 2022-03-11
US20180067875A1 (en) 2018-03-08
TW202105123A (zh) 2021-02-01
EP3289469A1 (en) 2018-03-07
TWI701549B (zh) 2020-08-11
EP3289469B1 (en) 2021-11-10
JP2018514871A (ja) 2018-06-07

Similar Documents

Publication Publication Date Title
KR20170140267A (ko) 범용 직렬 버스 스마트 허브
US9804859B2 (en) Re-enumeration of USB 3.0 compatible devices
US9201827B2 (en) Device dependent selection between modes for asymmetric serial protocols
US9032107B2 (en) USB key and a method for communication between the USB key and a terminal
US20080126628A1 (en) Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer
EP2821882B1 (en) Computer device and method for converting working mode of universal serial bus connector of the computer device
WO2013184257A1 (en) Message-based identification of an electronic device
KR20130099257A (ko) 브리지 부팅을 지원하는 플랫폼
US20100235461A1 (en) Network device and method of sharing external storage device
WO2011130975A1 (zh) 一种linux系统数据卡设备端口识别的方法及装置
WO2018112942A1 (zh) 设备认证方法、装置、电子设备及从设备
US20170109248A1 (en) Sharing bus port by multiple bus hosts
CN111386433A (zh) 电器及其控制方法
WO2016179944A1 (zh) 一种通信接口的功能复用方法及装置
CN107977334B (zh) 电子卡及其检测方法
EP3482299A1 (en) Usb device filtering
EP3413205A1 (en) Re-enumeration of usb 3.0 compatible devices
US9824059B2 (en) Child serial device discovery protocol
KR102339169B1 (ko) 차량용 커넥티비티 지원 장치 및 방법