当前位置: 首页 > news >正文

3288S Android11 适配红外遥控功能(超详细)

目录

  • 一、rk3288平台红外遥控介绍
  • 二、原理图分析
  • 三、配置设备树并使能红外遥控功能
  • 四、打开红外打印功能,查看红外遥控的用户码和键值
  • 五、将查看到的红外遥控用户码和键值添加到设备树和.kl文件
  • 六、Android红外遥控.kl文件映射知识和使用添加新的.kl文件
  • 七、补充(设备树中`interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;`属性解释)

一、rk3288平台红外遥控介绍

在这里插入图片描述
  这个文档路径在a\RKDocs\common\PWM\Rockchip_Developer_Guide_PWM_IR_CN.pdf

二、原理图分析

在这里插入图片描述

三、配置设备树并使能红外遥控功能

  据上面原理图分析可知,IR_INT红外接口使用的是PWM2,因此设备树配置对应的PWM2,如下:
在这里插入图片描述
  然后开相关的宏,开启红外遥控功能:

CONFIG_ROCKCHIP_REMOTECTL=y
CONFIG_ROCKCHIP_REMOTECTL_PWM=y

  而相关的驱动文件路径在kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c

四、打开红外打印功能,查看红外遥控的用户码和键值

  查看红外接收的红外遥控用户码和键值,需要先内核中的红外接收打印功能,如下:
echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print
  那么如何查看打印信息呢?查看内核打印信息有两种方法,分别是在adb中使用cat proc/kmsg命令查看内核打印信息和直接通过串口查看内核打印信息,现象如下:
在这里插入图片描述

五、将查看到的红外遥控用户码和键值添加到设备树和.kl文件

  那么需要先知道使用的是哪个.kl文件,首先通过getevent查看输入设备名称,然后通过dumpsys input命令查看输入设备管理器中的事件中心状态对应的输入设备信息查看到使用的输入设备布局文件,如下:
在这里插入图片描述
在这里插入图片描述
  通过以上可知,输入设备名称为“ff680020.pwm”。
在这里插入图片描述
  上图解释:如果没有指定的KeyLayoutFile,就会使用默认的Generic.kl文件的,如果需要添加自定义的键值,那么相应地也要在使用的.kl文件中添加该键值。

六、Android红外遥控.kl文件映射知识和使用添加新的.kl文件

感谢这位哥的博客,该博客参考链接请点击


  关于.kl文件的解释,如下图:
在这里插入图片描述

七、补充(设备树中interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;属性解释)

  GIC_SPI :表示共享外设中断。
  78:中断号。
  IRQ_TYPE_LEVEL_HIGH:中断触发类型为高电平触发。

  在Rockchip_RK3288_TRM_V1.2_Part1-20170321.pdf文档有对中断号的描述,如下图所示:
在这里插入图片描述
  这里我解释一下,RK3288拥有32个私有中断,而其中有3个私有中断是外设中断,其余的112个都是共享外设中断。而本次使用的PWM中断属于共享外设中断,如下图所示:
在这里插入图片描述
  红外遥控使用的是PWM通用的共享外设中断,也就是RK_PWM,中断号110,很疑问的是:为什么设备树上写的终端号是78呢?其实设备树上写的是共享外设中断的索引,也就是说78的由来是110-32而得来的。

http://www.lryc.cn/news/173442.html

相关文章:

  • Linux高性能服务器编程 学习笔记 第三章 TCP协议详解
  • 【云原生】Kubernetes学习笔记
  • [Machine Learning][Part 2]监督学习的实现
  • 【计算机毕业设计】基于SpringBoot+Vue大学生心理健康管理系统的开发与实现
  • 下载水果FLStudio21.2软件安装更新教程
  • 人工智能机器学习-飞桨神经网络与深度学习
  • linux部署页面内容
  • 若依框架集成WebSocket带用户信息认证
  • 0基础学习VR全景平台篇 第101篇:企业版功能-子账号分配管理
  • adb 命令集
  • 分享78个Python源代码总有一个是你想要的
  • springcloud3 指定nacos的服务名称和配置文件的group,名称空间
  • go-redis简单使用
  • 33. 搜索旋转排序数组-二重二分查找
  • mysql自动删除过期的binlog
  • Java面向对象(1)
  • 【计算机毕业设计】基于SpringBoot+Vue金融产品销售系统的设计与实现
  • 【面试题精讲】Mysql如何实现乐观锁
  • 从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境
  • 【VsCode】整理代码
  • 盘点总结汇总植物病虫害、人体疾病识别相关的项目实践
  • 【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
  • 【ES】笔记-数值扩展
  • 浅谈Rust内存管理
  • Vue路由跳转至页面后多次渲染
  • CDH大数据平台集群部署
  • 基于springboot+vue的校园资产管理系统
  • @RequestMapping 注解使用技巧
  • AtCoder 265G 线段树
  • 通俗易懂了解大语言模型LLM发展历程