一、编译环境
我的 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具:
sudo apt install gcc build-essen
tial bison flex gettext tcl sharutils libncurses-dev zlib1g-dev
exuberant-ctags g++ texinfo patch vim libtool bc git python3
二、Git环境
配置好自己的邮箱与姓名:
git config --global user.name “userName” //你的用户名
git config --global user.email “email address” //你的邮箱地址
三、克隆源代码
使用 git tag 命令可以查看版本情况:
git tag
把页面翻到最底下,可以看到当前最新版本为 2023.02-rc3:
切换到 2023.02-rc3分支:
git checkout -b 2023.02-rc3 2023.02-rc3
四、编译源代码
在主线 Buildroot 中,并没有发现 rk3399 相关的 config 配置文件,但是在历史提交中,我发现被删除掉了。
被删掉的原因是因为编译不过:
将其 git revert,然后编译:
git revert 6ade5915c1d65b7653125d1cf6952efdd6113806
make roc_pc_rk3399_defconfig
make
第一个编译错误:
打印说一个 arm-trusted-firmware 的源代码编译不过,查看一下原因:
看样子是指定的这个 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