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,添加声明。
如
<h5 id="向fwcode添加 源码">向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.scons的DD_SOURCES中添加
同时要配置编译档案进行匹配声明。
在qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\build\Sensors.scons申明config名称。
生成UUID等待匹配
那么如何生成UUID呢?UUID在线生成器拿去不谢。生成后如何使用呢?
请在qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\common\inc\sns_reg_common.h中
此时adsp已经基本正常porting完成了。
openSSC层更新config档
在vender\qcom\proptery\sensors\dsps\reg_defaults中更新sensor_def_qcomdev.conf档是至关重要的。
在文档中有一张表详细藐视了config档的所代表的意思。
此时UUID就要用上了。