和菜鸟一起学linux总线驱动之初识USB鼠标抓包数据

Posted 东月之神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了和菜鸟一起学linux总线驱动之初识USB鼠标抓包数据相关的知识,希望对你有一定的参考价值。

     记得上次讲了USB的一些基础后就没有深入下去了,上周工作很忙,这周又没啥状态,把spi和i2c的一些所学的总结下后,现在终于可以开始了USB了,对于其系统结构,设备描述符,数据传输方式相信都有所了解之后呢,肯定要知道具体的一些数据啊,流程图啊什么的,那样才能更好的理解,还是先看看下面这个图吧。

 

 

 

        先看下上面的图,相信这个图很好理解吧?恩,看着挺熟悉的吧?下面还是介绍下吧。公司是有USB分析仪,不过看过,没用过,这东西特贵。至于用,也是很简单的,插好线后,设置一些功能,点一下运行就OK,然后就有上面的图了。上图是用国嵌资料中的,公司里的东西,不好拿来用。

USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。

 

1、传输(中断、批量、同步、控制)

这里的Transfer是传输方式,这个是控制传输GET,获取描述符。

这个也是Transfer,她是控制传输SET,设置地址。

 

2、事务(IN、 OUT、 SETUP)

这个是setup事务。

       这个是IN事务。

       这个就是OUT事务了。

 

3、包(令牌包(SETUP)、数据包(DATA)、握手包(ACK)和特殊包)

这个是setup事务中的包,看Dir可以知道,有hostàdevice的,也有deviceàhost的。

 

4、域(同步域(Sync)、标识域(PID)、地址域(ADDR)、端点域(ENDP)、

帧号域(FRAM)、数据域(DATA)、校验域(CRC))

        还是上面这个图,看着有Sync,ADDR,CRC5,DATA等,这些域。

 

        所以,域组成了包,包又组成了事务,事务组成了一次传输。相信,这样的解释,对于USB协议来说,可以理解得很多很多了吧。

以上是关于和菜鸟一起学linux总线驱动之初识USB鼠标抓包数据的主要内容,如果未能解决你的问题,请参考以下文章

Linux驱动之USB总线驱动程序框架简析

#导入Word文档图片# Linux平台设备驱动模型

linux 如何判断usb驱动是2.0

USB鼠标设备简单驱动设计

Linux usb子系统 _写一个usb鼠标驱动

Linux下编写USB驱动实例