|
一、编译环境
我的 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具:
二、交叉工具链
从 Firefly 仓库克隆交叉工具链并添加到环境变量,这里的 GCC 版本为 6.3.1:
三、克隆源代码
从 GitHub 仓库克隆主线U-Boot:
使用 git tag 命令可以查看版本情况:
把页面翻到最底下,可以看到当前最新版本为 v2022.04-rc5:
切换到 v2022.04-rc5分支:
四、编译源代码
在主线 U-Boot 中,ROC-RK3399-PC Plus使用的是roc-pc-mezzanine-rk3399_defconfig配置文件,由于ROC-RK3399-PC Pro是ROC-RK3399-PC Plus硬件迭代版本,因此两者是兼容的:
执行以下命令生成.config:
指定交叉工具链并开始编译:
编译完成后打印了一个警告,意思是说没找到 bl31.elf文件!通过查阅 doc/README.rockchip文档了解到这个bl31.elf是必须的!
回到u-boot的上一层目录,克隆arm-trusted-firmware:
编译 RK3399 的bl31.elf文件:
编译后报出一个缺少arm-none-eabi-gcc工具链的错误:
安装该工具链并重新编译:
回到 U-Boot 源代码根目录,指定 BL31环境变量并重新编译:
编译完成:
我们可以看到添加bl31.elf后生成以下三个文件:
五、烧录固件
准备一张 TF卡,TF 卡接上读卡器,执行以下命令查看生成的设备节点:
我的设备节点是/dev/sdd,分别把idbloader.img烧录到第64扇区与 u-boot.itb烧录到16384扇区:
把 TF 卡接入到 ROC-RK3399-PC Pro,接上串口调试,上电可以看到主线U-Boot相关日志。
|