<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于μC/OS-Ⅱ的嵌入式USB控制軟件的實現

          基于μC/OS-Ⅱ的嵌入式USB控制軟件的實現

          作者: 時間:2011-08-16 來源:網絡 收藏

          摘要:在此以杭州中天32位RISC CPU CK510為內核的HMl521_B芯片上,μC/Ⅱ操作系統(tǒng),設備的讀寫。系統(tǒng)采用主機的分層結構,著重闡述FAT32文件系統(tǒng)、設備枚舉和BULK-ONLY傳輸的具體過程。為了節(jié)省硬件資源,放棄了USB協議中的繁文縟節(jié),抓住協議核心,設計了精簡高效的驅動程序??紤]到各種U盤的不同特性,增強了驅動兼容性方面的設計。整個階段都由邏輯分析儀給出實測數據抓包截圖。
          關鍵詞:USB;FAT32文件系統(tǒng);USB設備枚舉;Bulk-only傳輸

          0 引言
          2010年USB 3.0的正式推出象征USB傳輸極速時代的到來,但是領域由于考慮成本等各方面因素很多仍采用USB 1.1協議。同時USB協議的主體框架并沒有改變,因此研究USB 1.1協議在嵌入式系統(tǒng)上的對于USB 3.0協議的應用也是很好的鋪墊。本文在以杭州中天32位RISC CPU CK510為內核的摩托羅拉HM1521_B芯片上,μC/Ⅱ操作系統(tǒng),實現對USB設備的讀寫控制。由于HM1521_B芯片只支持USB 1.1協議,所以本文實現的只是USB 1.1協議。USB是一種主從結構:主機Host和從機Device。所有的數據傳輸都由Host主動發(fā)起,而Device只是被動的負責應答。在USB OTG中,一個設備可以在Device和Host之間切換,用以實現設備與設備之間的連接,大大增加了USB的使用范圍。但USBOTG依然沒有脫離主從關系,設備之間必然有一個作為Host,另一個作為Device。標準的USB使用4根線,分別是5 V電源、差分數據線負(D-)、差分數據線正(D+)、地(GND)。USB的低速和全速模式采用電壓傳輸,高速模式則采用電流傳輸。

          1 USB控制的分層結構
          按照USB協議規(guī)范,USB運行首先是USB Host通過D+數據線上的電平變化檢測USB Device的插入和拔出,Host和Device依據協議規(guī)定的順序執(zhí)行一系列信息交換,這稱為枚舉部分,也是所有USB主機都必須支持的功能。Host根據獲得的Device信息判斷該Device屬于哪一類USB設備,并確定下一步選用哪個特定的程序加以支持。
          USB協議規(guī)定了HID(人機接口設備)類、Mass Storage(大容量存儲設備,如U盤)類、音頻類等各種設備類型。在嵌入式系統(tǒng)中,由于受系統(tǒng)性能和存儲空間的限制,一般只能支持某幾個類型。本文只支持Mass Storage類。

          本文引用地址:http://www.ex-cimer.com/article/150349.htm

          b.jpg


          圖1是本文實現的USB Host控制的分層結構:應用層調用FAT32文件系統(tǒng)層的函數;文件系統(tǒng)層通過MassStorage UFI命令與存儲設備建立聯系,實現U盤上文件的建立和讀寫等一系列操作;最底層的是Mass Storage驅動模塊,實現對U盤數據的讀寫功能。其主要函數包括:
          a.jpg
          本文軟件用C語言編程,并依賴μC/Ⅱ操作系統(tǒng)提供的中斷函數來調度各個函數的運行。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();