linux - TIAM57xx 上 Linux 中的 USB HID 小工具 "g_hid"

标签 linux embedded-linux hid texas-instruments usb-hid

我想测试 Linux USB HID 小工具“g_hid”模块。但在插入时给出错误“没有这样的设备”。引用Linux文档后 http://elixir.free-electrons.com/linux/v4.13.11/source/Documentation/usb/gadget_hid.txt ,我知道了我们需要在平台代码中添加以下代码

#include <linux/platform_device.h>
#include <linux/usb/g_hid.h>

/* hid descriptor for a keyboard */
static struct hidg_func_descriptor my_hid_data = {
    .subclass       = 0, /* No subclass */
    .protocol       = 1, /* Keyboard */
    .report_length      = 8,
    .report_desc_length = 63,
    .report_desc        = {
        0x05, 0x01, /* USAGE_PAGE (Generic Desktop)           */
        0x09, 0x06, /* USAGE (Keyboard)                       */
        0xa1, 0x01, /* COLLECTION (Application)               */
        0x05, 0x07, /*   USAGE_PAGE (Keyboard)                */
        0x19, 0xe0, /*   USAGE_MINIMUM (Keyboard LeftControl) */
        0x29, 0xe7, /*   USAGE_MAXIMUM (Keyboard Right GUI)   */
        0x15, 0x00, /*   LOGICAL_MINIMUM (0)                  */
        0x25, 0x01, /*   LOGICAL_MAXIMUM (1)                  */
        0x75, 0x01, /*   REPORT_SIZE (1)                      */
        0x95, 0x08, /*   REPORT_COUNT (8)                     */
        0x81, 0x02, /*   INPUT (Data,Var,Abs)                 */
        0x95, 0x01, /*   REPORT_COUNT (1)                     */
        0x75, 0x08, /*   REPORT_SIZE (8)                      */
        0x81, 0x03, /*   INPUT (Cnst,Var,Abs)                 */
        0x95, 0x05, /*   REPORT_COUNT (5)                     */
        0x75, 0x01, /*   REPORT_SIZE (1)                      */
        0x05, 0x08, /*   USAGE_PAGE (LEDs)                    */
        0x19, 0x01, /*   USAGE_MINIMUM (Num Lock)             */
        0x29, 0x05, /*   USAGE_MAXIMUM (Kana)                 */
        0x91, 0x02, /*   OUTPUT (Data,Var,Abs)                */
        0x95, 0x01, /*   REPORT_COUNT (1)                     */
        0x75, 0x03, /*   REPORT_SIZE (3)                      */
        0x91, 0x03, /*   OUTPUT (Cnst,Var,Abs)                */
        0x95, 0x06, /*   REPORT_COUNT (6)                     */
        0x75, 0x08, /*   REPORT_SIZE (8)                      */
        0x15, 0x00, /*   LOGICAL_MINIMUM (0)                  */
        0x25, 0x65, /*   LOGICAL_MAXIMUM (101)                */
        0x05, 0x07, /*   USAGE_PAGE (Keyboard)                */
        0x19, 0x00, /*   USAGE_MINIMUM (Reserved)             */
        0x29, 0x65, /*   USAGE_MAXIMUM (Keyboard Application) */
        0x81, 0x00, /*   INPUT (Data,Ary,Abs)                 */
        0xc0        /* END_COLLECTION                         */
    }
};

static struct platform_device my_hid = {
    .name           = "hidg",
    .id         = 0,
    .num_resources      = 0,
    .resource       = 0,
    .dev.platform_data  = &my_hid_data,
 };

上面的代码应该在Linux源代码中的什么位置添加呢?我正在使用 TI-AM57xx 板。

最佳答案

不应该修改任何内核源代码!

这些HID描述符您的USB设备固件的内容。

关于linux - TIAM57xx 上 Linux 中的 USB HID 小工具 "g_hid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47108868/

相关文章:

c - 如何使用 C 在 Linux 中以原子方式和异步方式写入文件

c++ - 将自上周日午夜以来的秒数转换为日期和时间

unicode - 如何直接从设备输入 Unicode?我想要一个 "Machine interface device"而不是 "Human interface device"(HID)

c++ - SetupDiGetDeviceInterfaceDetail 只为所有 USB HID 对象的路径返回 "\"

linux - 加载到 RAM 中并执行存储在目标文件中的机器代码

regex - 如何在 find 命令中使用正则表达式?

linux - 在 NanoPi Neo 开发板上定制 Linux

c# - 在 C# 中使用 WriteFile 与 HID 设备通信时,我的程序停止

linux - 在linux/shell中限制cron发送邮件5分钟

python - 如何将交互式 Python 脚本作为 cron 作业运行?