
拿到香橙派RK3588这块板子的朋友十有八九第一件事就是想把yolov5s跑起来。但真正动手你会发现从烧写系统镜像开始每一步都在给你挖坑镜像下载哪个版本为什么烧完磁盘就满了为什么屏幕不亮但板子其实活着这些问题不解决后面的RKNN模型转换、NPU推理根本无从谈起。这篇是第一篇专门把香橙派RK3588的镜像烧写从头到尾捋干净包括选镜像、选存储介质、烧写实操、首次开机验证以及我踩过的各种坑。适合刚入手香橙派、准备做RK3588边缘AI部署的开发者参考。1. 为什么是RK3588 yolov5s为什么第一篇必须从烧镜像开始1.1 RK3588这颗芯片到底强在哪RK3588是瑞芯微的旗舰级SoC8核心CPU由4个Cortex-A76大核和4个Cortex-A55小核组成GPU是Mali-G610 MP4这些参数对跑深度学习模型来说属于够用但不惊艳。真正关键的是它那颗NPUINT8精度下算力有6 TOPS能同时做多路视频流的目标检测。用一句话给不了解的人解释这颗NPU就像是给板子配了个专门做神经网络计算的协处理器你在CPU上跑yolov5s可能只有几帧在NPU上跑同样的模型能到几十帧功耗还低得多。香橙派5系列搭载的就是RK3588板子本身接口非常齐全双2.5G网口、USB 3.0、PCIe/M.2插槽等而且官方持续维护Ubuntu和Debian镜像生态相对成熟。相比其他开发板它最大的优势是能跑桌面系统的同时还能干AI推理一套板子既能做开发调试又能直接部署到边缘设备上。1.2 yolov5s和RKNN的适配路线yolov5s在目标检测模型里属于轻量级选手模型体积小、推理速度快非常适合放到边缘设备上。但瑞芯微的NPU并不能直接跑PyTorch导出的原始模型它需要经过一套工具链转换先把PyTorch模型导出成ONNX再用RKNN-Toolkit2把ONNX转成RKNN格式。转换过程中还要做量化、算子适配、板端推理验证等步骤。这一整套流程往下走依赖的是板子上有一个正常运行的系统环境包括正确的内核驱动、NPU设备节点、Python环境、OpenCV等库。所以镜像烧写是整个系列的地基地基没打好后面模型转换、板上推理全都会崩。这也是为什么我把镜像烧写单独立一篇而且啰嗦得特别细。1.3 镜像烧写整个AI落地链路的第一个节点很多刚接触开发板的人会小看这一步觉得烧镜像不就是把文件写进存储卡吗。实际遇到过的人都知道烧完之后开机起不来、网口连不上、分区容量不对、NPU节点不出现这些问题十个有八个都能追溯到镜像烧写环节。这一篇就是把这些可能性提前堵死。我的建议是在真正开始摆弄NPU之前先把系统的健康检查做一遍。你可以把烧写系统类比成装修前打地基——后面墙面刷得再漂亮地基歪了全白搭。这篇教程帮你把地基既打平又夯实。2. 烧写之前先把镜像和启动介质这两件事想明白2.1 官方镜像怎么选Ubuntu 22.04还是20.04桌面版还是服务器版去香橙派官网的下载页按你手里的板型选择对应镜像。重点提醒Orange Pi 5和Orange Pi 5 Pro的镜像是分开的不能混用下载前先确认自己的板子型号是标准版还是Pro版再确认eMMC模块是否存在不同配置镜像选择会有差异。香橙派官方提供的主要是Ubuntu和Debian镜像。Ubuntu里有22.04和20.04两个大版本又有桌面版和服务器版之分。对于要跑yolov5s的用户我建议首选Ubuntu 20.04服务器版或桌面版。原因很直接RKNN-Toolkit2在Ubuntu 20.04上的测试最充分网上能找到的RK3588部署yolov5s的教程绝大多数也基于20.04环境。你按教程操作时遇到坑的概率会小很多。如果只是想先熟悉系统、看看桌面界面那装22.04也无妨但后续做NPU部署时大概率还是得换回20.04不如一步到位。桌面版和服务器版的区别也很好理解桌面版带图形界面适合在板子上接显示器操作服务器版没有桌面节省系统资源适合通过SSH远程调试。做AI部署我一般推荐服务器版省下来的内存和CPU资源都可以留给推理程序。但如果你是新手第一次玩RK3588用桌面版反而更安心——至少有个图形界面可以确认系统确实起来了。2.2 SD卡、eMMC模块、NVMe SSD三种启动介质怎么挑香橙派RK3588系列支持三种主流启动介质microSD卡、eMMC模块、NVMe SSD。选择哪种会直接影响烧写方式和使用体验。SD卡是最通用的选择买一张32GB以上的A2等级microSD卡就行。A2等级意味着随机读写性能更好具体到使用体验上就是系统响应更快、程序启动更跟手。容量建议32GB起步因为后面要装Python环境、模型文件、数据集16GB会比较紧张。一张好的A2卡价格也就是几十块没必要在这个环节省钱。eMMC模块相当于把存储芯片直接做成了可插拔的模块读写速度和稳定性比普通SD卡好不少使用寿命也更长。代价是价格更高而且需要专门的读卡器才能像SD卡一样直接烧写或者通过板子上的MaskROM模式烧写。NVMe SSD是速度最快的方案但只有带M.2插槽的型号才支持比如Orange Pi 5 Pro。用SSD跑yolov5s时加载模型文件和读取数据的速度会明显更快。不过对部署yolov5s这种轻量级模型来说SSD带来的推理帧率提升并不明显——瓶颈在NPU不在存储所以不要盲目追求SSD。三种介质的速度差异主要体现在系统启动和文件读写上。我做了一个表格供参考存储介质持续读取速度系统启动速度价格适合场景SD卡A2约90MB/s中等便宜入门体验、新手试错eMMC模块约180-280MB/s较快中等偏贵稳定运行、不想折腾SD卡NVMe SSD约700MB/s以上快贵大数据/模型文件、追求读写性能我的建议很简单第一次玩买张32GB以上的A2 SD卡烧写熟练之后如果觉得SD卡不够稳再换eMMC模块。我这个系列的教程围绕SD卡展开因为这是门槛最低、最适合跟练的方式。2.3 下载与校验别让文件损坏背锅镜像烧写失败最容易被冤枉的环节就是下载文件本身损坏了。官方镜像通常打包成.img.xz或.img.gz压缩格式下载后体积比实际镜像小必须解压出.img镜像文件再烧写不能拿压缩包直接烧。下载完建议做一次校验确认文件没下载残缺。Windows用户可以在PowerShell里用Get-FileHash计算SHA256Linux用户用sha256sum。官方下载页通常会在镜像文件旁边附上SHA256哈希值比对一致再解压。这一步一分钟就能做完远比烧写失败后反复排查省时间。另外要强调从第三方网盘、论坛转存的镜像链接能不用尽量不用。官方源的镜像经过完整测试第三方转存没法保证文件完整性和安全性。对于要跑yolov5s的系统来说一个被篡改或损坏的系统镜像后期排查成本极高。3. SD卡烧写的完整实操流程3.1 烧写工具选型Etcher为什么最适合新手SD卡烧写工具市面上不少Windows有Win32DiskImager、RufusLinux有dd命令macOS有balenaEtcher。我个人的建议是无论你用哪个系统都优先用balenaEtcher。原因有几点第一它跨平台Windows、macOS、Linux都有版本教程通用第二烧写完成后会自动校验能及时发现写入错误第三它自动识别U盘和SD卡等可移动存储设备选择目标盘时不容易把硬盘搞混第四烧写过程中有清晰的进度显示和日志出错时能看到具体原因。相比之下Win32DiskImager需要手动选择盘符新手一旦选错就把U盘或者移动硬盘写坏了dd命令更不用说了of参数写错设备名直接是把整块硬盘覆盖掉。所以如果你是第一次烧写直接装Etcher。3.2 一步一步烧写格式化、烧录、校验整个烧写流程分四步格式化SD卡、选择镜像、选择目标盘、开始烧写。第一次做的人建议按下面步骤慢慢来。第一步格式化SD卡。用SD Card Formatter这个官方工具选择对应盘符格式化方式选OVERWRITE FORMAT这样会完整清空SD卡并重建分区表。这一步能消除残留分区对烧写的干扰很多烧写校验失败的问题其实从格式化阶段就开始埋雷了。第二步把下载好的.img镜像文件解压出来放到一个不容易混淆的位置。第三步打开Etcher点击Flash from file选择解压出的.img镜像然后点击Select target选择你的SD卡。Etcher会显示SD卡的容量和型号请仔细核对容量——如果你用32GB的卡目标盘显示32GB一般没问题。烧写前它会再次弹出警告确认目标盘没有选错后再继续。第四步点击Flash开始烧写。期间不要拔卡、不要断电、不要打开其他大量占用磁盘的程序。烧写速度取决于SD卡和读卡器速度一般32GB镜像需要五到十分钟。烧写完成后Etcher会自动校验直到显示绿色对勾才算结束。提示烧写完成后Windows可能会提示需要格式化磁盘千万别点格式化那是操作系统不认识Linux分区导致的正常现象。直接拔出SD卡插到板子上开机即可。3.3 Linux下的dd命令烧写方案如果你用Linux有人可能觉得Etcher也是图形界面不如直接dd来得干脆。我不反对dd但要求你必须知道命令在做什么。dd命令的原理就是把镜像文件按位复制到目标设备上简单粗暴没有图形界面的干扰也没有自动校验环节烧写完的验证需要自己额外做。先插入SD卡用lsblk确认设备名一般是/dev/sdb或者/dev/mmcblk0。然后执行sudo dd if香橙派镜像.img of/dev/sdb bs4M statusprogress convfsyncof后面的设备名一定要和lsblk看到的SD卡设备名完全一致绝不能是系统盘。bs4M是每次读写块大小statusprogress让你能看到进度convfsync确保数据真正写入物理介质后才结束。dd没有校验功能烧写完后建议手动校验。先读一下SD卡的分区表sudo fdisk -l /dev/sdb如果能看到两个分区一个FAT格式的启动分区一个ext4的根文件系统分区说明烧写基本成功。相比Etcherdd更适合你已经对操作流程很熟了再使用。3.4 烧写完成后一定要做的检查烧写完成后不要急急忙忙插到板子上就开机。先看看SD卡现在的分区情况用读卡器插回电脑执行lsblk或者Windows下的磁盘管理。正常烧写完成的镜像会有两个分区一个是几百MB的FAT分区存放引导和内核文件另一个是ext4格式的根文件系统分区占镜像原始大小的一半以上。还有一个很多人忽略的细节镜像文件本身的大小不等于实际占用SD卡的物理空间。比如镜像文件是8GB你的SD卡是64GB那烧写后根分区仍然只有8GB剩余56GB是未分配状态需要首次启动时扩容。这个过程我在第5章详讲。4. eMMC和NVMe SSD的烧写镜像方式有什么不同4.1 eMMC模块的两种烧法eMMC模块烧镜像有两种方式。第一种最简单把eMMC模块装进官方eMMC读卡器插上电脑USB口系统会把它识别成一块SD卡后续操作就完全和烧写SD卡一样用Etcher或者dd就能完成。注意eMMC读卡器做成类似SD卡的形状插进普通读卡器即可识别但前提是你买板子时已经配合了对应读卡器。第二种是板载烧写方式用瑞芯微的RKDevTool在Windows下烧写。这种方式多用于需要救砖、烧写单独分区镜像或者底层固件的场景。具体操作是板子先不要上电把eMMC模块装到主板上按住板子上的MaskROM按键再通过USB-C数据线连接电脑电脑端驱动安装好后打开RKDevTool选择镜像文件烧写。这套操作对新手来说偏硬核如果不是必须优先推荐第一种用读卡器烧写。4.2 NVMe SSD烧写与安装有M.2插槽的香橙派5 Pro可以支持NVMe SSD启动。烧写方式和SD卡几乎一样用一个USB转NVMe硬盘盒把SSD插到电脑上Etcher会把它识别为一个可移动磁盘直接把镜像烧进SSD。烧完后把SSD从硬盘盒取出装到板子的M.2插槽上。如果你只有笔记本内置硬盘位也可以先用硬盘盒烧好再装到板子上。需要注意一点拿SSD烧镜像时目标盘要仔细确认别选成电脑系统盘。Etcher在识别内置NVMe硬盘时往往也会提示此磁盘看起来像系统磁盘不要忽略这个警告。4.3 一句话总结三种启动介质的选择建议入门选SD卡长期稳定选eMMC模块追求极致读写速度且板型支持就上NVMe SSD。不管选哪种烧写镜像的逻辑都一样只是载体不同。烧写完成后eMMC和SSD的分区结构、扩容流程和SD卡完全一致不存在额外的坑。唯一要注意的是启动顺序板子默认的启动介质顺序可能不同如果同时存在SD卡和eMMC模块它的启动顺序可以去BIOS/启动配置里调整。为了避免混淆建议当前不用的启动介质先拔掉只留你要用的那块。5. 第一次开机从点亮屏幕到确认NPU在线5.1 接好线、上好电等它自己跑完首启烧好系统后把SD卡插入板子背面的卡槽。接上HDMI线、键盘鼠标如果是桌面版再接上电源。通电的瞬间观察板载指示灯正常情况下会亮起并且屏幕很快会出现启动画面。第一次启动通常会比后续启动慢因为系统要完成首次引导、可能还会做自动扩容。这个阶段最忌讳反复断电重启。建议耐心等三到五分钟如果屏幕一直黑屏先不要急着判死刑大概率是显示输出或供电问题第6章里我详细讲排查。如果用的是服务器版镜像接上显示器可能会看到一个登录提示符这是正常现象输入默认账号密码登录即可。无论哪种版本首次启动都建议接上网络网线方便后续SSH连接。5.2 SSH连进去之后的五个必做检查大部分人会选择SSH远程操作毕竟开发板用显示器占地方还不方便。确保板子和电脑在同一个局域网内用ssh orangepi板子IP连接默认密码是orangepi。不知道板子IP的话可以从路由器后台看设备列表或者用手机App扫描局域网设备。第一次登录后我建议按顺序跑五个检查确认系统健康查看系统版本和内核信息cat /etc/os-release和uname -a确认Ubuntu版本、内核版本是否与镜像描述一致。查看CPU是否8核都在线nproc正常返回8。还可以用lscpu看完整的CPU信息。查看内存总量free -h确认识别到的内存容量和你的板子型号一致。查看磁盘使用情况df -h重点看根分区大小和剩余空间。如果你发现根分区比实际存储介质容量小很多说明还没扩容接着看5.3。查看NPU设备节点ls /dev/rknpu或者ls /dev/rknpu0能列出设备节点说明NPU驱动已加载。这是后续跑yolov5s的前提。五步检查全部通过系统这块基本就稳了。第5和第3步如果出现问题后面很多工作都会变得非常痛苦。5.3 磁盘空间不足在哪里现在就扩容刚烧写好的Ubuntu系统磁盘就没空间了这个热搜词说的就是镜像烧写完但没扩容的现象。正常现象不用慌这不是烧写失败而是系统分区还停留在镜像原始大小。举个例子官方镜像根分区做成了8GB你用的是64GB的SD卡烧写后根分区还是8GB剩余空间全都是未分配状态。如果这时候直接装环境、下模型很快就满了系统会变得极其卡顿。所以第一次登录后马上去看磁盘容量如果发现根分区没占满物理介质立即扩容。不同版本的香橙派镜像扩容方式略有差异。很多官方镜像自带了开机自动扩容逻辑首次启动日志里会有一句类似resizing rootfs的信息等几分钟后根分区会自动扩展到整张卡。如果等了半天还是没扩容手动执行下面的命令sudo growpart /dev/mmcblk0 2 sudo resize2fs /dev/mmcblk0p2growpart用来扩展分区参数中/dev/mmcblk0是SD卡设备2是根分区的序号resize2fs把文件系统扩展到整个分区大小。执行完再次运行df -h根分区大小应该已经变成接近实际存储容量。如果系统中没有growpart先安装sudo apt update sudo apt install cloud-guest-utils有些旧镜像还能看到单独提供了一个扩容脚本脚本名通常是orangepi-resize-rootfs之类用find / -name *resize*搜一下就能找到效果和手动扩容一样。5.4 验证NPU和内核模块为yolov5s部署铺路前面提到要确认/dev/rknpu设备节点存在这是NPU驱动加载成功的标志。进一步可以看看RKNN驱动的版本信息。老一点的镜像里可以这样查sudo cat /sys/kernel/debug/rknpu/version如果目录不存在就用dmesg | grep -i rknpu看内核日志正常会出现RKNPU初始化相关的信息。内核里NPU驱动版本对RKNN-Toolkit2的兼容性有影响记录下版本号后续转换模型时遇到算子不支持的问题排查起来有据可查。到这一步你的香橙派RK3588已经是一台可用于AI开发的Linux机器了系统健康、网络通畅、存储扩容完成、NPU在线。接下来就是装Python环境、安装RKNN-Toolkit2、准备ONNX模型那是第二篇的内容。6. 烧写与启动过程最容易翻车的8个坑含排查链路6.1 坑1刚烧完磁盘就没空间现象系统能启动但df -h一看根分区快满了甚至连apt install都失败。排查链路先正常运行lsblk看SD卡或eMMC设备下是否有未分配空间。如果有说明分区没扩如果确实整个物理介质都被分区占满说明镜像本身做的分区就不大需要在可用空间内精简系统或换大容量存储。解决方案我已经在第5.3节写过了运行扩容命令后重启。这个坑的根源是官方镜像按最小通用容量制作而不是按你的存储卡容量定制。6.2 坑2Etcher烧写校验失败现象Etcher烧到中途报错或者最后校验失败红叉提示。排查链路先换一个USB口优先用机箱后置的USB口前置面板的USB口供电不稳是常见原因。然后检查读卡器质量一些几块钱的读卡器在写入大文件时会掉速甚至断开导致校验失败。如果换了USB口和读卡器还失败重新格式化SD卡再来一次。最后再怀疑镜像文件回到第2.3节重新校验下载文件的SHA256。我自己的经验是烧写校验失败九成以上是读卡器或USB口的问题只有极少数是镜像文件损坏。6.3 坑3板子灯亮但屏幕不亮现象通电后指示灯正常风扇也转了但HDMI显示器一直黑屏或无信号。排查链路先排除显示线材问题拿电脑或其他设备验证HDMI线和显示器本身正常。然后看看是不是桌面版镜像首次启动太慢多等五分钟。如果还不行接串口调试线观察启动日志——香橙派板子上有Debug串口引脚用USB转串口模块CH340G或CP2102连接波特率设置为1500000能在终端里看到完整启动过程。启动日志能立刻告诉你系统是卡在内核加载、文件系统挂载失败还是卡在桌面启动。如果串口显示系统已经启动完成说明板子活着只是图像输出有问题可能是HDMI握手失败或者分辨率不识别。这时候用SSH连接板子调整显示输出配置一般能解决。屏幕不亮但板子运行正常是常见状态思路不是板子坏了而是显示通道没打通。6.4 坑4插着eMMC又插SD卡导致起不来现象板子上同时装着eMMC模块和SD卡开机后要么黑屏要么反复重启样子像系统崩了。排查链路我见过很多人折腾半天最后发现罪魁祸首是两个系统抢启动权。板子默认有启动介质优先级两张卡都有引导文件时会混乱。解决方式很简单只保留一块要用的启动介质另一块先拆下来。等系统稳定启动后再考虑是否需要配置启动顺序。这个坑在RK3588这类支持多启动介质的板子上特别容易踩因为很多用户喜欢把系统同时装到SD卡和eMMC里做实验。6.5 坑5供电不足导致的反复重启现象开机后系统跑一会就自动重启或者高负载时突然黑屏重启后又恢复。排查链路RK3588是8核高性能SoC功耗比普通开发板大不少官方推荐的电源规格是5V/4A以上。如果你拿手机充电器5V/2A甚至更小供电低负载时可能勉强运行一旦加载桌面环境或者跑AI推理电流需求上去了就触发供电保护。解决办法换官方电源适配器或者使用支持5V/4A以上的PD电源加合格的USB-C线。线材同样重要劣质USB-C线压降太大电源再足也白搭。这个坑还有个隐藏形态板子上挂了NVMe SSD、USB硬盘等外设总电流需求进一步拉高这时候原本够用的适配器也会变得捉襟见肘。排查链路就是先拔掉所有非必要外设最小系统跑一下如果稳定说明供电余量不足。6.6 坑6用压缩包直接烧写导致失败现象Etcher选择了.img.xz或者.img.gz压缩包直接烧写结果中途报错或者烧完开不了机。排查链路Etcher其实可以识别部分压缩格式但官方镜像的压缩包结构不一定兼容烧写过程容易出错。最稳妥的做法永远是先把压缩包解压成.img文件再选择这个.img文件烧写。有时候解压出来的镜像文件名很长路径也带中文为了方便把镜像文件放到一个纯英文路径下比如C:\images\orangepi.img避免文件路径编码问题干扰。6.7 坑7Windows识别不了SD卡现象SD卡插进读卡器Windows没有出现盘符磁盘管理里能看到但无法格式化。排查链路先换读卡器和USB口排除硬件接触问题。然后用SD Card Formatter强制格式化一次它能重建分区表解决许多操作系统无法识别的问题。如果SD卡之前是树莓派或者其他Linux系统的启动卡Windows可能完全识别不了这是正常的用SD Card Formatter格式化后就能正常写入。6.8 坑8卡在引导界面不停重启现象板子通电后能看到启动画面但过几秒重启无限循环看起来像死循环。排查链路优先怀疑供电对照坑5。供电没问题的话拔掉所有USB外设、SD卡、eMMC之外的东西再来一次。接着考虑镜像与板型不匹配——请确认你烧的镜像是针对你这块板子的标准版还是Pro版镜像烧错镜像也会导致引导阶段反复失败。如果以上都排除了尝试重新烧写一张新的SD卡排除存储介质坏块。我在实际排障时发现这类无限重启的问题通常是供电不足和镜像不匹配两个原因叠加查的时候不要只盯一个方向。最后再分享几个小经验回头看看这篇写的内容其实核心就是一句话镜像烧写不只是把文件复制到存储卡里而是要确保整个系统链路从引导到内核再到NPU驱动全部畅通。我个人的习惯是每次拿到新板子或者新镜像都会把第5章那五个检查全部跑一遍输出记录到本地笔记里后续出问题能快速对照。还有一个经验是买存储卡或者eMMC模块时尽量选口碑好的正规品牌不要贪便宜。因为后面跑yolov5s调试模型你会反复烧写系统、反复传输模型文件劣质存储介质不仅慢还容易出现文件损坏、分区表错乱这类莫名其妙的问题排查起来极其浪费时间。一条稳定的存储介质能让整个RK3588 AI部署路程顺滑一半。下一篇我会继续写RK3588上的yolov5s环境搭建包括Python虚拟环境、RKNN-Toolkit2安装、模型转换和板端推理验证。到那时候你会发现这篇烧镜像时吃的苦头全都值回来了。