RK3506 裸机开发(四):Ubuntu 下烧写全流程与避坑指南
系列第四篇。前三篇我们只往内存里写代码这一篇开始碰 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。

相关新闻

FreeRTOS时间片轮转调度:原理、配置与工程实践

FreeRTOS时间片轮转调度:原理、配置与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 2:59:58 阅读更多 →
用不到的色号怎么办?深入perler-beads颜色排除与自动重映射算法实现

用不到的色号怎么办?深入perler-beads颜色排除与自动重映射算法实现

【免费下载链接】perler-beads 拼豆底稿生成器 (Perler Beads Generator) 项目地址: https://gitcode.com/gh_mirrors/pe/perler-beads 点击查看 免费下载 perler-beads 是一个开源的拼豆底稿生成器:上传任意图片,即可自动输出带色号标注的拼…

2026/10/16 2:59:58 阅读更多 →
Qt通过HTTP连接企业微信群机器人发送消息实战指南

Qt通过HTTP连接企业微信群机器人发送消息实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 2:59:58 阅读更多 →

最新新闻

CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

1. 从一道CTF杂项题名看起:为什么“啊哒~”不是卖萌,而是信号“BugkuCTF-Misc:啊哒~”——第一次在某高校CTF训练平台看到这个标题时,我下意识点开想看看是不是新出的搞笑彩蛋题。结果发现它被归在Misc(杂项&#xff0…

2026/10/16 3:52:10 阅读更多 →
CANN一站式算子开发工具:从工程生成到性能优化的完整实践

CANN一站式算子开发工具:从工程生成到性能优化的完整实践

做AI算子开发的朋友,应该都有过这种体验:需求一句话就说完了——“写个自定义算子”,真正动手却要在工程搭建、参数定义、调试、性能调优上来回折腾。如果恰好是在一款新的AI芯片上跑,工具链又不成熟,那痛苦程度直接翻…

2026/10/16 3:52:10 阅读更多 →
Win10下VMware安装CentOS 7.9并配置静态IP与外网访问

Win10下VMware安装CentOS 7.9并配置静态IP与外网访问

1. 为什么要在Win10上折腾CentOS 7.9虚拟机很多刚接触Linux运维或者后端开发的朋友,第一道拦路虎不是命令本身,而是“我该把系统装在哪”。直接把自己的主力Windows 10笔记本格掉装Linux,显然不现实——办公、聊天、看文档都还得靠它。退而求…

2026/10/16 3:52:10 阅读更多 →
深度学习为何持续流行:从特征学习到端到端训练的范式变革

深度学习为何持续流行:从特征学习到端到端训练的范式变革

1. 从一张老照片说起:深度学习到底改变了什么2012年之前,如果你在一场计算机视觉的学术会议上说“我们用一个端到端的神经网络把图像分类错误率砍掉一半”,大概率会被审稿人反问:“你的特征工程做了什么?为什么不用SIF…

2026/10/16 3:52:10 阅读更多 →
WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用

WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用

WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用 【免费下载链接】microsoft-ui-xaml WinUI: a modern UI framework with a rich set of controls and styles to build dynamic and high-performing Windows applications. 项目地址: https://g…

2026/10/16 3:52:10 阅读更多 →
PL/0编译器C语言实现:从词法分析到解释执行的完整教学级编译流程

PL/0编译器C语言实现:从词法分析到解释执行的完整教学级编译流程

简介:本资源是N.Wirth教授经典PL/0语言编译器的C语言实现源码,面向编译原理初学者、高校计算机专业学生及教学实践者,用于深入理解词法分析、语法分析、语义处理与目标代码生成等编译全流程核心机制。压缩包为11KB的ZIP格式,共含2…

2026/10/16 3:51:09 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →