有三个文档,一个是《Universal Serial Bus Specification》,一个是《Universal Host Controller Interface Design Guide》,还有一个是《Enhanced Host Controlelr Interface for Universal Serial Bus》。
花了三个星期的时间,前面两个星期的效率还可以,看起来比较认真,理解的也相对清楚些,到后来是在是有些看不下去了,以至于想吐的地步,但不管怎么样,总算是基本看完了。现在做做总结:首先是《Universal Host Controller Interface Design Guide》,也就是USB2.0的规范。这篇文献从USB2.0的背景开始,对USB2.0技术的各个方面进行详细的描述和定义。我主要阅读了第4章及其以后的部分。真要总结起来,恐怕不是这一篇日志就能总结得了的,我也不准备那样,毕竟周立功已经把中文版的书都出版了,且不管翻译的怎么样。下面我就把零碎记录的一些东西录下来吧,顺便想到什么也写下来,当然谈不上系统了。USB系统在物理连接上是分层的星型拓扑结构,而在逻辑上,所有的USB设备都直接连接到HOST Controller。不管中间接了几个HUB。USB最多支持7层,127个设备。也就是说在一个USB系统中,最多可以有5个HUB级联。在USB规范中,对传输线和HUB的延迟都有比较严格的定义。USB总线上数据内容的含义是由USB体系解析的,USB的硬件不负责内容的解析。USB总线上共有两种数据,一种是流数据(Stream),一种是信息数据(Message)USB体系可分为三层: HOST端------------------------Device端客户软件(USB应用软件) 功能接口(Interface) USB系统软件 端点(默认端点和其他端点集) USB主机控制器 USB总线接口端点(Endpoint)是USB通讯模型的终端多个端点组成接口(interface)0端点是一个特别的端点,任何USB设备均有0端点,也称为默认端点,主要用于USB设备的配置、命令等。USB应用软件通过接口访问USB设备,接口又由端点组成,USB通讯在USB主机控制器的控制下按照USB规范定义的格式和方式进行。USB总线上的数据逐帧传送,高速USB总线上的帧称为微帧(microFrame),周期为125uS,全速以及低速USB总线上的帧周期为1mS。不论高速、全速还是低速总线,帧序号以1mS为单位递增,即连续8个微帧的帧号是一样的。每个帧(微帧)可以包含多个数据传输,例如可以由若干和同步传输、若干个中断传输以及批量传输构成。控制传输在端点0进行,主要完成设备的配置、命令发送等。控制传输由三个步骤组成:令牌+数据+握手,也可能没有数据,而只包括令牌和握手两个阶段。不论有没有数据,最后均由一个方向和前一阶段相反的握手传输结束,如。token out (set up) + Data0(out) + IN handshake;token in(set up) + IN handshake;token in(set up) + Data1(in) + out handshake(data length = 0);同步传输是一种实时性极强的传输,没有重传机制,所以是不可靠的。在每一(微)帧的传输任务排定时,同步传输具有最高的优先级。中断传输是一种延迟有限的传输,具备重传机制,是一种可靠的传输。传输任务排定时优先级低于同步传输,但高于其他两种传输。高速-高带宽端点可以在每个(微)帧中最多进行3次中断传输。批量传输是一种延迟不确定的传输,这种传输尽量利用带宽进行传输,可以实现较高的速率,比较适合传送大的数据。也是一种可靠的传输。USB分层结构中,客户软件通过设备驱动程序访问USB设备,设备驱动程序则通过HCD(主机控制器驱动)访问USB总线,完成数据的传输。USB总线上,数据的传输按照little endian进行,即一个字节中最低有效位在前,最高有效位在后。Packet是USB总线上数据传输的最小单位。每个Packet均由sync同步域开始。(KJKJKK for L/F speed (15个KJ)KJKJKJ...KJKK for high-speed)Packet的格式由USB规范定义,格式如下: