news 2026/3/13 12:27:29

20241125从零构建NanoPi R3S开发板【RK3566】镜像:完整编译与备份指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20241125从零构建NanoPi R3S开发板【RK3566】镜像:完整编译与备份指南

1. 环境准备与源码获取

第一次接触NanoPi R3S开发板时,我花了两天时间才搞清楚整个编译流程。RK3566这颗芯片性能不错,但官方文档有些细节没讲清楚,这里把我的踩坑经验完整分享出来。

硬件准备清单

  • 一台x86_64架构的Linux主机(实测Ubuntu 20.04/22.04最稳定)
  • 至少200GB可用磁盘空间(编译过程会产生大量中间文件)
  • 16GB以上内存(链接阶段很吃内存)
  • 稳定的网络连接(需要下载约2GB的源码和依赖)

先安装基础依赖包,这个步骤很多人会漏掉libssl-dev导致后续出错:

sudo apt update sudo apt install -y git make gcc g++ bison flex libssl-dev \ python3 unzip patchelf bc pigz rsync

获取源码有两种方式,我推荐直接用官方压缩包:

wget https://download.friendlyelec.com/NanoPiR3S/buildroot-rk3566-20241007.tar tar xvf buildroot-rk3566-20241007.tar cd buildroot-rk3566

如果是通过repo同步(适合需要最新代码的情况):

.repo/repo/repo sync -l

注意:国内用户可能会遇到同步缓慢问题,建议在晚上网络空闲时段操作。我在深圳电信网络下实测完整同步需要40分钟左右。

2. 编译配置与初始化

进入目录后先处理预编译文件,这个unpack.sh脚本很多人会漏执行:

cd pre-download ./unpack.sh # 解压内核驱动和文件系统 cd ..

关键的一步是选择板型配置,这里有个隐藏坑点:

./build.sh rk3566.mk # 必须带.mk后缀

执行后会生成.current_config.mk软链接,验证是否成功:

ls -l .current_config.mk # 应指向device/friendlyelec/rk3566/rk3566.mk

遇到过最头疼的问题是dl目录冲突。由于Rockchip的包管理策略变化,需要手动清理旧缓存:

cd buildroot mv dl dl_bak # 备份原有目录 mkdir dl # 新建空目录 cd ..

3. 完整编译流程

开始全量编译前,建议先开个screen会话防止中断:

screen -S build_rk3566 ./build.sh all # 首次编译约2小时

编译过程会输出各阶段日志,重点观察:

  1. uboot编译:约15分钟,输出idbloader.img和uboot.img
  2. 内核编译:约30分钟,生成resource.img和kernel.img
  3. 根文件系统:最耗时的部分,约1小时

遇到编译错误时,90%的情况是网络问题导致包下载失败。这时候可以:

  1. 检查buildroot/dl目录下是否有对应的.tar.gz包
  2. 手动下载后放入dl目录
  3. 重新执行./build.sh all

编译成功的标志是在scripts/sd-fuse/out目录下生成镜像文件:

ls -lh scripts/sd-fuse/out/*.img # 应该看到 buildroot_YYYYMMDD_rk3566_arm64_sd.img

4. 镜像备份与优化

备份策略是我特别要强调的。每次完整编译后,一定要保存这两个目录:

  1. dl目录:包含所有下载的源码包(约700MB)
cd buildroot tar --use-compress-program=pigz -cvpf dl_backup_$(date +%Y%m%d).tgz dl/
  1. output目录:包含编译产物(约15GB)
tar -cvpf output_backup_$(date +%Y%m%d).tar output/

实测备份后下次编译可节省90%时间。我的测试数据:

  • 首次编译:118分钟
  • 使用备份后编译:22分钟

镜像刷写技巧

xz -d buildroot_20241125_rk3566_arm64_sd.img.xz sudo dd if=buildroot_20241125_rk3566_arm64_sd.img of=/dev/sdX bs=1M status=progress

重要提醒:刷写前务必确认设备路径,误操作会导致数据丢失。我曾在凌晨3点误刷了工作硬盘...

5. 常见问题解决

问题1:编译中途报错"Failed to download package xxx"

  • 解决方案:手动下载对应的包到dl目录
  • 示例(以zlib为例):
wget https://www.zlib.net/zlib-1.2.13.tar.gz -P buildroot/dl/

问题2:uboot编译失败提示"missing dtc"

  • 原因:设备树编译器路径问题
  • 修复:
export PATH=$PATH:$(pwd)/buildroot/output/rockchip_rk3566/host/bin

问题3:生成的镜像启动卡在uboot阶段

  • 检查步骤:
    1. 确认板型配置正确(rk3566.mk)
    2. 验证电源供应是否充足(建议5V/3A)
    3. 更换质量更好的TF卡(推荐SanDisk Extreme)

最后分享一个实用技巧:在build.sh all之前先执行以下命令可以大幅减少编译时间:

export MAKEFLAGS="-j$(nproc) --load-average=$(nproc)"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 8:03:03

智能客服模型实战:从零构建高可用对话系统的避坑指南

背景痛点:生产环境里的三只“拦路虎” 去年双十一,我们组第一次把智能客服模型推到全链路,结果凌晨两点被告警轰炸:40% 以上的“退货咨询”被误判成“发货咨询”,人工兜底通道瞬间塞爆。复盘后我们把坑归成三类&#…

作者头像 李华
网站建设 2026/3/3 21:25:23

FIFO设计中的存储选型:寄存器、SRAM还是DDR?

很多人觉得寄存器实现FIFO很简单,确实如此。用组合逻辑同时处理wr和rd信号,写和读可以在同一个时钟周期内完成,这是寄存器的天然优势。不存在访问冲突,因为每个数据位都有独立的触发器。但这种方便是有代价的。当FIFO深度达到256、…

作者头像 李华
网站建设 2026/3/12 23:24:26

3步破解音乐格式枷锁:让你的歌单自由穿越所有设备

3步破解音乐格式枷锁:让你的歌单自由穿越所有设备 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否也曾遇到这样的尴尬时刻:下载…

作者头像 李华
网站建设 2026/3/9 18:23:48

破解云存储限速困局:5款数字加速工具实测指南

破解云存储限速困局:5款数字加速工具实测指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广,无…

作者头像 李华
网站建设 2026/3/7 1:31:31

RPG Maker MV资源处理效率工具:零基础全流程解密指南

RPG Maker MV资源处理效率工具:零基础全流程解密指南 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https://gitcode.…

作者头像 李华