USB開(kāi)發(fā)中易混淆的概念剖析
摘要:隨著(zhù)USB技術(shù)日趨成熟,USB開(kāi)發(fā)者只需要關(guān)注頂層開(kāi)發(fā)即可,這樣雖然戰少了工作量,但容易使開(kāi)發(fā)者忽略USB基礎理論與概念,導致的弊端在于開(kāi)發(fā)者一旦遇到問(wèn)題,往往不知如何解決。作者基于多年USB開(kāi)發(fā)經(jīng)驗,針對當前很多USB開(kāi)發(fā)者容易混淆的概念,進(jìn)行深入淺出的剖析,針對枚舉和重枚舉的區別、不同啟動(dòng)方式的區別等問(wèn)題,進(jìn)行了歸納總結。本文從對比的角度分析問(wèn)題,有助于開(kāi)發(fā)者理清USB的工作機理。
關(guān)鍵詞:USB;枚舉;重枚舉;重王;固件程序;EZ-USB
USB(Universal Serial Bus)通訊具有傳輸速度快、可靠性高、支持即插即用等優(yōu)點(diǎn),已經(jīng)逐步成為現代數據傳輸的主流方式,獲得了廣泛的應用。
然而,在USB應用技術(shù)越來(lái)越成熟的同時(shí),開(kāi)發(fā)人員對于USB技術(shù)的運用越來(lái)越傾向于頂層使用,對于USB的底層原理與基礎協(xié)議關(guān)注的很少,這會(huì )導致在實(shí)際開(kāi)發(fā)過(guò)程中,遇到問(wèn)題之后不知從何處著(zhù)手解決。只有了解了USB的傳輸協(xié)議或者是底層傳輸通訊原理,才能很好的找出解決途徑。
文中基于作者多年的USB開(kāi)發(fā)使用經(jīng)驗,并且結合目前研究與生產(chǎn)中廣泛使用的幾種USB控制芯片,包括Cypress公司的enCoRe系列芯片、EZ-USB芯片以及Netchip公司的NET2888芯片等等,總結了它們在開(kāi)發(fā)使用中最容易遇到而又非常重要的幾個(gè)問(wèn)題:USB設備與主機建立通訊過(guò)程中枚舉和重枚舉的區別,這個(gè)區別體現在不同的USB控制芯片當中,它對于設備的啟動(dòng)以及連接主機都有深刻影響;重枚舉與重置的區別,很多把這個(gè)概念混淆,導致在應用中出錯;固件程序控制多種啟動(dòng)方式的區別,同樣的代碼控制著(zhù)不同的啟動(dòng)方式,理解了這個(gè)過(guò)程才能很好地控制芯片的工作。
1 USB通訊中的重要概念
1.1 枚舉與重枚舉的區別
在USB通訊協(xié)議中,有一個(gè)重要的概念是檢測設備,也可稱(chēng)為枚舉,它是主機在應用程序與USB設備通信之前,了解該設備的設置與能力并且給該設備指定一個(gè)驅動(dòng)程序的過(guò)程,它是任何USB設備正常工作所必須的部分。
對于普通的USB設備,主機通過(guò)枚舉的過(guò)程獲取設備的描述符,了解設備并根據設備描述符中的PID(產(chǎn)品識別碼)與VID(供應商識別碼)值選擇合適的驅動(dòng)程序安裝,這樣就與設備建立了USB連接,之后就可以進(jìn)行正常USB通訊,枚舉的過(guò)程如圖1所示。
評論