Neutionwei · 2023年03月11日 · 广东

[ROC-RK3399-PC Pro] 手把手移植基于2023.02-rc3版本Buildroot

  • 🍇 博主主页:Systemcall小酒屋
  • 🍇 博主简介:Neutionwei,C站嵌入式领域新星创作者之一,一枚热爱开源技术、喜欢分享技术心得的极客,注重简约风格,热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是厦大一位教数学的院士说过的一句话,另外“成就是最好的老师”,技术既要沉淀,也得分享,成就感的正反馈是支持我持续耕耘的动力!
  • 🍇 专栏目录:Firefly-RK3399板卡
  • 🍇 专栏说明:本专栏主要基于Firefly旗下的RK3399板卡进行入门篇讲述,欢迎订阅,博主会持续更新!

一、编译环境

我的 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 存在某些硬件差异),有些驱动可能是不正常。

具体看参考产品规格书:

推荐阅读
关注数
3958
内容数
8
本专栏主要基于Rockchip开源主板进行讲述,欢迎订阅,博主会持续更新!
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息