色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式系統(tǒng)中USB-HOST協(xié)議棧的設計

          嵌入式系統(tǒng)中USB-HOST協(xié)議棧的設計

          作者: 時間:2007-07-09 來源:網(wǎng)絡 收藏

          1 引言

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

          2硬件平臺

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

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


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

          3.1 USB設備的拓撲

          USB的拓撲結構像金字塔,位于塔尖的是根集線器(Root Hub),根集線器是系統(tǒng)中所有USB端口的起點,根集線器提供了一定數(shù)量的USB端口,USB設備和附加的集線器可以連接到那里。

          3.2 USB主機驅動框架

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

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

          4.1協(xié)議棧的

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

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

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

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

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

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

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

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

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

          一些USB主控制器會集成一些根集線器,但SI811HS并沒有集成集線器的功能,為了配合USB的系統(tǒng)拓撲結構,用軟件模擬一個根集線器,稱為虛擬根集線器,該集線器只有一個端口。虛擬集線器并不能替代集線器的所有功能,他只是為了滿足USB的拓撲結構,同時,提供根集線器的接口,方便驅動程序被移植到其他具有根集線器功能的嵌入式系統(tǒng)中去。

          4.4 USB帶寬

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

          4.5協(xié)議棧的關鍵進程

          4.5.1 主進程

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

          4.5.2 中斷處理函數(shù)

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

          4.5.3軟件狗進程

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

          5 結 語

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

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



          關鍵詞: 驅動 代碼 兼容 頻率

          評論


          相關推薦

          技術專區(qū)

          關閉