uboot之usbtty (一)

来源:互联网 发布:mac cad中文字体下载 编辑:程序博客网 时间:2024/09/21 09:21

Ubootusbtty

目录

1.      usb device 总体框架

2.      文件组成

3.      模块划分

1.1    Usb device总体框架

1.1.1   逻辑结构

Freescale Mx25USB部分有两部分结构组成,如下图

 

 

对于支持otg,使用的接口是UTMI,而在utmi部分也提到该逻辑结构,

 

从这点来看,如果想要支持otg,选择的模式就是UTMI接口,这在寄存器中也有相应配置。

 

1.1.1   Device data structrues

FreescaleUSB部分文档结构很清晰,我们知道USB device的数据结构和

host的有区别,这里只介绍它的device结构。包括QHDTD,总的数据结构如下,

 

 

 

       可以看到ENDPOINTLISTADDR寄存器存放所有端点中0OUT端点的起始地址,硬件上通过该寄存器可以知道所有端点QH的地址。

       QH结构之后是DTD链表,至于长度可以由你传输的数据决定。不过对于usbtty传输来说,bulk传输在FS下最大能达到64字节一包,而HS下可以达到512字节一包。

 

1.1.1.1                   Endpoint Queue Head(QH)

Qh的结构如下图所示,

    

 

对于USB传输,无论四种传输的那一种,都与QH结构由很大的关系,比如Next dTd point 填写的就是DTD链表中头节点的物理地址,max packet Length为传输最大包长,ios用于表示是否回应setup包的传输,zlt表示是否选择构建0长传输包。而最后的setup buffer 8字节正好setup包的大小,在控制传输时,读取setup数据正在此buffer中。mult用于根据不同传输模式选择会话数目的多少,对于中断传输,一次只能一个transcation.

       这里特别说说zlt的使用。Usb中构建包的原则为二种情况,最后一个包长度小于最大包长,如果最后一个包长度长度为最大包长,这时有两种情况。

 

       一般情况下,0长包是必须存在的,否则在传输正好最大包长的数据时往往会出现错误,需要重发一个0长包。

 

 

 

原创粉丝点击