最近在搞自定义的Gadget hid设备,内核版本:LINUX3.15 使用开发板:ATMEL SAMA5D3 编译环境:Ubuntu 12.04
首先配置内核,进入Device driver 菜单
[*] USB support --->
进入此菜单
选择最后一项 USB Gadget Support --->
--- USB Gadget Support
│ │ [*] Debugging messages (DEVELOPMENT)
│ │ [*] Verbose debugging Messages (DEVELOPMENT)
│ │ [*] Debugging information files (DEVELOPMENT)
│ │ [*] Debugging information files in debugfs (DEVELOPMENT)
│ │ (2) Maximum VBUS Power usage (2-500 mA)
│ │ (2) Number of storage pipeline buffers
│ │ USB Peripheral Controller --->
│ │ USB Gadget Drivers (HID Gadget) --->
│ │
进入最后一项
配置最后一项 (X) HID Gadget
保存退出。
2、添加设备
hid相关源码在linux内核源码下的driver/usb/gadget/里面。
首先打开hid.c 文件
在/****************************** Some noise ******************************/
下面你会看到driver的结构体变量
static __refdata struct usb_composite_driver hidg_driver = {
.name= "g_hid",
.dev= &device_desc,
.strings = dev_strings,
.max_speed = USB_SPEED_HIGH,
.bind= hid_bind,
.unbind = __exit_p(hid_unbind),
};
static struct platform_driver hidg_plat_driver = {
.remove = hidg_plat_driver_remove,
.driver = {
.owner = THIS_MODULE,
.name= "hidg",
},
};
这里我们只需要添加与platform_driver 相对应的device就行了usb_composite_driver 不需要添加device 。下面是我添加的设备
struct platform_device hidg_plat_device = {
.name = "hidg",
.id = 0,
.num_resources = 0,
.resource = 0,
.dev.platform_data = &hidg_plat_pdata,
};
另外hidg_plat_pdata需要根据自己需要匹