2. 编译并烧录RK3399 U-Boot
任务目标
在RK3399 SDK环境中,从U-Boot源码编译生成uboot.img与trust.img镜像,通过RKDevTool烧录至开发板,并依据串口启动日志验证U-Boot正常运行。
环境准备
- 主机:Ubuntu 18.04/20.04 x86_64(已安装SDK,路径如
~/rk3399-sdk) - 开发板:RK3399(如Firefly-RK3399),Type-C数据线连接至主机
- 依赖:
gcc、make、python2.7(SDK自带交叉编译工具链)
编译U-Boot
进入SDK的U-Boot目录,加载交叉编译环境后执行编译脚本。SDK已提供一键编译脚本,内部自动完成配置与镜像生成。
cd ~/rk3399-sdk/u-boot
make distclean
make rk3399_defconfig
make ARCH=arm CROSS_COMPILE=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j8
编译完成后,在u-boot目录下生成uboot.img,在SDK根目录的rockdev目录下生成trust.img(由脚本从U-Boot的TOS打包生成)。若SDK版本较新,可能直接生成uboot.img与trust.img于当前目录。
烧录镜像
使用RKDevTool(Windows)或upgrade_tool(Linux)烧录。以下为Linux命令行方式:
# 开发板进入MaskROM模式:按住RECOVERY键不松,上电,等待2秒后松开
sudo upgrade_tool db ~/rk3399-sdk/u-boot/rk3399_loader_v1.24.126.bin
sudo upgrade_tool wl 0 ~/rk3399-sdk/u-boot/uboot.img
sudo upgrade_tool wl 0 ~/rk3399-sdk/u-boot/trust.img
sudo upgrade_tool rd
若使用RKDevTool图形工具,在“下载镜像”页签中,将uboot.img与trust.img分别添加到对应地址(通常为0x0与0x0,分区由工具自动识别),点击“执行”即可。
验证启动日志
开发板串口(波特率1500000,电平3.3V TTL)连接主机,打开串口终端(如minicom或PuTTY)。烧录完成后重新上电,观察串口输出:
U-Boot 2017.09-... (Jan 01 2025 - 12:00:00)
...
Rockchip U-Boot
...
Net: eth0: ethernet@fe300000
Hit any key to stop autoboot: 0
出现U-Boot 2017.09版本行且无报错即表示编译烧录成功。若在自动启动倒计时内按下任意键进入U-Boot命令行,输入version可显示编译时间与版本信息,进一步确认镜像正确。
通过条件
- 编译过程无错误,生成
uboot.img与trust.img文件 - 烧录后开发板串口输出U-Boot启动横幅,且能进入命令行或正常引导内核
- 若启动卡死或输出
ERROR,检查loader版本与镜像匹配性,重新执行烧录步骤