前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DRV_07_UInput分析_用户态创建input_dev

DRV_07_UInput分析_用户态创建input_dev

作者头像
韦东山
发布2021-12-08 11:02:31
7880
发布2021-12-08 11:02:31
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

UInput分析_用户态创建input_dev

参考资料:

1. 概念

uinput是一个内核模块(驱动),它允许应用程序模拟输入设备(input_dev)。 应用程序通过访问/dev/uinput/dev/input/uinput

  • 创建一个虚拟的输入设备
  • 设置它的属性
  • APP发送数据给它,让它产生输入事件
  • uinput就会把这些输入事件分发给其他使用者(APP或内核里其他模块)

框图如下:

在这里插入图片描述
在这里插入图片描述

2. 编写应用程序

3. 上机实验

3.1 设置工具链

在Ubuntu中执行:

代码语言:javascript
复制
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
3.2 配置内核

配置内核:执行make menuconfig

代码语言:javascript
复制
-> Device Drivers
  -> Input device support
    -> Generic input layer   
      -> Miscellaneous devices
         <M>   User level driver support
3.3 编译驱动
代码语言:javascript
复制
book@100ask:~/100ask_imx6ull-qemu$ cd linux-4.9.88
book@100ask:~/100ask_imx6ull-qemu/linux-4.9.88$ make modules

成功的话,可以得到:

代码语言:javascript
复制
drivers/input/misc/uinput.ko

复制到如下目录:

代码语言:javascript
复制
$ cp drivers/input/misc/uinput.ko ~/nfs_rootfs/
3.4 编译测试程序

把代码04_uinput上传到Ubuntu,设置好交叉编译工具链后,在04_uinput目录下执行make命令即可。

代码语言:javascript
复制
$ make
$ cp uinput_test ~/nfs_rootfs/
3.5 启动QEMU

在Ubuntu中执行:

代码语言:javascript
复制
$ cd ubuntu-18.04_imx6ul_qemu_system
$ ./qemu-imx6ull-gui.sh
3.6 挂载NFS、实验

在QEMU中执行:

代码语言:javascript
复制
$ mount -t nfs -o nolock,vers=3 10.0.2.2:/home/book/nfs_rootfs /mnt
$ insmod /mnt/uinput.ko
$ ls -l /dev/uinput   // 确认设备节点

// 后台运行uinput_test
/mnt/uinput_test &

// 看到提示这个提示时: Will sleep 60s, in this time you should run ts_calibreate
// 运行校准程序
// 注意:如果有真实的触摸屏驱动,需要指定使用虚拟的设备节点
//      方法示例: export TSLIB_TSDEVICE=/dev/input/event3
ts_calibrate

// 看到提示这个提示时: Will sleep 60s, in this time you should run ts_test
// 运行测试程序
ts_test

4. 结合应用程序分析uinput

ibrate

// 看到提示这个提示时: Will sleep 60s, in this time you should run ts_test // 运行测试程序 ts_test

代码语言:javascript
复制
### 4. 结合应用程序分析uinput
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • UInput分析_用户态创建input_dev
    • 1. 概念
      • 2. 编写应用程序
        • 3. 上机实验
          • 3.1 设置工具链
          • 3.2 配置内核
          • 3.3 编译驱动
          • 3.4 编译测试程序
          • 3.5 启动QEMU
          • 3.6 挂载NFS、实验
        • 4. 结合应用程序分析uinput
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档