前言
加速度和陀螺儀傳感器可用于運動跟蹤及設備姿態檢測等功能,本文基于IDO-SBC3566智能主板介紹MPU6500六軸傳感器在Android11系統的適配方法。
IDO-SBC3566基于瑞芯微RK3566研發的一款高性能低功耗的智能主板,采用四核A55,主頻高達1.8GHz,專為個人移動互聯網設備和AIOT設備而設計,內置了多種功能強大的嵌入式硬件引擎,為高端應用提供了優異的性能,支持幾乎全格式的4K編解碼,內置3DGPU,能夠完全兼容OpenGL ES1.1/2.0/3.2、OpenCL2.0和Vulkan1.0.特殊的MMU2D硬件引擎,此外,憑借其強大的兼容性,可以輕松地轉換基于TensorFlow/MXNet/PyTorch/Caffe等一系列框架的網絡模型。
支持Android,Linux,OpenHarmony,麒麟OS等多種操作系統,可廣泛應用于平板、教育平板、帶屏音箱、詞典筆、云終端、視頻會議系統等安卓/Linux類應用方案,以及其他帶屏消費類、或輕量級AI應用場景。
硬件分析
根據硬件原理圖設計確認PMU6500通過I2C與CPU連接。
內核配置
按照硬件I2C總線號及中斷引腳信息,配置dts
&i2c3 { status = "okay"; mpu6500_acc: mpu_acc@68 { compatible = "mpu6500_acc"; reg = <0x68>; pinctrl-0 = <&mpu6500_irq_gpio>; irq-gpio = <&gpio1?RK_PB0?IRQ_TYPE_EDGE_RISING>; irq_enable = <0>; poll_delay_ms = <30>; type = ; layout = <2>; status = "okay"; }; mpu6500_gyro: mpu_gyro@68 { compatible = "mpu6500_gyro"; reg = <0x68>; irq_enable = <0>; poll_delay_ms = <30>; type = ; layout = <2>; status = "okay"; }; }; &pinctrl { mpu6500 { mpu6500_irq_gpio: mpu6500-irq-gpio { rockchip,pins = <3?RK_PD0?RK_FUNC_GPIO?&pcfg_pull_none>; }; }; };
內核配置中開啟以下配置
GYRO_MPU6500 [=y] MPU6500_ACC [=y]
編譯內核燒錄鏡像至主板可看到以下打印日志,則說明驅動加載成功并識別到設備。
console:/ # dmesg | grepmpu [ 1.321088] gsensor_mpu6500 3-0068: sensor_register_device: mpu6500_acc, id = 29 [ 1.321111] i2c i2c-3: sensor_probe: mpu6500_acc,000000002d6ea1c1 [ 1.321151] gsensor_mpu6500 3-0068: sensor_chip_init:mpu6500_acc:devid=0x0,ops=0x000000000903c4c1 [ 1.517448] gsensor_mpu6500 3-0068: sensor_irq_init:usepolling,delay=30ms [ 1.517564] gsensor_mpu6500 3-0068: sensor_misc_device_register mma8452_daemon [ 1.517583] gsensor_mpu6500 3-0068: sensor_probe:initialized ok,sensor name:mpu6500_acc,type:2,id=29x0a [ 2.672631] gyro_mpu6500 3-0068-1: sensor_register_device: mpu6500_gyro, id = 58 [ 2.672647] i2c i2c-3: sensor_probe: mpu6500_gyro,0000000058545d17 [ 2.672670] gyro_mpu6500 3-0068-1: sensor_chip_init:mpu6500_gyro:devid=0x0,ops=0x00000000608437a5 [ 2.757813] gyro_mpu6500 3-0068-1: sensor_irq_init:usepolling,delay=30ms [ 2.758046] gyro_mpu6500 3-0068-1: sensor_misc_device_register gyrosensor [ 2.758071] gyro_mpu6500 3-0068-1: sensor_probe:initialized ok,sensor name:mpu6500_gyro,type:4,id=58x0a [ 4.788677] wait_for_keymaster: Computing HMAC with params { (seed: , nonce: 0811b2df836030705cced8b1a949fdd6c9896eeda9c5ea7253d514cfd7d6b72) } [ 4.788697] wait_for_keymaster: Computing HMAC forOpteeKeymasterDevice from Rockchip SecurityLevel:TRUSTED_ENVIRONMENT HAL: android.hardware.keymaster@4.1::IKeymasterDevice/default [ 10.072684] gsensor_mpu6500 3-0068: failed toreadaccel offset data from storage [ 10.073214] gyro_mpu6500 3-0068-1: failed toreadgyro offset data from storage [ 36.442413] gsensor_mpu6500 3-0068: setsensor poll time to66ms [ 36.533897] gsensor_mpu6500 3-0068: sensor on: starting poll sensor data 62ms
查看input設備
# cat/proc/bus/input/devices
從上面的內核啟動日志中可以看到以下提示,因為芯片還沒經過校準無法從存儲器中讀取加速度偏移數據。
[ 10.072684] gsensor_mpu6500 3-0068: failed toreadaccel offset data from storage [ 10.073214] gyro_mpu6500 3-0068-1: failed toreadgyro offset data from storage
命令行校準方法如下:
#Gsensor echo 1> /sys/class/sensor_class/accel_calibration #GYRO echo 1> /sys/class/sensor_class/gyro_calibration
查看校準值:
cat /sys/class/sensor_class/accel_calibration cat /sys/class/sensor_class/gyro_calibration
如果無法查看校準值,則說明校準失敗,可以打印 kernel log 確定失敗原因。校準成功后,校準的值會保存到emmc 的 vendor storage 里面,不會被擦除,下次開機自動生效。
Android配置開啟Sensor支持
需要修改Android編譯設備配置,添加加速度計和陀螺儀的支持。
RK356X配置文件為:device/rockchip/rk356x/BoardConfig.mk
BOARD_GRAVITY_SENSOR_SUPPORT := true BOARD_GYROSCOPE_SENSOR_SUPPORT := true加速度和陀螺儀測試
可使用Sensor Sense軟件來測試傳感器的數據
如下為重力變化測試,翻轉硬件,重力曲線隨之變化
安裝Gyroscope Test_1.0.5_Apkpure軟件,運行模擬畫面來確定當前主板傳感器的坐標系,測試界面如下圖所示。在內核驅動 drivers/input/sensors/sensor-dev.c 中定義了9個坐標系,在軟件模擬確認后,修改dts中的layout值來選擇坐標系矩陣。
審核編輯:劉清
-
傳感器
+關注
關注
2529文章
48474瀏覽量
741842 -
Android系統
+關注
關注
0文章
56瀏覽量
13203 -
陀螺儀傳感器
+關注
關注
1文章
31瀏覽量
13629 -
六軸傳感器
+關注
關注
1文章
17瀏覽量
16189 -
RK3566
+關注
關注
0文章
126瀏覽量
4045
原文標題:【技術分享】RK3566搭載Android11加速度和陀螺儀調試
文章出處:【微信號:industio,微信公眾號:深圳觸覺智能】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論