8 Linux usbmouse设备驱动程序
前一章节对 linux 内核中 USB 驱动程序的框架进行了分析,这一节以 USB 鼠标为对象,编写 USB 鼠标驱动程序。 实验内容:编写 USB 鼠标设备驱动程序。并将 USB 鼠标左键定义为" L "功能,右键定义为" S "功能,中间滚轮键定义为" ENTER "功能,方便测试。 参考内核中 /driver/hid/usbhid/usbmouse.c 文件。 从入口函数 usbmouse_as_key_init 开始。按照之前编写字符驱动程序的惯例,入口函数中需要实现 usb_driver 结构体的分配,配置、注册以及和硬件相关的操作。 那么,首先需要定义一个 usb_driver 结构体。 其中 probe 函数是整个驱动程序的重点,后面再讲。 disconnect 函数是当设备断开连接时调用,后面再讲。 id_table 用于保存 usb 设备的 id 信息,其结构体定义如下: 这里 usbmouse_as_key_id_table 的定义如下: 定义中使用宏 USB_INTERFACE_INFO ,具体定义如下: 对宏 USB_INTERFACE_INFO 进行展开, usbmouse_as_key_id_table [] ={ { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = USB