DRV_07_UInput分析_用户态创建input_dev

发布时间 - 2025-06-25 00:00:00    点击率:

资料下载

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

代码语言:javascript代码运行次数:0运行复制
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代码运行次数:0运行复制
export ARCH=armexport 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代码运行次数:0运行复制
-> Device Drivers  -> Input device support    -> Generic input layer         -> Miscellaneous devices            User level driver support
3.3 编译驱动代码语言:javascript代码运行次数:0运行复制
book@100ask:~/100ask_imx6ull-qemu$ cd linux-4.9.88book@100ask:~/100ask_imx6ull-qemu/linux-4.9.88$ make modules

成功的话,可以得到:

代码语言:javascript代码运行次数:0运行复制
drivers/input/misc/uinput.ko

复制到如下目录:

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

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

代码语言:javascript代码运行次数:0运行复制
$ make$ cp uinput_test ~/nfs_rootfs/
3.5 启动QEMU

在Ubuntu中执行:

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

在QEMU中执行:

代码语言:javascript代码运行次数:0运行复制
$ 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/event3ts_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代码运行次数:0运行复制
### 4. 结合应用程序分析uinput


# ubuntu  # linux  # git  # 浏览器  # 工具  # ai  # JavaScript  # 事件  # this  # input  # 应用程序  # 是一个  # 会把  # 让它  # 工具下载  # 参考资料  # 可以得到  # 资料下载  # 给它  # 创建一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 太平洋网站制作公司,网络用语太平洋是什么意思?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel如何处理和验证JSON类型的数据库字段  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  利用 Google AI 进行 YouTube 视频 SEO 描述优化  EditPlus中的正则表达式 实战(2)  Laravel distinct去重查询_Laravel Eloquent去重方法  Linux系统命令中tree命令详解  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何用好域名打造高点击率的自主建站?  详解CentOS6.5 安装 MySQL5.1.71的方法  如何用虚拟主机快速搭建网站?详细步骤解析  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何快速查询网站的真实建站时间?  三星网站视频制作教程下载,三星w23网页如何全屏?  移动端脚本框架Hammer.js  中山网站推广排名,中山信息港登录入口?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  JS实现鼠标移上去显示图片或微信二维码  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何为不同团队 ID 动态生成多个非值班状态按钮  SQL查询语句优化的实用方法总结  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何实现本地化和多语言支持?(i18n教程)  如何快速搭建二级域名独立网站?  如何快速重置建站主机并恢复默认配置?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  html5的keygen标签为什么废弃_替代方案说明【解答】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel如何实现API版本控制_Laravel版本化API设计方案  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何彻底卸载建站之星软件?  js实现点击每个li节点,都弹出其文本值及修改  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  制作公司内部网站有哪些,内网如何建网站?  利用JavaScript实现拖拽改变元素大小  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Android okhttputils现在进度显示实例代码  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  个人摄影网站制作流程,摄影爱好者都去什么网站?  高端云建站费用究竟需要多少预算?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧