|
G-sensor 驅動實驗教程
第一節(jié) 引言 --- G-sensor 電路原理圖詳解
下圖來源于文檔 3128_sdk_a02_20170325.pdf 中第 2 頁和第 12 頁。
如下兩張圖可以確定 G-sensor 是通過 I2c 與 cpu 相互通信的,cpu 作為主設備,G-sensor 作為從設備。因為 cpu 的 I2c 不僅僅與 G-sensor 相連,它連接了多個 I2c 從設備,并且通過從設備地址來確定當前和哪個從設備通信。
圖1
圖2
第二節(jié) G-sensor 驅動代碼結構
$(dir)\rk3128-source\kernel\drivers\input\sensors\accel\mma8452.c
從代碼路徑可以看出 G-sensor 驅動和 input,sensor 設備有莫大的關系。
圖3
$(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-dev.c
--- sensor 設備注冊,主要是注冊 sensor,input 設備,解析 dts 配置文件
$(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-i2c.c
---sensor 的 I2c 相關處理
第三節(jié) 實驗代碼
1.dts 修改:
代碼1
2.增加一個可以動態(tài)調節(jié)方向的測試函數(shù)如下(在 sensor-dev.c 中),用戶可以通過adb shell 或者串口去輸入數(shù)據完成屏幕方向調節(jié)的功能。
代碼2
3.輸入命令格式
a.系統(tǒng)缺省的方向配置如下
echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation b.測試命令如下
echo gsensor_class={1, 0, 0, 0, 0, 1, 0, 1, 0} > /sys/class/gsensor_class/orientation
echo gsensor_class={0, 1, 0, 1, 0, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation
echo gsensor_class={0, 1, 0, 0, 0, 1, 1, 0, 0} > /sys/class/gsensor_class/orientation
echo gsensor_class={0, 0, 1, 1, 0, 0, 0, 1, 0} > /sys/class/gsensor_class/orientation
echo gsensor_class={0, 0, 1, 0, 1, 0, 1, 0, 0} > /sys/class/gsensor_class/orientation
4.代碼調試中遇到問題
如果 gsensor_set_orientation_online()直接返回 0 或 1 而不是 count,會出現(xiàn)什么情況?為什么?
如果 echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation 命令提示輸入不生效,可以嘗試輸入 su 命令提高一下權限。在我們開發(fā)板上面, adb 默認是 root 的,所以 adb shell 之后,直接是 root 用戶?梢杂 su 切換,也可以不用切換。
第四節(jié) 實驗步驟 --- GSENSOR 怎么調節(jié)方向
一般 GSENSOR 芯片貼片的位置變了,變換坐標就要跟著調整。
我們 Gsensor 是貼片好了的,這個用戶無法更改,但是用戶可以模擬一下如果板子不平放而是豎著放,屏幕平放的情況看優(yōu)酷,如果保證屏幕的正常顯示。
第五節(jié) 實驗現(xiàn)象
開發(fā)板放置成如下圖一方向,什么命令可以讓屏幕橫著播放視頻?
echo gsensor_class={-1, 0, 0, 0, -1, 0, 0, 0, -1} > /sys/class/gsensor_class/orientation
輸入如上命令后,屏幕變了,如圖二。
圖4
圖5
更多完整學習資料和對應開源套件,請登陸官網:“瘋殼”
文件下載請點擊:
9、G-sensor驅動實驗教程.pdf
(631.95 KB)
2022-7-20 14:15 上傳
點擊文件名下載附件
下載積分: 積分 -1
|
|