szypf2011 发表于 2018-10-10 15:27:51

瑞芯微 RK3399 VR Sensor 开发指南

   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 Sensors3)Hal 层处理后的数据查看(上报给 android 系统)命令: setprop invn.hal.data.handler 1;stop;start; logcat –s Sensors4)其他开关:sensor.debug.level,查看 hal 处理后的上报给 android 的数据 ,功能与 invn.hal.data.handler 有些重复。
sensor.debug.level 值定义如下:/*0 - 0000 - no debug1 - 0001 - gyro data2 - 0010 - accl data4 - 0100 - mag data8 - 1000 - raw gyro data with uncalib and bias*/
6 Sensor 校准工厂 PCBA 测试时,会对 sensor 做校准,目前是做 gsensor 校准,可以纠正由于外 界环境导致的 gsensor 固定偏差。
7 常见问题图像漂移:现象一:头盔转动时图像飘移严重,静止放置一会儿后图像会停止下来。可能的原因是:1)坐标方向配置错误,sensor 坐标系需要与机器的坐标系定义一致。2)Gsensor 数据偏差太大,加速度计、陀螺仪属于 MEMS Sensor,全称 MicroElectro 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开发,为客户提供专业化的量身定制广告机、消费类电子等解决方案。

Excellence 发表于 2018-10-10 16:39:45

应该弄个核心板。
达到做产品的质量。


zhang0352505 发表于 2018-10-10 16:48:40

VR不是已经凉了吗?现在还有人搞吗?

wye11083 发表于 2018-10-10 18:44:26

zhang0352505 发表于 2018-10-10 16:48
VR不是已经凉了吗?现在还有人搞吗?

话说我们测试的3399整数性能6个核差不多能打平tk1,小核性能只有大核一半。浮点性能没有测过。
页: [1]
查看完整版本: 瑞芯微 RK3399 VR Sensor 开发指南