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