ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.