天天看點

USB基礎(雜)

要完成一個USB裝置的開發,僅了解USB協定是不夠的,還需要知道USB裝置類協定,USB協定與USB裝置類協定是互相補充的。為了簡化USB總線的開發流程,USB-IF将常用的具有相同或相似功能的裝置歸為一類,并制定了相關的裝置類規範,使得隻要依照統一規範标準,不同的廠商開發的USB裝置可以使用同樣的驅動程式。

USB裝置類是個龐大的概念,限于篇幅,簡單介紹一下一些常見的類型。USB裝置分為兩大類:标準型的和非标準型的。标準類型的,比如音頻裝置、通信裝置、列印機裝置、H工D裝置和儲存設備。而非标準類型的,比如USB/RS一232轉換器等。其中儲存設備 (Mass Storage)類,将結合後面的具體開發,重點講述。

Massstorage裝置類和Bulk一only類傳輸協定

MassStorage類主要用于為軟磁盤接口、硬碟接口及Flash存儲器等裝置建立的USB接口,類代碼(blnterfaceClass字段的值)為0x08。這些不同的資料存儲載體接口構成了MaSSStorage類的子類。

這些子類的指令都是各子類所特有的,而與USB沒有任何關系,進行USB傳輸時,将這些指令打包進行傳輸。實際的開發過程,可以選用不同的子類指令集來實作系統功能,并不必完全受限制于關系定義。而真正與MassStorage傳輸方式相關的是其傳輸協定,即blnterfaceProtocol字段表示的内容。

在主動USB接口設計中支援的傳輸協定,是Bulk一Only傳輸協定。此協定僅使用Bulk端點來實作資料、指令和狀态的傳輸,而沒有使用中斷和控制端點。CBW和CSW是一系列包的集合,簡稱封包。

Massstor。ge的子類指令

嚴格意義上,支援MassStorage類的USB主機應該全面支援各子類。但是在實際應用中,一方面由于主機系統資源的限制,另一方面由于實際需求要求有針對性,是以通常選用一些基本的指令即可。各子類都支援基本的操作指令,是以可以靈活選用各種子類,如UFI,SCSl及RBC等,具體的指令格式參考相關的指令規範,不再詳述,在具體的開發中,會結合項目來介紹相關的指令。

USB主機

傳統意義的USB開發,僅僅是對USB外設的開發,USB核心驅動程式和USB主要制器驅動程式都是由作業系統提供。而為了實作USB主機功能,必須設計這兩部分驅動程式。USB主機協定描述了USB系統軟體(核心驅動程式和主要制器驅動程式)的設計規範。

USB主機的主要功能有:檢測USB裝置的連接配接和斷開;管理主機和裝置間的标準的控制管道;管理主機和裝置間的資料流;收集裝置的狀态,統計總線的活動;控制和管理主機控制器和裝置間的電氣接口。

USB主機分為三個層次:USB總線接口層、USB系統層、USB使用者層