MF Porting之USB驅動開發

2021-08-29 19:36:17 字數 2047 閱讀 4681

花費了近三個禮拜的時間,終於完成了ti

開發板的usb

驅動開發,現在回頭想一想,其實也沒有什麼,具體硬體方面的通訊由dm355

實現了,軟體層面的資料互動由mf porting

實現了,所做的也就是熟悉了解usb

通訊協議和dm355 usb

相關的暫存器。

在開發驅動的過程中,覺得有這麼幾個難點,一是dm355

支援三種usb

模式:device

、host

、otg

,usb

相關的暫存器比較多,並且由於該cpu

推出才半年,不僅說明書語焉不詳,相關示例程式也沒有,所以開發起來挺費功夫的;二是usb

協議比我以前接觸的網口、串列埠通訊要複雜多了,要通過狀態機等等機制才能一步步完成相關通訊過程。

預設的usb

驅動支援v1.10

協議,僅支援兩個端點(0

是預設端點,所有的usb

裝置都支援),預設的配置如下:

一、驅動描述表(18 byte)1

、型別=device(1)

2、usb

支援的版本是v1.10

3、裝置類、子類、協議都為0

4、端點0

的最大包位元組數為8

5、廠商id=0x15a2

6、產品id=0x0026

7、裝置發行版本v1.00

8、廠商資訊索引=1

9、產品名字索引=2

10、序列號產品索引=0

11、配置描述表的數目=1

二、標準配置描述表(9 byte

)配置標識=2

值=0

總長度=

配置描述表長度+

介面描述表長度+

兩個埠描述表長度

1、型別=configuration(2)

2、配置資訊總長度=

配置描述表長度+

介面描述表長度+

兩個埠描述表長度

3、支援的介面數=1

4、該配置的標識=1

5、配置描述符索引=0

6、屬性:自給電源

7、usb

的匯流排電源耗費量=280ma

三、標準介面描述表(9 byte)1

、型別=inte***ce(4)

2、介面號=0

(如果存在多個介面,該序號是介面索引號)

3、可選設定的索引值=0

4、端點數=2

(0表示僅支援預設端點)

5、介面類=0xff

,表示由廠商自己說明

6、介面子類=1

7、介面協議=1

8、介面字串描述索引=0

四、端點1

描述表(7 byte)1

、型別=endpoint(5)

2、位址=1

,輸入端點

3、傳送型別=

批發送4

、最大包大小=64

5、時間間隔為0

,該傳輸模式忽略該值

五、端點2

描述表(7 byte)1

、型別=endpoint(5)

2、位址=2

,輸出端點

3、傳送型別=

批發送4

、最大包大小=64

5、時間間隔為0

,該傳輸模式忽略該值

六、廠商名字

七、產品名字

八、顯示名字

九、friendly name

:e7e70ea2

十、sideshow os

版本: msft100

十一、sideshow

相關配置資訊

字串語言是u.s. english 0x0409

----------------------------------

順便說一句,目前正在移植sideshow,sideshow借助串列埠驅動的介面實現usb通訊(也就是說當串列埠等於約定的32的時候(com33)操作的是usb裝置)。

MF Porting之USB驅動開發

花費了近三個禮拜的時間,終於完成了ti 開發板的usb 驅動開發,現在回頭想一想,其實也沒有什麼,具體硬體方面的通訊由dm355 實現了,軟體層面的資料互動由mf porting 實現了,所做的也就是熟悉了解usb 通訊協議和dm355 usb 相關的暫存器。在開發驅動的過程中,覺得有這麼幾個難點,...

MF Porting之USB驅動開發

花費了近三個禮拜的時間,終於完成了ti 開發板的usb 驅動開發,現在回頭想一想,其實也沒有什麼,具體硬體方面的通訊由dm355 實現了,軟體層面的資料互動由mf porting 實現了,所做的也就是熟悉了解usb 通訊協議和dm355 usb 相關的暫存器。在開發驅動的過程中,覺得有這麼幾個難點,...

MF Porting之USB驅動開發

花費了近三個禮拜的時間,終於完成了ti開發板的usb驅動開發,現在回頭想一想,其實也沒有什麼,具體硬體方面的通訊由dm355實現了,軟體層面的資料互動由mf porting實現了,所做的也就是熟悉了解usb通訊協議和dm355 usb相關的暫存器。在開發驅動的過程中,覺得有這麼幾個難點,一是dm35...