博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何portingADSP中的sensor
阅读量:4285 次
发布时间:2019-05-27

本文共 2641 字,大约阅读时间需要 8 分钟。

ADSP sensor overview

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

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

\

该图我们可以非常明显地看到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_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\inc目录下找到sns_dd.h,添加声明。

extern sns_ddf_driver_if_s sns_dd_mpu6515_if;
<h5 id="向fwcode添加

在fwcode中qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\src添加厂商给的code。并更新qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\build\dd_qcom.scons

如:

在src中添加sns_dd_mpu6515.c、sns_dd_mpu6515_ext.c、 sns_dd_mpu6515_selftest.c,需要在dd_qcom.sconsDD_SOURCES中添加

"${BUILDPATH}/sns_dd_mpu6515.c",     "${BUILDPATH}/sns_dd_mpu6515_ext.c",     "${BUILDPATH}/sns_dd_mpu6515_selftest.c",

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

qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\build\Sensors.scons申明config名称。

env.Append(CPPDEFINES = ["CONFIG_SUPPORT_MPU6515"])
生成UUID等待匹配

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

请在qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\common\inc\sns_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档

vender\qcom\proptery\sensors\dsps\reg_defaults中更新sensor_def_qcomdev.conf档是至关重要的。

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

\

\

此时UUID就要用上了。

2000 1 0x000100012001 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 #UUID2003 0x8168ae42524820ad 0x00010001 #UUID2004 10000 0x00010001               #off_to_idle2005 10000 0x00010001                  #idle_to_ready2006 45    0x00010001                 #gpio12007 1000  0x00010001               #reg_group_id2008 0     0x00010001                  #cal_grp_id2009 4     0x00010001                  #i2c_bus2010 0x68  0x00010001               #i2c_address2011 1     0x00010001                  #sens_default2012 0x80  0x00010001               #flags

如何生效

adb rootadb remountadb shell rm /system/etc/sensors/sensor_def_qcomdev.confadb push sensor_def_qcomdev.conf /system/etc/sensors/sensor_def_qcomdev.confadb shell chmod 644 /system/etc/sensors/sensor_def_qcomdev.confadb shell rm /persist/sensor/sns.regadb shell syncadb reboot

转载地址:http://gnngi.baihongyu.com/

你可能感兴趣的文章
VS2015+Python3.5的配置
查看>>
分水岭算法(理论+opencv实现)
查看>>
《图像处理实例》 之 精确寻找一个圆
查看>>
opencv3.1+contrib的配置大总结(配置了两天,遇到问题无数)
查看>>
opencv小问题大智慧
查看>>
《图像处理实例》 之 车牌定位
查看>>
《opencv学习》 之 OTSU算法实现二值化
查看>>
《图像处理实例》 之 答题卡检测
查看>>
图像矩的初步探索(第十一天)
查看>>
《电路学习第一天》 之 电路设计之前的准备
查看>>
《电路学习第三天》 之 线性稳压电源的设计
查看>>
《图像处理实例》 之 目标旋转矫正(基于区域提取、DFT变换)
查看>>
不规则ROI的提取
查看>>
《图像处理实例》 之 提取特殊背景的直线
查看>>
《电路学习第三天》 之 彩扩机项目设计
查看>>
《图像处理实例》 之 物体计数
查看>>
《图像处理实例》 之 透视变换
查看>>
图像像素的获取和操作(第三天)
查看>>
图像像素的线性叠加(第四天)
查看>>
制作多张“像素、通道、大小”相同的图片
查看>>