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