基於OHCI的USB主機 前言

2021-09-03 10:02:53 字數 637 閱讀 6992

很久以前,大概是前年年底吧,因為公司專案的要求,我做了基於ohci的usb主機訪問u盤的程式,用來把系統中產生的一些資料儲存到u盤中。本來做的時候就想把其中的一些經驗體會發表的,可是工作實在是太忙,而且也的確有點懶,就一直拖到了現在。

做訪問u盤的usb主機,網上有很多現成的例子,從硬體到軟體。可是絕大多數都是使用了專用的usb主機晶元,譬如isp1160。還有現成的詳細資料,譬如周立功公司出品的《arm嵌入式系統軟體開發例項》系列教程。但是,凡事都怕這個但是,我們公司專案偏偏不使用usb主機晶元,而是直接利用arm9200晶元自帶的介面直接來完成這個功能。

當時遇到的困難簡直是多如牛毛,再加上智商又低,光是剛開始通過控制端點傳送命令的程式就除錯了有幾個星期。總的來說,當時除錯程式大量的時間是花在了底層的**除錯,真正到了磁碟操作、檔案系統操作、業務功能實現的時候,所花費的時間反而還少了。畢竟上層的業務邏輯寫好了以後,我還通過自己編寫的乙個簡單的單元測試程式進行了一些測試。

痛定思痛,我決定還是把除錯過程中那些苦惱的日子裡總結出來的一些經驗分享出來,希望也能為相關的開發人員節省一點時間。畢竟網上基於ohci的usb主機訪問u盤的資料實在是太少了。

我看了看我的那個程式的設計文件,足足有100頁,當然這裡面也包含了部分的**,不過好在當時就寫下了設計文件,可以讓我的這個系列文章輕鬆不少。

基於OHCI的USB主機 OHCI(端點)

ohci open host controller inte ce 是康柏 微軟 國家半導體等公司共同制定的乙個usb主機介面規範,它提供乙個更抽象的介面來完成usb資料傳輸工作。在ohci規範中,最重要的幾個概念是端點 endpoint ed 傳輸描述符 transport descriptor ...

基於OHCI的USB主機 USB裝置列舉

usb裝置接入以後,必須進行裝置列舉,得到裝置引數,設定裝置執行配置等引數,下面的 就是對u盤裝置進行列舉的過程。因為沒有使用作業系統,所以函式使用狀態遷移的方式完成列舉,該函式在主迴圈中被呼叫。usb裝置列舉處理 return 當前列舉處理的狀態 short usbenumdev void old...

基於OHCI的USB主機 背景介紹

使用at91rm9200作為主控cpu,利用該晶元的usb主機介面訪問u盤,根據接收的上層命令把相應資料儲存到u盤的指定檔案上。不使用額外的專用usb控制晶元,要求穩定可靠,效率高,不能影響執行在該cpu上的其它程式。at91rm9200程式載入後直接執行,沒有作業系統。以上就是我做的基於ohci的...