USB Descriptor 정의

Embedded/USB 2014. 12. 17. 19:30

I. USB Descriptor 정의

v  DEVICE DESCRIPTOR 정의 및 종류

 

1. USB Descriptor 정의

* USB는 대표적인 PnP (Plug & Play)를 지원하는 인터페이스

   => 디바이스에 대한 정보 및 설정 사항을 알기 위해 Descriptor를 읽어 와야 함

   => HostDevice에게 Device에 대한 정보를 요구하고, Device가 자신의 정보를 전달 이 때 사용하는 정보 의미

* 연결된 디바이스의 종류를 알게 되고, 디바이스의 특성에 맞게 데이터 전송 양을 조절 할 수 있음

* USB Enumeration (열거) 과정에서 중요하게 사용

 

2. USB Descriptor 종류

(1) Device Descriptor              : 디바이스에 대한 일반정보, 단 하나의 descriptor존재

(2) Configuration Descriptor      : 하나 또는 이상의 Descriptor 기술 가능

                                                    : 여러 가지의 인터페이스 기술 가능

                                                    : 인터페이스 또한 여러 개의 End-Point 정의 기술 가능

(3) Interface Descriptor           : 인터페이스 내용기술, Alternate 셋팅을  가질 수 있음

(4) Endpoint Descriptor           : pipe, endpoint0descriptor가 존재하지 않음

(5) String Descriptor               : unicode format, vender이름, 디바이스 이름, serial number

 

3. USB Descriptor 구조

 

 

 

. USB Descriptor 분류

 

1. Device Descriptor

Device의 모든 것을 표현

USB Device는 단지 하나의 Device Descriptor를 가질 수 있음

Device DescriptorDevice에서 지원하는 USB Revision 명시

▪ 적절한 USB 드라이버를 읽어올 시에 사용되는 Product IDVendor ID 명시

Device가 가질 수 있는 가능한 Configuration 수 명시

Configuration의 값은 얼마나 많은 Configuration Descriptor로 분기할 수 있는지 나타냄

 

Offset

Field

Size

Symbol

Description

0

bLength

1

Number

바이트 단위 Descriptor 크기

1

bDescriptorType

1

Constant

Device를 나타내는 상수

2

bcdUSB

2

BCD

USB Version Release 번호

4

bDeviceClass

1

Class

클래스 코드

5

bDeviceSubClass

1

SubClass

하위 클래스 코드

6

bDeviceProtocol

1

Protocol

프로토콜 코드

7

bMaxPacketSize0

1

Number

Endpoint 0의 최대 Packet 크기

8

idVendor

2

ID

제조사 ID (USB-IF 할당)

10

idProduct

2

ID

제품 ID (제조사 할당)

12

bcdDevice

2

BCD

Device Release 번호

14

iManufacturer

1

Index

제조사 문자열 Descriptor Index

15

iProduct

1

Index

제품 문자열 Descriptor Index

16

iSerialNumber

1

Index

시리얼 번호를 포함한 문자열 Descriptor Index

17

bNumConfigurations

1

Number

설정 가능한 수

 

 

2. Configuration Descriptor

▪ 여러 개의 다른 Configurations을 가질 수 있음 ex) 외장 HDD PWR

Power 소모량 및 DeviceSelf-Powered인지 Bus Powered인지, 가지고 있는 Interface 수 등의 정보를 포함

DeviceEnumerate될 때 HostDevice Descriptor를 읽고 어떤 Configuration이 활성화 될 것인지를 결정

▪ 한번에 한가지 Configuration만 가능

 

Offset

Field

Size

Symbol

Description

0

bLength

1

Number

바이트 단위 Descriptor 크기

1

bDescriptorType

1

Constant

Configuration을 나타내는 상수

2

wTotalLength

2

Number

Configuration Descriptor와 전체 종속

Descriptor의 총 바이트 수

4

bNumInterfaces

1

Number

Configuration Interface

5

bConfigurationValue

1

Number

Set Configuration Get Configuration

Request용 식별 자

6

iConfiguration

1

Index

Configuration에 대한 문자열 Descriptor

Index 문자열

7

bmAttributes

1

Bitmap

자체 / 버스 전력과 원격 깨움 설정

8

bMaxPower

1

mA

Device가 필요한 버스 전력

 

 

3. Interface Descriptor

Device의 한가지 Feature를 나타내는 기능적 그룹화 과정 또는 Header로 보일 수 있음

Ex) Fax / Scanner / Printer가 되는 Multi-Function Device Fax, Scanner, Printer각 기능별로 Interface Descriptor 존재

Configuration Descriptor와는 달리 한번에 하나의 Interface Descriptor만 활성화 해야한다는 등의 제한 없음

Interface의 수를 나타내는 bInterfaceNumber Field, InterfaceSetting을 변화시킬 수 있는 bAlternateSetting Field가 존재

 

Offset

Field

Size

Symbol

Description

0

bLength

1

Number

바이트 단위 Descriptor 크기

1

bDescriptorType

1

Constant

Interface를 나타내는 상수

2

bInterfaceNumber

1

Number

Interface 식별 번호

3

bAlternateSetting

1

Number

-

4

bNumEndpoints

1

Number

지원되는 Endpoint (Endpoint 0 제외)

5

bInterfaceClass

1

Class

클래스 코드

6

bInterfaceSubClass

1

SubClass

서브 클래스 코드

7

bInterfaceProtocol

1

Protocol

프로토콜 코드

8

iInterface

1

Index

Interface를 위한 문자열 Descriptor Index

 

 

4. Endpoint Descriptor

End-Point (Control Endpoint를 제외)를 설명하는데  사용

End-Point 0는 항상 Control Endpoint로 사용되며 어떤 DescriptorRequest이전에 이미 설정

Host는 이들 Descriptor로부터 받은 정보를 BusBand Width를 정하는 데 사용

Device가 어떠한 Endpoint를 지원하여도 Endpoint Description 상에 명시 되어 있지 않을 시 Endpoint 사용 불가

   => Endpoint를 이용한 Data 전송 통로인 PipeHost가 생성해주지 않음

 

Offset

Field

Size

Symbol

Description

0

bLength

1

Number

바이트 단위 Descriptor 크기

1

bDescriptorType

1

Constant

Endpoint를 나타내는 상수

2

bEndpointAddress

1

Endpoint

Endpoint 번호와 방향

3

bmAttributes

1

Bitmap

전송 타입

4

wMaxPacketSize

2

Number

최대 Packet 크기

6

bInterval

1

Number

High-Speed BULK OUT Endpoint일 경우 최대 NAK 속도 의미 , 다른 BULK Endpoint일 경우 무시

 

 

 

. USB Enumeration

 

1. USB Enumeration 정의

USB Enumeration

USB host의 역할 중 하나인 Bus의 상태를 주기적으로 계속 확인

▪ 새로운 Device (Client device)Bus 에 연결되었는지 또는 DeviceBus에서 제거되었는지 확인

▪ 새로운 DeviceBus에 연결되면 hostDeviceControl Packet을 보내는 것으로 Enumeration 시작

Control Packet 전송은 DeviceEndpoint 0을 통해서 이루어 짐

Enumeration과정 중 Device & Host의 주 역할

             - Device :  Host의 요구에 따라 Device descriptor를 제공

             - Host     :  Descriptor를 기반으로 적절한 Device Driver를 로드 하여 USB Device를 설정

 

 

2. USB Enumeration 순서

 

(1) USB DEVICE 장치 연결 안 됨

 

 

(2) USB DEVICE 장치 Cable을 통한 연결 상태

 

 

(3) USB HOST Data Address 임시 할당 상태

 

 

(4) 임시 Data Address를 통한 Device Descriptor 요청

 

 

(5) Host 측에서 송신 된 Device Descriptor 요청 수신

 

 

(6) 임시 Data Address를 통한 Device Descriptor 전송

 

 

(7) Host 측에서 송신 된 Device Descriptor 요청 수신

 

Field

Size

Value

Description

bMaxPacketSize0

1

Number

Endpoint 0의 최대 Packet 크기

 

Device Descriptor 내부 8번째 byte 값을 통하여 Descriptor 저장을 위한 16진수 byte 공간 할당

▪ 할당 이후부터는 해당 주소로 Device 호출 (Device 할당 주소 외의 명령은 무시)

 

 

(8) Data Address를 통한 Device Descriptor 요청 및 수신

 

 

(9) Data Address를 통한 Device Descriptor 전송

 

 

(10) Device Descriptor를 제외한 나머지 Descriptor 요청 및 수신

 

 

(11) Data Address를 통한 나머지 Descriptor 전송 및 Enumeration 종료

'Embedded > USB' 카테고리의 다른 글

임시  (0) 2014.12.22
usb 개발시 참고할 만한 사이트  (2) 2014.12.18
USB 관련 강좌  (0) 2014.12.11
USB Descriptor 종류  (0) 2014.12.11
다양한 시리얼 통신  (0) 2014.12.11

설정

트랙백

댓글