和菜鸟一起学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协议来说,可以理解得很多很多了吧。