设备描述符DeviceDscr.docx
- 文档编号:9118656
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:11
- 大小:19.34KB
设备描述符DeviceDscr.docx
《设备描述符DeviceDscr.docx》由会员分享,可在线阅读,更多相关《设备描述符DeviceDscr.docx(11页珍藏版)》请在冰豆网上搜索。
设备描述符DeviceDscr
【1】设备描述符DeviceDscr
重新看了描述符文件,对照了好多参考书,发现以前很多不明白的地方现在清晰了很多,不过有些地方可能从来没有用过的缘故,我也是不甚明了(打上了问号),只能以后用到的时候,有新的发现再慢慢理解了。
。
。
dscr51里放的是USB描述符表,EZ-USB在重枚举阶段会读取或设置相应的描述符
db DSCR_DEVICE_LEN ;;Descriptorlength
db DSCR_DEVICE ;;Decriptortype
dw 0002H ;;SpecificationVersion(BCD)
db 00H ;;Deviceclass
db 00H ;;Devicesub-class
db 00H ;;Devicesub-sub-class
db 64 ;;Maximumpacketsize
dw 0B404H ;;VendorID
dw 0410H ;;ProductID(SampleDevice)
dw 0000H ;;ProductversionID
db 1 ;;Manufacturerstringindex
db 2 ;;Productstringindex
db 0 ;;Serialnumberstringindex
db 1 ;;Numberofconfigurations
【1】db DSCR_DEVICE_LEN――bLength段
指明整个设备描述符的长度,单位字节。
【2】db DSCR_DEVICE――bDescriporType段
描述符类型值。
DSCR_DEVICE=04H--设备描述符。
【3】dw 0002H――bcdUSB
表明该USB设备所遵循的USB协议版本,用bcd码表示,2字节。
例如2.0版本,值为0200H,用bcd码表示,低字节在前,高字节在后,表示为0002H;同理,1.1版本,则表示为1001H。
【4】db 00H――bDeviceClass段
指明USB设备所属的设备类。
=0,表示USB各接口相互独立工作,分属不通的设备类,具体信息在接口描述符中说明;
=1~FEH,表明该USB设备属于某个明确的设备类,例如04H代表显示设备
=FFH,厂商自定义的设备类。
【5】db 00H――bDeviceSubClass段
指明USB设备所述的设备子类。
其值依赖bDeviceClass。
=0,此时bDeviceClass必须首先为0
=1~FEH,详细的设备子类。
例如如果bDeviceClass=04H,是显示设备,则bDeviceSubClass=01H,表示CRT显示器;
=FFH,厂家自定义
【6】db 00H――bDevicePortcol段
指明USB所使用的设备类协议。
其值依赖bDeviceClass和bDeviceSubClass。
=0,表示该设备不使用任何设备类协议。
=1~FEH,则该USB必须属于某个明确的设备类和子设备类。
如视频类协议(UVC),音频类协议(UAC)等。
=FFH,厂家自定义。
【7】db 64――bMaxPacketSize0段
指明该USB设备端点0控制传输所支持的最大数据包长度,单位字节。
【8】dw 0B404H――VID
【9】dw 0410H――PID
【10】dw 0000H――bcdDevice段
指明USB设备版本号。
产品ID
【11】db 1――iManuFacture段
厂商信息字符串索引值,没有时为0.这里为1,,即下面的“Cypress”字符串。
【12】db 2――iProduct段
产品信息字符串索引值,没有时为0.后面的“EZ-USB”字符串。
【13】db 0――iSerial段
USB设备序列号信息字符串索引值,没有时为0.
【14】db 1――bNumConfigurations段
指明USB设备所支持的配置数。
如果USB设备支持两种传输速率,则该字段指出的是该速率下的配置数,而不是两种速率下的配置数和。
EZ-USBFX2(68013)固件研究(8)——dscr.a51文件【2】设备限定描述符:
DeviceQualDscr
2009-12-1711:
44
设备限定描述符:
DeviceQualDscr
DeviceQualDscr:
db DSCR_DEVQUAL_LEN ;;Descriptorlength
db DSCR_DEVQUAL ;;Decriptortype
dw 0002H ;;SpecificationVersion(BCD)
db 00H ;;Deviceclass
db 00H ;;Devicesub-class
db 00H ;;Devicesub-sub-class
db 64 ;;Maximumpacketsize
db 1 ;;Numberofconfigurations
db 0 ;;Reserved
设备限定描述符,9个字段,共10字节。
仅当该USB为高速USB设备,且设备既需支持高速(HighSpeed)又需支持全速(Full)时,就需要用到设备限定描述符。
例如该高速USB设备目前工作于全速模式,则该描述符中包含高速模式的总体信息。
在设备请求处理函数SetupCommand(void)中,当收到读设备限定描述符请求时,会首先判断是否为高速USB设备。
if(HighSpeedCapable())。
【1】db DSCR_DEVQUAL_LEN――bLength段
整个设备限定描述符的长度,单位字节,共10个字节。
【2】db DSCR_DEVQUAL――bDescriptorType段
指出该描述符类型。
06H->设备限定描述符。
【3】dw 0002H――bcdUSB段
USB协议版本号。
【4】db 00H――bDeviceClass段
该USB设备所属的USB设备类。
【5】db 00H――bDeviceSubClass段
所属子类。
对bDeviceClass的进一步细化分类说明。
【6】db 00H――bDeviceProtocol段
该设备所使用的设备类协议。
【7】db 64――bMaxPacketSize0段
端点0控制传输所支持的最大数据包长度,单位字节。
【8】db 1――bNumConfigurations段
另一速率所支持的配置数。
【9】db 0――bReserved段
保留,必须为0.
EZ-USBFX2(68013)固件研究(9)——dscr.a51文件【3】配置描述符
2009-12-1714:
40
配置描述符:
HighSpeedConfigDscr/FullSpeedConfigDscr
db DSCR_CONFIG_LEN ;;Descriptorlength
db DSCR_CONFIG ;;Descriptortype
db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr)mod256;;TotalLength(LSB)
db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr)/256;;TotalLength(MSB)
db 1 ;;Numberofinterfaces
db 1 ;;Configurationnumber
db 0 ;;Configurationstring
db 10000000b ;;Attributes(b7-buspwr,b6-selfpwr,b5-rwu)
db 100 ;;Powerrequirement(div2ma)
配置描述符包含8个字段,共9字节。
所有的USB设备至少包含一个配置描述符,例如这里包含两个配置描述符高速HighSpeedConfigDscr和全速FullSpeedConfigDscr。
【1】db DSCR_CONFIG_LEN――bLength段
描述符长度,9字节。
【2】db DSCR_CONFIG――bDescriptorType段
描述符类型。
【3】db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr)mod256
db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr)/256――wTotalLength段
指明配置信息总长度,2字节表示。
为配置描述符,接口描述符,端点描述符,设备类定义描述符,供应商自定义描述符长度的和。
在这里只有配置、接口和端点描述符。
【4】db 1――bNumInterface段
指明该配置所支持的接口数(?
?
),最小为1.
【5】db 1――bConfigurationValue段
指明该配置的配置值。
例如这里值为1,在重枚举时,主机发送Setconfiguration(x),当x=1时,就调用该配置。
【6】db 00――iConfiguration段
该配置的字符串索引值,没有时为0.
【7】db 10000000b――bmAttributes段
指明该配置的特性,8位。
b0~b4,保留,必须为0.
b5:
远程唤醒选择。
=1,支持远程唤醒;=0,不支持远程唤醒。
b6:
是否总线电源选择。
如果该USB设备外加了电源,=1,使用总线电源,=0,使用自供的电源。
b7:
必须为1.
在主机设备请求caseSC_GET_STATUS,caseGS_DEVICE中获得该信息。
【8】db 100――bMaxPower段
总线供电时,该USB设备可获得的最大电流。
单位2mA,所以最大值为250.如果该电流得不到满足,USB将不能使用这个配置
EZ-USBFX2(68013)固件研究(10)——dscr.a51文件【4】接口描述符
2009-12-1807:
31
接口描述符:
;;InterfaceDescriptor
db DSCR_INTRFC_LEN ;;Descriptorlength
db DSCR_INTRFC ;;Descriptortype
db 0 ;;Zero-basedindexofthisinterface
db 0 ;;Alternatesetting
db 6 ;;Numberofendpoints
db 0ffH ;;Interfaceclass
db 00H ;;Interfacesubclass
db 00H ;;Interfacesubsubclass
db 0 ;;Interfacedescriptorstringindex
接口描述符有9个字段,共9字节。
注意,主机不能用SetDescription和GetDescription来设置和读取接口描述符,它只能作为配置描述符的一部分信息返回,在主机发送caseSC_GET_DESCRIPTOR,且caseGD_CONFIGURATION时一并读取。
所以我们看到,在fw.c文件中并没有对接口描述符的判断。
2楼
05210324kw发表于:
2010-4-2918:
49:
00
【1】db DSCR_INTRFC_LEN――bLength段
描述符长度。
【2】db DSCR_INTRFC――bDescriptorType段
描述符类型。
【3】db 0――bInterfaceNumber段
指明该接口的接口号。
【4】db 0――bAlternateSetting段
指明接口的可替换设置值。
【5】db 6――bNumberEndpoints段
指明接口所使用的断点数,不包括端点0.
【6】db 0ffH――bInterfaceClass段
指明接口所使用的设备类。
=0,保留。
=1~FEH,表明该接口属于某个明确的USB设备类。
=FFH,厂家自定义的设备类。
【7】db 00H――bInterfaceSubClass段
该接口所属的USB设备子类。
【8】db 00H――bInterfaceProtocol段
该接口所使用的设备类协议。
【9】db 0――iInterface段
接口字符串描述符的索引值,没有时为0.
EZ-USBFX2(68013)固件研究(11)——dscr.a51文件【5】端点描述符
2009-12-1816:
50
;;EndpointDescriptor
db DSCR_ENDPNT_LEN ;;Descriptorlength
db DSCR_ENDPNT ;;Descriptortype
db 02H ;;Endpointnumber,anddirection
db ET_BULK ;;Endpointtype
db 00H ;;Maximunpacketsize(LSB)
db 02H ;;Maxpackectsize(MSB)
db 00H ;;Pollinginterval
端点描述符有6个字段,共7字节。
和接口描述符一样,也不能由主机通过发送GetDedcription()请求读取,只能作为配置信息caseGD_CONFIGURATION的一部分返回给主机。
【1】db DSCR_ENDPNT_LEN――bLength段
该描述符长度,单位字节。
【2】db DSCR_ENDPNT――bDescriptorType段
该描述符类型。
【3】db 02H――bEndpointAddress段
指明端点的端点号及传输方向。
b0~b3:
该端点的端点号。
如0001端点1,0010端点2;
b4~b6:
:
保留,必须为0
b7:
端点传输方向。
1-IN传输;0-OUT传输
【4】db ET_BULK――bmAttributes段
指明端点的一些特性。
b0~b1:
端点的传输类型。
00-控制传输,01-同步传输,10-块传输,11-中断传输
b2~b3:
当该端点为同步端点时,这两位指出同步类型。
00-非同步,01-异步,10-自适应,11-同步
b4~b5:
端点用法类型。
00-数据端点,01-显示反馈端点,10-隐式反馈端点,11-保留
b6~b7:
保留,必须为0
【5】db 00H――wMaxpacketSize段(LSB)
指明端点所支持的最大数据包长度,共16位。
b0~b10:
端点所支持的最大数据包长度。
b11~b12:
当该端点为高速中断端点或同步端点时,这两位指出每小帧中最多传输的事务数。
00-每小帧1次(默认),01-每小帧2次(附加一次),10-每小帧3次(附加2次),11-保留。
b13~b15:
保留,必须为0
【5】db 02H――wMaxpacketSize段(MSB)
高8位。
数据包大小为:
0000001000000000,取0~10位,还是0200,512字节。
【6】db 00H――bInterval段
指明端点数据传输的访问间隔。
低速中断端点:
=10~255ms.
全速中断端点:
=1~255ms
高速中断端点:
=1~16,访问间隔为2(bInterval-1)(幂)×1us
全速/高速同步端点:
=1~16,访问间隔为2(bInterval-1)(幂)×1ms和2(bInterval-1)(幂)×1us
高速块/控制out端点:
指明其最大NAK握手包发送速率。
=0,表示该端点永远不会发出NAK握手包
=其他值,表示每个bInterval时间内,该端点最多只能发送一次NAK握手包。
其他类型端点:
该字段无效。
EZ-USBFX2(68013)固件研究(12)——dscr.a51文件【6】字符串描述符
2009-12-1816:
51
字符串描述符:
StringDscr1:
StringDscr1:
db StringDscr1End-StringDscr1 ;;Stringdescriptorlength
db DSCR_STRING
db 'C',00
db 'y',00
db 'p',00
db 'r',00
db 'e',00
db 's',00
db 's',00
StringDscr1End:
3个自独,长度是变化的(字节)。
偏移量
域
大小
值
描述
0
bLength
1
N+2
此描述表的字节数
1
bDescriptorType
1
常量
字串描述表类型
2
wLANGID[0]
2
数字
语言标识(LANGID)码0
…
…
…
…
N
wLANGID[x]
2
数字
语言标识(LANGID)码X
【1】db StringDscr1End-StringDscr1――bLength段
描述符长度
【2】db DSCR_STRING――bDescriptorType段
描述符类型。
【3】Unicode编码的字符串。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设备 描述 DeviceDscr