为Linux应用添加按键控制
关于Tina和AI-Demo的开发,可以先参考下面两篇博客:
Tina方案开发一探_tugouxp的专栏-CSDN博客1.编译,打包2.烧录:选择量产卡:烧录成功:3.将卡插入平台,BROM卡启动程序将加载SD卡中的固件,至于最终是卡量产,开始卡启动,则取决于固件本身的定义。4.结束!https://blog.csdn.net/tugouxp/article/details/119413357?spm=1001.2014.3001.5502V833/V831目标检测demo方案开发_tugouxp的专栏-CSDN博客项目需要在V833平台上开发一个人形检测的功能用例, 大概框架如下:一路sensor图像经过四路VIPP缩放操作后,送给四个不同应用,分别是H265编码存盘,LCD预览以及以及NPU人形检测,还有一路照片抓拍。NPU人形检测原理如下:NPU线程抓取352*198(VIPP支持的输出大小)像素,格式为NV21的YUV原始帧数据,喂给人形检测算法网络,得到类别和坐标数据后,反馈给VIPP1 预览通道画框。这样的设计方案包含一个问题,NPU这边获得帧并进行网络推理得到坐标结果并反馈给VI.https://blog.csdn.net/tugouxp/article/details/120328633?spm=1001.2014.3001.5502
之前的 ai-demo 输入输出控制做的比较粗糙,demo的启动和退出是通过控制台输入启动命令以及ctrl+c的方式进行的.体验比较差,比较好的一种方式是通过demo板的按键进行事件捕获和处理。接下来就介绍tina上是如何实现的。
对于Linux上的输入输出,内核是有一套厚厚的框架的,但是暴露给用户态的非常简单,只有/dev/input/目录下的几个设备节点而已。
比如,在ubuntu上,mount,keyboard, joystick等外设对用户程序来讲就是/dev/input/下的这几个设备节点而已:
Tina也是Linux,所以这方面没有区别:
经过测试,在tina上./dev/input/event1节点是对应keyboard gpadc按键的设备节点,在ai-demo中创建一个独立的keyboard线程,轮询keyboard获取按键信息:
keyboard线程处理
根据消息源的不同,按键事件分成很多种,在linux内核中的分类如下,上面kb线程的处理也完全按照这几个事件分门别类的处理:
测试验证
运行ai demo,过程中不断按小键盘,输出如下,达到预期,接下来就可以定义应用的行为了~!
UBUNTU系统下的按键输入
UBUNTU上的输入设备有很多,我们用TREE命令找到具体的设备和设备节点之间的联系。
/dev/input/event4是键盘设备,我们验证一下:
鼠标设备是/dev/input/event3
结束~!
相关文章
- [Linux]控制语句If case
- [Linux]配置网络
- [Linux] linux awk命令详解
- [Linux] 孤儿进程与僵尸进程[总结]
- 对Linux文件权限的理解
- linux信号处理--通过发送信号控制进程
- linux分享一:网络设置
- Linux动态链接库的使用
- 重新点亮linux 命令树————进程的控制[二十二]
- linux开通ftp
- 【翻译】linux中cgroups内存控制子系统memory.oom_control文件
- 重新点亮linux 命令树————进程的控制[二十二]
- linux如deepin manjaro对笔记本电脑电池的伤害解决方案:TLP:一个可以延长 Linux 笔记本电池寿命的高级电源管理工具
- linux deepin tar安装jdk8
- linux配置chrome和chromedriver
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ③ ( vm_mmap_pgoff 函数执行流程 | vm_mmap_pgoff 函数源码 )
- 【Linux 内核】CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
- linux系统关机与重新启动命令
- 钉钉群机器人Linux shell报警
- L84.linux命令每日一练 -- 第11章 Linux系统管理命令 -- rpm和yum
- L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
- L64.linux命令每日一练 -- 第十章 Linux网络管理命令 -- ifconfig和ifup
- L42.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- groupdel和passwd
- 猿创征文 | Linux运维工程师的10个日常使用工具分享
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:make[1]: aarch64-linux-gnu-gcc: No such file or directory
- Linux测网速
- find——文件查找命令 linux一些常用命令
- 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
- linux===给新手的 10 个有用 Linux 命令行技巧(转)
- ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发
- 扩展知识点--利用Linux应用代码如何控制LED
- Linux基础入门到精通之了解Linux目录结构