Android8.1 MSM8909平台增加温度传感器
物联网模块为了提高性价比,一般使用高通低端的MSM8909平台。最近在该平台的Android 8.1版本上调试了温度传感器,包括driver代码和HAL层,作个记录。
客户使用的是Microchip的AT30TS74(Atmel被Microchip收购),本来是很简单的I2c芯片,但是厂家没有提供驱动参考代码,适配android的驱动代码得自己写,有点坑。好吧,找个类似的传感器修改,先配置设备树:
Atmel@48 { //temperature sensor
compatible = “Atmel,AT30TS74”;
reg = <0x48>;
};
i2c地址和硬件原理图上的A2、A1、A0脚接法有关。
在驱动里注册i2c,注册input设备,再注册一个sensors_classdev设备:
data->cdev = sensors_cdev;
data->cdev.sensors_enable = at30ts74_enable_set;
data->cdev.sensors_poll_delay = at30ts74_poll_delay_set;
err = sensors_classdev_register(&data->input->dev, &data->cdev);
if (err) {
pr_err(“class device create failed: %d\n”, err);
goto error_class_sysfs;
}
这些是标准的套路不用多说。到了HAL层,由于MSM8909还是用的sensor老的HAL架构(新的平台架构已经走的是adsp模式),高通HAL层的温度传感器代码还得自己适配。还是坑啊。最接近的就是气压传感器了,对应的代码为hardware\qcom\sensors\Bmp180.cpp
可以自己参考这个修改一个温度传感器的,注意点:

  1. 使用标准的传感器app软件检测到的是SENSOR_TYPE_AMBIENT_TEMPERATURE
    该宏在kernel\include\linux\sensors.h中定义。
  2. 驱动注册中input设备的event类型需要设为ABS_MISC,这样和HAL中的类型匹配。
  3. sensors_classdev设备的名字最好和input设备的名字一致,因为在HAL层代码中会去比较这两个值:
    hardware\qcom\sensors\NativeSensorManager.cpp:
    if (strcmp(list->sensor->name, event_list[j].data_name) == 0) {
    list->data_path = strdup(event_list[j].data_path);
    break;
    }
    if (strcmp(event_list[j].data_name, type_to_name(list->sensor->type)) == 0) {
    list->data_path = strdup(event_list[j].data_path);
    }
    如果不一致,获取不到event事件的。

继续坑。android8.1上增加了SElinux子系统,调试过程中会出现HAL层去读取节点权限错误。可以在init.cpp中把SElinux改为permissive模式:
static bool selinux_is_enforcing(void)
{
if (ALLOW_PERMISSIVE_SELINUX) {
//return selinux_status_from_cmdline() == SELINUX_ENFORCING;
return SELINUX_PERMISSIVE;
}
//return true;
return false;
}
改完后,安装安卓手机传感器app,就可以读取到温度传感器了。

温度传感器显示:

Android8.1 MSM8909平台增加温度传感器相关推荐

  1. Android8.1 MTK平台 增加三指截屏(仿IOS左下角显示缩略图点击放大显示)

    效果图 修改后动画如下 系统原动画如下 三指截屏 PhoneWindowManager 同级目录下的 SystemGesturesPointerEventListener.java 主要负责处理界面的 ...

  2. Android P 9.0 MTK平台 增加以太网静态IP功能

    前言 朋友们,最近又开始搞 Android P了,同样的以太网静态 IP 是少不了的功能,今天我们就开始来整一下.之前弄6.0 和 8.1 的都 ok 了. 没想到 9.0 改动还是略微有点大的.来来 ...

  3. 高通MSM8909平台L1系统修改LDO电压值

    文档说明 本文档以SC806-CN-00(MSM8909平台)为例,说明如何修改LDO电压值. 修改方法 以修改LDO5,从1.8V改为1.9V为例. 首先查看PM8909的IC specificat ...

  4. MSM8909平台UIM驱动流程

    UIM卡上电需要满足下面的时序.                                       UIM上电时序                                       ...

  5. rk android8.1加密,Android 8.1RK平台增加自定义脚本,修改文件权限

    最近RK3326项目上遇到个问题,OTA升级完重启后需要去/cache/recovery目录下读取一个文件,last_flag,读取过程中报错,提示没有权限,很奇怪,我的明明是系统应用,也加了权限还是 ...

  6. STM平台增加性能测试/稳定性测试部分【一】

    前置 我之前写了一个接口自动化平台的,后期因为一个原因删除了. 现在,在此平台的基础上,我又增加了性能/稳定性的功能 它的前端大概是这样: 数据解析: 图表展示: 我将稳定性及性能归与一套方案去编写, ...

  7. 【RK3399】Android平台增加一款声卡设备(ES7210+ES8156),进行录音/播放测试。

    文章目录 前言 一.开发环境 二.概述 三.硬件介绍 1.ES7210 2.ES8156 3.数字麦克风阵列 4.音频示意图 四.下载SDK 五.编译.烧写 1.u-boot 2.kernel 3.A ...

  8. 全志T507平台增加V4L2 sensor直接操作I2C的API

    大纲 参考 目标 背景: 这样做的目的是什么? 怎么做? 1 研究一下V4L2的sub device的初始化 2 具体到我使用的sensor mlx75027,具体的初始化流程 3.V4L2 cmd的 ...

  9. Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控

    目录 修改的文件: 文件修改说明: 这个是mtk 增加的uart和nec红外模块的支持 , 以下主要针对driver的增加 , 应用部分也有 需要的可以私. 这个 修改主要在 MediaTek 平台上 ...

最新文章

  1. 约束布局ConstraintLayout看这一篇就够了
  2. 关于fragment
  3. 652. 寻找重复的子树
  4. 带你根据源码了解View的事件触发流程,主要讲解为什么子View返回true,ViewGroup就无法接收到事件的过程
  5. linux中s权限大小写的区别,Linux中的权限
  6. HTML+CSS+JS实现 ❤️人物走悬崖小游戏❤️
  7. md5 java 工具类_Java实现一个MD5工具类
  8. keepalived nginx 双机热备图文讲解
  9. 元件怎么反转_电气图纸怎么看?三分钟教你学会看懂,受用一生
  10. word批量打印助手_如何批量打印数十份甚至上百份Word文档
  11. UI自动化之-使用DD_XOFT实现带有安全控件、U盾的输入
  12. java计算ipv6前缀位数
  13. 架构系列---QR二维码和扫描二维码登陆原理
  14. 显示器接口针脚定义(D-sub15)
  15. jQuery学习笔记总结
  16. ADXL345传感器介绍
  17. nav 计算机网络_计算机网络课件谢希仁
  18. Mysql搜寻姓_mysql – 用于搜索名称和姓氏的最有效的sql架构
  19. 优秀自我简介200字_优秀初中自我介绍200字范文
  20. The JAVA_HOME environment variable does not point to a working 32-bit JDK or JRE.

热门文章

  1. ABP学习实践(十二)--模块系统
  2. HDL-Bits 刷题记录 01
  3. docker部署SolrCloud集群
  4. [转]linux网络协议栈(1)——socket入门(1)(2)
  5. 应用案例 | 不用学PS,属于程序员的修图方式来了!
  6. 2011年数学建模国赛B题(交巡警服务平台的设置与调度模型)论文.doc
  7. android bind 自动声明控件,Android注解神器ButterKnife使用说明
  8. 揭开关于Kindle Fire的一些重要信息
  9. 备考信息技术教师资格证-初出茅庐
  10. Java判断手机号归属地