S3C2440 USB设备枚举过程详细分析
1、USB设备插入主机时,主机检测到有设备插入时,就给设备发送复位信号给设备,设备再收到复位中断后,做一些USB配置和初始化,具体见源码,开始在端口0进行数据传输。
2、主机会给设备发送请求设备符指令,当端点0收到请求命令数据包时,就会发生端点0中断
3、然后端点0分析是什么请求,然后做相应的回应。
下面的数据是枚举的一个详细过程
USB Test !!!
显示USB复位,产生复位中断信号
USBDEV RST IRQ
USBDEV RST IRQ
端点0收到有效标记数据
EP0 RST IRQ
主机的请求数据
OUT:
80指明下个数据传输的方向为IN,
06指明获取描述符
01指明获取设备描述
40指明数据传输的字节数,设备传输可以小于这个字节数,要是主机传输就得等于这个字节数
80, 06, 00, 01, 00, 00, 40, 00,
设备发送设备描述符(按设备描述格式)
IN:
12这个描述符的所有长度,包括长度本身
01描述符类型为设备
(01,10)USB规格版本号格式
FF 设备类代码,开发商定义为FF
00 子类代码
00 协议代码,具体是多少要看USB协议的定义
08 端点0最大包长度
12, 01, 10, 01, FF, 00, 00, 08,
EP0 RST IRQ
IN:
53,45 厂商标志
12,34 产品标志
00,01 BCD 格式的版本号
01 厂商字符描述符索引
02,产品描述符索引
45, 53, 34, 12, 00, 01, 01, 02,
EP0 RST IRQ
IN:
00 设备序列号信息字符串索引
01 设备提供的配置描述符数量
00, 01,
USB设备收到复位中断
USBDEV RST IRQ
EP0 RST IRQ
OUT:
00下个数据传输方向为OUT
05 设置地址的标记包
0x0002 地址值
最后的0x0000指明数据传输的长度为0,即后面不会再有数据
00, 05, 02, 00, 00, 00, 00, 00,
EP0 RST IRQ