USB协议的几个问题

以前在解BIOS中USB KBC emulator问题的时候,研究过一段时间USB协议和BIOS中USB code。也只是该大概! 随着时间的推移,已经忘记的差不多了。现在又开始study一下,以便稳固+温故+知新! 

这次就沿着以前的一些记忆,采用‘分而治之,各个击破’的原则,将usb协议拉出几个疑点,再点到线、线到面的梳理usb协议。

所以,在研究usb协议框架的时候,列举出下面几个问题,后续就沿着这些问题逐个的解读usb 协议。至于其他细节,需要更多的时间去研读spec和source code。

1、学习usb协议的简述和软件体系结构,可以在网络上查到很多资料。当然usb spec是关键。

2、usb硬件上的概念:比如四线、D+、D-的差分传输和编码方式NRZI。

3、usb的逻辑拓扑结构:HC、BUS、Hub、Device等。

4、四种传输(transfer)的概念和区别。

5、usb transaction(事务)的概念、组成和基本工作流程。

6、usb packet的分类和组成,分别了解各个字段的意义。联想到TCP/IP中的packet概念和组成。

7、USB设备的描述符:device、interface、config、endpoint、string等描述符的数据结构。可以那一份Linux驱动中的usb.h文件看。

8、USB标准和特殊的设备请求方式。比如:清除请求、获得描述符、设置地址、设置状态。

9、USB 插入设备的检测和配置过程。hub_event/event_list等。

10、UHCI/EHCI的register说明。io register或者memory register。包括usb cmd、status、和frame list point、framebaseaddress。

11、具体的submit_control_msg 实现过程。可以找一份简单的code看,uboot中的ehci-hcd.c貌似比较简单。

12、USB传输的数据结构:比如QH、TD的结构和关联性。这个在usb controller的spec中可以看到,框架图便于理解结构。比较uhci和ehci的区别。


另外,UHCI、EHCI中涉及到的Debug 模式,可以尝试单步调试。但是BIOS中有smi来实现usb功能,不好弄。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值