基于μC/OS-Ⅱ的嵌入式USB控制軟件的實(shí)現
摘要:在此以杭州中天32位RISC CPU CK510為內核的HMl521_B芯片上,基于μC/OS-Ⅱ操作系統,實(shí)現對USB設備的讀寫(xiě)控制。系統采用嵌入式USB主機控制軟件的分層結構,著(zhù)重闡述FAT32文件系統、USB設備枚舉和BULK-ONLY傳輸的具體實(shí)現過(guò)程。為了節省硬件資源,放棄了USB協(xié)議中的繁文縟節,抓住協(xié)議核心,設計了精簡(jiǎn)高效的驅動(dòng)程序??紤]到各種U盤(pán)的不同特性,增強了驅動(dòng)兼容性方面的設計。整個(gè)階段都由邏輯分析儀給出實(shí)測數據抓包截圖。
關(guān)鍵詞:嵌入式USB控制;FAT32文件系統;USB設備枚舉;Bulk-only傳輸
0 引言
2010年USB 3.0的正式推出象征USB傳輸極速時(shí)代的到來(lái),但是嵌入式領(lǐng)域由于考慮成本等各方面因素很多仍采用USB 1.1協(xié)議。同時(shí)USB協(xié)議的主體框架并沒(méi)有改變,因此研究USB 1.1協(xié)議在嵌入式系統上的實(shí)現對于USB 3.0協(xié)議的應用也是很好的鋪墊。本文在以杭州中天32位RISC CPU CK510為內核的摩托羅拉HM1521_B芯片上,基于μC/OS-Ⅱ操作系統,實(shí)現對USB設備的讀寫(xiě)控制。由于HM1521_B芯片只支持USB 1.1協(xié)議,所以本文實(shí)現的只是USB 1.1協(xié)議。USB是一種主從結構:主機Host和從機Device。所有的數據傳輸都由Host主動(dòng)發(fā)起,而Device只是被動(dòng)的負責應答。在USB OTG中,一個(gè)設備可以在Device和Host之間切換,用以實(shí)現設備與設備之間的連接,大大增加了USB的使用范圍。但USBOTG依然沒(méi)有脫離主從關(guān)系,設備之間必然有一個(gè)作為Host,另一個(gè)作為Device。標準的USB使用4根線(xiàn),分別是5 V電源、差分數據線(xiàn)負(D-)、差分數據線(xiàn)正(D+)、地(GND)。USB的低速和全速模式采用電壓傳輸,高速模式則采用電流傳輸。
1 USB控制軟件的分層結構
按照USB協(xié)議規范,USB運行首先是USB Host通過(guò)D+數據線(xiàn)上的電平變化檢測USB Device的插入和拔出,Host和Device依據協(xié)議規定的順序執行一系列信息交換,這稱(chēng)為枚舉部分,也是所有USB主機都必須支持的功能。Host根據獲得的Device信息判斷該Device屬于哪一類(lèi)USB設備,并確定下一步選用哪個(gè)特定的程序加以支持。
USB協(xié)議規定了HID(人機接口設備)類(lèi)、Mass Storage(大容量存儲設備,如U盤(pán))類(lèi)、音頻類(lèi)等各種設備類(lèi)型。在嵌入式系統中,由于受系統性能和存儲空間的限制,一般只能支持某幾個(gè)類(lèi)型。本文只支持Mass Storage類(lèi)。
圖1是本文實(shí)現的USB Host控制軟件的分層結構:應用層調用FAT32文件系統層的函數;文件系統層通過(guò)MassStorage UFI命令與存儲設備建立聯(lián)系,實(shí)現U盤(pán)上文件的建立和讀寫(xiě)等一系列操作;最底層的是Mass Storage驅動(dòng)模塊,實(shí)現對U盤(pán)數據的讀寫(xiě)功能。其主要函數包括:
本文軟件用C語(yǔ)言編程,并依賴(lài)μC/OS-Ⅱ操作系統提供的中斷函數來(lái)調度各個(gè)函數的運行。
評論