USB主機控制器的設計
這里在EZ-Host主控制器驅動中定義一個結構體structusb hcd c67x00_hcd,用于描述EZ-Host的基本信息、硬件資源、狀態(tài)描述,定義struct hc_driver c67x00_hc_driver來描述用于操作主機控制器的鉤子函數,其結構體如圖4所示。本文引用地址:http://m.butianyuan.cn/article/202547.htm
c67x00_hub_start()啟動HCD主控制器,c67x00_hub_irq()實現其中斷控制處理,c67x00_hub_status_data(),c67x00_hub_control()實現對虛擬根集線器的控制,c67x00_hub_enqueue(),c67x00_hub_dequeue()實現對USB請求(URB)進行排隊,對URB進行調度。根據hcd和endp-oint的信息,安排URB的schedule到e67x00,該URB的傳輸完成后,會調用urb->complete()通知USBD。
4 測試結果
在ML405開發(fā)板上實現了USB主機控制器的開發(fā),使系統(tǒng)具有USB主機功能。在開發(fā)板上分別插入USB鍵盤、USB鼠標、U盤進行測試,內核識別信息輸出如圖5所示。
從圖5中可看出,系統(tǒng)可以方便與大容量存儲類(MassStorage類)USB接口、人機接口類HID(Human Interfaee Device)USB接口進行通信,進行正常讀寫操作,實現了系統(tǒng)的SB接口擴展。
5 結束語
詳細介紹在SoPC平臺上進行USB主機控制器的硬、軟件設計。針對EZ-Host器件,詳細介紹其USB主控制器的Linux驅動開發(fā)過程及主要的接口設計,對于USB的主機控制器的驅動開發(fā)有一定參考價值。設計的重點和難點主要集中在主機控制器器件的驅動程序開發(fā)的環(huán)節(jié)上,但Linux作為開源系統(tǒng),在開發(fā)設備驅動程序時有著其他嵌入式系統(tǒng)不可比擬的優(yōu)勢,大量的開放源碼無疑可以大大加快開發(fā)的進程并使得其應用更加的廣泛。因此,USB作為一種新型的高速外設總線,在嵌入式Linux領域有著廣闊的應用前景。
評論