前言
加速度和陀螺仪传感器可用于运动跟踪及设备姿态检测等功能,本文基于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应用场景。
产品规格书:ido-sbc3566-v1b 产品手册
硬件分析
根据硬件原理图设计确认pmu6500通过i2c与cpu连接。
内核配置
按照硬件i2c总线号及中断引脚信息,配置dts
&i2c3 { status = okay; mpu6500_acc: mpu_acc@68 { compatible = mpu6500_acc; reg = ; pinctrl-0 = ; irq-gpio = ; irq_enable = ; poll_delay_ms = ; type = ; layout = ; status = okay; }; mpu6500_gyro: mpu_gyro@68 { compatible = mpu6500_gyro; reg = ; irq_enable = ; poll_delay_ms = ; type = ; layout = ; status = okay; };};&pinctrl { mpu6500 { mpu6500_irq_gpio: mpu6500-irq-gpio { rockchip,pins = ; }; };};
内核配置中开启以下配置
gyro_mpu6500 [=y] mpu6500_acc [=y]
编译内核烧录镜像至主板可看到以下打印日志,则说明驱动加载成功并识别到设备。
console:/ # dmesg | grep mpu[ 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:use polling,delay=30 ms[ 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:use polling,delay=30 ms[ 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 for opteekeymasterdevice from rockchip securitylevel: trusted_environment hal: android.hardware.keymaster@4.1::ikeymasterdevice/default[ 10.072684] gsensor_mpu6500 3-0068: failed to read accel offset data from storage[ 10.073214] gyro_mpu6500 3-0068-1: failed to read gyro offset data from storage[ 36.442413] gsensor_mpu6500 3-0068: set sensor poll time to 66ms[ 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 to read accel offset data from storage[ 10.073214] gyro_mpu6500 3-0068-1: failed to read gyro offset data from storage
命令行校准方法如下:
#gsensorecho 1 > /sys/class/sensor_class/accel_calibration#gyroecho 1 > /sys/class/sensor_class/gyro_calibration
查看校准值:
cat /sys/class/sensor_class/accel_calibrationcat /sys/class/sensor_class/gyro_calibration
如果无法查看校准值,则说明校准失败,可以打印 kernel log 确定失败原因。校准成功后,校准的值会保存到emmc 的 vendor storage 里面,不会被擦除,下次开机自动生效。
android配置开启sensor支持
需要修改android编译设备配置,添加加速度计和陀螺仪的支持。
rk356x配置文件为:device/rockchip/rk356x/boardconfig.mk
board_gravity_sensor_support := trueboard_gyroscope_sensor_support := true加速度和陀螺仪测试
可使用sensor sense软件来测试传感器的数据
如下为重力变化测试,翻转硬件,重力曲线随之变化
安装gyroscope test_1.0.5_apkpure软件,运行模拟画面来确定当前主板传感器的坐标系,测试界面如下图所示。在内核驱动 drivers/input/sensors/sensor-dev.c 中定义了9个坐标系,在软件模拟确认后,修改dts中的layout值来选择坐标系矩阵。
魅蓝u10和u20哪个好?魅蓝u10和u20这两部手机超帅气
五轴加工中3+2定位与5轴联动的区别是什么
无人机“对组织的信息构成潜在风险”?大疆方面的回应来了
如何选择合适的PCBA加工厂
揭秘云计算技术的现状及特点
RK3566搭载Android11加速度和陀螺仪调试
本振和RF互换了有没有影响?
手机信号放大器应该怎么选,这三大点很重要
多媒体会议室解决方案
菲律宾SMART部署爱立信天线内置射频单元
Nvidia下下代显卡架构曝光,其采用的7nm工艺更加成熟
无服务器计算被曝存在安全隐患,传统遗留体系该何去何从?
USB Type C接口的充电功能介绍
十进制计数器的工作原理
九款最简单的电子镇流器电路图原理图分析
第四届亚洲人工智能技术大会:智能创造,迎接未来
汽车认证标准与设计要注意哪些因素?
MIS结构将助力金半接触载流子注入效率的提升
世界杯超高清4K直播软件还得看它~
疫情防控应急广播系统解决方案