MBR固件是采用旧版本SDK编译出来的MBR分区固件,已使用时间长,稳定性高
GPT固件是采用新版本SDK编译出来得GPT分区固件,兼容性好,SDK编译简单方便,功能齐全,建议使用。
注意:官方正在完善新版本SDK(GPT),在后期将全部使用新版本SDK。
在Linux PC主机上安装模拟器:
Firefly-rk3399 ubuntu根文件系统是基于Ubuntu base 16.04来创建的。用户可以到ubuntu cdimg 下载,选择下载ubuntu-base-16.04.1-base-arm64.tar.gz 。
下载完之后,创建临时文件夹并解压根文件系统:
准备网络:
准备qemu
进入根文件系统进行操作:
更新:
安装自己需要的功能
安装xubuntu
可能出现错误:
安装包的源没有添加到/etc/apt/source.list中,导致无法识别安装包,可以自行添加源,也可以使用下面给出的source.list覆盖原来的/etc/apt/source.list文件:
添加用户
给用户设置密码:
给root用户设置密码:
修改完自己的根文件系统就可以退出了。
制作自己的根文件系统,大小依据自己的根文件系统而定,注意依据temp文件夹的大小来修改count值
这样 linuxroot.img 就是最终的根文件系统映像文件了。
在系统正确加载后执行扩展文件系统命令:
为了方便用户的使用与开发,官方提供了Linux开发的整套sdk,本章详细的说明SDK的具体用法。
下载 Linux-SDK:
方法一
初始化repo仓库:
同步源码:
方法二(国内用户推荐使用)
因为国内用户可能git拉代码会比较慢,所以官方提供了基础得源码包Linux_SDK.7z
下载Linux_SDK.7z
目录:
编译buildroot固件:
编译debian固件:
ubuntu固件:(根文件系统请使用官方提供的根文件系统镜像)
配置文件 aio-3399-jd4.mk:
配置文件生效会连接到device/rockchip/.BoardConfig.mk,检查该文件可以验证是否配置成功。
注意:aio-3399-jd4.mk为编译生成buildroot固件的配置文件.同时用户也可以通过参考该配置生成新的配置文件来适配自己所需要的固件。
重要配置介绍:(如果需要diy固件,可能需要修改下列配置信息)
注意,十分重要!!
默认配置编译buildroot固件,如果想编译其他固件(如ubuntu固件)请执行一下操作:
下载ubuntu根文件系统镜像 https://pan.baidu.com/s/1DuCzTGARDi7APxyKs9Nl1A#list/path=%2F
把得到的镜像放到sdk的指定目录:
注意:ubuntu根文件系统镜像存放路径不能错
在配置和搭建环境的工作都做好的前提下:
全自动编译的固件默认编译buildroot固件。生成固件目录rockdev/,同时会在IMAGE中备份。
recovery分区可省略,若有需要: 编译recovery:
buildroot
debian:
ubuntu18.04,可以通过云盘下载:
下载链接 https://pan.baidu.com/s/1DuCzTGARDi7APxyKs9Nl1A#list/path=%2F
把得到的镜像放到sdk的根目录处:
注意:ubuntu根文件系统镜像存放路径不能错
运行./mkfirmware.sh会自动更新rockdev/rootfs.img的链接
每次打包固件前先确保rockdev/目录下文件链接是否正确:
可以运行./mkfirmware.sh更新链接
提示:若不是编译全部的分区镜像,在运行./mkfirmware时,会遇到如下类似情况:
注意:打包前请确认tools/linux/Linux_Pack_Firmware/rockdev/package-file是否正确。打包会根据此文件进行分区打包。此文件链接会在./build.shaio-rk3399-jd4.mk命令时更新,如果配置不对请返回[配置]这一节重新配置一次。
整合统一固件
parameter.txt包含了固件的分区信息十分重要,你可以在device/rockchip/rk3399目录下找到一些parameter.txt文件,下面以parameter-debian.txt为例子做介绍:
CMDLINE属性是我们关注的地方。以uboot为例0x00002000@0x00004000(uboot)中0x00004000为uboot分区的起始位置0x00002000为分区的大小。后面的分区规则相同。用户可以根据自己需要增减或者修改分区信息,但是请最少保留uboot,trust,boot,rootfs分区,这是机器能正常启动的前提条件。parameter-ubuntu.txt中使用的就是这样的最简分区方案。
分区介绍:
此文件应当与parameter保持一致,用于固件打包。可以在tools/linux/Linux_Pack_Firmware/rockdev下找到相关文件。以rk3399-ubuntu-package-file为例介绍:
以上是SDK编译后生成的镜像文件。根据parameter.txt只打包自己用到的img文件。
操作方法见《升级固件》
Mpp是Rockchip为RK3399提供的一套视频编解码的api, 并且基于mpp,Rockchip提供了一套gstreamer的编解码插件。用户可以根据自己的需求,基于gstreamer来做视频编解码的应用,或者直接调用mpp,来实现硬件的编解码加速。
Firefly 发布的Ubuntu 系统, 都已经提供了完整的gstremaer 和 mpp支持,并且提供了相应的demo,供用户开发参考。
Ubuntu 16.04 下,gstreamer 1.12 已经安装在/opt/目录下。
Ubuntu 18.04下, gstreamer 1.12 已经安装到系统中。
/usr/local/bin/h264dec.sh 测试硬件H264解码。
/usr/local/bin/h264enc.sh 测试硬件H264编码。
用户可以参照这两个脚本,配置自己的gstreamer应用。
Ubunut 系统下, mpp 相关dev包都已经安装到系统中。
/opt/mpp/下分别是mpp 编解码的相关demo 和 源文件。
RK3399 支持 OpenGL ES1.1/2.0/3.0/3.1。
Firefly 发布的Ubuntu 系统, 都已经提供了完整的OpenGL-ES支持。运行glmark2-es2可以测试openGL-ES支持。 如果要避免屏幕刷新率对测试结果的影响,可以在串口终端上使用以下命令测试。
在Chromium浏览器中, 在地址栏输入:chrome://gpu可以查看chromium下硬件加速的支持。
Note:
EGL 是用arm 平台上OpenGL针对x window system的扩展,功能等效于x86下的glx库。
由于Xorg使用的Driver modesettings 默认会加载libglx.so(禁用glx会导致某些通过检测glx环境的应用启动失败), libglx.so会搜索系统中的dri实现库。但是rk3399 Xorg 2D加速是直接基于DRM实现, 并未实现dri库,所以启动过程中,libglx.so会报告如下的错误 。
这个对系统运行没有任何影响,不需要处理。
基于同样的道理,某些应用启动过程中,也会报告如下错误,不用处理,对应用的运行不会造成影响。
Firefly之前发布的某些版本的Ubuntu软件,默认关闭了加载libglx.so,在某些情况下,运行某些应用程序会出现下述错误:
GdkGLExt-WARNING**:Windowsystemdoesn'tsupportOpenGL.
修正的方法如下:
删除/etc/X11/xorg.conf.d/20-modesetting.conf中一下三行配置。
Firefly发布的Ubuntu系统,已经添加了opencl1.2支持,可以运行系统内置的clinfo获取平台opencl相关参数。
RK3399 支持神经网络的GPU加速方案LinuxNN, Firefly发布的Ubuntu系统,已经添加了LinuxNN的支持。
在opt/tensorflowbin/下,运行test.sh, 即可测试MobileNet 模型图像分类器的 Demo和MobileNet-SSD 模型的目标检测 Demo
Firefly发布的Ubuntu系统,如果需要默认对系统的显示方向做旋转,可以在
/etc/default/xrandr中修改对应的显示设备的方向即可。
对于配有触摸屏的平台,如果需要对触摸屏的方向做旋转,可以在/etc/X11/xorg.conf.d/05-gslX680.conf中修改SwapAxes / InvertX / InvertY三个值。
全部0条评论
快来发表一下你的评论吧 !