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开发,为客户提供专业化的量身定制广告机、消费类电子等解决方案。
|