高通Sensor驱动学习笔记

高通ADSP Sensor框架:java

高通sensor架构实例分析之一linux

linux驱动由浅入深系列:高通sensor架构实例分析之二(驱动代码结构)android

linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)json

 

高通SEE Sensor框架:架构

高通SDM845平台Sensor学习——1.框架框架

高通SDM845平台Sensor学习——2.Hal层函数

高通SDM845平台Sensor学习——3.SLPI(Physical Sensor)学习

高通SDM845平台Sensor学习——4.SLPI(SAM Sensor)测试

msm8960以前是adsp(Audio DSP)架构,如今换成SEE(Sensor Exclute Environment)架构了。.net

 

1、ADSP(Audio DSP)架构

1. adsp架构简介

  最初的时候芯片厂家对sensor的处理和对待其它外设同样都是直接挂在processor上,sensor的驱动也和其余linux或android的驱动同样,生成对应的设备节点给上层提供数据。但后来这一切发生了变化,最主要的缘由就是功耗。Sensor但愿本身可以一直处于工做状态下,如计步器等应用场景。这样若是sensor还挂在主processor上势必影响待机功耗。所以各个芯片厂推出了各自的方案,如sensor-hub等等。高通在MSM8960以后就将sensor的处理塞到了一个单独的音频dsp中了(MSM8953中这个dsp叫做aDSP),这样待机时主处理器休眠下降功耗,由这个aDSP在处理音频数据的间隙捎带着就能把sensor的数据处理了。

2. 以MSM8953为例的ADSP架构图

 

3. 在应用处理器中,软件接口中再也不有每一个sensor的设备节点了。那有的是什么呢,只有Sensor1 API Socket Remoting Layer层对应的 (CPU与
ADSP之间是经过Socket通讯的!)API接口。


4. 那么ADSP与应用处理器之间用什么机制进行通讯呢?图中能够看到一个叫QMI的东西,就是它了,这个高通基于共享内存机制开发的多核间
通讯技术,在应用处理器侧和ADSP侧都有相应的库已经完成了底层实现。以后有机会分析一下这种号称最为有效的多核间通讯技术。

5. ADSP与CPU之间经过QMI进行通讯的。QMI就是高通基于共享内存机制开发的多核间通讯技术。

6. 系统带有的传感器测试代码

系统自带的:
hardware\libhardware\tests\nusensors\nusensors.cpp
做用:能够列出系统中存在的全部的传感器,监听并打印出传感器的数据。

高通专有的:
(1) vendor\qcom\proprietary\sensors\dsps\test\src\sns_cm_test.cpp

(2) vendor\qcom\proprietary\sensors\dsps\test\src\sns_dsps_tc0001.c

(3) 测试程序:
vendor/qcom/proprietary/sensors/qsensortest/src/com/qualcomm/qti/sensors/core/sensortest/SensorTest.java
JNI文件:
vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_test.c


7. Sensor上报数据的三种方式

(1) Polling (0x00) 调用一次get_data后启动timer,等到timer到时间后调用sns_ddf_driver_if_s中指定的handle_timer()函数上报一组传感器数据

(2) DRI (0x80) 调用enable_sched_data()启用DRI(Data ReadyInterrupt,数据完成中断),按照set_cycle_time指定的ODR(Output Data Rate,数据输出速率)进行数据采集,采集完成后调用sns_ddf_driver_if_s中指定的handle_irq()函数上报传感器数据。

(3) FIFO (0xD0) 调用trigger_fifo_data()函数启动FIFO模式,当数据量到达指定的阈值,触发sns_ddf_smgr_data_notify()函数上报一批数据。

通常加速度、陀螺仪等数据量较大的使用FIFO模式,光线、距离等有数据有变化才须要上报的传感器使用DRI模式。

 

2、SEE(Sensors Execution Environment)架构

1. SEE框架简介

高通从SDM845平台开始,Sensor使用新的架构SEE(Sensors Execution Environment),和以前架构不一样,新的架构有着不少的优势。

2. config都是以 .json 为后缀的文件,每一个物理sensor会有两个json文件,一个是包含全部平台的特殊配置文件,另外一个是sensor driver
的特殊配置文件。

3. 各个sensor都是经过xxxx.scons静态添加sensor的。

相关文章
相关标签/搜索