RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DWC2的USB驅(qū)動(dòng)開發(fā)-0x01開篇介紹與新思DWC2 USB2.0控制器簡介

嵌入式USB開發(fā) ? 2023-05-08 18:10 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注

基于DWC2的USB驅(qū)動(dòng)開發(fā)-0x01開篇介紹與新思DWC2 USB2.0控制器簡介 (qq.com)

DWC2 USB2.0控制器介紹

前言

前面介紹了USB江湖中,硬件協(xié)議分析儀,軟件抓包工具中的各門各派,各路高手。工欲善其事必先利其器,所以至少需要了解其中一個(gè)硬件協(xié)議分析儀和一個(gè)軟件抓包工具,后面才能比較方便的進(jìn)行USB開發(fā),否則可能會(huì)迷失在USB協(xié)議的沼澤里,而難以自拔,此時(shí)你可能就會(huì)不斷進(jìn)行哲思:”我是誰,我在哪里,我在干嘛,我為什么要搞USB?”; ”軟件問題,硬件問題,還是我的問題?”。

各門各派,江湖大俠都會(huì)有自己的獨(dú)門絕技和獨(dú)門武器,而我們看到各種武俠小說,電視劇中,大俠的長成都是奇遇絕頂高手,然后挑柴,打水,站樁,摸魚(不是屏幕前的摸魚),劃水(不是屏幕前的劃水),一頓輸出,然后鏡頭切換春夏秋冬,從掌動(dòng)草長鶯飛到劍指秋風(fēng)落葉,從拳擊萬丈瀑布到腳掃千層白雪,招式基本功達(dá)到爐火純青之后,然后就是絕頂高手拿出一本泛黃的小冊(cè)子或者來到一處絕壁前傳授內(nèi)功心法,于是功力突飛猛進(jìn),終得大成。終于下山行俠仗義,叱咤江湖,成為一代傳奇。

UBS開發(fā)也是一樣的,尤其是做USB底層比如驅(qū)動(dòng)開發(fā),那么至少需要購買一個(gè)USB硬件協(xié)議分析儀,以便抓取分析協(xié)議的底層信號(hào)和數(shù)據(jù)與規(guī)格書對(duì)照,這就是前面的基本功練習(xí)。,等協(xié)議熟悉了之后,就可以去USB官網(wǎng)搜索各種規(guī)格書,開發(fā)實(shí)際的產(chǎn)品,練習(xí)心法內(nèi)功了,就好比可以進(jìn)入達(dá)摩院的藏書樓去翻閱各種絕學(xué)典籍了。

實(shí)踐是檢驗(yàn)檢驗(yàn)真理的唯一標(biāo)準(zhǔn),所以我們不從USB復(fù)雜的協(xié)議規(guī)格書入手,一開始就直接學(xué)習(xí)少林武功的七十二絕技是不可取的,就好比鳩摩智最終導(dǎo)致的是走火入魔。最好的方法是基于某個(gè)USB的控制器,從零實(shí)踐其驅(qū)動(dòng)開發(fā),先從實(shí)踐開始熟悉協(xié)議,打好基礎(chǔ),練好基本功。遇到哪些內(nèi)容或者問題然后理論結(jié)合實(shí)踐,參照USB控制器的文檔和USB規(guī)格書的文檔進(jìn)行實(shí)踐和理論學(xué)習(xí)。這樣后面才有可能駕馭,切記不能急于求成,只有基本功結(jié)合心法才能提升內(nèi)力和功力。

相信本系列文章應(yīng)該是全網(wǎng)第一部專門詳細(xì)介紹基于DWC2 USB2.0控制器驅(qū)動(dòng)開發(fā)的文章,慢慢來,希望和大家一起學(xué)習(xí),從實(shí)踐出發(fā)最終能成為USB開發(fā)的大俠。

新思的USB2.0 IP介紹

新思的USB 2.0 IP應(yīng)該是業(yè)界使用得最多的IP解決方案了。市面上很多的量產(chǎn)MCU或者M(jìn)PU都是基于新思的IP,比如各種xxx32的單片等。新思官網(wǎng)可以看到一些信息

https://www.synopsys.com/dw/ipdir.php?ds=dwc_usb_2_0_digital_controllers,但是其手冊(cè)等不是直接開放,需要注冊(cè),目前個(gè)人注冊(cè)好像不太行了。

新思的IP有以下特征:

  • 靈活的配置選項(xiàng),以最大限度地提高性能和最小化CPU中斷,后面我們也會(huì)詳細(xì)講到其中斷相關(guān)的內(nèi)容,中斷通過一些bit的組合以標(biāo)志不同的狀態(tài),以減少需要進(jìn)行的判斷邏輯。
  • 靈活的參數(shù)可以輕松集成到低延遲和高延遲系統(tǒng)中。
  • 基于系統(tǒng)要求的USB數(shù)據(jù)傳輸或事務(wù)處理。
  • 可配置的數(shù)據(jù)緩沖選項(xiàng),以微調(diào)性能/面積的權(quán)衡。
  • 緩沖區(qū)和描述符預(yù)取使主機(jī)吞吐量最大化。
  • 固件可選端點(diǎn)配置,支持后處理應(yīng)用程序更改;以及靈活的單芯片設(shè)計(jì)適用于多種應(yīng)用,總之一個(gè)詞就是”靈活”,但是后面看規(guī)格書也可以知道確實(shí)很復(fù)雜,配置參數(shù)選項(xiàng)很多。
  • 通過廣泛的約束隨機(jī)驗(yàn)證進(jìn)行測試,確保高質(zhì)量的IP。
  • AMBA?高性能總線(AHB)接口可快速集成到基于arm的設(shè)計(jì)中。所以你可以看到各種基于ARM尤其是Cortex-M系列的xxx32的MCU基本都是采用的新思的IP方案。
  • UTMI+ Level 3可以與兼容的PHY設(shè)備快速集成。
  • 高速high -Speed (480mbps)、全速Full-Speed (12mbps)和低速Low- Speed (1.5 Mbps)的操作符合USB OTG補(bǔ)充標(biāo)準(zhǔn)。
  • USB 2.0 HS OTG控制器支持外設(shè)或主機(jī)模式。
  • 也支持高速USB EHCI主機(jī)控制器。

文檔

新思USB 2.0 IP主要有兩個(gè)文檔需要參考

《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的架構(gòu),信號(hào),配置,寄存器等,有百多頁。供IC設(shè)計(jì),驗(yàn)證工程師,和驅(qū)動(dòng)工程師查閱。驅(qū)動(dòng)開發(fā)要頻繁參考其寄存器部分,要做到每一個(gè)寄存器的每一個(gè)bit的作用都要了解,我們后面就會(huì)一步步參考它進(jìn)行驅(qū)動(dòng)的編寫。當(dāng)然要成為高手肯定要有很好的內(nèi)力修為,這就需要對(duì)其架構(gòu)等其他部分也要熟悉,所以其他部分我們后面也會(huì)一起慢慢閱讀消化。

pYYBAGRYybCAGZfwABh0bPz6j2I114.png

后者是編程指導(dǎo),驅(qū)動(dòng)編寫主要參考這一部分進(jìn)行,也有五百多頁,這個(gè)文檔我們后面也會(huì)詳細(xì)的閱讀

pYYBAGRYybiAYkAaAAwHpyxYzdU397.png

如果需要這兩個(gè)文檔的可以公眾號(hào)留言或者加我微信,可以分享給你,僅供分享學(xué)習(xí)之用。

總結(jié)

這一篇是我們正式進(jìn)入U(xiǎn)SB驅(qū)動(dòng)開發(fā)的第一篇, 與其他所有的USB書籍或者文章不一樣,我們一開始不直接講USB協(xié)議, 我們先從具體的USB IP入手,從USB的底層驅(qū)動(dòng)編寫實(shí)踐入手再邊實(shí)踐邊了解協(xié)議。理論結(jié)合實(shí)踐才是好的方式, 心法招式結(jié)合基本功練習(xí)才有可能練成武功的最高境界,否則就會(huì)走火入魔。關(guān)于走火入魔的一個(gè)很明顯的表現(xiàn)就是,很多USB驅(qū)動(dòng)開發(fā)工程師或者嵌入式開發(fā)人員,一上來就在群里論壇里問”求救,xxx了是什么問題,怎么解決”,這一看就是基本功都沒練習(xí)直接就練習(xí)少林七十二絕跡的,基本連USB控制器部分的參考手冊(cè)數(shù)據(jù)手冊(cè),USB規(guī)格書都沒怎么閱讀過的,肯定做不好,必定走火入魔,迷失在各種問題里,哪怕是成為調(diào)參俠,調(diào)API俠,調(diào)庫俠,復(fù)制粘貼俠最終也可能遇到各種BUG無法解決而終。我們做開發(fā)尤其是嵌入式開發(fā),驅(qū)動(dòng)開發(fā),一定要基本功練好,對(duì)底層基本原理熟悉,并且經(jīng)過親身實(shí)踐,理論結(jié)合實(shí)踐才能做好,成為USB江湖一代大俠。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7936

    瀏覽量

    264456
  • USB2.0
    +關(guān)注

    關(guān)注

    2

    文章

    186

    瀏覽量

    46083
  • 新思
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    29848
  • USB驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    1

    文章

    136

    瀏覽量

    20191
  • DWC2
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    125
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DWC2USB驅(qū)動(dòng)開發(fā)-0x06 DWC2 USB2.0 IP 頭文件與寄存的讀寫操作

    上一篇我們介紹控制器的寄存,而驅(qū)動(dòng)的編寫底層無非就是配置各種寄存,所以第一步先要準(zhǔn)備寄存
    的頭像 發(fā)表于 05-16 14:04 ?2413次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>0x</b>06 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB2.0</b> IP 頭文件與寄存<b class='flag-5'>器</b>的讀寫操作

    基于DWC2USB驅(qū)動(dòng)開發(fā)-0x02 DWC2 USB2.0 IP功能特征介紹

    DWC2即新(Synopsys )的DesignWare? Cores USB 2.0 HiSpeed On-The-Go (OTG)控制器
    的頭像 發(fā)表于 05-09 10:09 ?9357次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>0x</b>02 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB2.0</b> IP功能特征<b class='flag-5'>介紹</b>

    基于DWC2USB驅(qū)動(dòng)開發(fā)-0x04 DWC2 USB2.0 IP 架構(gòu)介紹

    這一篇先對(duì)IP的架構(gòu)進(jìn)行一些介紹,內(nèi)容比較多所以重點(diǎn)關(guān)注和軟件相關(guān)的內(nèi)容。后續(xù)編程具體涉及時(shí),可能再返回過來詳讀某一個(gè)部分。
    的頭像 發(fā)表于 05-12 12:50 ?4228次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>0x</b>04 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB2.0</b> IP 架構(gòu)<b class='flag-5'>介紹</b>

    基于DWC2USB驅(qū)動(dòng)開發(fā)-0x07 DWC2 USB2.0 IP 配置參數(shù)

    混淆,IP的配置參數(shù)固定之后就不能改了,就決定了IP所具有的能力。對(duì)于軟件開發(fā)者來說也要了解其具體的配置,因?yàn)橹挥兄喇?dāng)前IP的配置,知道支持哪些功能,哪些是軟件可以配置的哪些是硬件固定了無法配置的,等等這些,后面寫驅(qū)動(dòng)才心中有數(shù)。 配置相關(guān)
    的頭像 發(fā)表于 05-17 09:49 ?2285次閱讀

    基于DWC2USB驅(qū)動(dòng)開發(fā)-IAD描述符詳解

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-IAD描述符詳解 (qq.com) 一.? 前言 IAD描述符用于一個(gè)設(shè)備功能關(guān)聯(lián)多個(gè)接口,可以用于實(shí)現(xiàn)組合設(shè)備。 二.參考文檔
    的頭像 發(fā)表于 06-27 08:45 ?12.4w次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-IAD描述符詳解

    基于DWC2USB驅(qū)動(dòng)開發(fā)-USB復(fù)位詳解

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-USB復(fù)位詳解 (qq.com) 一.前言 ? ? ? ? ?上一篇我們?cè)敿?xì)
    的頭像 發(fā)表于 07-07 11:18 ?6.4w次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>復(fù)位詳解

    基于DWC2USB驅(qū)動(dòng)開發(fā)-USB連接詳解

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-USB連接詳解 (qq.com) 一.前言 ? 之前一直在閱讀手冊(cè),規(guī)格書,練習(xí)招式
    的頭像 發(fā)表于 07-07 08:46 ?3690次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>連接詳解

    基于DWC2USB驅(qū)動(dòng)開發(fā)-高速設(shè)備枚舉為全速設(shè)備問題案例分析

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-高速設(shè)備枚舉為全速設(shè)備問題案例分析 (qq.com) 一.前言 ? 本文分享一個(gè)高速設(shè)備被枚舉為全速的問題。 ? ? 高速設(shè)備速
    的頭像 發(fā)表于 07-10 17:12 ?1396次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-高速設(shè)備枚舉為全速設(shè)備問題案例分析

    基于DWC2USB驅(qū)動(dòng)開發(fā)-設(shè)備類驅(qū)動(dòng)框架

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-設(shè)備類驅(qū)動(dòng)框架 (qq.com) 一.前言 從軟件頂層,從數(shù)據(jù)流的角度來看
    的頭像 發(fā)表于 07-16 15:56 ?1305次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-設(shè)備類<b class='flag-5'>驅(qū)動(dòng)</b>框架

    基于DWC2USB驅(qū)動(dòng)開發(fā)-發(fā)送相關(guān)的寄存DMA寄存詳解

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-發(fā)送相關(guān)的寄存DMA寄存詳解 (qq
    的頭像 發(fā)表于 07-16 16:42 ?1639次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-發(fā)送相關(guān)的寄存<b class='flag-5'>器</b>DMA寄存<b class='flag-5'>器</b>詳解

    基于DWC2USB驅(qū)動(dòng)開發(fā)-數(shù)據(jù)不能發(fā)送問題分析案例

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-數(shù)據(jù)不能發(fā)送問題分析案例 (qq.com) ? 一.前言 ? ? ? ?對(duì)于驅(qū)動(dòng)
    的頭像 發(fā)表于 08-08 09:43 ?2268次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-數(shù)據(jù)不能發(fā)送問題分析案例

    RK3399平臺(tái)上USB控制器和PHY的連接方式和配置說明

    。USB2.0 OTG對(duì)應(yīng)的控制器DWC2USB2.0 OTG使用的是Synopsys 方案,即使用DWC2
    發(fā)表于 05-12 17:46

    如何對(duì)基于hal庫的DWC2 USB IP進(jìn)行調(diào)試呢

    背景之前適配 DWC2 USB IP 的時(shí)候,主要是基于 st 的 hal 庫來走的,當(dāng)時(shí)我就對(duì)他們的 hal 庫代碼不滿,只是無奈,迫于時(shí)間就沒重構(gòu),果不其然,usb bug 一堆,隨意舉例,這還
    發(fā)表于 06-14 15:23

    無法讓USB主機(jī)正常工作是我做錯(cuò)了什么嗎?

    bus registered, assigned bus number 3[ 2.986093] dwc2 49000000.usb-otg: irq 51, io mem 0x
    發(fā)表于 12-02 06:06

    基于DWC2USB驅(qū)動(dòng)開發(fā)-抽絲剝繭再論切換到狀態(tài)階段標(biāo)志DOEPINTn.StsPhseRcvd

    本文轉(zhuǎn)自公眾號(hào)系列文章,歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-USB包詳解 (qq.com) 一.前言 前面我們對(duì)SETUP完成標(biāo)志DOE
    的頭像 發(fā)表于 07-24 18:04 ?1568次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-抽絲剝繭再論切換到狀態(tài)階段標(biāo)志DOEPINTn.StsPhseRcvd
    RM新时代网站-首页