前言
-
开发板:【正点原子】ATomPi-CA1 开发板,配置:RK3568,4GB DDRAM + 64GB emmc
-
开发板资料给了 u-boot 与 Linux kernel 源码,尝试手动编译。
-
本篇记录 收到编译 RK3568 平台 u-boot 的方法
环境搭建
-
由于 RK 平台默认给的 SDK 相当的大,所以本次手动编译 u-boot,并尝试配置与修改 u-boot
-
解压【正点原子】ATomPi-CA1 开发板 u-boot 源码,然后设置一下交叉编译工具链,我这里使用
gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
,RK3568 属于 ARM 64位,也就是 aarch64 平台,gcc 交叉编译工具链,可以从 https://developer.arm.com/downloads/-/gnu-a 下载 -
编译环境: ubuntu 20.04,设置 gcc 交叉编译工具链的环境变量,我这里写了一个简单的 shell 脚本,每次运行一下即可,就不需要更改系统的 环境变量了
-
gcc 交叉编译工具链 环境变量设置脚本:
env_aarch64.sh
#!/bin/bash
export PATH=$PATH:/home/zhangsz/tools/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin
- shell 脚本执行权限:
chmod 777 env_aarch64.sh
- 使能 shell 脚本:
source env_aarch64.sh
,有效期:当前 shell 窗口,立即生效,重新开启 新的 shell 窗口或者重启 ubuntu 系统,需要再次设置。也就是临时设置
编译准备 rkbin
-
rk 平台 u-boot 在 官方 u-boot 基础上做了大量的修改,有个编译脚本
make.sh
用于手动编译 -
rk 平台 u-boot 依赖 rk 的bin 仓库,里面是一些 编译好的二进制文件,打包 uboot.img 或者生成 spl 时 会使用到,比如 ddr 的初始化。
-
rkbin 仓库位置, https://github.com/rockchip-linux/rkbin.git,需要下载到 rk u-boot 的同级目录,
zhangsz@zhangsz:~/rk3568/uboot/rk-uboot$ ls
rkbin u-boot u-boot-atompi-ca1
编译方法
-
【正点原子】ATomPi-CA1 开发板 提供了 默认配置文件
configs/atompi-ca1_defconfig
-
编译命令:
./make.sh atompi-ca1
,产物 uboot.img -
使用
./make.sh --spl
生成rk356x_spl_loader_v1.21.113.bin
,用于 loader 下载(SPL)
烧写方法
- 使用 RK 提供的
RKDevTool.exe
进行烧写,注意烧写时,可以只烧写 Loader 与 uboot
- 烧写后,启动信息可以看到, SPL 与 u-boot 的编译信息都更新了,说明 u-boot 编译成功
修改 u-boot 默认配置
- 经过
./make.sh atompi-ca1
编译后(完整编译),可以使用如下的命令进行 配置
# 默认已经执行
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- atompi-ca1_defconfig
# 图形界面配置
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- menuconfig
# 修改并保存配置
# 保存默认配置
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- savedefconfig
# 覆盖默认配置
cp defconfig configs/atompi-ca1_defconfig
# 编译
./make.sh
小结
- 可以自行尝试修改并配置 rk 平台的 u-boot,比如使用
fastboot
,关闭 RK 默认的 rkimg 镜像支持等