首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
RK3506 裸机开发(四):Ubuntu 下烧写全流程与避坑指南
📅 2026/10/16 3:00:02
✍️ 爱科研究院
👁 阅读 3,247
系列第四篇。前三篇我们只往内存里写代码这一篇开始碰 Flash。本文围绕 ATK-DLRK3506B Ubuntu梳理 Rockchip 烧写模式、进入 MaskROM/Loader 的方法、upgrade_tool常用命令以及实际踩过的坑。摘要本文主要讲清楚四件事Rockchip 平台下 MaskROM / Loader / Recovery / Normal Boot 的区别ATK-DLRK3506B 上如何正确进入 MaskROMUbuntu 下如何用upgrade_tool/rkdeveloptool识别设备、下载 Loader真正写 Flash 的UF/WL命令及其风险。一句话结论动手改 Loader / 分区表之前先确认自己能进 MaskROM。那是唯一的“变砖救援”入口。⚠️ 本文实测边界请先看这一段文中lsusb/upgrade_tool LD的输出按键进入 MaskROM / Loader 的方法MaskROM 下RCI/RFI失败的现象但DB / UF / WL 这些真正涉及存储读写的命令本文作者尚未实测。文中会逐条标注。命令出自官方工具帮助与手册实操前请自行确认风险。目录1. 烧写模式介绍2. ATK-DLRK3506B 按键对应关系3. 进入 MaskROM4. MaskROM 下一步DB 下载 Loader5. 真正写 FlashUF / WL6. rkflash.sh 与 upgrade_tool 怎么选附录 A命令速查附录 B状态速查附录 C本文实测边界1. 烧写模式介绍Rockchip 平台硬件设备常见运行模式如下。只有当设备处于MaskROM或Loader模式时并且通过 USB 线将开发板 OTG 口连接到电脑才能烧写镜像或更新板上镜像。模式是否支持烧录描述MaskROM支持Flash 未烧录镜像时芯片会引导进入 MaskROM可进行初次镜像烧写调试过程中若无法正常进入 Loader也可进 MaskROM 烧写Loader支持可进行镜像烧写、更新升级可通过烧写工具单独烧写某一个分区镜像方便调试Recovery不支持通过引导 recovery 镜像进入主要用于升级、恢复出厂设置Normal Boot不支持系统正常启动引导 rootfs加载根文件系统大多数开发在此模式下进行1.1 进入 MaskROM 的通用方法先连接电源适配器和 OTG。开发板未烧录过镜像上电后自动进入 MaskROM开发板烧录过镜像按住 UPDATE 键板子不同没有此按键则按 MASKROM 键然后上电或复位开发板烧录过镜像按住 V- 键音量-然后上电或复位在 U-Boot 命令行下执行rbrom。1.2 进入 Loader 的通用方法先连接电源适配器和 OTG。按住 V 键音量没有则按 RECOVER 键然后上电或复位在 U-Boot 命令行下执行download在 Linux 系统下通过串口或 ADB 执行reboot loader。出处正点原子《固件烧写参考手册 V1.0》§2.1 · PDF 第 11 页。2. ATK-DLRK3506B 按键对应关系手册是通用文档里面提到的是手机板的 V / V- / UPDATE 键。但ATK-DLRK3506B 上根本没有这些键。实际对应关系如下已用单键隔离实验实测确认目标按键丝印拉低的 ADC由谁采样主机上看到MaskROMKEY2MASKROMSARADC_IN0_BOOTBootROM2207:350f bcdUSB 2.00LoaderKEY3RECOVERYSARADC_IN1_RECOVERLoader 阶段2207:350f bcdUSB 2.01复位KEY1RESET—NPOR_L—对应关系手册的 “UPDATE / MASKROM 按键” → 本板KEY2手册的 “RECOVER 按键” → 本板KEY3本板没有 V / V- 音量键两者谁更可靠KEY2。因为它由 BootROM 采样不依赖板上任何固件而 KEY3 由 Loader 阶段采样依赖 Loader 区完好。所以改 Loader / 分区表之前先确认自己会进 MaskROM。3. 进入 MaskROM3.1 第一步确认线插对了口本文最值钱的一段ATK-DLRK3506B 上有两个长得一模一样的 Type-C 口用途完全不同口位置用途主机上看到能烧写吗标 USART 丝印的 Type-C底板调试串口CH3431a86:55d3❌ 不能核心板上的 Type-C核心板USB 从机 / OTG2207:xxxx✅ 就靠它正点原子《ATK-DLRK3506B 快速体验 V1.2》§3.3.2 原文在 ATK-CLRK3506B 核心板上有一个 USB TypeC 接口这个接口可以使用 adb 功能就是作为从机。……另一个标有 USART 丝印的 USB TypeC 接口不做 ADB 功能。这是我实际踩过的坑一开始把线插在 USART 口上lsusb里只有1a86:55d3一个2207都没有。按 KEY2 按了很多次都毫无反应——因为烧写根本不走那根线。一分钟自检法把线插到核心板 Type-C 后让板子正常启动 Linux不用按任何键。如果lsusb出现2207:0006ADB 设备说明口找对了、线也是数据线。口不对的话按键按多少次都不会有反应。3.2 第二步按键进 MaskROM✅不需要拔掉调试串口。实测两根线可以同时插着——主机上1a86:55d3调试串口与2207:350frockusb并存互不影响。正常开发时“调试串口 OTG”两根线都插着即可。⚠️但要拔的是 OTG 那根不是标 USART 丝印的那根。本板实测可以用「拔掉 OTG 线标 USART 丝印的那根→ 再插回去」当作断电重上电来用。推荐手法先按住键再上电。拔掉 OTG 那根 USB 线板子断电按住核心板 KEY2丝印 MASKROM不放保持按住把 OTG 线插回去板子上电继续按住 3–5 秒再松手。或者只用板上的按键按住 KEY2 不放保持按住按一下 KEY1RESET继续按住 3–5 秒再松手。优先用第一种先按住键、再上电。不要用“一只手按住键、另一只手去按 RESET”——采样那一瞬间很容易已经松手。实测中 KEY3 用 RESET 方式失败过 1 次改用断电冷启动立刻成功。3.3 第三步验证是否进入 MaskROM方法 1只看有没有最简单不需要 rootbashlsusb -d 2207:实测输出textBus 003 Device 116: ID 2207:350f Fuzhou Rockchip Electronics Company看到这行就说明 BootROM 已经在 USB 下载循环里了。方法 2区分是 MaskROM 还是 Loader不需要 root第一步先列出所有 USB 设备端口bashls /sys/bus/usb/devices/实测输出类似text1-0:1.0 3-1 3-10:1.1 3-2:1.0 3-4 3-4.1:1.0 3-4.2:1.0 3-4.4 3-6:1.0 4-0:1.0 usb3 2-0:1.0 3-10 3-1:1.0 3-2:1.1 3-4.1 3-4.1:1.1 3-4.2:1.1 3-4.4:1.0 3-6:1.1 usb1 usb4 3-0:1.0 3-10:1.0 3-2 3-2:1.2 3-4:1.0 3-4.2 3-4.3 3-6 3-6:1.2 usb2这里先建立一个概念带:的比如3-4.4:1.0是 USB 接口不带:的比如3-4.4才是 USB 设备usb1/usb2/usb3/usb4是根 Hub不是我们要找的设备我们要找的 Rockchip 设备通常是这种不带:的目录。第二步从端口里找出 RockchipVID 2207不用一个个点开直接终端执行bashgrep -H 2207 /sys/bus/usb/devices/*/idVendor实测输出类似text/sys/bus/usb/devices/3-4.4/idVendor:2207这里/sys/bus/usb/devices/3-4.4/idVendor说明端口就是text3-4.4如果你想看得更完整也可以执行bashfor d in /sys/bus/usb/devices/*; do [ -f $d/idVendor ] || continue if [ $(cat $d/idVendor) 2207 ]; then echo 端口: $d echo -n VID:PID cat $d/idVendor; echo -n :; cat $d/idProduct; echo echo -n bcdUSB cat $d/version echo fi done输出会类似text端口: /sys/bus/usb/devices/3-4.4 VID:PID 2207:350f bcdUSB 2.00第三步看 version判断模式知道端口后直接看这个端口的versionbashcat /sys/bus/usb/devices/3-4.4/version输出可能是text2.00或者text2.01判断规则bcdUSB末位模式2.00 / 1.10 / 2.10 偶MaskROM2.01 / 1.11 奇Loader也就是说text2.00 - MaskROM 2.01 - Loader原理upgrade_tool/rkdeveloptool自己就是靠这个最低位判型的。源码RKScan.cpp:400-405cppusTemp (*iter).usbcdUsb 0x1; if (usTemp 0) (*iter).emUsbType RKUSB_MASKROM; else (*iter).emUsbType RKUSB_LOADER;所以 MaskROM 和 Loader 是同一个 PID2207:350f唯一区别就在这一位。可选一条命令自动判断如果不想分三步也可以直接把下面这段扔进终端bashfor d in /sys/bus/usb/devices/*; do [ -f $d/idVendor ] || continue if [ $(cat $d/idVendor) 2207 ]; then v$(cat $d/version 2/dev/null) [ -n $v ] || continue last${v##*.} if [ $((last % 2)) -eq 0 ]; then modeMaskROM else modeLoader fi echo -n $d VID:PID cat $d/idVendor; echo -n :; cat $d/idProduct echo bcdUSB$v Mode$mode fi done输出示例text/sys/bus/usb/devices/3-4.4 VID:PID2207:350f bcdUSB2.00 ModeMaskROM看到ModeMaskROM或ModeLoader即可。在这里我写了个shell来方便快速判断并附带视频如下源码可见4. MaskROM 下一步DB 下载 LoaderMaskROM 状态下能做的事非常有限。一个很有说服力的反证实测bash$ sudo ./upgrade_tool RCI Read Chip Info quit,Creating comm object failed! $ sudo ./upgrade_tool RFI Read flash Info quit,Creating comm object failed!原因是RCI读芯片信息/RFI读 Flash 信息/PL分区表这些命令都要Loader 在线才支持BootROM 不管这些。4.1 下载 LoaderMaskROM 的第一步永远是bashsudo ./upgrade_tool DB MiniLoaderAll.binDB DownloadBoot把 Rockchip 的 LoaderMiniLoaderAll.bin下载进 SRAM/DDR 并运行它。它会初始化 DDR并提供完整的 rockusb 协议。物理机 Ubuntu 下DB需要写 USB 设备直接加sudo运行即可。如果不想每次都 sudo可以配置 udev 规则但图省事的话直接 sudo 最方便。✅DB不写 Flash是安全的——按一下 RESET 就完全恢复。⚠️ 但本文作者尚未实测这一步命令出自官方工具帮助与手册。下载成功后设备会变成 Loader 模式LD的输出里Mode变成LoaderbcdUSB也从2.00变成2.01。MiniLoaderAll.bin 从哪来可以从这些位置找开发板资料 A 盘05、开发工具/02、RKTools/windows/RKDevTool/rockdev/rk3506-package-file/或从官方update.img里拆出来rkImageMaker -unpack5. 真正写 FlashUF / WL到这一步才是“烧写”两个字的本意。5.1 整包升级UFbashsudo ./upgrade_tool UF rk3506b_update_ubi_squashfs.img⚠️风险与前提这会覆盖板上 SPI NAND 里的整个系统写了就回不去除非再烧回来本板没有 eMMC存储是 SPI NAND TF 卡所以要用rk3506b_update_ubi_*.imgNAND 用不是rk3506b_update_sd.img那个是给 TF 卡的动手前必须先确认自己能进 MaskROM§3——那是唯一的救援入口⚠️ 本文作者尚未实机执行过这一步命令出自手册与工具帮助。5.2 单独烧某个分区WL开发调试更常用的是WLWriteLBA按扇区号写。WL 的参数是存储扇区号LBA不是内存地址写错 LBA 会破坏分区表务必先查 SDK 的parameter.txt。6. rkflash.sh 与 upgrade_tool 怎么选正点原子《固件烧写参考手册 V1.0》§2.3 用的是 SDK 顶层脚本bashsudo ./rkflash.sh uboot # 只烧 uboot sudo ./rkflash.sh all # 全烧 sudo ./rkflash.sh update # 烧 update.img它确实方便但前提是你已经下载并解压了 SDK 源码。脚本在 SDK 顶层工具在textSDK/tools/linux/Linux_Upgrade_Tool/如果手上还没有 SDK官方upgrade_tool是等价的独立工具不需要 SDK。开发板资料 A 盘里就有textA盘/05、开发工具/02、RKTools/linux/Linux_Upgrade_Tool/ 顺带一提手册 §2.3 自己也写着“Ubuntu 下烧写不是必须的”并建议先在 Windows 下完成一次烧写确认线和流程都正常再来折腾 Ubuntu 下的连接时机。附录 A命令速查目的upgrade_toolrkdeveloptool列设备LDld下载并运行 Loader初始化 DDRDB Loaderdb Loader读芯片信息RCI需 Loader 在线—读 Flash 信息RFI需 Loader 在线—分区表PL需 Loader 在线—整包升级⚠️UF update.imguf update.img写 LBA⚠️WL BeginSec Filewl BeginSec File复位设备RDrd⚠️ 官方upgrade_tool里没有“写内存并执行”的命令rkdeveloptool上游版也没有。本项目用的是打过补丁、加了wm/rm/rexec的版本。附录 B状态速查主机上看到含义能做什么没有2207不在烧写模式什么都烧不了2207:350fbcdUSB偶2.00MaskROM只能先DB下 Loader2207:350fbcdUSB奇2.01Loader可直接写存储/分区2207:0006⚠️ 板子在跑 LinuxADB 设备禁止DB/WM/rexec附录 C本文实测边界内容状态KEY2 → MaskROM、KEY3 → Loader 的按键对应✅ 实机实测单键隔离实验2207:350f bcdUSB奇偶判型✅ 实机实测 与官方工具交叉验证一致lsusb/upgrade_tool LD/rkdeveloptool ld的输出✅ 实机实测MaskROM 下RCI/RFI失败✅ 实机实测LD不需要 sudo、DB/RCI/RFI必须 sudo否则Creating Comm Object failed!✅ 实机实测含/dev/bus/usb权限核对两个 Type-C 口的用途区分✅ 手册原文 实机端口观察调试串口与 OTG 可同时插着✅ 实机实测两设备并存DB下载 Loader 成功⚠️ 未实测本机 sudo 需密码待补Loader 下RCI/RFI/PL能否成功⚠️ 未实测依赖上一条UF/WL真正写 Flash⚠️ 未实测本文实测部分对应的原始证据text../data/evidence/boot_mode_probe_20260926.md ../data/evidence/mode_key_mapping_20260926.log结语Ubuntu 下烧写 RK3506最容易卡住的不是命令本身而是线插错口把 OTG 插到了 USART 口按键时序不对没有先按住 KEY2 再上电权限不够LD能跑DB却报Creating Comm Object failed!MaskROM 下乱试命令RCI/RFI/PL本来就需要 Loader 在线还没确认能进 MaskROM就急着改 Loader / 分区表。再强调一次先确认自己能稳定进入 MaskROM再动 Flash。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/16 3:00:02
FreeRTOS时间片轮转调度:原理、配置与工程实践
2026/10/16 3:00:02
用不到的色号怎么办?深入perler-beads颜色排除与自动重映射算法实现
2026/10/16 3:00:02
Qt通过HTTP连接企业微信群机器人发送消息实战指南
2026/10/16 4:05:08
OpenClaw升级避坑指南:从2.3.x到2.4.0的完整实战记录
2026/10/16 4:05:08
K8s探针实践:Java服务假死场景下liveness与readiness配置指南
2026/10/16 4:05:08
Odoo远程连接PostgreSQL配置指南:从监听、认证到排错
2026/10/16 4:05:08
Typeoff深度测评:免费平替Typeless,双平台体验与功能对比
2026/10/16 4:05:08
Autopsy数字取证实战:从镜像分析到证据报告全流程
2026/10/16 4:00:08
字节码指令全解析:从javap到JVM性能调优实战
2026/10/16 0:04:49
HCIA-AI V3.5 模拟题库从零搭建:知识点标签、组卷算法与错题分析
2026/10/16 0:04:49
游戏项目Shader清理实战:静态扫描与动态验证双轨并行
2026/10/16 0:04:49
比特币白皮书深度拆解:从双重支付到共识机制的核心设计
2026/10/16 1:17:36
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/16 1:17:35
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/16 1:17:35
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/16 1:17:35
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)