除了系统要求外,还有其他软硬方面的要求。
-
64 位系统
-
硬盘空间大于 40G,如果您进行多个构建,将需要更大的硬盘空间。
推荐使用Ubuntu 16.04 的系统进行编译。其他版本没有具体测试,可能需要对软件包做相应调整。
操作系统安装好后,且用户已自行配置好网络环境,则可继续如下步骤完成相关软件包的安装。
-
apt-get update
sudo apt-get update
-
安装 Kernel 及 U-Boot 编译需要依赖的软件包
-
安装 Buildroot 编译需要依赖的软件包
-
必要工具安装
sudo apt install genext2fs sudo apt install gawk
注意:编译若遇到报错,可以视报错信息,安装对应的软件包。
鉴于 Rockchip Buildroot SDK 目前只在 Linux 下编译,我们也仅提供了 Linux 下的交叉编译工具链。其中 U-Boot 及 Kernel 使用的编译工具链预置目录在 prebuilt/gcc下,buildroot 使用该开源软件中编译出来的工具链。
U-Boot 及 Kernel 编译工具链
prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
对应版本
gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)
Buildroot 编译工具链
buildroot/output/rockchip_rk3308_release/host/bin/aarch64-rockchip-linux-gnu-
对应版本
gcc version 6.4.0 (Buildroot 2018.02-rc3-00017-g9c68ede)
如果需要其他平台或版本的工具链,需自行编译。
由于 SDK 比较大,我们提供了一个打包好的.git以供下载:
Firefly-RK3308_Linux_SDK
下载完成后先验证一下 MD5 码:
md5sum Firefly-RK3308_Linux_SDK_git_20190924.7z 97837ef273541b45ab12260db6c01fdd Firefly-RK3308_Linux_SDK_git_20190924.7z
确认无误后,就可以解压:
mkdir -p ~/prj/Firefly-RK3308 cd ~/prj/Firefly-RK3308 7zr x Firefly-RK3308_Linux_SDK_git_20190924.7z git reset --hard HEAD
解压出来的SDK,已经默认添加远程仓库
git remote -v gitlab git@gitlab.com/TeeFirefly/rk3308-linux.git (fetch) gitlab git@gitlab.com/TeeFirefly/rk3308-linux.git (push)
以后就可以直接从 gitlab 处更新:
git pull gitlab firefly:firefly
也可以到 https://gitlab.com/TeeFirefly/rk3308-linux 在线浏览源码
. ├── buildroot ├── build.sh -> device/rockchip/common/build.sh ├── device ├── envsetup.sh -> buildroot/build/envsetup.sh ├── external ├── kernel ├── Makefile -> buildroot/build/Makefile ├── mkfirmware.sh -> device/rockchip/rk3308/mkfirmware.sh ├── prebuilts ├── rkbin ├── rockdev ├── tools ├── u-boot └── yocto
其中:
-
buildroot
目录存放 buildroot 开源项目代码,可定制根文件系统 -
build.sh
为系统编译脚本,执行可进行 SDK 的完整编译 -
device
目录存放板级配置及一些预置文件,开机脚本等 -
external
目录存放 SDK 相关库及工具源码 -
kernel
为内核部分源码 -
mkfirmware.sh
脚本可对镜像文件进行打包,并统一拷贝至rockdev/
目录 -
prebuilts
目录存放 U-Boot、Kernel 编译使用的交叉编译工具链 -
rkbin
目录存放 Rockchip 平台一些关键性二进制文件,包括ddr.bin,miniloader.bin,bl31.bin,在 U-Boot 编译过程中会用到 -
rockdev
执行 mkfirmware.sh 会把系统编译的生成的镜像,统一拷贝至 rockdev/ -
tools
目录存放着 Windows 及 Linux 环境下的开发工具、调试工具、量产工具 -
u-boot
目录存放着 U-Boot 部分的源码
编译 Uboot:
cd u-boot/ ./make.sh rk3308
编译完,会生成 trust.img、rk3308_loader_xxx.bin、uboot.img 三个镜像文件。
编译 kenrel 的时候可以直接 make arch=arm64 dts-name.img
(如 rk3308b-roc-cc-amic_emmc.img
),即可生成对应的 resource.img(包含 dtb 数据)。
最终生成的kernel.img和resource.img将会被打包进zboot.img,更换内核的时候,只需烧写zboot.img即可。
注意:凡是有大更新或者个别软件更新,需要清掉旧版本的相关内容,但编译脚本是不会自动覆盖的。因此需要手动解决。最省事的方法就是删掉 buildroot/output/
目录,然后再重新编译SDK。
rm buildroot/output -rf
编译 Buildroot,envsetup.sh 是终端环境变量设置脚本:
source buildroot/build/envsetup.sh You're building on Linux Lunch menu...pick a combo: 1. firefly_rk3308_release 2. firefly_rk3308_recovery 3. firefly_rk3308_pcba Which would you like? [1] 1 ===========================================
如选择 firefly_rk3308_release,输入对应序号 1
执行编译:
make
完成编译后执行 SDK 根目录下的 mkfirmware.sh 脚本生成固件。
./mkfirmware.sh
所有烧写所需的镜像都将会拷贝于 rockdev 目录。
rockdev/ ├── boot.img ├── MiniLoaderAll.bin ├── misc.img ├── oem.img ├── parameter.txt ├── recovery.img ├── rootfs.img ├── trust.img ├── uboot.img └── userdata.img
得到了所有镜像文件后,为了方便烧写及量产,通常可手动将这些单独的镜像通过脚本打包成为一个统一固件:update.img。打包方法见下文。
为了提高编译的效率,降低人工编译可能出现的误操作,该 SDK 中集成了全自动化编译脚本,方便固件编译、备份。
该全自动化编译脚本原始文件存放于:
device/rockchip/common/build.sh
在SDK根目录创建了相应软链接build.sh
。
./build.sh roc-rk3308b-cc_release_BoardConfig.mk ./build.sh
或者可以通过修改默认配置 device/rockchip/rk3308/BoardConfig.mk
脚本中的特定变量,以编出对应产品固件
#========================= # Compile Config #========================= # Target arch export RK_ARCH=arm64 # Uboot defconfig export RK_UBOOT_DEFCONFIG=rk3308 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly-rk3308b_linux_defconfig # Kernel dts export RK_KERNEL_DTS=rk3308b-roc-cc-amic_emmc # boot image type export RK_BOOT_IMG=zboot.img # kernel image path export RK_KERNEL_IMG=kernel/arch/arm64/boot/Image.lz4
执行自动编译脚本:
./build.sh
该脚本会自动配置环境变量,并自动编译 U-Boot,编译 Kernel,编译Buildroot,编译 Recovery 继而生成固件。
为了方便开发调试,上文说到的“全自动化编译脚本”,也支持单独模块进行编译,方便模块调试,可指定并编译部分模块。
部分编译可参见使用说明:
./build.sh -h ====USAGE: build.sh modules==== uboot -build uboot kernel -build kernel rootfs -build default rootfs, currently build buildroot as default buildroot -build buildroot rootfs yocto -build yocto rootfs, currently build ros as default ros -build ros rootfs debian -build debian rootfs pcba -build pcba recovery -build recovery all -build uboot, kernel, rootfs, recovery image cleanall -clean uboot, kernel, rootfs, recovery firmware -pack all the image we need to boot up system updateimg -pack update image save -save images, patches, commands used to debug default -build all modules
如单独编译 kernel,只需要执行以下命令:
./build.sh kernel
固件打包工具可将各零散镜像文件,打包成一个完整的 update.img 形式,方便量产烧写及升级。
Windows 系统下,打包工具存放在 tools\windows\AndroidTool\rockdev
,打包步骤如下:
-
打开 rockdev 目录,编辑 package-file。按照 package-file 进行配置,package-file 里面配置 img 镜像放在 Image 目录底下的,将需要放到 Image 目录的镜像拷贝进去即可。且注意配置时,镜像名字的准确。其中注意bootloader选项,应该根据自己生成的 loader 名称进行修改。
-
编辑 mkupdate.bat。 需要修改 loader 名称为实际存放的loader 名称即可。
-
点击 mkupdate.bat 运行即可,运行完会在当前目录生成一个 update.img。
打包工具存放在 SDK/tools/linux/Linux_Pack_Firmware/rockdev/
,打包步骤如下:
-
打开 rockdev 目录,编辑 package-file。 按照 package-file 进行配置,package-file 里面配置 img 镜像放在 Image 目录底下的,将需要放到 Image 目录的镜像拷贝进去即可。且注意配置时,镜像名字的准确。其中注意bootloader选项,应该根据自己生成的 loader 名称进行修改。
-
编辑 mkupdate.sh。 需要修改 loader 名称为实际存放的loader 名称即可。
-
在 rockdev 目录下,执行以下命令,运行完会在当前目录生成一个 update.img。
./mkupdate.sh
另外,Linux下,SDK有提供一键打包工具,自动生成统一固件 rockdev/update.img
./build.sh updateimg
-
嵌入式主板
+关注
关注
7文章
6085浏览量
35328 -
安卓
+关注
关注
5文章
2130浏览量
57179 -
Firefly
+关注
关注
2文章
538浏览量
7037 -
RK3308
+关注
关注
1文章
39浏览量
1132
发布评论请先 登录
相关推荐
fireflyROC-RK3308B-CC固件编译工具简介
fireflyROC-RK3308B-CC--启动模式说明
fireflyROC-RK3308B主板CC升级固件简介
Core 3308Y固件ROC RK3308B CC PLUS Buildroot NoUI

Core 3308Y固件ROC RK3308B CC PLUS Buildroot MiniGUI

ROC RK3308B CC PLUS Buildroot QT Desktop固件

Core 3308Y ROC RK3308B CC PLUS Ubuntu Minimal固件

Core 3308Y固件ROC RK3308B CC PLUS Ubuntu Desktop固件

Core 3308Y固件ROC RK3308B CC PLUS支持Docker固件

Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件

ROC RK3308B CC Buildroot Qt Desktop固件

IoT四核64位开源主板ROC RK3308B CC规格书

四核64位开源主板ROC RK3308B CC Plus规格书

评论