RK3588系列:01-系统烧录与开发环境搭建

这期干两件事:把 Ubuntu 系统烧进板子,把开发环境搭好。

看起来是"准备工作",但这是最容易卡住的一步------烧录方式选错、驱动没装、SSH 连不上,任何一个问题都能耗掉一整天。我把自己踩过的流程整理了一遍,Windows 和 Ubuntu 两种 PC 的操作都写清楚。

本文用的镜像(后面所有步骤都基于它):

复制代码
Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img
· 系统:Ubuntu 22.04 (Jammy)
· 桌面:Xfce(不是 Wayland,所以远程桌面能用)
· 内核:Linux 6.1.99
· 大小:约 2.5GB

下载地址(百度网盘,提取码 pjhv):

https://pan.baidu.com/s/1cQR1pcca0P-xuQbTrnGXAw?pwd=pjhv

【图 1:Orange Pi 5 Plus 开发板实物图 + 接口标注图】

开发手册:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html

0 PC 端准备(先看你用哪种系统)

用途 Windows PC Ubuntu PC
烧 TF 卡 balenaEtcher(exe 安装版) balenaEtcher(AppImage,免安装)
烧 eMMC RKDevTool + 瑞芯微驱动 只能用 Windows 电脑(见下方说明)
烧 NVMe balenaEtcher 或 Win32Diskimager dd 命令
SSH 连接 PowerShell 自带 ssh / MobaXterm 终端自带的 ssh
远程桌面 NoMachine(Windows 客户端) NoMachine(Linux 客户端)
写代码 VSCode + Remote-SSH VSCode + Remote-SSH

关键差异:

复制代码
· eMMC 烧录(RKDevTool)只有 Windows 版
  → Ubuntu 用户烧 eMMC:借一台 Windows 电脑,或者用虚拟机跑 Windows
· TF 卡和 NVMe 两种系统都能烧,只是工具不同

1 系统烧录

先说清楚一件事:RK3588 有"loader"和"系统镜像"两层东西,搞混了就会出问题。

复制代码
loader(u-boot)→ 负责引导,放在 SPI Flash 里
系统镜像(Ubuntu)→ 放在 TF 卡 / eMMC / NVMe SSD 里

只烧系统镜像、不烧 loader,板子可能启动不了(尤其从 NVMe 启动的场景)。所以顺序是:先烧系统镜像到 TF 卡 → 用 TF 卡启动 → 再烧 loader 到 SPI Flash。

1.1 loader 烧录

loader 烧到 SPI Flash(板载的 SPI NOR Flash),作用是让板子能从 NVMe SSD 启动。

为什么需要它:如果你想把 Ubuntu 系统装在 NVMe SSD 上(速度快、容量大),必须先把 loader 烧进 SPI Flash------因为板子上电时先读 SPI Flash 里的 loader,再由它去引导 NVMe 上的系统。

这一步在板子上操作,跟你的 PC 是 Windows 还是 Ubuntu 无关:

bash 复制代码
# 1. 先用 TF 卡启动 Ubuntu 系统(TF 卡里已经有系统镜像,见 1.2)
# 2. 在板子上执行
sudo nand-sata-install

# 3. 菜单里选择
#    7 Install/Update the bootloader on SPI Flash
#    然后选 <Yes>,等待完成(左下角显示 Done)

【图 2:SPI Flash 在开发板上的位置】

踩坑提醒:

  • 这一步必须在 TF 卡启动的系统里做(不能是 NVMe 启动的系统)
  • 烧完可以读一下 SPI Flash 的头部,能看到 u-boot 标识就说明成功

1.2 系统镜像烧录

三种介质,按使用场景选:

介质 速度 容量 适合 Windows PC Ubuntu PC
TF 卡 慢 16-256GB 第一次试用 ✓ Etcher ✓ Etcher
eMMC 中 32-256GB 稳定使用 ✓ RKDevTool ✗ 需 Windows
NVMe 快 256GB-2TB 长期使用 ✓ Etcher ✓ dd
方式 A:烧到 TF 卡

准备(两种系统都一样):

  • TF 卡 16GB 以上,class10 或更高(推荐闪迪等品牌)
  • 读卡器
A-1 Windows PC 操作
复制代码
1. 下载镜像压缩包(百度网盘链接见开头),用 7-Zip 解压出 .img 文件(约 2.5GB)
2. 下载 balenaEtcher Windows 版:https://www.balena.io/etcher/
   → 选 Portable 版本(免安装,双击就用)
3. 插上读卡器
4. 打开 Etcher → Select image(选 .img)→ Select target(选 TF 卡)→ Flash
5. 等待烧录 + 校验(进度条紫色=烧录,绿色=校验中)

Windows 常见问题:

复制代码
· Etcher 打不开/报错 → 右键"以管理员身份运行"
· 烧完提示"需要格式化" → 千万别点格式化(Windows 认不出 Linux 分区)
· 解压后没有 .img → 检查是不是只解压了一层(有的压缩包是套娃)
A-2 Ubuntu PC 操作
bash 复制代码
# 1. 解压镜像(7z 格式)
7z x Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.7z
# 解压出 .img 和 .sha(校验文件)

# 2. 校验镜像完整性(重要,能省掉后面一半的怪问题)
sha256sum -c *.sha
# 输出 "OK" 说明镜像没问题

# 3. 方式一:用 balenaEtcher(图形界面)
#    下载 Linux 版(AppImage),双击打开(无需安装)
./balenaEtcher-1.19.25-x64.AppImage
#    然后 Select image → Select target → Flash

# 4. 方式二:直接用图形化的"磁盘写入器"(Ubuntu 自带)
#    右键 .img 文件 → 用"磁盘映像写入器"打开 → 选 TF 卡 → 写入

Ubuntu 特有的坑:

复制代码
· AppImage 打不开 → 先给它执行权限:chmod +x xxx.AppImage
· 需要 fuse 支持:sudo apt install libfuse2(22.04 上常见)
· 用 dd 直接写 TF 卡也行,但设备名容易搞错(/dev/sdb 还是 /dev/mmcblk0?)
  → 建议先用 lsblk 确认,别手快

Ubuntu 下用 dd 烧 TF 卡(进阶用法):

bash 复制代码
# 1. 先确认 TF 卡的设备名(别选错,选错会毁掉你的硬盘)
lsblk

# 2. 卸载已挂载的分区
sudo umount /dev/sdX*

# 3. 写入(把 sdX 换成实际设备名,比如 sdb)
sudo dd bs=4M if=Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img \
  of=/dev/sdX status=progress
sudo sync
方式 B:烧到 eMMC(只能在 Windows 上做)

先说结论 :RKDevTool 是瑞芯微的 Windows 工具,Ubuntu PC 用不了。

复制代码
Ubuntu 用户的三个选择:
① 借一台 Windows 电脑(最省事)
② 在 Ubuntu 里装个 Windows 虚拟机(VirtualBox/VMware,USB 直通给虚拟机)
③ 干脆跳过 eMMC,直接烧 NVMe(推荐,见方式 C)

准备(Windows PC):

  • eMMC 模块(要单独买,插到板子的 eMMC 接口)
  • Type-C 数据线(品质要好)
  • 瑞芯微驱动 DriverAssitant_v5.12
  • 烧录工具 RKDevTool_Release_v3.15
  • MiniLoader 文件夹

步骤:

复制代码
1. 安装驱动:解压 DriverAssitant → 运行 DriverInstall.exe → 点"驱动安装"
2. 打开 RKDevTool(免安装,解压即用)
3. 板子不插 TF 卡、不接电源
4. 按住 MaskROM 键不放
5. 接 Type-C 电源上电,然后松开 MaskROM
6. 工具左下角显示"发现一个 MASKROM 设备"→ 进入烧录模式
7. 右键空白区域 → 导入配置 → 选择 MiniLoader 里的配置文件
8. 点"执行",等待完成

【图 3:MaskROM 按键在板子上的位置】

踩坑:

  • 进不去 MASKROM 模式:检查 TF 卡是否拔了、电源是否接对
  • 驱动装不上:Windows 要临时关掉驱动签名强制
  • 烧录中途失败:换一根好的 Type-C 线(劣质线是常见原因)
方式 C:烧到 NVMe SSD

前提:loader 已经烧进 SPI Flash(见 1.1)

C-1 Windows PC 操作
复制代码
用 balenaEtcher 烧到 NVMe:
1. 把 NVMe SSD 装进 USB 硬盘盒(或用 M.2 转 USB 转接卡)
2. 插到 Windows 电脑
3. Etcher → 选 .img → 选 NVMe 盘 → Flash
4. 烧完拔下来,装回开发板

注意:Windows 下 Etcher 可能认不出 NVMe(如果它在主板 M.2 上)。用 USB 硬盘盒最稳。

C-2 Ubuntu PC 操作(板子上直接用 dd)
bash 复制代码
# 1. 确认 SSD 被识别
sudo fdisk -l | grep nvme0n1

# 2. 可选:清空 SSD 的前 2000MB(把 target 换成实际设备节点)
sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress
sudo sync

# 3. 烧录 Ubuntu 镜像
sudo dd bs=1M if=Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img \
  of=/dev/nvme0n1 status=progress
sudo sync

这一步也可以在板子上做(TF 卡启动后,把镜像 scp 上去,然后 dd 到 nvme0n1)------效果一样。

踩坑:

  • if= 是镜像路径,of= 是目标设备,别写反(写反会毁盘)
  • 烧完必须 sync,不然可能没写完就断电
  • 镜像如果是 .7z/.xz 压缩包,先解压

2 环境准备

Ubuntu 系统跑起来了,接下来把开发环境配好------目标是"不用坐在板子前面也能开发"。

2.1 NoMachine:局域网远程桌面

为什么用它:RK3588 跑 Ubuntu 桌面时,你需要看到图形界面(跑 GUI 程序、看摄像头画面)。NoMachine 比 VNC 流畅,而且是免费的。

板子端安装(Windows/Ubuntu 都一样,在板子上操作):

bash 复制代码
# 下载 arm64 版本的 deb 包(认准 Armv8/Arm64)
# 上传到板子后安装
sudo dpkg -i nomachine_x.x.x_x_arm64.deb

PC 端:

系统 操作
Windows 下载 NoMachine Windows 版 → 安装 → 重启 → 打开会自动扫描局域网
Ubuntu 下载 NoMachine Linux (deb) 版 → sudo dpkg -i nomachine_*.deb → 打开会自动扫描

连接步骤(两种系统一样):

  1. 确保 PC 和板子在同一局域网
  2. 打开 NoMachine → 设备列表里会看到板子 → 点连接
  3. 输入板子的用户名密码(orangepi / orangepi)

关于桌面环境(重要):

复制代码
本文用的镜像是 Xfce 桌面 → NoMachine 可以正常用 ✓

但如果你用的是 Ubuntu Gnome Wayland 镜像:
→ NoMachine/VNC 会连不上(Wayland 的限制)
→ 解决:换 Xfce 桌面版,或者用 SSH + VSCode(下面这个)

判断自己用的是哪个 :登录后执行 echo $XDG_SESSION_TYPE

· 输出 x11 → NoMachine 可用

· 输出 wayland → NoMachine 不可用

2.2 VSCode Remote:本地写代码,板子上跑

这是最舒服的开发方式------代码在本地写(有补全、有插件),编译运行在板子上。

两种 PC 操作基本一样:

复制代码
1. 本地装 VSCode
   · Windows:官网下载 exe 安装
   · Ubuntu:官网下载 deb 包,或 sudo snap install code --classic
2. 装插件:Remote - SSH
3. Ctrl+Shift+P → Remote-SSH: Connect to Host
4. 输入 root@<板子IP>,密码 orangepi
5. 连上后,文件树就是板子的文件系统

前提:板子的 SSH 要能通。

bash 复制代码
# Windows(PowerShell)
ssh root@192.168.x.x

# Ubuntu(终端)
ssh root@192.168.x.x

Windows 下的 SSH 工具选择:

复制代码
· PowerShell 自带 ssh(Win10 以上即可用)
· 或者用 MobaXterm(免费版够用,带文件管理)
· 或者用 Xshell(商业软件)

踩坑:

  • 连不上先 ping 板子 IP
  • ping 通但 SSH 连不上:板子上执行 sudo reset_ssh.sh
  • 密码输错:默认 root 和 orangepi 用户密码都是 orangepi

2.3 Docker:环境隔离

为什么要 Docker:后面会用到一堆工具链和依赖,直接装在系统里容易把环境搞乱。用 Docker 隔离,出问题删掉重来,不影响板子上的系统。

板子端(不区分 PC 系统):

bash 复制代码
# Orange Pi 的 Ubuntu 镜像预装了 Docker,只是服务没启动
enable_docker.sh

# 验证
docker run hello-world
# 看到 "Hello from Docker!" 就成功了

PC 端(如果你也想在自己的电脑上用 Docker):

系统 安装方式
Windows 装 Docker Desktop(需要开 WSL2)
Ubuntu sudo apt install docker.io 或官方脚本

踩坑:

  • Windows 下 Docker Desktop 需要 WSL2,装之前先确认
  • 拉镜像慢:换国内镜像源(配 Docker 的 registry-mirrors)
  • enable_docker.sh 找不到:确认用的是 Orange Pi 官方镜像

2.4 添加交换空间

打开终端执行下面的命令可以查看交换空间swap的大小一般只有3G左右,一般都需要扩充交换空间,避免内存使用不足系统卡掉。

复制代码
# 查看内存和swap
free -h 

# 1.添加swap,就下面这几步
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1G count=20 # bs是单位1G,count是数量,创建多少个,这样算法下来就是的20G
sudo mkswap /swapfile
sudo swapon /swapfile
# 添加启动挂载,没有这个每次重启后就没有了,需要自己手动执行sudo swapon /swapfile

# 2.添加自动挂载
sudo vim /etc/fstab
最后一行添加
/swapfile swap swap defaults 0 0

3 这期小结

复制代码
烧录三步:
1. Ubuntu 镜像 → TF 卡(Windows: Etcher / Ubuntu: Etcher 或 dd)
2. TF 卡启动 → 烧 loader 到 SPI Flash(板子上操作)
3. Ubuntu 镜像 → NVMe SSD(Windows: Etcher / Ubuntu: dd)

环境三件套:
1. NoMachine(看图形界面,PC 端有 Windows/Ubuntu 两个版本)
2. VSCode Remote(写代码,两种系统操作一样)
3. Docker(隔离工具链)
4. Swap交换空间

下一期:模型转换------把 ONNX 模型转成 RKNN,在板子的 NPU 上跑起来。


如果本文对你有帮助,欢迎点赞、关注、收藏 。

遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。

相关推荐
铅笔小新z1 小时前
【stm32】IWDG(独立看门狗)
stm32·单片机·嵌入式硬件
无敌贵点大王3 小时前
从寄存器层面重学STM32(2)——RCC和时钟树
stm32·单片机·嵌入式硬件
玄芯散人3 小时前
【元婴·103】GPIO深度:复用、上下拉、翻转速度
单片机·嵌入式硬件
xiangw@GZ5 小时前
四线开尔文(Kelvin)测量原理
单片机·嵌入式硬件
BSD_CGQ7 小时前
FSR 压力传感器 I2C 接口实战:地址规划与 MCU 软件滤波的工程取舍
嵌入式硬件·机器人·压力传感器·柔性薄膜压力传感器
゛凌乱的记忆づ8 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——IIC篇
人工智能·stm32·单片机·嵌入式硬件
创界工坊工作室9 小时前
54-基于STC89C52控制的智能运输小车设计
stm32·单片机·嵌入式硬件·51单片机·proteus
iCxhust9 小时前
NTC温度测量计算
单片机·嵌入式硬件·51单片机·热力计算
沐欣工作室_lvyiyi9 小时前
基于单片机的汽车智能座舱控制系统的设计与实现(论文+源码)
单片机·嵌入式硬件·汽车·智能座舱