记录一次解决卫星电视遥控板按钮概率失灵

问题:卫星电视遥控板按钮经常按了没反应

接收红外码后编辑发送红外码,红外码会出现接收/发送时的错误

一:红外波形分析

通过逻辑分析仪接KingSt VIS软件抓取红外码波形,分析发现部分红外的脉宽明显高于560us(硬件要求的指标),猜测可能是CPU占用过高引起


二:验证CPU影响

验证将cpu占用过高的app关掉,抓取红外码出错率从10/30,降低到了2/30,验证有效但是解决方法不彻底

三:解决方法

将收发程序的优先级设置到最高,收发红外码识别率大幅提升,几乎100%


四:CPU使用率降低

4.1查看app在camera预览页面CPU使用率200%左右,接近两个核

adb shell top -d 1


4.2退出预览页面,无任何操作情况下查看app的占用率仍然在150%左右,判断系常驻任务导致的

4.3查看代码,发现有常驻任务读取GPIO口数值用于旋钮调音,屏蔽后CPU使用率一下降低到了10%左右

4.4 解决方案,将读取GPIO口数值的方法改为读取一次线程sleep 20ms,CPU使用率降低到了70%


常用命令:

查看资源使用 adb shell top -d 1

查看程序 ps -A | grep ir_

结束程序 kill -9 497

结束GPIO端口占用 echo 36 > /sys/class/gpio/unexport

过滤日志 logcat | grep IR

五: 细化查看一个app的线程及对应的cpu占用

查看app所在的pid

ps -A | grep com.hn.szjcyy


查看对应pid下的线程对资源的占用情况

top -H -p 21027


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容