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