基本固件框架的追踪研读之描述符1

编程入门 行业动态 更新时间:2024-10-25 12:16:35

基本<a href=https://www.elefans.com/category/jswz/34/1764786.html style=固件框架的追踪研读之描述符1"/>

基本固件框架的追踪研读之描述符1

在USB协议中,将USB作为一个配置、端点和接口的集合。USB设备的描述符包括标准描述符、HID描述符和Hub描述符。这里主要介绍USB标准设备描述符。

1、设备描述符DeviceDscr

  用于表示USB设备的总体信息,一个USB设备只能有一个设备描述符。

  bcdUSB,的格式是0xAABC,其中AA是主版本号,B是次版本号,C是子次版本号(注意USB数据传输过程中,是先传低字节再传高字节),例如USB2.0,应设置成0200H,而在描述符的数据结构中就应该写成0002H;高字节表示整数,低字节的高四位代表十分位,低字节的低四位代表百分位,例如USB1.1,应该设置成0110H,而不是0101H,而在描述符的数据结构中就应该写成1001H。

  bDeviceClass,该字段值为0时,表示USB设备的各个接口相互独立,分别属于不同的设备类,在USB固件接口描述符中将进一步定义;该字段在1~FEH之间时,表示USB协议中定义的某个设备类;该字段为FFH时,表示是供应商自定义的设备类:

  可以看出,除非特殊需要(09H、EFH、FFH),都可以将其设置成00H,然后再在接口描述符中设定设备类型:

  bDeviceSubClass,如果bDeviceClass是0,该字段也必须是0;该字段是FFH时,表示由供应商自定义子类。
  bMaxPacketSize0 ,对于低速设备端点0所支持最大数据包长度是8;全速设备是8、16、32、64;高速设备是64。
  idVendor 、idProduct,是主机为其加载合适的驱动程序;

看一下设备描述符的源代码:
DeviceDscr:   db   DSCR_DEVICE_LEN      ;; Descriptor lengthdb   DSCR_DEVICE          ;; Decriptor typedw   0002H      ;; Specification Version (BCD)db   00H        ;; Device classdb   00H         ;; Device sub-classdb   00H         ;; Device sub-sub-classdb   64         ;; Maximum packet sizedw   0B404H      ;; Vendor IDdw   0410H      ;; Product ID (Sample Device)dw   0000H      ;; Product version IDdb   1         ;; Manufacturer string indexdb   2         ;; Product string indexdb   0         ;; Serial number string indexdb   1         ;; Number of configurations


2、配置描述符 ConfigDscr

  wTotalLength ,用于表示配置信息的总长度,包括配置描述符、接口描述符和端点描述符长度的总和。

  bConfigurationValue ,表明 Get Configuration and Set Configuration requests的配置,必须≥1 。

不懂啊

  iConfiguration ,指出用于描述该配置的字符串描述符的索引值,如果没有配置字符串,可以置为0 。

  bmAttributes ,(按位寻址)用于表示USB设备的配置特性,BIT6 = 1表示使用总线电源,BIT5 = 1表示支持远程唤醒;其他位保留,一般来说,BIT4~BIT0置0即可,BIT7置1即可。

HighSpeedConfigDscr:   db   DSCR_CONFIG_LEN               ;; Descriptor lengthdb   DSCR_CONFIG                  ;; Descriptor typedb   (HighSpeedConfigDscrEnd-HighSpeedConfigDscr) mod 256 ;; Total Length (LSB)db   (HighSpeedConfigDscrEnd-HighSpeedConfigDscr)  /  256 ;; Total Length (MSB)db   1      ;; Number of interfacesdb   1      ;; Configuration numberdb   0      ;; Configuration stringdb   10000000b   ;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)db   50      ;; Power requirement (div 2 ma)


3、字符串描述符 StringDscr字符串描述符是可选的,用于保存一些供应商名称、产品序列号等文本信息。

这里的bString,实际上是由两种情况构成:bSTRING 或者wLANGID。

  对于字符串0,是一个或多个语言标识码(16BIT),比如U.S. English (0409h) ;对于其他字符串描述符则是一个Unicode UTF-16 LE字符串,这种编码格式下,大部分字符被编成16BIT,这种编码的低字节是字符的ASCII吗

StringDscr:StringDscr0:   db   StringDscr0End-StringDscr0      ;; String descriptor lengthdb   DSCR_STRINGdb   09H,04H
StringDscr0End:StringDscr1:   db   StringDscr1End-StringDscr1      ;; String descriptor lengthdb   DSCR_STRINGdb   'C',00db   'y',00db   'p',00db   'r',00db   'e',00db   's',00db   's',00
StringDscr1End:StringDscr2:   db   StringDscr2End-StringDscr2      ;; Descriptor lengthdb   DSCR_STRINGdb   'E',00db   'Z',00db   '-',00db   'U',00db   'S',00db   'B',00
StringDscr2End:

难道字符串的“索引值”,是字符串书写的自然顺序!



4、接口描述符接口是端点的集合,负责完成该USB设备的特定功能

bNumEndpoints ,是端点0以外的本接口使用的所有端点。
;; Interface Descriptordb   DSCR_INTRFC_LEN      ;; Descriptor lengthdb   DSCR_INTRFC         ;; Descriptor typedb   0               ;; Zero-based index of this interfacedb   0               ;; Alternate settingdb   4               ;; Number of end points db   0ffH            ;; Interface classdb   00H               ;; Interface sub classdb   00H               ;; Interface sub sub classdb   0               ;; Interface descriptor string index


5、端点描述符 Endpoint Descriptor用于指出设备端点的特性,包括所支持的传输类型、传输方向等信息。

bEndpointAddress ,BIT7表示端点的传输方向,BIT7 = 1:IN;
BIT7 = 0 :OUT。BIT3~BIT0表示端点号。其余位均保留,必须置0.

上面的这段代码的所设置的端点如下:



6、设备限定描述符

DeviceQualDscr:db   DSCR_DEVQUAL_LEN   ;; Descriptor lengthdb   DSCR_DEVQUAL   ;; Decriptor typedw   0002H      ;; Specification Version (BCD)db   00H        ;; Device classdb   00H         ;; Device sub-classdb   00H         ;; Device sub-sub-classdb   64         ;; Maximum packet sizedb   1         ;; Number of configurationsdb   0         ;; Reserved

更多推荐

基本固件框架的追踪研读之描述符1

本文发布于:2024-02-27 06:00:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705449.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:固件   框架

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!