簡單分析USB設備驅動框架(秒懂~)

2022年09月27日18:51:10 科技 1709

在生活、工作中經常會接觸到USB設備,如鼠標、鍵盤、攝像頭、可移動硬盤、掃碼槍等。這些設備通過USB接口連接到電腦上後,電腦會立刻提示“檢測到新硬件...”、安裝驅動等。這裡需要強調下USB設備使用的是USB總線,window或Linux內核中都會自帶usb總線驅動,所以接上USB設備後,主機能夠立刻檢測到,提醒需要安裝設備驅動是指安裝USB設備驅動。

USB設備驅動使用USB總線,所以很多操作由USB總線驅動幫我們完成了,我們只需要的按照總線、設備、驅動框架來實現USB設備的驅動既可。USB設備數據的讀寫操作由總線驅動現在,我們可以直接使用總線讀取到的數據,然後解析這些數據的含義、再進行相關的操作就可以了(這裡需要注意的一點是USB總線驅動只提供USB設備的讀寫操作函數,這函數是通用的,即裡面的數據的含義總線驅動並不知道)。

USB設備驅動的框架圖下,具體的代碼可以參考內核中的/drivers/hid/usbhid/usbmouse.c

分配/設置usb_driver結構體,填充裡面的.id_table、.probe、.disconnect成員。
調用usb_register把usb_driver結構體註冊到內核中。

static struct usb_driver usbtouch_driver = {
	.name		= "myusb",
	.probe		= usbtouch_probe,
	.disconnect	= usbtouch_disconnect,
	.id_table	= usbtouch_devices,
};
 
static int __init usbtouch_init(void)
{
	return usb_register(&usbtouch_driver);
}
 
static void __exit usbtouch_cleanup(void)
{
	usb_deregister(&usbtouch_driver);
}

struct usb_driver中的id_table成員是用與和usb設備進行匹配的選項,表示這個驅動支持的設備。

.probe成員為函數指針,就是在設備和驅動匹配成功的時候執行。

.disconnect成員也為函數指針,在設備和驅動關聯成功後再斷開執行,如拔了USB設備或卸載USB設備驅動。


更多linux內核視頻教程文檔資料免費領取後台私信【內核】自行獲取.

簡單分析USB設備驅動框架(秒懂~) - 天天要聞

簡單分析USB設備驅動框架(秒懂~) - 天天要聞

簡單分析USB設備驅動框架(秒懂~) - 天天要聞

科技分類資訊推薦

獲巨額雲計算合同!甲骨文股價創新高 - 天天要聞

獲巨額雲計算合同!甲骨文股價創新高

智通財經APP獲悉,甲骨文(ORCL.US)表示,該公司已簽署一項年收入高達300億美元的單一雲計算服務合同,這一金額已超過其當前整個雲基礎設施業務的規模。受該消息推動,甲骨文股價周一早盤一度上漲8.6%,創下盤中歷史新高,收盤漲近4%。今年以來,甲骨文股價已累計上漲約32%。甲骨文在周一提交的一份監管文件中披露,這筆收入...
中金:運營商配合意願亟待提升 eSIM熱度有望重啟 - 天天要聞

中金:運營商配合意願亟待提升 eSIM熱度有望重啟

智通財經APP獲悉,中金髮布研報稱,根據GSMA Intelligence預測,至2025年底,全球預計將有約10億eSIM智能手機連接,2030年將增長至69億,隨着消費電子輕薄化、可穿戴設備以及物聯網終端漫遊需求增加,eSIM的應用有望在2025年加速。但eSIM的應用落地仍面臨運營商配合意願度不高的阻力,支持終端數量有限。eSIM卡具備小尺寸、...
網易騰訊發布暑期限玩日曆:未成年人每周限玩3小時 - 天天要聞

網易騰訊發布暑期限玩日曆:未成年人每周限玩3小時

隨着暑期來臨,未成年人網絡使用需求顯著上升。為防止未成年人沉迷遊戲,6月30日,網易遊戲、騰訊遊戲分別發布了2025年暑期未成年人限玩日曆(7月1日-8月31日),兩家企業均採取嚴格時段限制措施,規則基本一致。
“閃燈即推+邊推邊開”!太原機場開啟高效運行新模式 - 天天要聞

“閃燈即推+邊推邊開”!太原機場開啟高效運行新模式

近日,東航MU5273航班在T2站坪順利完成“閃燈即推+邊推邊開”新流程操作,這標誌着航空器地面高效運行新模式在太原國際機場有限責任公司正式投入應用。資料圖 據介紹,太原機場公司二跑道預計在2025年底正式投運。經模擬機測算,航空器地面滑行距離、滑行時間將顯著增加。不僅直接衝擊航班正常性,也將極大影響機場整體運行...