我是靠谱客的博主 潇洒咖啡,最近开发中收集的这篇文章主要介绍android sensor架构,Android Sensor详解(2)如何portingADSP中的sensor,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ADSP sensor overview

在初略介绍sensor的时候,就有讲到sensor的架构,在此继续将其具体化,来看看高通的sensor架构。

我们可以通过下图看具体sensor是如何进行运作的。

0818b9ca8b590ca3270a3433284dd417.png

该图我们可以非常明显地看到Sensor通过I2C或者是SPI将数据发到Sensor Driver中,drivers通过device driver framework将数据包装后发给Sensor Manager,然后通过共享内存的方式发给上层。作为一个BSP,当然我所做的是具体来分析adsp这部分的问题了。

how to porting new sensor driver

基本缩写

SSC: Snapdragon Sensors Core

QMI: Qualcomm Messaging Interface

IDL: Interface description language

CTS: Compatibility Test Suite

SAM: Sensors Algorithm Manager

openSSC: SSC Vendor Ecosystem

SSI: sensor single image

如何集成一个新的sensor driver

在这里我提供我手上高通提供的文档,该文档详细描述了如何进行porting的重要信息。

下面我将通过这个文档来详细描述如何进行Porting。

声明驱动程序的入口函数

在fwcode中qcom_firmwareADSP.8953.2.8.2adsp_procSensorsddqcominc目录下找到sns_dd.h,添加声明。

extern sns_ddf_driver_if_s sns_dd_mpu6515_if;

向fwcode添加源码

在fwcode中qcom_firmwareADSP.8953.2.8.2adsp_procSensorsddqcomsrc添加厂商给的code。并更新qcom_firmwareADSP.8953.2.8.2adsp_procSensorsddqcombuilddd_qcom.scons。

如:

在src中添加sns_dd_mpu6515.c、sns_dd_mpu6515_ext.c、 sns_dd_mpu6515_selftest.c,需要在dd_qcom.scons的DD_SOURCES中添加

"${BUILDPATH}/sns_dd_mpu6515.c",

"${BUILDPATH}/sns_dd_mpu6515_ext.c",

"${BUILDPATH}/sns_dd_mpu6515_selftest.c",

同时要配置编译档案进行匹配声明。

在qcom_firmwareADSP.8953.2.8.2adsp_procSensorsbuildSensors.scons申明config名称。

env.Append(CPPDEFINES = ["CONFIG_SUPPORT_MPU6515"])

生成UUID等待匹配

那么如何生成UUID呢?UUID在线生成器拿去不谢。生成后如何使用呢?

请在qcom_firmwareADSP.8953.2.8.2adsp_procSensorscommonincsns_reg_common.h中

#define SNS_REG_UUID_MPU6515

{0xa3,0x87,0x37,0xc5,0x50,0x03,0x43,0xe9,0x84,0x9c,0x6c,0xfb,0xc1,0xaa,0x37,0xe4}

此时adsp已经基本正常porting完成了。

openSSC层更新config档

在venderqcompropterysensorsdspsreg_defaults中更新sensor_def_qcomdev.conf档是至关重要的。

在文档中有一张表详细藐视了config档的所代表的意思。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

此时UUID就要用上了。

2000 1 0x00010001

2001 2 0x00010001

# SSI SMGR Cfg 0: MPU6881 ACCEL INT {0x68,0x81,0x46,0x7b,0x75,0x75,0x45,0xcc,0xad,0x20,0x48,0x52,0x42,0xae,0x68,0x81}

2002 0xcc4575757b468168 0x00010001 #UUID

2003 0x8168ae42524820ad 0x00010001 #UUID

2004 10000 0x00010001 #off_to_idle

2005 10000 0x00010001 #idle_to_ready

2006 45 0x00010001 #gpio1

2007 1000 0x00010001 #reg_group_id

2008 0 0x00010001 #cal_grp_id

2009 4 0x00010001 #i2c_bus

2010 0x68 0x00010001 #i2c_address

2011 1 0x00010001 #sens_default

2012 0x80 0x00010001 #flags

如何生效

adb root

adb remount

adb shell rm /system/etc/sensors/sensor_def_qcomdev.conf

adb push sensor_def_qcomdev.conf /system/etc/sensors/sensor_def_qcomdev.conf

adb shell chmod 644 /system/etc/sensors/sensor_def_qcomdev.conf

adb shell rm /persist/sensor/sns.reg

adb shell sync

adb reboot

最后

以上就是潇洒咖啡为你收集整理的android sensor架构,Android Sensor详解(2)如何portingADSP中的sensor的全部内容,希望文章能够帮你解决android sensor架构,Android Sensor详解(2)如何portingADSP中的sensor所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部