花費了近三個禮拜的時間,終於完成了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...