uboot之usbtty (一)

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長包。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章