看样子是指定的这个 arm-trusted-firmware 版本存在问题,将其改为主线版本(去掉定制版本):
diff --git a/configs/roc_pc_rk3399_defconfig b/configs/roc_pc_rk3399_defconfig
index ae7cf19a80..3ee8722368 100644
--- a/configs/roc_pc_rk3399_defconfig
+++ b/configs/roc_pc_rk3399_defconfig
@@ -7,9 +7,6 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
# Firmware
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
-BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
-BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL
-BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION=“11a0a46a899fcc3b1fdb214b382f3d7495d88eca”
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=“rk3399”
BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y
BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y
重新编译,第二个编译错误如下:
看来是缺少board/firefly/roc-rk3399-pc/post-build.sh这个文件,通过查看历史版本也是被删除掉了:
将其 git revert,然后编译。
一分钟不到编译完成,看来那个脚本是打包使用的:
看样子sdcard.img就是最终打包的 Buildroot 固件。
五、烧录固件
准备一张 TF卡,TF 卡接上读卡器,执行以下命令查看生成的设备节点:
dmesg | tail
我的设备节点是/dev/sdd,把sdcard.img烧录 dd 到 TF 卡:
sudo dd if=sdcard.img of=/dev/sdd conv=notrunc
把 TF 卡接入到 ROC-RK3399-PC Pro TF卡槽,上电启动系统。
如果是使用 Windows 系统,也可以使用 Etcher 工具来烧录。
最后因为 kernel dts 使用的是早期的 ROC-RK3399-PC(与 ROC-RK3399-PC Pro 存在某些硬件差异),有些驱动可能是不正常。
原作者:Neutionwei