ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

香橙派RK3588镜像烧写全攻略:从SD卡到eMMC,为YOLOv5s部署铺路

香橙派RK3588镜像烧写全攻略:从SD卡到eMMC,为YOLOv5s部署铺路 1. 为什么教程要从烧镜像讲起而不是从接电源开始1.1 烧镜像到底在烧什么很多刚拿到香橙派RK3588开发板的朋友第一反应是插上电源、接上显示器结果发现屏幕上什么都没有然后就开始怀疑是不是板子坏了。其实不是坏了而是这块板子出厂时默认的存储介质里可能根本没有系统或者系统版本跟你想用的不一样。这个系列是围绕“RK3588 YOLOv5s”展开的而不管是后续的模型部署、NPU推理还是视频流处理第一步都是让Linux系统稳定跑起来。所以整个教程的第一篇必须落在镜像烧写这个最基础、也最容易被跳过但实际上坑最多的环节。所谓烧写镜像简单说就是把一个完整的操作系统文件写入到SD卡、eMMC或者NVMe硬盘这类存储介质上。镜像本质上是一个“打包好的系统快照”里面不只包含Linux内核和根文件系统还顺带写好了这个平台特有的设备树、启动引导器bootloader、驱动固件等。这也是为什么不建议你用Windows下那种“格式化U盘再复制文件进去”的思路Linux系统的启动过程依赖的是块设备上的特定分区布局和二进制引导代码不是简单的文件复制。1.2 RK3588这块芯片为什么值得折腾选择香橙派RK3588核心原因是这颗芯片在边缘计算场景里太合适了。它拥有8核64位CPU采用4颗Cortex-A76大核加4颗Cortex-A55小核的组合主频跑到2.4GHz左右GPU是ARM Mali-G610视频编解码支持8K。更重要的是它内置了算力约为6 TOPS的NPU这个NPU对后续部署YOLOv5s、YOLOv8这类轻量级目标检测模型非常关键。很多人也问过我既然要跑YOLOv5s为什么不用N150这类低功耗迷你主机N150的CPU性能并不弱日常跑Linux、做做文件服务完全没问题但它缺少专用NPU。跑目标检测时只能用CPU或核显硬扛功耗高不说帧率也上不去。RK3588则可以把YOLOv5s的卷积计算映射到NPU上CPU只做前后处理和调度实测下来推理延迟明显更低而且整板功耗可控。这就是这一系列教程选择香橙派RK3588的根本原因。1.3 烧写方式和后续YOLOv5s部署的关系镜像烧写看似只是“把系统装上去”但不同的烧写方式会直接影响后续部署YOLOv5s时的体验。如果你把系统烧到SD卡上那么SD卡的读写速度、卡的质量、卡槽接触是否稳定都会影响后续模型文件加载、数据集读取的耗时。SD卡方案适合前期学习和验证因为系统分区和数据都在一张卡上搞坏了直接重刷就行。如果你把系统烧到板载eMMC或者NVMe硬盘上那么读写性能会明显提升。尤其是模型权重文件动辄几十MB输入视频帧进行实时推理时存储吞吐量会成为不可忽视的瓶颈。另外后续在RK3588上用NPU跑YOLOv5s需要安装RKNN-Toolkit工具链并且需要系统自带正确的NPU驱动。部分官方镜像已经预置了NPU驱动但如果镜像版本过老或者你手动改了内核NPU节点可能就找不到了。这些坑在系统跑起来之后才会暴露而根源恰恰是镜像选择和烧写方式这一步。所以第一篇教程把这一步做扎实后面会省掉大量排查时间。2. 开工前的准备该买的件、该下的软件、该弄明白的原理2.1 硬件准备清单烧写系统虽然听起来是个纯软件操作但实际需要准备的硬件缺一不可。我建议在动手之前先花几分钟确认手里东西齐了不然中间停下来到处找配件会非常扫兴。这也是我吃过亏之后养成的习惯。开发板本体这里指香橙派5系列或者说搭载RK3588/RK3588S的板子。注意看板上的存储配置有的版本带板载eMMC有的不带这会影响后续是否需要SD卡。电源适配器一定要用支持USB-C接口且输出规格足够的电源建议5V/4A以上。我实测过用普通的5V/2A手机充电头给RK3588供电在系统启动阶段就可能触发电压跌落导致反复重启。不要在这个时候省钱。SD卡及读卡器至少16GB起步建议32GB以上速度等级选A2或U3级别的卡。读卡器建议用USB 3.0接口的烧写大镜像时速度差距还是很明显的。Type-C数据线用于连接开发板和电脑进行eMMC烧写或串口调试。注意这条线必须支持数据传输有些线只能充电。USB转TTL串口模块调试利器。我强烈建议备一个CH340或CP2102模块接好TX、RX、地线之后就能在电脑上直接看开发板的启动日志。很多“看起来像变砖”的问题靠串口日志几秒钟就能定位。2.2 软件和镜像文件准备软件方面不同操作系统选择的工具不同但核心就两类一类是通用的镜像写入工具另一类是瑞芯微专用的烧录工具。先说说通用镜像写入工具。跨平台表现最稳定的是balenaEtcher界面很简单三个步骤选择镜像、选择SD卡、开始烧写。它在写入完成后还会自动校验一遍能避免很多因为镜像不完整导致的启动失败。Windows下也经常有人用Win32DiskImager或者Rufus但说实话在写入DD镜像原始块设备镜像这件事上我用balenaEtcher更顺手因为它在macOS、Linux、Windows三端表现一致。瑞芯微专用工具则主要用于烧写eMMC、NVMe这类板载存储。Windows下是RKDevToolLinux下是upgrade_tool。这两个工具不会去解析镜像里的文件而是直接通过USB协议把统一固件包也就是带bootloader、分区表、系统镜像的整体打包文件写入板载存储走的是Loader模式或MaskROM模式。这部分细节下一节说先不展开。镜像文件本身去香橙派官方主页找对应型号的镜像。通常官方会提供基于Ubuntu、Debian的桌面版和服务器版名字里会标明“RK3588”和“Orange Pi 5”之类字样。只跑YOLOv5s且主要做模型部署测试的话我建议选服务器版或者精简版桌面版别选带完整桌面环境的镜像后续可以省出几百MB内存。2.3 需要理解的三个模式正常启动、Loader模式和MaskROM烧写RK3588时如果不理解它启动和烧写模式的区别很容易在操作卡住时一头雾水。我在这里把三个模式梳理清楚。第一个是正常启动模式。开发板通电后片上ROMBootROM会去查找启动介质里的引导程序通常包括SD卡、eMMC、SPI Flash、NVMe等按顺序尝试。如果系统存在且引导程序完整就正常启动。第二个是Loader模式。这个模式是瑞芯微芯片特有的。在正常启动过程中如果你按住板子上的恢复键Recovery键再插入USB线连接电脑芯片会进入Loader模式此时电脑端RKDevTool会识别到一个设备。Loader模式下你可以通过USB对整个存储进行读写操作。很多分区操作、固件升级都发生在这个模式。第三个是MaskROM模式。这个模式就相当于芯片级的“终极后门”。当启动介质里的bootloader损坏或缺失芯片引导失败后会进入MaskROM模式。此时设备本身无法正常启动但USB设备枚举依然可以工作电脑端RKDevTool会识别到一个“MaskROM”设备。这种情况下你仍然可以通过专用工具把正确的镜像重新写入eMMC所以不用怕“变砖”只要硬件没坏基本都能救回来。提示进入Load/MaskROM模式是为了烧写板载存储。如果只是烧SD卡跑个系统完全用不到这两个模式直接拿读卡器写SD卡就行这也是最稳的一条路。3. 实操第一步用SD卡把系统跑起来3.1 镜像下载与校验第一种烧写路径是走SD卡也是最推荐新手先走的路径。先把系统烧到一张质量过硬的SD卡里插上就能启动后续熟悉了再迁移到eMMC或NVMe。下载镜像时注意文件名要和板卡型号严格对应。我遇到过读者拿着香橙派5 Plus的镜像去烧香橙派5结果设备树不匹配系统起不来。下载完成后强烈建议做一次校验。官方页面一般会提供SHA256校验值在Windows的PowerShell里是这样算的Get-FileHash .\OrangePi5_ubuntu_focal_desktop_xfce_linux_xxx.img.xz -Algorithm SHA256Linux/macOS下则是sha256sum OrangePi5_ubuntu_focal_desktop_xfce_linux_xxx.img.xz算出来的值跟官网给的一致再继续否则重新下载。这一步最容易被省略但恰恰是“烧写成功但启动失败”的高频原因之一。镜像文件往往是.xz格式的压缩包balenaEtcher能直接读不需要手动解压这倒省了不少事。3.2 用balenaEtcher完成烧写接下来把SD卡插入读卡器连到电脑上。打开balenaEtcher不要急着点Flash先确认你选中的目标盘就是那张SD卡。我见过有人烧写时选错盘把电脑上的移动硬盘给清了血泪教训。操作顺序是这样的点击“Flash from file”选择下载好的镜像压缩包。点击“Select target”选择SD卡对应的磁盘。容量大小和SD卡一致的选项通常就是对的比如你的SD卡显示为32GB那就盯住32GB那个选项。点击“Flash”开始烧写。烧写过程中不要拔卡不要关电脑也不要切到其他程序去操作磁盘。烧写完成后balenaEtcher会进行校验显示绿色的提示后再把SD卡安全弹出。烧写耗时取决于电脑接口和SD卡速度。用USB 3.0读卡器烧一个2GB左右的系统镜像通常两三分钟就完事要是用USB 2.0接口可能得十几分钟这点耐心要有。3.3 首次上电看灯、看串口、看显示器烧写完成后把SD卡插到开发板背面的卡槽里。注意插到位听到轻响后再确认一下有些卡槽比较紧没插到位会造成接触不良。接上显示器、键盘、鼠标给开发板通电。第一次上电时别急着看画面先观察板子上的电源指示灯和活动指示灯。电源指示灯常亮说明供电正常活动指示灯在系统启动过程中会闪烁。如果电源灯都不亮先检查电源适配器大概率是供电问题。系统正常启动的情况下显示器上会出现Linux桌面或控制台登录界面。如果显示器一直黑屏但有灯亮优先怀疑HDMI线或接口问题。更严谨的做法是接上USB转TTL串口模块通过串口看启动日志。串口连接时模块的TX接板子的RX模块的RX接板子的TX然后共地千万别接反。在串口终端里设置波特率1500000香橙派5调试串口常用波特率是1500000这是RK3588平台比较特别的地方然后上电你会看到U-Boot和内核打印信息。看到一串串输出就说明系统在跑问题只可能出在显示链路或者登录环节。3.4 初始化系统设置与启用SSH系统起来后第一次登录需要先配置基础信息。官方Ubuntu镜像通常首次登录会让你创建用户名和密码或者会写明默认账号不同版本略有区别登录后界面上会提示清楚。进入系统后我建议立刻做几件事确认系统版本和内核版本。运行cat /etc/os-release查看发行版版本运行uname -a查看内核信息确认和你下载的镜像对得上。确认网络连接。插上网线后运行ip addr show看是否拿到了IP地址。如果后续想用无线网络在桌面环境里直接选择WiFi网络并输入密码即可。开启SSH服务。桌面版镜像可能默认不开启SSH需要手动启动。运行下面命令sudo systemctl enable ssh sudo systemctl start ssh更新软件源。官方源有时候在国内环境下一言难尽可以换成访问速度更快的镜像源。但注意RK3588的Ubuntu系统用的是ARM64架构换源时要确认源仓库支持arm64。注意首次上电可能遇到系统自动扩容分区的情况这会花一点时间。如果感觉启动速度比预期慢多等一会儿再操作不要中途断电否则文件系统可能受损。4. 进阶实操把系统烧进板载eMMC或NVMe4.1 为什么要把系统从SD卡迁到eMMCSD卡方案用着用着会让人忍不住想升级原因很简单性能瓶颈。SD卡的随机读写能力和uSD卡槽的电气稳定性跟板载eMMC或者NVMe硬盘差了一个量级。后续你要跑YOLOv5s实时推理时视频帧、模型权重都在频繁读写用SD卡时偶尔会出现卡顿。eMMC虽然读写速度也无法和NVMe比但稳定性强于SD卡生命周期也长。如果追求极致性能直接上NVMe硬盘。这里不是非得一步到位我的建议是如果你只是跟这个系列教程走一遍流程SD卡完全够用如果确定要长期把这台板子当边缘计算节点那尽早把系统迁到eMMC或NVMe。4.2 使用RKDevTool烧写eMMC在Windows下烧写eMMC用瑞芯微官方工具RKDevTool。具体流程我一步步说。先把开发板断电用Type-C数据线连接开发板的Type-C口注意这个口除了供电还肩负烧录和OTG功能不是所有Type-C口都可以另一端插到电脑的USB口上。按住板上的恢复按键然后给开发板上电保持按住恢复键几秒钟再松开此时RKDevTool会识别到设备。打开RKDevTool界面上应该显示“发现一个设备”之类的提示模式是Loader。在“升级固件”页面点击“固件”按钮选择官方提供的统一固件包也就是.img格式的完整固件文件。然后点击“升级”按钮就开始烧写。整个烧写过程会在进度条上看到写入完成后工具会提示成功。烧写过程中尽量不要碰其他USB设备。RK3588镜像动辄几个GB写入eMMC时如果USB通信中断可能导致写入不完整。我遇到过烧写一半时USB松了造成的半砖状态最后靠MaskROM模式救回来的所以线材和接口一定要稳固。4.3 直接烧写和启动镜像的对比有人会问既然官方给了直接烧eMMC的统一固件包为什么还要先通过SD卡启动再把系统复制到eMMC其实这是两种不同的思路。统一固件包是瑞芯微封装的烧录格式包含了完整的分区布局烧写时一步到位适合整个系统推倒重来。而SD卡启动后复制的方式更灵活你可以用dd命令把SD卡整个系统块设备复制到eMMC也可以只复制某个分区甚至可以从一个自己定制好的SD卡系统迁移到eMMC。我认为前期学习阶段用SD卡启动更安全因为你随时可以拔掉SD卡回到原始状态。等到你已经对系统做过定制需要通过烧录工具打补丁或者想换一种更纯净的镜像版本时再直接用RKDevTool烧eMMC这样体验会更顺滑。如果你决定直接从SD卡系统迁移到eMMC推荐用dd复制方案。先在SD卡系统上卸载eMMC相关的挂载点然后用类似下面的命令把SD卡根分区复制过去sudo dd if/dev/mmcblk0 of/dev/mmcblk1 bs4M statusprogress这个命令会把SD卡整盘内容复制到eMMC。复制完成后关机断电拔掉SD卡再从eMMC启动。这样做的前提是目标eMMC容量不小于SD卡容量否则放不下。4.4 系统迁移后的调整与NVMe注意点从SD卡迁到eMMC或NVMe后系统本身不会自动感知启动介质的改变有可能会存在一些遗留问题。最常见的是系统无法找到根分区。这在U-Boot阶段表现为卡在启动界面或者反复进入恢复模式。解决思路是检查/boot目录下的资源引导配置文件确认根分区的参数UUID或设备节点是否指向新的启动介质。SD卡通常是/dev/mmcblk0eMMC可能是/dev/mmcblk1NVMe则是/dev/nvme0n1p1。直接改启动参数里的root路径是最快的办法。如果你是先烧SD卡、再在系统里用dd复制到eMMC那迁移完成后还要检查一下启动引导程序是否写到了eMMC的对应位置。如果U-Boot没有成功写到eMMC即使根文件系统复制对了也启动不了。这一步需要额外留意但好消息是只要硬件没坏MaskROM模式永远可以兜底。另外如果要用NVMe硬盘启动得确保U-Boot能识别NVMe设备。部分官方镜像的U-Boot默认已经支持NVMe但我在某些镜像版本上遇到过U-Boot在NVMe初始化时卡住的情况这时候需要更新U-Boot补丁。这类问题通常属于启动引导层面的适配遇到时再单独处理。5. 烧写与启动的坑我已经替你踩过5.1 我遇到过的三类典型失败在折腾香橙派RK3588镜像烧写的过程中我前前后后遇到过三类比较典型的问题。第一类烧写成功但启动失败。具体表现是SD卡插上后板子没反应或者串口只能看到一段乱码。排查时先用串口看日志如果连U-Boot都没跑起来多半是引导部分写入不完整或者镜像本身是坏的。重新下载镜像重新烧写然后校验多半能解决。第二类系统启动后频繁死机重启。这种情况经常是电源问题RK3588在负载上来之后功耗会突然拉高电源跟不上就直接重启。我建议直接换一个正规品牌的5V/4A电源别用杂牌快充头。还有可能是SD卡速率问题劣质SD卡在系统高负载时数据读取出错引发内核panic这种问题换一张好卡就好。第三类eMMC烧写过程中断。原因很可能是USB线不好或者数据线插不稳。关键是一定要用真正支持高速数据传输的USB线而不是那种只能充电的“数据线”。换个口、换个线试试很可能就通过了。5.2 启动黑屏、无输出的排查启动黑屏是高频问题往往也是最让人慌的。这里我给出一个排查顺序可以帮你快速定位先看电源灯。灯不亮就是供电问题换电源换线都试一遍。再看活动灯和串口日志。有灯闪且串口有输出说明系统在启动问题在显示链路。换个HDMI线、换一个显示器接口试试或者直接用串口登录系统然后看显示服务的状态。如果串口完全无输出需要确认串口模块连接对不对。很多新手把TX/RX接反了一脸懵地认为板子没跑。交换TX/RX再试一次成本很低但经常解决问题。如果串口输出乱码检查终端波特率配置。RK3588调试串口波特率一般不是115200要设为1500000。除了这个值其他波特率看到的都是乱码。确认设备树是否匹配。烧错镜像导致设备树不匹配的情况串口日志里往往能看到相关报错把行号记录下来再去对照镜像版本和板卡型号。5.3 关于打补丁、升级NPU驱动的后续方向系统起来之后很多人接下来会折腾两件事一是升级NPU驱动二是通过烧录工具打补丁。NPU驱动这部分RK3588的内核驱动节点是/dev/rknpu。如果后续在跑YOLOv5s时发现模型转换之后无法加载到NPU先检查这个节点是否存在。不存在就先别急着排查模型问题大概率是驱动没装载。通过烧录工具打补丁则是另外一个方向。偶尔会遇到某次更新系统后WiFi模块不工作或者U-Boot需要修复兼容性问题这时候不是整板烧写而是单独更新某一个分区。使用RKDevTool的“分区表”或者“单独升级”功能可以只写入boot、uboot或者resource分区。这个操作比整芯片烧写更精细也更需要小心因为一旦分区内容不匹配启动阶段就会出问题。建议每次操作前先备份当前分区内容再动手。经验之谈在折腾RK3588这类板子时养成一个好习惯——每次重大操作前对当前系统做一个备份。备份需求简单的话直接整卡dd出来保存为一个.img文件后续出问题随时还原能省下大量排查时间。6. 下一步系统起来之后做什么镜像烧写只是第一步等系统能稳定跑起来之后接下来就要开始搭建环境了。按照这个系列的方向用RK3588跑YOLOv5s一般有几个步骤安装Python环境、下载RKNN-Toolkit工具链、把PyTorch模型转成RKNN格式、加载到NPU上做推理测试。如果不是专门跑目标检测这块板子还有别的玩法。官方镜像里已经有比较完整的GPU驱动可以做桌面级轻量应用NPU除了YOLOv5s之外也能跑YOLOv8、人脸识别、OCR这类常见模型视频方面支持8K解码配合FFmpeg推流可以做视频处理节点MIPI摄像头接口、MIPI屏幕适配也都有不少可折腾的空间。我个人在实际操作中的体会是别急着一次把所有东西都配齐。先把基础系统跑一周日常使用中遇到的问题会告诉你哪个环节最需要优化比如存储不够了、网络不稳定了、NPU驱动版本不匹配了。这个过程虽然比“照着教程一把梭到底”慢但能让你真正建立起对这套平台的感觉。后续的每篇教程我会沿着这个方向一步步往下带先把地基夯实后面不管是模型转换还是性能调优都会顺畅很多。
返回列表