當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]1 引言在移動(dòng)設(shè)備大力發(fā)展的今天,移動(dòng)設(shè)備間的大量數(shù)據(jù)交流的需求大大刺激了嵌入式USB主機(jī)系統(tǒng)的發(fā)展,這必然要求嵌入式系統(tǒng)必須提供USB的主機(jī)驅(qū)動(dòng)。而傳統(tǒng)意義上的LISB驅(qū)

1 引言

在移動(dòng)設(shè)備大力發(fā)展的今天,移動(dòng)設(shè)備間的大量數(shù)據(jù)交流的需求大大刺激了嵌入式USB主機(jī)系統(tǒng)的發(fā)展,這必然要求嵌入式系統(tǒng)必須提供USB的主機(jī)驅(qū)動(dòng)。而傳統(tǒng)意義上的LISB驅(qū)動(dòng)程序的開發(fā)都是USB外設(shè)驅(qū)動(dòng)程序的開發(fā),主控制器驅(qū)動(dòng)大部分由操作系統(tǒng)來提供,開發(fā)者所要做的就是調(diào)用操作系統(tǒng)提供的驅(qū)動(dòng)程序的接口。兩大主流操作系統(tǒng)中,Windows不公開源碼而Linux的代碼卻不方便移植。對于目前使用μCOS,VxWorks和QNX等OS的嵌入式系統(tǒng)和一些無OS的單片機(jī)系統(tǒng)來說,建立好一整套方便移植的USB主機(jī)驅(qū)動(dòng)程序?qū)?huì)有更大的意義。

2硬件平臺(tái)

硬件平臺(tái)的MCU選擇的是TMS320 DM642,他是TIC6000產(chǎn)品系列中的一款,基于C64x的內(nèi)核,工作頻率為600 MHz,兼容C6000平臺(tái)上的代碼。他有3個(gè)雙通道視頻口,可以支持多達(dá)6路視頻輸入輸出。DM64.2的處理能力較突出,一塊單片的DM642可以同時(shí)解碼4路MPEG2格式的視頻流。

USB主控制器選用的是Cypress的一款主/從控制器SL811HS,其既可以工作在主機(jī)(Host)模式又可以工作在從機(jī)(Slave)模式,能與全速(Full-Speed)和低速(Low-Speed)外設(shè)通訊。SL811HS可以與微處理器、微控制器和DSP無縫連接,并可直接連到諸如ISA,PCMCIA等一些總線上,圖1是SL811HS的結(jié)構(gòu)框圖。SL811HS提供一個(gè)長度為256 B內(nèi)部RAM空間,該空間的前16 B分配給控制寄存器使用,后面的則作為數(shù)據(jù)緩沖區(qū)(最大240 B)。

 

3 USB協(xié)議棧的基本知識

3.1 USB設(shè)備的拓?fù)?/p>

USB的拓?fù)浣Y(jié)構(gòu)像金字塔,位于塔尖的是根集線器(Root Hub),根集線器是系統(tǒng)中所有USB端口的起點(diǎn),根集線器提供了一定數(shù)量的USB端口,USB設(shè)備和附加的集線器可以連接到那里。

3.2 USB主機(jī)驅(qū)動(dòng)框架

主機(jī)與外設(shè)之間的信息流與互連關(guān)系如圖2所示,主機(jī)與設(shè)備都被劃分成不同的層次。主機(jī)上黑實(shí)的箭頭是實(shí)際的數(shù)據(jù)流向,設(shè)備上對應(yīng)的接口是基于不同實(shí)現(xiàn)的。在主機(jī)與設(shè)備之間的所有通信最終都是通過USB的電纜進(jìn)行,然而,在上層的水平層之間是一種邏輯的對應(yīng)關(guān)系,其最終的通信還必須是通過黑實(shí)箭頭標(biāo)示的方向。這個(gè)結(jié)構(gòu)與TCP/IP協(xié)議棧的結(jié)構(gòu)類似,因此也可以用USB協(xié)議棧來形象的描述USB主機(jī)驅(qū)動(dòng)程序。

 

4 USB協(xié)議棧的實(shí)現(xiàn)

4.1協(xié)議棧的兼容性

為了使協(xié)議棧便于移植,整個(gè)程序使用C語言編寫,將一些諸如進(jìn)程與互斥操作和數(shù)據(jù)格式的定義等與操作系統(tǒng)和硬件平臺(tái)的相關(guān)部分從協(xié)議棧的核心部分分離開來。在移植到其他操作系統(tǒng)時(shí)盡量維持協(xié)議棧的核心部分不動(dòng)或微小改動(dòng),只在與操作系統(tǒng)相關(guān)程序中添加相關(guān)代碼即可。

4.2 USB-HOST協(xié)議棧的框架

基于圖2的USB通信層次圖,以對大容量存儲(chǔ)設(shè)備的支持為例,USB-HOST協(xié)議棧的設(shè)計(jì)如圖3所示。

 

文件系統(tǒng)層提供與用戶的交互接口。該層提供對文件的一些基本操作,諸如創(chuàng)建文件、刪除文件、讀寫文件等常用操作。為與Windows兼容,可以在該層實(shí)現(xiàn)FAT32,F(xiàn)ATl6,NTFS等文件系統(tǒng)。

HDM為每個(gè)設(shè)備建立統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)和接口提供給文件系統(tǒng)對硬盤進(jìn)行讀寫扇區(qū)操作。鑒于系統(tǒng)中可靜會(huì)同時(shí)存在IDE硬盤,HDM對兩種硬盤進(jìn)行統(tǒng)一管理,對文件系統(tǒng)掩蓋硬盤的細(xì)節(jié),使得文件系統(tǒng)在對兩種硬盤操作時(shí)沒有什么不同。

USB設(shè)備驅(qū)動(dòng)層目前只實(shí)現(xiàn)了大容量設(shè)備類驅(qū)動(dòng)對于其他類型的設(shè)備類諸如音頻設(shè)備類、通信設(shè)備類、顯示設(shè)備類、人機(jī)接口設(shè)備類驅(qū)動(dòng)在本層添加,對大容量存儲(chǔ)設(shè)備類,USB規(guī)范針對不同的設(shè)備又選用不同的協(xié)議,如:RBC,SCSH-2,UFI,SFF-8020i,QIC-157等,對于USB硬盤,使用SCSI協(xié)議。設(shè)備類驅(qū)動(dòng)的協(xié)議層將來自USB硬盤的讀寫操作翻譯成SCSI命令,而傳輸層則將命令分解為一個(gè)個(gè)USB事務(wù)發(fā)送到USB總線驅(qū)動(dòng)層。

總線驅(qū)動(dòng)層實(shí)現(xiàn)USB總線協(xié)議,管理USB設(shè)備和USB事務(wù)管理以及總線枚舉??偩€驅(qū)動(dòng)層先初始化所有的主控制器,每當(dāng)成功檢測和初始化一個(gè)主控制器,并給這個(gè)控制器建立一套虛擬根集線器。在初始化主控制器后,注冊所有已支持的驅(qū)動(dòng)。如果有支持的設(shè)備插入的話,就可以自動(dòng)找到相應(yīng)的驅(qū)動(dòng)工作。

硬件抽象層對上層掩蓋硬件細(xì)節(jié),為了增加軟件可移植性,與USB控制器芯片相關(guān)的部分放在該層的HCD部分中,在移植到其他平臺(tái)上時(shí),針對該平臺(tái)使用的控制器芯片改動(dòng)HCD的相關(guān)內(nèi)容即可。此外,數(shù)據(jù)的最終傳輸也將在這里完成。

4.3 虛擬根集線器VRH(Virtual Root Hub)

一些USB主控制器會(huì)集成一些根集線器,但SI811HS并沒有集成集線器的功能,為了配合USB的系統(tǒng)拓?fù)浣Y(jié)構(gòu),用軟件模擬一個(gè)根集線器,稱為虛擬根集線器,該集線器只有一個(gè)端口。虛擬集線器并不能替代集線器的所有功能,他只是為了滿足USB的拓?fù)浣Y(jié)構(gòu),同時(shí),提供根集線器的接口,方便驅(qū)動(dòng)程序被移植到其他具有根集線器功能的嵌入式系統(tǒng)中去。

4.4 USB帶寬

USB是以1 ms的時(shí)間片進(jìn)行數(shù)據(jù)傳輸?shù)模谶@1 ms的時(shí)間片中能傳輸?shù)臄?shù)據(jù)長度就是USB的帶寬,如何保證在1個(gè)時(shí)間片上有最大數(shù)據(jù)的傳輸,則是決定USB傳輸速率的關(guān)鍵。由于USB可能被多種設(shè)備共享,所以在時(shí)間片內(nèi)可能會(huì)有多種類型的USB傳輸,中斷和同步傳輸對實(shí)時(shí)性要求高,因此他們在帶寬的分配上具有優(yōu)先權(quán),其次是控制傳輸,BULK優(yōu)先權(quán)最低,使用剩下的帶寬。SI811HS的SOF中斷標(biāo)志著一個(gè)時(shí)間片的開始。在大容量設(shè)備的驅(qū)動(dòng)程序中,主要是控制傳輸和塊(bulk)傳輸,SOF中斷開始后,安排數(shù)據(jù)傳輸。此外,在塊傳輸中,數(shù)據(jù)的完整性則相對重要的多,因此,驅(qū)動(dòng)程序必須提供完善的錯(cuò)誤檢測和重發(fā)機(jī)制。對于大容量設(shè)備來說,傳輸數(shù)據(jù)量大,傳輸速度也是一個(gè)很重要的指標(biāo),USB 1.1支持的最大傳輸速率是1.5 MB/s,但由于協(xié)議的開銷,數(shù)據(jù)的傳輸速率卻往往達(dá)不到這個(gè)峰值速率。除了對代碼進(jìn)行優(yōu)化外,充分利用帶寬將是提高速率行之有效的方法。

4.5協(xié)議棧的關(guān)鍵進(jìn)程

4.5.1 主進(jìn)程

主進(jìn)程是USB-HOST協(xié)議棧最開始的一個(gè)進(jìn)程,除了初始化外,他的主要任務(wù)是監(jiān)測設(shè)備。該進(jìn)程平時(shí)處于鎖死狀態(tài),當(dāng)被激活時(shí)去檢測虛擬集線器的端口狀態(tài)。有設(shè)備插入時(shí),中斷處理函數(shù)改變端口狀態(tài)并啟動(dòng)主進(jìn)程,主進(jìn)程對端口上的設(shè)備進(jìn)行枚舉,并為其分配資源。相反,當(dāng)有設(shè)備拔除時(shí),主進(jìn)程則將與該設(shè)備相關(guān)的資源釋放。

4.5.2 中斷處理函數(shù)

中斷處理函數(shù)也可以看成是一個(gè)優(yōu)先級最高的進(jìn)程,SL811HS的幾個(gè)重要的中斷是:插入/拔除中斷(Insered/Removed)檢測從設(shè)備的插入和拔除操作,SOF定時(shí)器中斷(SOF Timer)啟動(dòng)一個(gè)時(shí)間片,傳輸完成中斷(USB Done Interrupt)標(biāo)志一次傳輸?shù)耐瓿?,中斷處理函?shù)的流程如圖4所示。

 

4.5.3軟件狗進(jìn)程

當(dāng)有兩個(gè)中斷同時(shí)到達(dá)時(shí),處理器可能會(huì)丟失掉一個(gè)中斷沒有處理,可以設(shè)置一個(gè)軟件狗進(jìn)程,定時(shí)執(zhí)行中斷處理函數(shù)。當(dāng)有丟失的中斷時(shí),軟件狗會(huì)將這個(gè)中斷處理掉。

5 結(jié) 語

本文主要討論了嵌入式系統(tǒng)USB-HOST協(xié)議棧的設(shè)計(jì)思路,整個(gè)軟件基于DSPBIOS系統(tǒng)在CCS的編譯環(huán)境下調(diào)試通過,經(jīng)過測試,運(yùn)行穩(wěn)定。軟件的編寫采用移植性好的C語言編寫,并將與平臺(tái)相關(guān)的部分代碼與核心代碼分開以增加軟件的可移植性。此外,為軟件的功能的升級也預(yù)留了接口。

如今,隨著移動(dòng)電子產(chǎn)品的大量出現(xiàn),設(shè)備之間直接通信的需求也越來越大,USB占據(jù)了嵌人式設(shè)備與其他設(shè)備之間通信的主要角色。角色也在不停地變化,在這次傳輸中可能是主機(jī),下次傳輸就有可能扮演從機(jī)的角色,OTG規(guī)范在這種需求下誕生,符合USB OTG的設(shè)備,既可以作為Host,也可以作為外設(shè)來與另一個(gè)OTG設(shè)備直接實(shí)現(xiàn)設(shè)備到設(shè)備的通信??深A(yù)見的將來,嵌入式USB系統(tǒng)的發(fā)展趨勢將是USB OTG。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉