基于DWC2的USB驅動開發-0x01開篇介紹與新思DWC2 USB2.0控制器簡介 (qq.com)
DWC2 USB2.0控制器介紹
前言
前面介紹了USB江湖中,硬件協議分析儀,軟件抓包工具中的各門各派,各路高手。工欲善其事必先利其器,所以至少需要了解其中一個硬件協議分析儀和一個軟件抓包工具,后面才能比較方便的進行USB開發,否則可能會迷失在USB協議的沼澤里,而難以自拔,此時你可能就會不斷進行哲思:”我是誰,我在哪里,我在干嘛,我為什么要搞USB?”; ”軟件問題,硬件問題,還是我的問題?”。
各門各派,江湖大俠都會有自己的獨門絕技和獨門武器,而我們看到各種武俠小說,電視劇中,大俠的長成都是奇遇絕頂高手,然后挑柴,打水,站樁,摸魚(不是屏幕前的摸魚),劃水(不是屏幕前的劃水),一頓輸出,然后鏡頭切換春夏秋冬,從掌動草長鶯飛到劍指秋風落葉,從拳擊萬丈瀑布到腳掃千層白雪,招式基本功達到爐火純青之后,然后就是絕頂高手拿出一本泛黃的小冊子或者來到一處絕壁前傳授內功心法,于是功力突飛猛進,終得大成。終于下山行俠仗義,叱咤江湖,成為一代傳奇。
UBS開發也是一樣的,尤其是做USB底層比如驅動開發,那么至少需要購買一個USB硬件協議分析儀,以便抓取分析協議的底層信號和數據與規格書對照,這就是前面的基本功練習。,等協議熟悉了之后,就可以去USB官網搜索各種規格書,開發實際的產品,練習心法內功了,就好比可以進入達摩院的藏書樓去翻閱各種絕學典籍了。
實踐是檢驗檢驗真理的唯一標準,所以我們不從USB復雜的協議規格書入手,一開始就直接學習少林武功的七十二絕技是不可取的,就好比鳩摩智最終導致的是走火入魔。最好的方法是基于某個USB的控制器,從零實踐其驅動開發,先從實踐開始熟悉協議,打好基礎,練好基本功。遇到哪些內容或者問題然后理論結合實踐,參照USB控制器的文檔和USB規格書的文檔進行實踐和理論學習。這樣后面才有可能駕馭,切記不能急于求成,只有基本功結合心法才能提升內力和功力。
相信本系列文章應該是全網第一部專門詳細介紹基于DWC2 USB2.0控制器驅動開發的文章,慢慢來,希望和大家一起學習,從實踐出發最終能成為USB開發的大俠。
新思的USB2.0 IP介紹
新思的USB 2.0 IP應該是業界使用得最多的IP解決方案了。市面上很多的量產MCU或者MPU都是基于新思的IP,比如各種xxx32的單片等。新思官網可以看到一些信息
https://www.synopsys.com/dw/ipdir.php?ds=dwc_usb_2_0_digital_controllers,但是其手冊等不是直接開放,需要注冊,目前個人注冊好像不太行了。
新思的IP有以下特征:
- 靈活的配置選項,以最大限度地提高性能和最小化CPU中斷,后面我們也會詳細講到其中斷相關的內容,中斷通過一些bit的組合以標志不同的狀態,以減少需要進行的判斷邏輯。
- 靈活的參數可以輕松集成到低延遲和高延遲系統中。
- 基于系統要求的USB數據傳輸或事務處理。
- 可配置的數據緩沖選項,以微調性能/面積的權衡。
- 緩沖區和描述符預取使主機吞吐量最大化。
- 固件可選端點配置,支持后處理應用程序更改;以及靈活的單芯片設計適用于多種應用,總之一個詞就是”靈活”,但是后面看規格書也可以知道確實很復雜,配置參數選項很多。
- 通過廣泛的約束隨機驗證進行測試,確保高質量的IP。
- AMBA?高性能總線(AHB)接口可快速集成到基于arm的設計中。所以你可以看到各種基于ARM尤其是Cortex-M系列的xxx32的MCU基本都是采用的新思的IP方案。
- UTMI+ Level 3可以與兼容的PHY設備快速集成。
- 高速high -Speed (480mbps)、全速Full-Speed (12mbps)和低速Low- Speed (1.5 Mbps)的操作符合USB OTG補充標準。
- USB 2.0 HS OTG控制器支持外設或主機模式。
- 也支持高速USB EHCI主機控制器。
文檔
新思USB 2.0 IP主要有兩個文檔需要參考
《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Data book》
《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Programming Guide》
前者是描述IP的架構,信號,配置,寄存器等,有百多頁。供IC設計,驗證工程師,和驅動工程師查閱。驅動開發要頻繁參考其寄存器部分,要做到每一個寄存器的每一個bit的作用都要了解,我們后面就會一步步參考它進行驅動的編寫。當然要成為高手肯定要有很好的內力修為,這就需要對其架構等其他部分也要熟悉,所以其他部分我們后面也會一起慢慢閱讀消化。
后者是編程指導,驅動編寫主要參考這一部分進行,也有五百多頁,這個文檔我們后面也會詳細的閱讀
如果需要這兩個文檔的可以公眾號留言或者加我微信,可以分享給你,僅供分享學習之用。
總結
這一篇是我們正式進入USB驅動開發的第一篇, 與其他所有的USB書籍或者文章不一樣,我們一開始不直接講USB協議, 我們先從具體的USB IP入手,從USB的底層驅動編寫實踐入手再邊實踐邊了解協議。理論結合實踐才是好的方式, 心法招式結合基本功練習才有可能練成武功的最高境界,否則就會走火入魔。關于走火入魔的一個很明顯的表現就是,很多USB驅動開發工程師或者嵌入式開發人員,一上來就在群里論壇里問”求救,xxx了是什么問題,怎么解決”,這一看就是基本功都沒練習直接就練習少林七十二絕跡的,基本連USB控制器部分的參考手冊數據手冊,USB規格書都沒怎么閱讀過的,肯定做不好,必定走火入魔,迷失在各種問題里,哪怕是成為調參俠,調API俠,調庫俠,復制粘貼俠最終也可能遇到各種BUG無法解決而終。我們做開發尤其是嵌入式開發,驅動開發,一定要基本功練好,對底層基本原理熟悉,并且經過親身實踐,理論結合實踐才能做好,成為USB江湖一代大俠。
-
usb
+關注
關注
60文章
7945瀏覽量
264639 -
USB2.0
+關注
關注
2文章
186瀏覽量
46097 -
新思
+關注
關注
0文章
20瀏覽量
29848 -
USB驅動
+關注
關注
1文章
136瀏覽量
20197 -
DWC2
+關注
關注
0文章
35瀏覽量
131
發布評論請先 登錄
相關推薦
評論