米尔电子
直播中

donatello1996

8年用户 687经验值
擅长:处理器/DSP 控制/MCU RF/无线
私信 关注
[问答]

【米尔MYS-8MMX开发板免费试用】编译内核镜像&与USBHID设备通信

       板子的GPIO资源较少,如果想用一种简单的方式控制更多外设的话,除了添加扩展芯片,还有一种项目上用得比较多的方式是USBHID通信,将开发板作为主机,通过USB接口与支持USBHID协议的从机进行通信,这个方法非常简单,刚入门嵌入式的小白也必须熟练掌握,只需要应用层开发的知识和皮毛的驱动层开发知识。要想使用这种方式进行通信,板子的内核镜像就必须支持USBHID设备的检测与读写,检测是没什么问题的,但是能不能映射到设备文件,供开发者进行读写操作,那就需要检查内核编译选项了,这里刚好是比较坏的一种情况,米尔厂家出厂镜像是没有打开USBHID通信的,必须让开发者重新编译内核镜像,那么这里就涉及到内核编译的知识了:

下载并解压内核源码镜像:
  1. https://github.com/MYiR-Dev/myir-imx-uboot.git

17.jpg

编译选项采用米尔MYS-8MMX开发板的编译选项mys_iot_defconfig:
  1. /home/myir-imx-linux-develop/arch/ARM64/configs/
  2. make mys_iot_defconfig
18.jpg

这边还需要注意的是内核镜像的版本与使用内核源码编译第三方驱动ko文件的版本必须相同,在内核源码一级目录处可以找到配置的位置:
19.jpg
20.jpg
使用menuconfig打开内核编译选项, Device Drivers > HID support的 /dev/hidraw raw HID device support选项要打开,或者是在配置文件中添加此项配置的环境变量:
21.jpg
22.jpg

配置完毕之后,替换Image内核文件覆盖出厂内核文件:
  1. mount /dev/mmcblk1p1 /media
mmcblk1是开发板的SD卡,mmcblk1p1是SD卡的FAT分区,存放内核文件的位置:
23.jpg
重新启动之后,将USBHID设备插到板子的USB接口:
IMG_20210829_152117.jpg

在/dev目录下找到/dev/hidraw设备:
24.jpg
安装-ludev软件库:
  1. apt install udev

使用代码读写HID设备:
  1. handle = hid_open(2020, 2020, NULL);
  2. res = hid_read(handle, buf, sizeof(buf));
25.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分