☰
RK3588开发板镜像烧写实战:从SD卡到eMMC,为YOLOv5s NPU部署铺路
2026/9/28 1:09:26 网站建设 项目流程

刚拿到香橙派(Orange Pi 5/RK3588)的第一件事,绝大多数人都会卡在同一个地方:怎么把系统镜像烧进去。网上教程很多,但能一条龙跑通、不踩坑的太少。这个系列就是从头到脚手把手带你走完整个流程,最终目标是让 yolov5s 模型在 RK3588 的 NPU 上顺利跑起来。第一篇先解决基础中的基础——镜像烧写。这部分做不好,后面所有模型部署都是空谈。

我会把这次实际烧写过程中踩过的坑、验证过的步骤、还有那些文档里从来不会写清楚的细节全部摊开讲,保证你看完就能照着操作,不用再来回折腾。

1. 动手之前,先把“为什么”搞清楚

很多人拿到板子就急着烧镜像,结果烧完启动不了,或者烧进去的系统跟后续教程完全对不上,又要重来一遍。所以我建议你花五分钟看完这一节,把几个基本概念理顺,后面能省很多事。

1.1 RK3588这颗芯片到底什么水平

RK3588 是瑞芯微目前出货量最大的一颗旗舰级 SoC,8 核架构(4 个 A76 大核 + 4 个 A55 小核),GPU 是 Mali-G610,最关键的是内置了一颗算力约 6 TOPS 的 NPU(INT8 精度下)。这颗 NPU 就是后面跑 YOLOv5s 的核心硬件。

香橙派 5 用的是 RK3588S,属于 RK3588 的精简版,主要是砍掉了一些用不到的接口(比如双路 HDMI RX、PCIe 通道数等),但 NPU、CPU、GPU 核心部分完全一样。香橙派 5 Plus、5 Pro 则用的完整版 RK3588。对跑 AI 模型来说,这几个型号在算力上没有本质差别,教程完全通用。

6 TOPS 是什么概念?拿它跑 YOLOv5s,输入 640×640 分辨率,在 NPU 上做完 INT8 量化后,实测单帧推理速度基本都能做到 30ms 以内,也就是实时性完全没问题。这也是现在大量边缘计算盒子、智能摄像头选择 RK3588 的原因——性能足够,功耗可控,开发资料齐全。

1.2 教程为什么锁定YOLOv5s而不是YOLOv8

这个问题我经常被人问。YOLOv5s 虽然“老”,但它恰恰是边缘设备上最成熟的组合:

第一,YOLOv5s 模型体积小,参数量大约 7.2M,FP32 权重也就 14MB 左右,INT8 量化后更小,非常适合 RK3588 这种端侧设备。

第二,模型结构上 YOLOv5s 的 C3 模块(CSPNet 变体)对 NPU 特别友好,算子很容易映射到 NPU 上,不需要做太多模型改造就能达到较高帧率。相比之下 YOLOv8 的某些结构在 RKNN 转换时更容易报算子不支持的错。

第三,社区资料海量。训练、转换、部署每一步踩坑的人多,解决方案也最多。对新手来说,最快的路不是追新,而是走一条被验证过无数次的成熟路径。

等这条路走通了,再迁移到 YOLOv8 也就顺理成章——底层的 RKNN-Toolkit 和 rknn_model_zoo 都是同一套东西。

1.3 这篇教程在整套系列里的位置

整个系列按依赖顺序排,大致是:

阶段内容依赖
01镜像烧写与系统初始化无
02开发环境搭建与 SSH 连接本篇
03准备模型与数据集前两篇
04RKNN 模型转换与量化前三篇
05NPU 推理部署与优化全系列

本篇是整个系列的地基。烧写这一步出问题,后面每一步都会连锁翻车。所以我把每一步操作、每个参数的坑都写清楚,宁可啰嗦,不要遗漏。

2. 烧写前的物料清单与关键概念

烧写本身不难,但很多人翻车是因为物料不齐或者概念混淆。先把这几件事理清楚。

2.1 硬件准备清单

除了香橙派板子本身,你还得准备这些东西:

  • 电源:香橙派 5 推荐使用 5V/4A 以上的电源适配器,USB-C 口供电。很多人用手机充电器(通常是 5V/1A 或 5V/2A)糊弄,结果内存、外设一多就电压不稳,轻则反复重启,重则烧坏 eMMC。电源千万别省。
  • MicroSD 卡:建议选 A2 级别的 UHS-I 卡,容量 16GB 以上。烧写系统到 SD 卡启动的场景,卡的速度直接影响系统流畅度。劣质卡是启动失败的重灾区。
  • USB 线:烧写 eMMC 时需要用 USB Type-C 数据线连接板子和电脑。注意,这根线必须支持数据传输,不是那种只能充电的线。怎么判断?插到电脑上能识别到 USB 设备就是数据线,识别不到大概率是纯充电线。
  • 读卡器:SD 卡方式烧写需要读卡器,最好用 USB3.0 读卡器,速度快很多。
  • HDMI 线和显示器:首次启动要看画面,至少准备一台 HDMI 显示器,方便排查问题。后面可以通过 SSH 远程操作,但首次确认系统正常,显示器还是需要的。

2.2 两个关键概念:eMMC与SD卡启动

香橙派 5 支持两种存储介质作为系统盘:板载 eMMC(焊在板子上的闪存)和外插 MicroSD 卡。

启动优先级上,香橙派 5 默认先从 eMMC 引导,如果没有 eMMC 才会从 SD 卡引导。这句话在很多教程里都容易被忽略,导致一个经典场景:你明明把系统烧到了 SD 卡,插上去开机却发现进了旧系统或者黑屏——大概率是板子上焊接了 eMMC 且里面还有系统,优先走 eMMC 了。

两种方式各有适用场景:

  • SD 卡烧写:简单,适合新手和频繁换系统测试。烧写工具用 balenaEtcher,跟烧树莓派一样,Windows/macOS/Linux 通用,不需要装驱动,不需要按按键,点击几下就完成。
  • eMMC 烧写:速度快,系统盘容量大,适合部署阶段确定用哪套系统后固化下来。但烧写工具需要用瑞芯微官方的 RKDevTool(Windows),还要装驱动,过程比 SD 卡方式复杂。
  • eMMC 烧写到 SD 卡?(不用解释,直接跳)

本篇我会重点讲 SD 卡方式,因为最简单、最不容易出错,适合入门。eMMC 方式我在第 5 节也会给完整操作流程,毕竟后面真正部署模型跑推理,还是建议用 eMMC。

2.3 软件准备:镜像与烧写工具

需要下载的东西如下表:

软件用途获取方式
系统镜像(.img)要烧写进存储卡/存储器的系统香橙派官方或 GitHub Releases
balenaEtcherSD 卡烧写工具官网下载
RKDevTool + DriverAssitanteMMC 烧写(Windows)香橙派 Wiki 提供下载
7-Zip / WinRAR解压 .7z / .zip 镜像包官方下载

下载源优先选择官方地址。香橙派的镜像发布在官方网盘和 GitHub,GitHub 页面标明了镜像的 SHA256 校验值,建议下载后务必校验。镜像包通常是 .7z 压缩格式,解压后才得到 .img 文件。

3. 镜像选择:这一步也别乱来

3.1 官方镜像有哪些

香橙派 5 官方提供的系统镜像非常丰富,常见的有:Orange Pi OS(基于 Android 的桌面系统)、Ubuntu 22.04/20.04、Debian 11/12、Android 12/13、还有轻量级的精简版系统。

我们这个系列要跑 YOLOv5s,目标明确,优先选Ubuntu 20.04 或者 22.04 桌面版。

为什么选 Ubuntu?两条原因:

一是 RKNN-Toolkit 和 rknn_model_zoo 官方对 Ubuntu 的支持和验证最充分,跑训练、模型转换这些环节,在 Ubuntu 上几乎不会遇到奇奇怪怪的环境兼容问题。

二是社区资料量大,遇到任何一个报错,基本都能搜到别人踩过的坑。用冷门发行版,错误信息可能全世界只有你一个人见过,那就无解了。

3.2 Ubuntu 20.04 还是 22.04 怎么选

这是一个非常实际的问题。我的建议是:跟着你要安装的 RKNN-Toolkit 版本走。

RKNN-Toolkit 1.x 版本支持 Ubuntu 18.04/20.04,RKNN-Toolkit2 支持 20.04/22.04。如果你后面要用 RKNN-Toolkit2(推荐,RK3588 对应的就是 toolkit2),那么 20.04 和 22.04 都能用。

我个人实测下来:22.04 桌面版对新硬件的驱动支持更好,系统更新更活跃;20.04 则是老牌稳,很多 RKNN 相关教程和后续依赖默认假设你在 20.04 下运行,坑最少。

如果你不想折腾,闭眼选 Ubuntu 20.04 桌面版。别问为什么“最经典”的答案通常就是最省心的那个。如果板子是香橙派 5 Plus/5 Pro,镜像记得下载对应型号的专用版本,不要拿普通香橙派 5 的镜像硬刷,虽然核心一样,但设备树、外设定义不同,可能引起网络、显示等小毛病。

3.3 校验镜像完整性

我会坚持做这一步。大体积文件从网盘下载,谁都不敢保证传输过程没有坏块。解压后先在终端里跑一下:

sha256sum 镜像文件名.img

把输出的哈希值和发布页上写的值比对,一致再烧写。这一步 30 秒,省掉的可能是后面一整天的排查时间。我见过有人拿损坏的镜像烧写,启动到一半内核 panic,排查到吐,最后才发现是镜像本身坏了。

4. 手把手烧写 Ubuntu 20.04 镜像

下面进入正题。这一节我会分别给出 SD 卡和 eMMC 两种方式的完整步骤,你根据自己的情况选一种。

4.1 方式一:SD 卡烧写(balenaEtcher 三分钟搞定)

这是最没有门槛的方式,整个过程跟在树莓派上烧系统一模一样。

第 1 步:解压镜像

把下载到的 .7z 压缩包解压,得到一个完整的 .img 文件。注意确认文件大小和分区表信息在内,不要只看到 .img 后缀就以为没问题,有的镜像包解压出来是 .img.gz 或者多个分片,全部要处理完整。

第 2 步:打开 balenaEtcher

插上 SD 卡和读卡器,打开 Etcher。界面就三步:

  1. Flash from file:选择刚才解压出来的 .img 文件
  2. Select target:选择 SD 卡对应的盘符
  3. Flash:开始烧写

这里有一个必须强调的坑:选目标磁盘时一定要看清楚是 SD 卡,不是你的电脑硬盘。Etcher 会提醒你目标盘即将被擦除,别不当回事。我身边就有人选错目标盘,把工作电脑的系统盘直接冲掉了,那真是欲哭无泪。如果电脑上插了多个 USB 存储设备,拔掉多余的再操作。

第 3 步:耐心等烧写和校验完成

Etcher 烧完之后还会自动做一次校验(Validate),这一步别跳过,它会逐个扇区比对 SD 卡内容和镜像文件是否一致。校验通过后,Etcher 会提示成功。

第 4 步:弹出 SD 卡,插入板子开机

安全弹出 SD 卡,插到香橙派 5 的 SD 卡槽里,接上 HDMI 线、显示器、网线(可选,方便后面查 IP),最后插上电源。注意:请先检查板子上是否焊有 eMMC 模块,如果有且里面有系统,香橙派会优先从 eMMC 启动,你烧的 SD 卡系统根本不会被加载。此时要么先想办法清空 eMMC,要么按住板子上的 MaskROM 按键再上电,进入从 SD 卡引导的模式。具体操作在 5.1 节详细说。

看到屏幕进入系统桌面,或者至少出现系统滚动日志,SD 卡烧写就算成功了。

4.2 方式二:eMMC 烧写(RKDevTool 完整流程)

SD 卡方式够用,但系统跑在 SD 卡上读写速度受限,后面跑 YOLOv5s 涉及大量模型文件和推理数据读写,SD 卡会拖后腿。正式部署建议烧进 eMMC 或 NVMe(香橙派 5 有 M.2 接口)。这里我先给出最稳定的 eMMC 烧写流程。

第 1 步:安装驱动

在 Windows 上下载并解压 DriverAssitant 驱动包,右键以管理员身份运行 DriverInstall.exe,点击“安装驱动”。这一步不做,后面 RKDevTool 永远识别不到设备。

第 2 步:让板子进入 Loader 模式

先把 USB Type-C 数据线一头插到板子的 USB-C 口(注意,不是电源口,板子有两个 USB-C 口,一个负责供电,一个负责 OTG/数据传输,烧写用的是 OTG 那个),另一头插到电脑。

然后关键操作:

  1. 不接电源的情况下,用回形针或镊子按住板子上的 MaskROM 按键(在 eMMC 附近,看板子丝印)
  2. 按住不放,同时插入 USB-C 电源线供电
  3. 大约 2 秒后松开按键

这个操作其实是让芯片进入指定的烧写模式。如果你没按按键直接上电,设备可能处于正常启动模式,RKDevTool 识别到的可能是“设备”而不是“Loader”,烧写会失败。

第 3 步:RKDevTool 识别设备

打开 RKDevTool.exe,正常情况下右侧设备区会显示“发现一个 LOADER 设备”或“发现一个 MASKROM 设备”。

这里要解释两个模式的区别:

  • Loader 模式:设备能正常引导,方便升级烧写
  • MaskROM 模式:芯片的引导程序完全没跑起来,相当于最底层的恢复模式。当 Loader 被刷坏、eMMC 内容异常导致无法引导时,就需要强制进 MaskROM 来救砖

如果你用 MaskROM 模式烧写,没有现成的 loader 的话,先点击“升级固件”页面里的“Loader”栏选择镜像包自带的 rk3588_spl_loader 文件,再加载固件。

第 4 步:加载分区表并执行烧写

在 RKDevTool 界面左侧点击“下载镜像”页面,固件列表里你会看到各个分区(uboot、boot、rootfs、userdata 等),每个分区右侧对应一个镜像文件路径。简便做法是点击“升级固件”标签页,直接把整个 update.img 拖进去,然后点“升级”。

升级过程底部会显示进度条和烧写日志,比如开始写 uboot、写 recovery、写 rootfs 等。整个 eMMC 烧写过程大概 10 分钟左右,取决于电脑 USB 速度和 eMMC 容量。烧写完成后工具会提示成功,板子会自动重启。

第 5 步:首次启动设置

重启后进入系统桌面,跟 SD 卡方式一样,先做基础配置:设置时区、语言、用户名密码、扩展分区(这个很重要,下一节细讲)、更新软件源。

4.3 烧写完成后的三件必做小事

不管哪种方式烧写完,我都建议立即做这三件事,否则后面会有隐患:

1. 把引导源理顺

如果你板子上同时有 eMMC 系统和刚烧的 SD 卡系统,记住香橙派默认优先 eMMC。想让系统从 SD 卡跑,要么物理上清掉 eMMC 上的系统,要么通过进入系统后修改引导顺序。最简单可靠的方法:用 balenaEtcher 往一张空 SD 卡写入你想用的系统做启动盘,同时把 eMMC 内容先放着不动,如果开机没反应再考虑清 eMMC。

2. 开启 SSH 方便远程操作

桌面版系统默认可能没开 SSH。在桌面上打开终端:

sudo apt update sudo apt install openssh-server -y sudo systemctl enable --now ssh

然后查看一下 IP 地址:

ip addr show

记下 eth0 或 wlan0 的地址。后面所有模型部署操作我都建议通过 SSH 远程做,不要在桌面里操作,一是效率低,二是桌面环境占用大量 CPU/GPU 资源,影响模型推理演示效果。

3. 扩展根分区

这个话题放到第 5 节详细说,因为这是高频坑。现在先记住:如果你的系统是官方镜像是通过“升级固件”方式刷入 eMMC 的,很多镜像 rootfs 分区只分配了 4GB 左右,实际剩余空间远小于你的 eMMC 容量。如果不扩容,后续装 Python 环境、下载模型文件,分分钟把磁盘写满。

5. 烧写高频问题排查实录

这一节的内容都是我实际折腾中和带学员过程中遇到最多的问题,每一个都给出可复现的排查路径。

5.1 RKDevTool 识别不到设备

这是 eMMC 烧写时最最常见的问题。现象:板子按了 MaskROM 键也上了电,但 RKDevTool 右侧一片空白,没有任何设备。

排查顺序按成功率从高到低:

  1. 确认数据线。很多 USB-C 线只走电源不走数据,换根确定能传输数据的线,或者用手机的原装数据线试。
  2. 确认 USB 口。优先插电脑主板的后置 USB 口,前置 USB 口供电和信号质量都差一些。老笔记本的 USB 口电流不稳也会导致烧写中断。
  3. 确认驱动安装成功。打开设备管理器,看有没有“Rockchip USB”相关的设备。如果显示黄色感叹号,说明驱动没装好,右键重新安装驱动,或者卸载后重启再装。
  4. 确认进入 MaskROM/Loader 模式。方法:按住 MaskROM 键,然后插电。如果你板子丝印里 MaskROM 和 Recovery 是两个键,都试一下。有时候 Loader 模式识别不了就换 MaskROM 模式。
  5. 换电脑试。不同电脑的 USB 控制器兼容性不同,我遇到过一个案例,Win11 的笔电死活识别不了,换台 Win10 台式机一次成功。

如果上面这些都试完还是识别不到,还有一个必杀技:用 Linux 的 upgrade_tool 工具。香橙派官方提供的 Linux_Upgrade_Tool 在 Ubuntu 上运行,对设备的识别成功率往往比 Windows 的 RKDevTool 更高。

sudo ./upgrade_tool

工具启动后,同样按住 MaskROM 键上电,终端里会打印出设备信息,然后可以使用:

sudo ./upgrade_tool uf 你的镜像update.img

等待烧写完成即可。

5.2 刚烧写完磁盘就没空间了

这个问题的出现概率极高,很多人反应“刚烧写的 Ubuntu 20.04 磁盘就没空间了”,原因就是官方镜像给 rootfs 预留的容量很小。

举个例子,官方 Ubuntu 20.04 镜像的根分区可能只分配了 4~8GB,但 eMMC 是 64GB。你 df -h 一看,根分区用了 90% 以上,还没装任何东西就没空间了。

解决方法是扩展 rootfs 分区。在系统终端里执行:

# 查看当前分区情况 sudo fdisk -l /dev/mmcblk0 # 用 parted 或 resize2fs 扩展 sudo resize2fs /dev/mmcblk0p3

注意:不同镜像 rootfs 分区号可能不同,有的在 mmcblk0p5,有的在 mmcblk0p7。扩展之前先跑 fdisk -l 确认:

sudo fdisk -l

你会看到类似这样的输出:

Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 32768 532479 499712 244M c W95 FAT32 (LBA) /dev/mmcblk0p2 532480 1708031 1175552 574M 83 Linux /dev/mmcblk0p3 1708032 121110527 119402496 56.9G 83 Linux

如果 p3 的 End 已经占满整个 eMMC,说明分区已经扩展到最大,剩下只需要:

sudo resize2fs /dev/mmcblk0p3

看到输出类似 “resizing filesystem on /dev/mmcblk0p3 to 某容量 blocks”,然后 df -h 重新看,根分区的 Avail 应该已经变大了。如果分区本身没占满磁盘,先删除分区再重建扩大(注意别删错分区),或者干脆重烧一次镜像再扩容。

5.3 开机黑屏、反复重启、卡在 logo

这几个问题看似不同,根源常常是同一个:供电不足或数据线问题。

  • 黑屏:先确认 HDMI 线插的是板子的 HDMI 口而不是别的口,有的型号有两个 HDMI,优先插 HDMI-1。另外确认显示器支持的分辨率,香橙派默认输出分辨率如果显示器不支持,会一直黑屏无信号。这样排查:换台 1080p 显示器试试,或者把 HDMI 接到电视上。
  • 反复重启:十有八九是电源问题。5V/2A 以下的电源带不动 8 核 A76 全速运行,系统刚起来负载一高就掉电重启。解决办法是换 5V/4A 以上的电源,且线材不要太长、太细。这个问题不要抱有侥幸,我在调试时曾用 5V/3A 电源跑 YOLOv5s 推理演示,NPU 和 CPU 同时满载两分钟就直接重启,换 5V/4A 后稳如老狗。
  • 卡在 logo 或滚动条:先看是不是镜像损坏,重新校验 SHA256,不行就重烧一次。也有可能是 SD 卡质量问题,换一张 A2 级别的卡再试。最后还可以考虑是不是 HDMI 分辨率协商问题,很多镜像默认 4K60Hz 输出,部分显示设备不支持,可以尝试在引导配置里修改分辨率设置。

5.4 几个冷门但真实的坑

系统时间不对导致 HTTPS 下载失败

新烧的系统如果没有联网校时,时间可能是 1970 年前后,这时候用 apt 更新或者下载 GitHub 文件,会报 SSL 证书错误。解决办法:

sudo apt install -y ntpdate sudo ntpdate ntp.aliyun.com

apt 更新源慢

官方镜像的源大部分是国外源,在国内网络环境下更新慢得离谱。建议换国内镜像源。Ubuntu 20.04 修改/etc/apt/sources.list,把 archive.ubuntu.com 替换成清华源或者阿里云源,然后 sudo apt update。这一步能让你后续装 Python 包、系统依赖的速度提升十倍以上。

板子发烫但风扇不转

香橙派 5 的散热风扇默认是根据温度自动启停的,但如果散热风扇的供电接口没插对,温度飙到 80 度也不会转。检查风扇是否插在板子标注的 FAN 接口上,并确认系统里有没有启动风扇控制服务。如果长时间高负载跑模型推理,建议给板子加装主动散热,NPU 持续工作发热量不小,温度过高会造成 NPU 频率下降,推理速度肉眼可见变慢。

6. 烧写之后,为 YOLOv5s 部署铺路

系统起来、磁盘扩容、SSH 能连上,到这里本期的基本任务就完成了。但既然目标是跑 YOLOv5s,烧写完我建议顺手做两件准备工作,避免下一期开机时手忙脚乱。

6.1 确认 NPU 设备节点

RK3588 的 NPU 在系统里对应/dev/rknpu设备节点。烧写完系统后检查一下:

ls -l /dev/rknpu*

正常能看到类似/dev/rknpu0的设备节点。如果这个节点不存在,说明内核没有加载 rknpu 驱动,或者内核版本和镜像不匹配。后面用 RKNN 跑模型时,这一步是硬前提。

同时确认一下系统架构和系统版本,后续装 RKNN-Toolkit 要用:

uname -a cat /etc/os-release

6.2 安装 Python 环境

YOLOv5s 从训练到转换,中间要经过 Python 环境。建议在这里就把基础环境装好:

sudo apt update sudo apt install -y python3-pip python3-dev python3-venv git python3 --version

小建议:用 venv 或 conda 管理环境,不要直接装系统 Python。模型转换过程中依赖版本冲突非常常见,比如 numpy 1.x 和 2.x 的差异就可能让 RKNN 工具链崩溃。给这个项目单独建一个虚拟环境:

python3 -m venv ~/yolo_env source ~/yolo_env/bin/activate pip install --upgrade pip

后面训练和转换都在这个环境里操作,跟在系统环境里装的互不干扰。这个习惯帮我省了无数重装系统的时间。

6.3 给你的后续路线预想

镜像烧写只是万里长征第一步。接下来我们会依次搞定:SSH 远程开发环境搭建、YOLOv5s 模型获取与训练(或直接使用预训练权重)、RKNN-Toolkit2 安装、模型转 ONNX 再转 RKNN、量化踩坑、最后在板子上跑起实时推理。每一步我都会有实际操作日志和真实踩坑记录,你只要跟着走,大概率能一次过。

我最想提醒的还是一句老话:别跳步。很多人觉得烧写小事一桩,直接跳到模型部署,结果环境不对、分区爆满、NPU 驱动缺失,一堆问题混在一起,根本没法排查。老老实实把基础铺好,后面的进度反而快得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询