0
我正在嘗試編寫修改的/自定義的USB鍵盤驅動程序。我遇到了irq處理程序沒有按預期收到按鍵的問題。修改的USB鍵盤驅動程序未接收按鍵(Linux)
我所做的:
- 製成的
/linux/driver/hid/usbhid/usbkbd.c
link副本,並修改usb_kbd_id_table
只具有銷售商ID以及與我的鍵盤相關的產品ID。 - 構建修改後的驅動程序。
- 插入修改後的驅動程序
sudo insmod usbkbd.ko
。 - 通過將
usbhid:quirks=0x03eb:0x20ff:0x4
添加到/etc/default/grub
,防止鍵盤與標準HID驅動程序相關聯。
行爲:
- 在鍵盤堵漏,它是正確與我的司機有關。我知道這是因爲我看到
printk
聲明,我在usb_kbd_probe
中添加了/var/log/syslog
。它實際上顯示了兩次,因爲該設備有2個接口。 - 函數
usb_kbd_irq
在循環中重複調用。我在這裏也添加了一個printk
,我看到kbd->new
在每個字節中總是有0
。 - 該循環快速繼續,按下任何按鍵都不起作用(無論按下哪個按鍵,每個字節中的
kbd->new
總是有0
)。
我已經嘗試使用wireshark查看USB交通,我看到主機和設備來回。我期待着單向的交通。 wireshark screenshot
我很困惑爲什麼按鍵沒有效果。如果按鍵被按下,我不應該在kbd->new
中看到一些數據嗎?
編輯:截屏與設備信息在https://i.stack.imgur.com/lNq4e.png