android sensor移植

本文深入探讨了Android系统的sensor移植过程,涉及sensor架构、驱动、电源管理、管脚控制,以及Sensor类支持、Native Sensor HAL和NativeSensorManager的详细工作原理。重点讲解了设备树配置、校正库和虚拟设备的管理。
摘要由CSDN通过智能技术生成

sensor直接连接到应用处理器,并有linuxkernel管理。本文涉及到kernel驱动,sensor HAL以及SensorService。

sensor架构

安卓提供Sensor API和SensorManager,然而没有提供Sensor HAL和sensor驱动。

电源管理和管脚功能设置在设备树中应当设置好,Sensor类用于支持一些新特性。增加了一些sensor新特性,如:NativeSensorManager,,CalibrationManager,虚拟传感器支持,

传感器驱动

内核sensor驱动,包括电源,pin脚,传感器类,通常传感器驱动位于drivers/input/misc/。

传感器的电源

设备树配置

传感器芯片的驱动由sensor的probe驱动设置,mmc3416xpj的配置驱动如下:

[cpp]  view plain   copy
  1. memsic@30 { /* Magnetic field sensor */  
  2. compatible = "memsic,mmc3416x";  
  3. reg = <0x30>;  
  4. vdd-supply = <&pm8916_l17>;  
  5. vio-supply = <&pm8916_l6>;  
  6. memsic,dir = "obverse-x-axis-forward";  
  7. memsic,auto-report;  
  8. };  
vdd-supply:指示给传感器供电的电源器件;pm8916_l17电源管理器

vio-supply:IO和I2C需要的数字电源,pm8916_l6是电源管理器

[plain]  view plain   copy
  1. arch/arm/boot/dts/qcom/xxxx-regulator.dtsi  
更多设备树定义见:

[plain]  view plain   copy
  1. kernel/Documentation/bindings/input/misc/ .  

regulator

在操作sensor chip之前需要初始化该芯片,regulator_get,regualator_count_voltages,regulator_set_voltages , regulator_enable ,以及regulator_disable。

管脚控制

设备树配置

[plain]  view plain   copy
  1. akm@c {  
  2. compatible = "ak,ak09911";  
  3. reg = <0x0c>;  
  4. pinctrl-names = "default","sleep";  
  5. pinctrl-0 = <&akm_default>;  
  6. pinctrl-1 = <&akm_sleep>;  
  7. vdd-supply = <&pm8916_l17>;  
  8. vio-supply = <&pm8916_l6>;  
  9. akm,layout = <0x3>;  
  10. akm,gpio_rstn = <&msm_gpio 36 0x0>;  
  11. akm,auto-report;  
  12. };  
  13. akm_reset_pin {  
  14. qcom,pins = <&gp 36>;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值