高通平台Sensor调试

高通平台Sensor驱动可分为AP侧驱动和SLPI侧驱动;其中,SLPI(Sensor Low Power Island)是Sensor的低功耗子系统,并支持其中的Sensor在休眠状态下(CPU off)工作;本文记录下调试方法。。。
另,本文的Sensor指的是IMU、地磁等传感器,不包括Camera Sensor

AP侧驱动

1. 硬件原理图确认

I2C及中断引脚io确认,并确认i2c是否在dts中使能。
若该Sensor位于屏幕端,而屏幕通过Serdes与Soc连接,则其I2C与Serdes共用,中断脚则需要在SoC、Serdes、屏端三者之间建立映射关系。

2. 驱动文件确认

获取或者编写驱动文件。其中,需要供应商提供驱动的情况下,要把内核版本、安卓版本确认清楚,并提供给Vendor,以便其按照版本释放对应的驱动/hal代码。

3. Kernel驱动移植

①dts中添加i2c设备
在相应的i2c总线下添加sensor的设备树,如下,

&qupv3_se4_i2c {
   
        status = "ok";
        icm40607_i2c: icm42600@69 {
   
                compatible = "invensense,icm42600"; //名字匹配索引
                reg = <0x69>; //I2C 设备地址设置
                interrupt-parent = <&tlmm>;
                interrupts = <15 1>;
                axis_map_x = <1>; // x为1表示x、y轴颠倒
                axis_map_y = <0>;
                axis_map_z = <2>;
                negate_x = <1>; // 1表示正向与 x轴正向相反,为0 就一致
                negate_y = <0>;
                negate_z = <0>;
                inven,secondary_type = "none";
                inven,aux_type = "none";
                inven,read_only_slave_type = "none";
                status = "okay";
        };
};

②添加驱动文件
在项目代码对应目录下,添加代码驱动;若将驱动作为ko文件加载,则可以在搭建好的编译框架下面添加“sensor_driver/”的目录,在目录下添加sensor的驱动文件“sensor_driver/icm42670/…”
③在“sensor_driver/”目录下添加编译文件
A. 添加Android.mk,将ko文件编译到“/vendor/bin/”目录下去
B. 添加Product.mk

   PRODUCT_PACKAGES += sens_core.ko
   PRODUCT_PACKAGES += sens_icm42670.ko

C.添加Kbuild

obj-y += icm42670/

④在“sensor_driver/icm42670/”下添加Kbuild编译文件
注意其中宏的使能

obj-$(CONFIG_INV_MPU_IIO) += sens_icm42670.o
sens_icm42670-objs += inv_mpu_common.o \
                      inv_mpu_ring.o \
                      inv_mpu_timestamp.o \
                      inv_mpu_dts.o
# chip support
ifeq ($(CONFIG_INV_MPU_IIO_ICM43600), y)
sens_icm42670-objs += icm43600/inv_mpu_init_43600.o \
                icm43600/inv_mpu_ops_43600.o \
                icm43600/inv_mpu_core_43600.o \
                icm43600/inv_mpu_parsing_43600.o \
                icm43600/inv_mpu_setup_43600.o \
                icm43600/inv_mpu_misc_43600.o \
                icm43600/inv_mpu_selftest_43600.o
ccflags-y += -DCONFIG_INV_MPU_IIO_ICM43600=1
endif

# Bus support
ifeq ($(CONFIG_INV_MPU_IIO_I2C), y)
sens_icm42670-objs += inv_mpu_i2c.o
endif

最终sensor_driver目录如下,

/odm$ ls sensor_driver/ -la
drwxr-xr-x  ****** .
drwxr-xr-x  ****** ..
-rwxr-xr-x  ****** Android.mk
-rwxr-xr-x  **
  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值