高通Sensor驱动学习笔记
高通ADSP Sensor框架:
高通sensor架構實例分析之一
linux驅動由淺入深系列:高通sensor架構實例分析之二(驅動代碼結構)
linux驅動由淺入深系列:高通sensor架構實例分析之三(adsp上報數據詳解、校準流程詳解)
高通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)架構了。
一、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. 系統帶有的傳感器測試代碼
系統自帶的:
hardwarelibhardware ests
usensors
usensors.cpp
作用:可以列出系統中存在的所有的傳感器,監聽并打印出傳感器的數據。
高通專有的:
(1) vendorqcomproprietarysensorsdsps estsrcsns_cm_test.cpp
(2) vendorqcomproprietarysensorsdsps estsrcsns_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模式。
二、SEE(Sensors Execution Environment)架構
1. SEE框架簡介
高通從SDM845平臺開始,Sensor使用新的架構SEE(Sensors Execution Environment),和之前架構不同,新的架構有著很多的優點。
2. config都是以 .json 為后綴的文件,每個物理sensor會有兩個json文件,一個是包含所有平臺的特殊配置文件,另一個是sensor driver
的特殊配置文件。
3. 各個sensor都是通過xxxx.scons靜態添加sensor的。
總結
以上是生活随笔為你收集整理的高通Sensor驱动学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】深入理解JVM
- 下一篇: C#操作电脑多显示器设置