- 🍇 博主主页:Systemcall小酒屋
- 🍇 博主简介:Neutionwei,C站嵌入式领域新星创作者之一,一枚热爱开源技术、喜欢分享技术心得的极客,注重简约风格,热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是厦大一位教数学的院士说过的一句话,另外“成就是最好的老师”,技术既要沉淀,也得分享,成就感的正反馈是支持我持续耕耘的动力!
- 🍇 专栏目录:Firefly-RK3399板卡
- 🍇 专栏说明:本专栏主要基于Firefly旗下的RK3399板卡进行入门篇讲述,欢迎订阅,博主会持续更新!
文章目录
- 一、编译环境
- 二、Git环境
- 三、克隆源代码
- 四、编译源代码
- 五、烧录固件
一、编译环境
我的 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具:
sudo apt install gcc build-essential 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" //你的邮箱地址
三、克隆源代码
进入官方下载页面,找到克隆仓库:
https://buildroot.org/download.html
克隆源代码:
git clone https://git.buildroot.net/buildroot
使用 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="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git"
-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 工具来烧录:
https://www.balena.io/etcher
最后因为 kernel dts 使用的是早期的 ROC-RK3399-PC(与 ROC-RK3399-PC Pro 存在某些硬件差异),有些驱动可能是不正常。
具体看参考产品规格书:
- ROC-RK3399-PC Pro 产品规格书
- ROC-RK3399-PC 产品规格书