注冊USB設(shè)備(注冊的USB設(shè)備結(jié)構(gòu)體包含了USB設(shè)備的vender ID和product ID)USB設(shè)備插..."/>
您好,登錄后才能下訂單哦!
linux如何發(fā)現(xiàn)和加載對應(yīng)的USB對應(yīng)的設(shè)備驅(qū)動(dòng)
1.整體流程
加載USB設(shè)備驅(qū)動(dòng)-->注冊USB設(shè)備(注冊的USB設(shè)備結(jié)構(gòu)體包含了USB設(shè)備的vender ID和product ID)
USB設(shè)備插入后,匹配到vendor ID和product ID,即調(diào)用改USB注冊結(jié)構(gòu)里的probe函數(shù),開始和USB設(shè)備進(jìn)行通信。
2.USB設(shè)備結(jié)構(gòu)體
static struct usb_driver test_usb_driver={
.OWNER = THIS_MODULE,
.name = "test USB device",
.id_table = test_usb_table_id,
.probe = test_usb_probe,
.disconnect = test_usb_disconnect
};
3.USB設(shè)備table ID
static struct usb_device_id test_usb_table_id={
{USB_DEVICE(TEST_USB_VENDOR_ID,TEST_USB_PRODUCT_ID)};
{}
};
擴(kuò)展:
usb設(shè)備table ID對應(yīng)usb_device_id
i2c設(shè)備table ID對應(yīng)i2c_device_id
usb設(shè)備的table id保存在USB設(shè)備內(nèi),在作為device從設(shè)備,插入host(主設(shè)備)后,host通過端口0從usb設(shè)備中讀出來。
i2c設(shè)備則是定義在device tree里,kernel啟動(dòng)后,遍歷device tree,加載對應(yīng)的i2c設(shè)備驅(qū)動(dòng)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。