Linux Device Driver - USB
前篇: Linux Device Driver - vmalloc
工作需求, 先跳至第 13 章
第 13 章 是介紹 USB
一開始介紹 USB 的基本概念, 從 13.4 開始介紹 USB 驅動程式 如何撰寫
github usb driver example
最主要透過 usb_register() 函式 來進行
定義在 #include <linux/usb.h>
傳入值是 struct usb_driver 的位置
struct usb_driver 有幾個欄位.
基本的 像
.name : 註冊時會顯示
usbcore: registered new interface driver <name>
這 名稱會出現在 /sys/bus/usb/drivers/ 下, 產生一個目錄
.probe : device plug in 時, 會帶到這個 function
.disconnect : device unplug 時, 會帶到這個 function
.id_table : struct usb_device_id
然後宣告:
MODULE_DEVICE_TABLE(usb, rtw_usb_id_tbl);
.probe / .disconnect 註冊function 先簡單打印 :
==
執行結果:
insmod
usbcore: registered new interface driver rtl88x2bu
usb_register : ret=0
module init ret=0
plug in USB wifi dongle
usb 3-10: new high-speed USB device number 15 using xhci_hcd
usb 3-10: New USB device found, idVendor=0bda, idProduct=b82c
usb 3-10: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-10: Product: 802.11ac NIC
usb 3-10: Manufacturer: Realtek
usb 3-10: SerialNumber: 123456
rtw_drv_init is HERE
Unplug:
usbcore: registered new interface driver btusb
usb 3-10: USB disconnect, device number 2
rtw_dev_remove is HERE
rmmod:
module exit start
usbcore: deregistering interface driver rtl88x2bu
module exit success
工作需求, 先跳至第 13 章
第 13 章 是介紹 USB
一開始介紹 USB 的基本概念, 從 13.4 開始介紹 USB 驅動程式 如何撰寫
github usb driver example
最主要透過 usb_register() 函式 來進行
定義在 #include <linux/usb.h>
傳入值是 struct usb_driver 的位置
struct usb_driver 有幾個欄位.
基本的 像
.name : 註冊時會顯示
usbcore: registered new interface driver <name>
這 名稱會出現在 /sys/bus/usb/drivers/ 下, 產生一個目錄
.probe : device plug in 時, 會帶到這個 function
.disconnect : device unplug 時, 會帶到這個 function
.id_table : struct usb_device_id
struct usb_device_id, 主要紀錄要註冊 usb device 的 vendor ID 與 product ID.
這邊 0x0bda : Vendor ID, 0xb82c : Product ID
然後宣告:
MODULE_DEVICE_TABLE(usb, rtw_usb_id_tbl);
.probe / .disconnect 註冊function 先簡單打印 :
==
執行結果:
insmod
usbcore: registered new interface driver rtl88x2bu
usb_register : ret=0
module init ret=0
plug in USB wifi dongle
usb 3-10: new high-speed USB device number 15 using xhci_hcd
usb 3-10: New USB device found, idVendor=0bda, idProduct=b82c
usb 3-10: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-10: Product: 802.11ac NIC
usb 3-10: Manufacturer: Realtek
usb 3-10: SerialNumber: 123456
rtw_drv_init is HERE
Unplug:
usbcore: registered new interface driver btusb
usb 3-10: USB disconnect, device number 2
rtw_dev_remove is HERE
rmmod:
module exit start
usbcore: deregistering interface driver rtl88x2bu
module exit success
留言
張貼留言