一. 总述
相对而言,usb从设备驱动比较好写,只要在中断服务程序中对端点数据进行相应的处理就可以。
对于U-BOOT而言,由于禁止中断,所以使用轮询的方式查询中断寄存器,查看中断是否发生。由于主设备(如PC HUB)在发送请求包的时候最多发送三次,所以应该在这三次之间调用usb的伪中断函数。在U-BOOT中,一般将从设备枚举成usbtty,而调用USB伪中断函数的过程就在控制台重定向后,调用控制台的输入输出函数(关于控制台部分见U-BOOT之stage2的devlist部分)
二.Usbtty的枚举过程
在讲usbtty从设备驱动前先讲清楚枚举过程。
(1)第一个请求包当然是get device descriptor(set address已经结束,BUS bound无法截取)
返回的设备描述符:
bDeviceClass 被定义为 02
需要设定设备为通信类设备(0x02),否则在下面的接口描述符中会误认为有两个接口
其余的类似
厂商字符串索引为01 产品字符串索引为02 设备的序列号字符串索引为03
只有一种配置