USB Linux 自定义设备,[置顶] LINUX 自定义USB Gadget HID 设备

本文介绍了在Linux3.15环境下,使用ATMEL SAMA5D3开发板配置和创建USB Gadget HID设备的步骤。通过修改内核配置、添加设备、解决错误来实现自定义设备。在遇到USB通信错误时,通过增加调试信息和调整硬件连接解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在搞自定义的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需要根据自己需要匹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值