新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > usb總線驅(qū)動(dòng)粗略過(guò)程(OHCI協(xié)議)

usb總線驅(qū)動(dòng)粗略過(guò)程(OHCI協(xié)議)

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò) 收藏
usb總線驅(qū)動(dòng)分類(lèi):
UHCI: intel公司制作 適用于低速/全速設(shè)備
OHCI:microsoft 適用于低速/全速設(shè)備
EHCI: 高速設(shè)備(48M)
2410里面的usb總線驅(qū)動(dòng)用的是OHCI_s3c2410
usb總線驅(qū)動(dòng)作用:
1.識(shí)別設(shè)備
2.找到并安裝對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)
3.提供usb讀寫(xiě)函數(shù)
工作流程:
1.識(shí)別usb設(shè)備(D+被拉高為1.1,D-被拉高為低速設(shè)備)
2.分配地址,并告訴usb設(shè)備
3.發(fā)出命令獲取描述符
4.查找并安裝對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序。
函數(shù)過(guò)程如下(可參考《linux源代碼情景分析一書(shū)》):
hub_irq
kick_khubd
hub_port_connect_change{
choose_address(udev)//分配地址,即編號(hào)
udev=usb_alloc_dev(hdev,hdev->bus,portl);
dev->dev.bus=&usb_bus_type;
}
hub_port_init{
hub_set_address//把地址告訴usb設(shè)
usb_get_device_descriptor//獲取描
usb_parse_confriguation//獲取所有描 述符讀出來(lái)并且解析
device_add//1.把設(shè)備放入(總線) usb_bus_type的鏈表 ,從bus的driver鏈表里取出driver 2.把usb_interface and usb_driver s id_able 比較
3. 如果能夠匹配,調(diào)用driver的probe函數(shù)。


評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉