搜索
bottom↓
回复: 3

瑞芯微 RK3399 VR Sensor 开发指南

[复制链接]

出0入0汤圆

发表于 2018-10-10 15:27:51 | 显示全部楼层 |阅读模式
   RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。 RK3399的GPU采用四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%。
    盈鹏飞科技最新研发的RK3399安卓主板,搭载了最新android7.1 系统,4G DDR3内存,32G EMMC 存诸等...RK3399开发板主板尺寸为:146*102mm,设计有非常丰富的接口,板载5路UART,支持USB3.0高性能设备接口, WIFI/BT二合一,HDMI OUT 、HDMI INT、Type C、4G、IR、以太网等;可扩展模块包括4G模块、Camera(1300万、500万)等应用类功能模块。
     RK3399开发板为消费类电子、智能终端、MID、无线通讯、医疗设备、工业控制等行业产品的应用开发而设计,超强的视频处理能力,超高清视频输出优势,口丰富、性能稳定。支持Android\Linux\Ubuntu系统,软件支持完善,开放源代码适合企业二次开发带高清显示的商显广告机、自助售货机、教育终端等,可降低研发门槛,缩短产品



RK3399 VR Sensor 开发指南
1 代码架构:
RK VR sensor 目前只支持 MPU6500 这颗陀螺仪;代码架构也是基于 mpu6500的。
2 Sensor 代码配置:
1) Dts
一体机配置:
使用 SPI 接口:
&spi1 {
status = "okay";
max-freq = <50000000>;
pinctrl-names = "default", "sleep";
pinctrl-1 = <&spi1_gpio>;
mpu6500@0 {
status = "okay";
compatible = "inv-spi,mpu6500";
pinctrl-names = "default";
pinctrl-0 = <&mpu6500_irq_gpio>;
irq-gpio = <&gpio1 4 IRQ_TYPE_EDGE_RISING>;
reg = <0>;
spi-max-frequency = <1000000>;
spi-cpha;
spi-cpol;
mpu-int_config = <0x00>;
mpu-level_shifter = <0>;
  mpu-orientation = <1 0 0 0 1 0 0 0 1>;
orientation-x= <1>;
orientation-y= <0>;
orientation-z= <1>;
support-hw-poweroff = <1>;
mpu-debug = <1>;
       };
};

使用 I2C 接口:
&i2c4 {
   status = "okay";
   i2c-scl-rising-time-ns = <345>;
   i2c-scl-falling-time-ns = <11>;
   clock-frequency = <400000>;  
   mpu6500@68 { status = "okay";
   compatible = "invensense,mpu6500";
   pinctrl-names = "default";
   pinctrl-0 = <&mpu6500_irq_gpio>;
   reg = <0x68>;
   irq-gpio = <&gpio2 27 IRQ_TYPE_EDGE_RISING>;
   mpu-int_config = <0x10>;
   mpu-level_shifter = <0>;
   mpu-orientation = <1 0 0 0 1 0 0 0 1>;
   orientation-x= <1>;
   orientation-y= <1>;
   orientation-z= <0>;
   support-hw-poweroff = <1>;
   mpu-debug = <1>;
};

sensor@0d { //compass 目前都是使用 i2c 接口
status = "okay";
compatible = "ak8963";
pinctrl-names = "default";
pinctrl-0 = <&ak8963_irq_gpio>;
reg = <0x0d>;
type = <SENSOR_TYPE_COMPASS>;
irq-gpio = <&gpio2 28 IRQ_TYPE_EDGE_RISING>;
irq_enable = <0>;
poll_delay_ms = <30>;
layout = <3>;
     };
};

&pinctrl {
    mpu6500 {
         mpu6500_irq_gpio: mpu6500-irq-gpio {
               rockchip,pins = <1 4 RK_FUNC_GPIO &pcfg_pull_none>;
        };
};
ak8963 {
   ak8963_irq_gpio: ak8963-irq-gpio {
           rockchip,pins = <2 28 RK_FUNC_GPIO &pcfg_pull_none>;
                      };
         };
};
分体机配置:
mpu6500_hid {
                    status = "okay";
                   compatible = "inv-hid,mpu6500";
};
2) 方向配置说明:
mpu-orientation = <1 0 0 0 1 0 0 0 1>;   //3x3 的矩阵,用于表示
x,y,z 轴的交换。
orientation-x= <1>;                                 //代表取反
orientation-y= <0>;
orientation-z= <1>;
请根据实际的 layout 配置。

如果你的 sensor 已经工作,可以正常上报数据,也可以通过数据来确定这个 方向。依据是:某个轴的正方向与重力方向相反时,该轴的 gsensor 数据为+9.81 m/s2,其他轴为 0。

如下是屏幕向上,水平放置时的 gsensor 数据,此时 Z 轴为+9.81 左右,其他 轴接近 0。

3 Sensor 功能确认
1) mpu6500 驱动是否加载 OK。
开机 log 打印:
成功的 log:[    3.183472] inv_mpu_iio_spi spi32766.0: mpu6500 is ready to go!
失败的话会有相应错误 log 提示,可能是 gpio 申请失败,中断申请失败,spi/i2c
通信错误等。
设备节点:
ls –l /sys/bus/iio/devices/iio:device0

如果没有加载成功,请确认 dts 配置和开机 log 确认问题点。

2) Hal 层是否正常工作:

logcat -s Sensors,正常 log 如下:
如果 hal 层工作不正常,请确认 sensor 驱动是否正常加载,设备节点权限是否足够。

4 数据正确性判断
1) Gsensor
某个轴的正方向与重力方向相反时,该轴的 gsensor 数据为+9.81 m/s2,其他轴 为 0。如机器水平放置在桌面上,一般是 Z 轴的数据为+9.81。
2) Gyro
陀螺仪数据主要看零漂是否严重,也就是机器静止放置的时候,陀螺仪数据应 该为 0。
以上数据如果偏差较大的话,就说明数据有问题。

5 Sensor debug 开关
1)sensor log 查看命令:logcat -s Sensors

2)sensor raw data 查看命令: setprop invn.hal.data.input 1; stop;start;

logcat –s Sensors
3)Hal 层处理后的数据查看(上报给 android 系统)命令: setprop invn.hal.data.handler 1;
stop;start; logcat –s Sensors
4)其他开关:sensor.debug.level,查看 hal 处理后的上报给 android 的
数据 ,功能与 invn.hal.data.handler 有些重复。

sensor.debug.level 值定义如下:
/*
0 - 0000 - no debug
1 - 0001 - gyro data
2 - 0010 - accl data
4 - 0100 - mag data
8 - 1000 - raw gyro data with uncalib and bias
*/

6 Sensor 校准
工厂 PCBA 测试时,会对 sensor 做校准,目前是做 gsensor 校准,可以纠正由于外 界环境导致的 gsensor 固定偏差。

7 常见问题
图像漂移:
现象一:头盔转动时图像飘移严重,静止放置一会儿后图像会停止下来。
可能的原因是:
1)坐标方向配置错误,sensor 坐标系需要与机器的坐标系定义一致。
2)Gsensor 数据偏差太大,加速度计、陀螺仪属于 MEMS Sensor,全称 Micro
Electro Mechanical Systems 微机械电子系统。是采用微电子和微机械加工技术制
造出来的新型传感器。硬件上的应力对其内部结构会有影响,从而影响数据的准确性。
在我们的板子上就出现过超声波洗板导致 sensor 损坏,数据偏差大的问题。
现象二:静止放置时一直在飘移,可能是轻微的 飘移,但是不会停止下来; 这种现象一般是陀螺仪零漂大导致的,陀螺仪零漂是指机器静止放置时,陀螺仪 的数据不为零。陀螺仪的零漂取决于 sensor 本身和外接干扰,温度、电源纹波、 运动状态对其都有影响,需要系统每段时间对其做矫正;
画面歪:
一般是因为 Gsensor 数据有一些偏差。
Gsensor 数据正确性判断:
加速度传感器的工作原理是通过测量施加在传感器上的应力(F)来计算设备所产生的的加速度(A),重力作为常量始终作用在物体上,所以当物体静止放置的时候,Sensor 的数据应等于重力加速度 9.81 m/s2。
某个轴的正方向与重力方向相反时,该轴的 gsensor 数据为+9.81 m/s2,其他轴为 0。
当数据有偏差是需要做校准,一般 gsensor 的偏差都是固定偏差,所以只需要减去偏置值即可。

   盈鹏飞嵌入式专注于Atmel、TI、NXP、Rockchip等平台产品的研发。公司团队拥有超过10年的ARM软硬件开发经验,拥有智能家居、人机界面、工业缝纫机、电力采集器等多个成功案例;公司2005年成立至今,主要从事工业控制领域开发,先后开发了以ARM9- AT91SAM9G45、Cortex-A8-335x 、A7- i.MX6UL 、A9-I.MX6Q为主控的各种方案,深入WINCE/LINUX 嵌入式系统开发多年,产品以高稳定性,高可靠性获得客户的信赖!2017年我们再出发,依赖工业控制领域多年的设计造诣,公司以创"芯"科技,智造双赢为经营理念,先后开发了以RK3288、RK3399 等处理器为应用的ANDROID解决方案,承接项目定制、BSP以及APP开发,为客户提供专业化的量身定制广告机、消费类电子等解决方案。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-10-10 16:39:45 | 显示全部楼层
应该弄个核心板。
达到做产品的质量。


出0入0汤圆

发表于 2018-10-10 16:48:40 | 显示全部楼层
VR不是已经凉了吗?现在还有人搞吗?

出0入442汤圆

发表于 2018-10-10 18:44:26 来自手机 | 显示全部楼层
zhang0352505 发表于 2018-10-10 16:48
VR不是已经凉了吗?现在还有人搞吗?

话说我们测试的3399整数性能6个核差不多能打平tk1,小核性能只有大核一半。浮点性能没有测过。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 18:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表