USB Communication - Packet Structure 2004. 1. 김현수 (mclapd)
세미나를시작하기전에 USB 의 Low Level Communication 에관련한사항만다루기때문에펌웨어또는드라이버, 애플리케이션에관련된것은언급하지않습니다. * 몇페이지의내용은 DevGuru 송지호님의글을인용하였습니다.
USB Bus Topology 1. 한개의호스트와한개의루트허브로 Root Tier 가구성됨. 2. 여기서말하는 Node 는실제디바이스를말한다. 3. 루트허브에서말단노드까지의최장길이는 30m 로제한된다. 4. 허브는호스트컨트롤러에의해허브디바이스로인식됨. 5. 어드레스비트길이가 7 비트이므로 USB 시스템에허브를포함에서 127 개의디바이스로제한된다.
USB Host 의 Role 1. 버스상에한개의호스트만이존재한다. 2. 디바이스에필요한드라이버와전송대역폭을관리한다. 3. OHCI, UHCI, EHCI 가사용된다. 4. 호스트컨트롤러는버스에토큰을보내고이를받는디바이스가응답을보내는것으로동작을한다. 5. 버스의파워를관리한다.
USB Hub의 Role 1. 디바이스가접속가능한하향접속포트를제공한다. 2. 호스트쪽의상향접속기능을갖는다. 3. 하향접속된디바이스의탈착감지. 4. 접속된디바이스의전원공급 5. 어드레스비트길이가 7 비트이므로 USB 시스템에허브를포함에서 127 개의디바이스로제한된다.
USB Device(Function, Node) 의특징 1. 실제적인기능을수행하는장치. 2. 호스트의요청에의한응답방식으로동작. 3. 키보드, 마우스, 메모리, EVDO 모뎀 4. USB Class 디바이스일경우 Class 에서정의한프로토콜을준수하여야한다.
USB Connector Termination Data 1. D+, D- 는차동신호로트위스트페어선으로되어있으며저속일때는쉴드되지않아도되지만 3M 로케이블길이가제한된다. 2. 전원선을통해 +5V, 500mA 의전원을공급하도록되어있다. 3. 1 번 4 번핀이길어삽입시전원이먼저공급되고신호선이접속되며뺄때는반대의경우이기때문에디바이스가파괴되지않도록설계되어있다.
USB Device의 Descriptor (1) 참조헤더파일 : public common ddk inc usb100.h
USB Device의 Descriptor (2) Device 1. USB 디바이스에대한일반적인정보를갖는다. 2. USB 디바이스는하나의디바이스디스크립터를갖는다. 3. 기본컨트롤파이프의최대패킷크기에대한정보를포함한다.
USB Device의 Descriptor (3) Configuration 1. 하나이상의컨피규레이션디스크립터가존재가능하다. 2. 각각의컨피규레이션은하나이상의인터페이스디스크립터를갖는다. 3. 개념상가장큰디스크립터의구성이다. 4. 다른디스크립터 ( 인터페이스, 엔드포인트디스크립터 ) 를찾는데필요한시작점이된다.
USB Device의 Descriptor (4) Interface 1. 엔드포인트의모음. 2. 소프트웨어에서하드웨어로접근하는규정을기술한다. 3. 하나이상의인터페이스가있어야한다. 4. 하나이상의엔드포인트가있어야한다.
USB Device의 Descriptor (5) Endpoint & String 1. 논리적개념인파이프와매칭이된다. 2. 파이프로통해연결된디바이스의끝단으로생각하면된다. 3. 최소한하나이상의엔드포인트가있어야한다. 4. 스트링디스크립터 선택적인디스크립터로써유니코드로되어있다.
USB Seminar USB Device 의 Descriptor (6) iriver(mp3)
USB Seminar USB Device 의 Descriptor (7) iriver(mp3)
USB Communication Flow (1) 1. 하나의호스트가다수의타겟디바이스를처리하고처리된타겟디바이스가응답하는형태로실행되며엔드포인트를통해서데이터전송이이루어진다. 2. 엔드포인트는번호가매겨져있어호스트에서는타겟의어드레스와엔드포인트번호를통해 Access 할수있다. 3. 엔드포인트 0 는쌍방향으로컨트롤전송에사용되며일반적으로 8 바이트의사이즈를갖는다. 4. 단방향의경우방향성은아래와같으며엔드포인트의수나사이즈는사용하는 USB 컨트롤러에따라달라진다. OUT 방향 IN 방향 : Host -> Target : Target -> Host
USB Communication Flow (2) 1. 호스트의버퍼와타겟의엔드포인트는파이프로연결되어있다. 2. 파이프의번호는 0 번부터매겨지나이파이프에몇번의엔드포인트를설정할것인가는자유이다.
USB Communication Flow (3) 1. HCD : 호스트컨트롤러와시스템소프트웨어사이에서인터페이스를처리. (HCDI USB Format) 2. USBD : 시스템소프트웨어와클라이언트소프트웨어에서인터페이스를처리. (USBDI Not USB Format)
USB Communication Flow (4)
Transfer Types (1) 1. USB 에는 4 개의전송모드가있다. 호스트와타겟의전송은엔드포인트사이에서실행되므로각전송모드는엔드포인트의설정에의해지정되며따라서하나의 USB 디바이스에복수의다른전송모드를설정할수있다. *4 개의전송모드 : Control, Isochoronous, Interrup, Bulk. 전송모드 신뢰성 전송속도 전송지연시간 Isochronous 부적합 최적 최적 Interrupt 최적 최적 부적합 Bulk 최적 적합 최적
Transfer Types (2) 항목 Isochronous Interrupt Bulk Control 주요용도 음성등리얼 타임전송 정기적인소용량데이터전송 부정기적인대용량데이터전송 셋업데이터전송 전송속도 12Mbps 1.5/12Mbps 12Mbps 1.5/12Mbps 전송주기 1ms(1 프레임 ) 1 ~ 255ms 부정부정 전송량 (1 패킷당 ) : Byte 1 ~ 1023 1 ~ 8 (Low) 1 ~64 (Full) 8/16/32/64 1 ~ 8 (Low) 1 ~64 (Full) 에러시재요구없음있음있음있음
Transfer Speed Detection 1. 호스트나허브하위측에 15K 의저항으로 D+, D- 가풀다운되어있다. 2. 타겟또는허브상위측에 D+ 또는 D- 에 1.5K 의저항으로풀업이되어있다. 이로써스피드를검출해낼수있다.
Signal Level 1. J, K 스테이트가스피드에따라서로다르기때문에오실로스코프로파형을찍어볼때에는주의해야한다.
Protocol (1) NRZI & Error Detection 1. NRZI 변복조과정 2. Bit Stuffing
Protocol (2) Transaction, Transfer 1. 트랜스퍼는트랜잭션들의동작에대한개념이라보면되겠다. 아래의예는 Control 트랜스퍼다. 2. 트랜잭션이란호스트와타겟에서의데이터전송을한덩어리로처리한것으로써토큰패킷으로시작을한다. 트랜잭션의종류에는컨트롤, 인터럽트, 벌크, 아이소크로너스이렇게 4 가지가존재한다. 관련된패킷의묶음으로보면되겠다. 아래의예는셋업관련트랜잭션이다.
Protocol (3) 패킷구성 1 ( 토큰, 데이터, 핸드쉐이크 ) 1-1. 패킷
Protocol (4) 패킷의구성 2 : SOF, Transaction, Packet 1. SOF(Start Of Frame) 1ms 마다발행 2. 패킷과트랜잭션의형태는아래와같다.Ex) 리셋트랜잭션
Protocol (5) 패킷구성 3 패킷 ID
Protocol (6) 패킷구성 4 Address ( 토큰패킷 ) End Point ( 토큰패킷 ) Data ( 데이터패킷 ) 토큰패킷구성 SOF 패킷구성 데이터패킷구성 핸드쉐이크패킷구성
Bulk Transfer
Isochronous Transfer
Interrupt Transfer (1)
Interrupt Transfer (2) - Example
Control Transfer (1)
Control Transfer (2) - Example 1. 아래의예는 Transfer1 에서타겟에어드레스를설정해주고그어드레스로디스크립터를얻어오는것을보여준다.
USB Device 의 6가지 Status (1) 1. Attached 오퍼레이션의시작점이된다. 2. Powered Self Powered Mode, Bus Powered Mode 3. Default 버스로부터리셋을받기전까지는아무런버스트랜잭션이발생되지않고리셋이되면기본어드레스로동작을하게된다.
USB Device 의 6가지 Status (2) 4. Addressed 고유의어드레스를할당받아동작하는상태. 5. Configured Function 이사용되기전에알맞은설정이되어야한다. 6. Suspended 일정기간 (3ms) 동안버스의사용이없으면서스펜드모드로진입을한다.
USB Bus Enumeration 1. Device 삽입 2. Hub 가자신의 Pipe 로호스트에게 Device 가인서트된사실을알림 3. 포트에파워를 100mA 공급 4. Reset(10ms) 을하여해당포트를 Enable 시킨다. 5. Host 는 default Address 를이용해서장치에접근 6. Host 는사용하지않는 Address 중하나를 Device 에부여한다. 7. 할당받은 Address 를통해 Descriptor 를읽는다.
PLUG Sequence
Device s s Power Control 1. USB 는접속하고있는디바이스에대해전원을공급할수있고이소비단위를유닛이라고취급한다. 1 유닛은 100mA 로정해져있으며 1 유닛이하를소비하는것을 Low 파워, 그이상소비하는것을 High 파워라고한다. 2. USB 허브에 5 개의디바이스가접속되어 1 유닛씩사용했을때데이터전송에이상이없어야하고 5 개의디바이스가아닐때 1 유닛이상의전류를사용하고자하는디바이스는호스트에게서허가를얻어야한다. 3. 버스파워사양인 USB 디바이스는서스펜드모드를서포트할필요가있으며이모드시최대소비전류는 500uA 로정해져있다.
Device Class (1) 1. USB 디바이스를식별하는것은최종적으로 VID 와 PID 라고할수있다. 그러나 USB 에서는공통적인기능을갖고같은디바이스로취급되는것을디바이스클래스로써정의하고있다. 2. 여러가지클래스가있지만가장손쉬운예가 HID 일것이다. 이것은마우스, 키보드, 조이스틱등버튼의수는다르지만기능으로써는완전히동일하게취급할수있는것이다. 따라서이러한디바이스는드라이버를만들지않고도디바이스클래스로정의만해주면 HID 디바이스로사용할수있다.
Device Class (2) 항목 디바이스 클래스코드 인터페이스클래스코드 Audio Interface 0x00 0x01 통신디바이스 0x02 - HID 0x00 0x00 허브 0x09 0x09 스토리지 0x00 0x08 모니터 HID와같음 HID와같음 프린터 - 0x07
Tools & Book & Web 1. USB Chief CACT 사에서만든 USB 프로토콜아날라이저. 2. USBView Windows DDK에포함되어있는툴로현재 PC에접속된 USB 장치의 Descriptor를파싱하여보여준다. 3. Snoopy Freeware로 Descriptor는물로USB 장치의로딩 / 언로딩을할수있게해준다. 4. USB 머하니 하제소프트에서만든무료 USB 프로토콜아날라이저. 5. USB Spec 1.1(or 2.0) 6. USB CDC Spec 7. USB Complete Axelson(Lakeview Research) 8. USB Guide 김형훈 ( 옴사 ) 9. www.usb.org 10. www.catc.com 11. http://cafe.daum.net/usbhome
About USB 2.0 1. 1999 년 10 월에발표되어최고전송속도 480Mbps(High Speed) 로규정되었다. USB 1.1 과의하위호환성을위해호스트 / 디바이스모델, 기본프로토콜, 소프트웨어인터페이스, 케이블, 커넥터, 디바이스프레임워크등이 USB 1.1 과같다. 2. USB 2.0 의허브 USB 1.1 디바이스가 2.0 디바이스와같이접속되었을경우 480Mbps 를 12Mbps 또는 1.5Mbps 로바꿔주는기능이추가되었다. 3. 데이터전송 125us 마다발행되는하이스피드마이크로프레임을삽입할수있다. 또패킷사이즈가벌크전송에서 512 바이트이하, 인터럽트전송과아이소크러너스전송에서 3072 바이트이하로커지게되었다.