usb總線驅動分類:UHCI: intel公司制作 適用于低速/全速設備
OHCI:microsoft 適用于低速/全速設備
EHCI: 高速設備(48M)
2410里面的usb總線驅動用的是OHCI_s3c2410
usb總線驅動作用:
1.識別設備
2.找到并安裝對應的設備驅動
3.提供usb讀寫函數
工作流程:
1.識別usb設備(D+被拉高為1.1,D-被拉高為低速設備)
2.分配地址,并告訴usb設備
3.發出命令獲取描述符
4.查找并安裝對應的設備驅動程序。
函數過程如下(可參考《linux源代碼情景分析一書》):
hub_irq
kick_khubd
hub_port_connect_change{
choose_address(udev)//分配地址,即編號
udev=usb_alloc_dev(hdev,hdev->bus,portl);
dev->dev.bus=&usb_bus_type;
}
hub_port_init{
hub_set_address//把地址告訴usb設
usb_get_device_descriptor//獲取描
usb_parse_confriguation//獲取所有描 述符讀出來并且解析
device_add//1.把設備放入(總線) usb_bus_type的鏈表 ,從bus的driver鏈表里取出driver 2.把usb_interface and usb_driver s id_able 比較
3. 如果能夠匹配,調用driver的probe函數。
評論