高通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的。

相關文章
相關標籤/搜索