ARTICLE DETAIL

资讯详情

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

RK3568进Maskrom模式全攻略:UPDATE键、音量键与复位键实测

RK3568进Maskrom模式全攻略:UPDATE键、音量键与复位键实测 调试RK3568开发板的人十有八九都会遇到一个让人血压升高的瞬间刷机刷到一半串口没输出网口ping不通板子彻底变砖接上USB电脑也没反应。这种时候大家第一反应都是“进Maskrom模式救一下”结果发现网上搜出来的教程基本都只写了“按住UPDATE键再上电”这一种操作。但实际干活的时候你会发现有些板卡上根本没有UPDATE键有些板子的UPDATE键位置反人类得不行还有不少RK3566/RK3568方案直接把音量键当成升级入口。这篇文章就把我在RK3568开发板上实测过的所有进入Maskrom模式的方法一次性讲清楚包括音量-键和复位键到底怎么配合使用以及进不去Maskrom时的排查链路。坦白说RK3568这块芯片现在的使用量非常大从商显一体机到NAS主板再到各种工控核心板到处都是它的身影。虽然它的启动流程大体一致但各家板厂在设计按键、引出GPIO时思路完全不同只背一个“按住UPDATE键”的口诀根本不够用。希望这篇内容能帮大家少走点弯路尤其是那些刚接触瑞芯微平台、手头又没有公版EVB的开发者。1. Maskrom模式为什么能救砖从SoC的BootROM说起在动手操作之前我建议先花几分钟搞清楚Maskrom模式到底是个什么东西。很多人把它当成一个“隐藏恢复模式”实际上它的本质远比你想的简单也远比你想的可靠。1.1 Maskrom模式是藏在芯片内部的最后一道防线RK3568这颗SoC内部有一小块出厂固化的启动代码也就是常说的BootROM。这段代码在芯片流片时就被烧死在硅片内部断电不丢、外部也改不了它是整个系统启动链路的第一环。芯片上电之后BootROM会立刻运行然后按照预先设定的启动介质顺序去查找可执行的引导程序。当BootROM能够在eMMC、SD卡、SPI NOR/NAND Flash等介质中找到一个合法的引导代码时就会把控制权交出去整个系统正常启动这时候你看到的是Uboot日志、内核日志一路刷屏。但如果BootROM检查了一圈发现所有外部存储介质里的引导代码都不可用——比如你自己把eMMC里的loader部分给擦掉了或者刷错固件导致引导头损坏——它就会进入一个等待状态把自己枚举成一个USB下载设备等待上位机通过USB接口往芯片里灌代码。这个状态就是Maskrom模式。用生活里的话来打比方BootROM相当于电脑主板上的BIOS自检程序Maskrom模式就是BIOS发现硬盘引导区坏了之后停在的一个“等待外接启动盘”的状态。因为这段自检程序是固化在芯片内部的所以你即使把eMMC、Flash全擦干净了它也照样能运行。这也是为什么Maskrom模式被称为最后的救砖手段——只要SoC本身没烧坏就还有救。1.2 Maskrom模式和Loader模式不是一回事很多新手会把Maskrom模式和Loader模式混为一谈其实这是两个完全不同的阶段。Loader模式指的是BootROM已经从外部存储介质中成功读取了一级引导程序也就是瑞芯微平台的MiniLoader/U-Boot并且这个引导程序已经正常跑起来对外枚举出了一个设备。在这种状态下BootROM已经完成了它的使命代码控制权已经转移到了外部Flash中的引导程序手里。Maskrom模式则完全不同它表示BootROM连一个可用的引导程序都没找到所以BootROM自己还在运行并且对外提供一个最简单的USB下载接口。RKDevTool等烧录工具在连接这种设备时需要先把DDR初始化代码和USB插件也就是常说的MiniLoader通过USB灌进去然后才能继续烧写完整固件。这就是为什么你在烧录日志里经常能看到类似“DDR初始化”的提示。这里有一个很重要的判断技巧在Windows设备管理器里Loader模式下设备通常显示为一个Rockusb Device或者类似的USB下载设备Maskrom模式下RKDevTool的设备列表区会明确显示“MASKROM设备”。在Linux下用lsusb查看Maskrom模式下一般是ID 2207:350bLoader模式下则是ID 2207:350c左右。记住这两个ID后面排查问题会非常有用。2. UPDATE键进Maskrom的标准动作与最容易翻车的三个细节标题里提到的UPDATE键在瑞芯微的公版方案上其实是标准配置。这个按键在不同板卡上丝印千奇百怪有的写UPDATE有的写RECOVERY有的写BOOT还有的干脆写个MASKROM。它们的作用都一样在上电或复位的瞬间把一个特定的GPIO电平状态拉起来让BootROM知道“用户需要进入下载模式”。2.1 标准操作流程先按住再上电最后松手官方文档里写的标准操作其实只有四步但每步都有讲究先把USB线一端插到开发板的Type-C或OTG口上另一端先不接电脑。用一只手按住UPDATE键不要松开另一只手把USB线的另一端插到电脑上。如果开发板还需要外部供电比如12V DC在插好USB之后再给板子上电。观察到电脑端识别出设备之后再松开UPDATE键。这里面的关键点在于UPDATE键必须在芯片上电复位之前就处于按下状态。因为BootROM只在启动的最初一小段时间窗口里去采样这个GPIO电平错过这个窗口等Uboot都跑起来再按系统压根就不会理你。我自己实测过的几块RK3568开发板按键采样窗口大概只有几百毫秒有些板卡甚至更短。所以最稳妥的做法就是先按住键、再通电而不是先通电再按键。这个顺序一错后面全白搭。2.2 最容易翻车的三个细节按UPDATE键这个方法听起来简单但实际翻车率非常高。我总结了三个最常见的坑第一很多人的USB线是充电线不是数据线。尤其是手边随便抓一根Type-C线用的时候很容易拿成只能充电、不能传数据的线。这种线插上去电脑端根本不会枚举任何设备你还傻乎乎地以为按键时机不对。判断方法很简单把手机用这根线连电脑看能不能识别到设备能识别到才有资格给开发板用。第二松键时机太早。不少人的操作是“按住按键、插上USB、看到屏幕上有反应就松手”这其实不对。正确做法是要等到设备管理器里出现Rockusb Device或者RKDevTool的设备列表里出现MASKROM设备之后再松开按键。如果松太早板子可能因为按键弹起而继续走正常启动流程结果从Loader模式启动或者干脆又卡在启动半路。第三供电方式没搞对。部分RK3568开发板的Type-C口本身就可以给整板供电而有些板卡的Type-C口只是USB通信口必须同时接12V电源。如果你只插USB不接电源板子可能短暂上电但电流不够导致BootROM还没跑完就掉电了表现就是USB设备反复枚举然后又消失。2.3 怎么验证是否真的进入了Maskrom模式进入Maskrom模式之后判断方法其实很简单Windows下打开设备管理器在“通用串行总线设备”或“通用串行总线控制器”下如果能看到一个新的USB设备显示为Rockusb Device、Maskrom Device或者类似名称就说明已经进Maskrom了。如果RKDevTool界面上的设备列表区显示“MASKROM设备”那就更直接。Linux下执行lsusb看到2207:350b这个ID基本就是Maskrom模式。我用过很多块RK3568的板子Linux下的2207:350b要比Windows下的设备名稳定得多因为Windows下的名称会因为驱动版本不同而变化而USB的vendor ID和product ID是写在USB描述符里的不会变。所以如果你在Linux下调试直接记这两个数字就够了。3. 音量-键不是每个板子都能用触发逻辑与实测流程说完UPDATE键再来讲标题里提到的音量-键。很多人第一次听说“音量-键能进Maskrom”的时候都会愣一下开发板上哪里来的音量键其实这是瑞芯微方案中相当常见的一种设计尤其在那些带Android系统的电视盒子、商显一体机、学习平板方案上特别常见。3.1 为什么板厂会把音量键当作升级入口原因很朴素这些产品的目标用户是普通消费者机身上不会给你留一个写着“UPDATE”的调试按键。但厂家又必须给售后留一条恢复路径所以就把音量减键复用了做成一个隐藏的升级触发开关。在一些方案里音量键也有类似功能甚至音量和音量-同时按下会进入别的模式这个要看具体固件怎么定义。这种设计的触发逻辑和UPDATE键其实非常像BootROM或者第一级Loader在启动时会去检测一个GPIO的电平状态这个GPIO恰好接的是音量减键对应的按键。用户长按音量-键的同时给设备上电就相当于把那个GPIO拉到了有效电平于是系统就知道“该进入下载模式了”。不过有一点需要特别说明音量-键进Maskrom这个功能并不是RK3568 SoC自带的硬性能力而是由开发板上的硬件电路设计和固件配置共同决定的。如果一块板卡在硬件设计时根本没有把音量键接到对应的boot脚上或者Uboot里没做这个检测逻辑那么按音量-键就一点反应都没有。换句话说看到这里千万不要以为自己手头任何板子都能用音量键进Maskrom要先确认你手上这块板卡确实做了这个支持。3.2 实测流程断电状态找准时机再动手在确认板卡支持音量键进入Maskrom的前提下操作流程和UPDATE键几乎是一样的板子完全断电USB线先不接电脑。按住音量-键不放。注意是长按不是点按。保持按住的状态插上USB线或者给板子上电。等待电脑端识别出设备后再松手。和UPDATE键一样松手时机的判断标准是设备管理器出现新设备或者RKDevTool显示MASKROM设备。我实际测过几块RK3568的电视盒子方案板有一个经验音量-键的触发窗口比UPDATE键稍微宽一点但也不能说慢悠悠地按。最稳妥的办法还是先把音量-键按住然后再供电保持到系统识别设备为止。还有一点有些盒子板在音量-键被按住时前面的指示灯会处于一个特定的闪烁状态这其实是一个很好的视觉反馈信号说明固件已经检测到了按键动作。如果你手头的板子有指示灯可以留意一下。另外需要注意的是如果一块板卡同时有UPDATE键和音量键而且两个按键都接在同样的检测逻辑上那优先级怎么算实测下来通常是按住任何一个都能进。但如果两者设计的检测GPIO不同可能UPDATE键直接进Maskrom而音量键只进Recovery模式。所以拿到新板子第一件事就是去翻原理图确认按键接的是哪个GPIO、固件里怎么配置的。3.3 固件配置层面指令级细节从固件配置的角度来看音量键进Maskrom这个功能和Uboot的关系非常大。在瑞芯微平台的Uboot源码里通常会在配置头文件里定义按下哪个按键执行什么操作。比如有的板卡配置是#define CONFIG_MASKROM_KEY PAD_UART2_TX #define CONFIG_MASKROM_KEY_GPIO GPIO3_B4简单理解就是在Uboot编译阶段指定一个GPIO作为“Maskrom触发引脚的检测口”并给定一个按键映射。系统在启动时会在特定阶段去读这个GPIO的状态如果读到有效电平就放弃正常启动流程跳回Maskrom下载模式。这个配置在厂家提供的SDK里一般已经按实际硬件设计配好了不需要你手动去改。但如果你是自己在做板子或者想把一个普通GPIO扩展成Maskrom触发按键那就要在Uboot的板级配置文件里添加对应的引脚宏定义同时确认这个GPIO没有被其他功能复用。很多人在这块踩坑是因为选的GPIO被eMMC或者串口复用了导致按键死活没反应用万用表一量才发现引脚电平根本拉不到预期状态。4. 复位键的真正用法配合工具卡住引导时机最后说到复位键。这个键在标题里出现估计很多人都想知道“按复位键是不是也能进Maskrom”。直接回答不能。复位键本身并不会让RK3568进入Maskrom模式它的真正作用是配合其他按键和上位机工具在特定时机强制SoC重新启动从而让烧录工具能够抓住设备。4.1 复位键不能单独完成触发RK3568开发板上的复位键硬件上一般直接接到SoC的复位引脚按下去就是把整个SoC复位重启。它本身不会告诉BootROM“我要进Maskrom”它只是让系统重新走一遍上电引导流程。如果Flash里的引导代码是坏的重启之后BootROM依然会发现没有合法引导程序于是进入Maskrom——但这本质上还是因为“外部介质不可引导”而不是因为“按了复位键”。所以如果你面对的是一块没有任何按键、但板上有复位键的板子同时Flash里的loader已经被刷坏了那么按一下复位键确实有很大概率直接进Maskrom。但如果Flash里的loader是好的按复位键只是正常重启不会进入Maskrom。也就是说复位键更像是“帮你重新执行一次上电流程”的按钮它能进Maskrom的前提条件是整个启动介质本身已经不可用了或者你在其他按键配合下把启动流程打断在了正确的位置。4.2 配合上位机工具的完整操作时序复位键真正发挥价值的时候是在你已经有一个可用的烧录工具、但设备被系统占着或者引导太快导致工具抓不住的情况下。以RKDevTool为例典型的配合复位键的操作是先正常上电让板子运行到某个状态。如果板子还能进Uboot或者内核不用管只要USB口还能被电脑识别就行。打开RKDevTool点击“切换设备”或者“升级固件”页面准备开始烧写。按住UPDATE键或者音量-键不放然后按一下复位键让板子重新引导。当板子重新上电的瞬间BootROM检测到UPDATE键的电平有效就会进入Maskrom或Loader模式RKDevTool立刻识别到设备并开始烧写。这个流程里的关键在于“时机”你已经提前把工具准备好并且复位键触发的重新引导让BootROM在极短的时间内重新检测按键状态这样工具就能准确抓取设备不用反复手动插拔USB线。在Linux环境下我更喜欢用这种方式因为不用和设备管理器较劲。先把板子复位到Maskrom状态然后执行rkdeveloptool ld如果能看到设备说明时机抓对了。如果没有就再按一下复位键重试。4.3 如果没有复位键怎么办很多精简版的核心板或者一体机主板连复位键都没有。这种情况下想重新触发上电流程最直接的办法就是断电再上电。拔掉电源再插上效果等同于按了一次复位键。如果你连电源都不方便拔那还有一个办法按住升级键的同时短接一下板子上的复位测试点效果也一样。不过我自己用的最多的是另外一个思路如果板卡有串口而且串口还能进Uboot命令行那么可以通过在Uboot环境里执行sar两层、usb start或者手动跳转命令把设备强制改为Maskrom加载模式。但这就涉及Uboot命令行操作每个板卡的命令略有区别建议直接看板卡的串口日志和SDK里的Uboot帮助命令。篇幅有限这里不展开。5. 板卡差异与排查链路从按键识别到设备枚举失败写到这里按键的基本用法都讲完了。但实际工作场景中最烦人的往往不是不知道按键怎么按而是按了半天设备就是不识别。这个章节把不同板卡的差异、Maskrom进不去的排查链路和兜底方案都梳理一遍。5.1 公版开发板、第三方核心板、盒子方案的按键布局先看瑞芯微公版EVB。公版EVB上几乎都会同时引出升级按键和恢复按键丝印一般是MASKROM和RECOVERY两者功能不同。MASKROM键直接触发Maskrom模式RECOVERY键触发Android系统的Recovery模式。这两个键的GPIO在SDK里都是预配置好的拿来即用。第三方开发板和核心板就五花八门了。产业用的核心板不带底板的基本没有按键全部通过底板引脚引出。这时候得去底板原理图里搜索UBOOT、MASKROM、RECOVER、BOOT等关键字找到对应脚位后自己飞线短接才能进Maskrom。我之前用过一块RK3568核心板底板上留了一个三针排针丝印是BOOT对应关系分别写着1、2、3短接其中两脚就能进Maskrom。这种设计在量产的工控板里非常常见。盒子方案电视盒子、商显则基本没有RECOVERY实体键而是把音量键做成组合功能。有些盒子在开机状态下长按音量-十几秒会进入恢复模式有些则必须在关机状态按住音量-再上电。不同固件定义不一样最好先查一下对应方案的说明书或者问方案商。顺带说一句RK3566和RK3568虽然型号不同但在进入Maskrom模式的机制上完全一致都是走BootROM的USB下载通道。两者的主要差异在封装和接口资源上比如RK3568支持的显示和PCIe等外设更丰富但按键触发这类基础逻辑没有区别。如果你之前在RK3568上练熟了换到RK3566的开发板上不会有任何上手成本。5.2 Maskrom进不去的完整排查链路当你按住按键、插上USB、电脑却死活没有反应的时候按照下面的顺序去排查能省下大把瞎折腾的时间。第一步确认线材。先用手机或移动硬盘验证这根USB线是不是数据线。很多人在这里就卡住了换了三根线才找到一根能用的。第二步确认驱动。Windows下RK3568的Maskrom设备需要安装瑞芯微的DriverAssitant驱动。打开设备管理器如果看到一个带黄色感叹号的未知设备多半是驱动没装好重装一下再插设备。第三步确认供电。这是最隐蔽的一个坑。有些RK3568开发板在没有插入外部电源时USB口提供的电力不足以让BootROM稳定跑完初始化流程。表现就是设备枚举一下又消失或者压根不枚举。解决办法是接上板卡标称的外部电源5V/2A或12V再按住按键重新上电。第四步确认按键确实接到了正确的GPIO上。这个信息只能从原理图和Uboot配置里确认。用万用表测按键两端按下时看电平有没有变化变化方向是否和BootROM要求的一致。很多情况下按键触点氧化或者虚焊也会导致按键根本没被BootROM采样到。第五步确认不是连接到电脑端的USB口有问题。开发板最好直连电脑主板上的USB口不要经过Hub尤其不要经过那种不带外部供电的Hub。RK3568在Maskrom模式下虽然枚举速度不算快但USB Hub的电源管理策略会经常打断设备枚举实测很多莫名其妙的识别失败都是Hub造成的。如果以上五步都检查过还是进不了Maskrom那还有一个终极方案短接eMMC或SPI Flash的时钟脚。原理很简单——BootROM找不到一个合法的时钟信号就读不到外部Flash里的引导代码于是直接落入Maskrom等待状态。这个操作需要找到eMMC或FLash芯片的CLK引脚在按住升级键上电的同时用镊子把CLK引脚短接到地。风险非常高短接错引脚可能直接烧芯片一般只在应急救砖时用量产的板卡调试不建议轻易尝试。5.3 识别到的是Loader而不是Maskrom怎么强制切换有时候你会遇到这样的情况设备能在工具里看到但显示的既不是MASKROM设备也不是完全没反应而是Loader设备。这说明BootROM其实已经从Flash里读出了一个可用的引导程序并且引导程序已经愉快地跑起来了只是这个引导程序本身可能有问题比如分区表坏了导致系统卡在某处启动不起来。这时候如果想强进Maskrom就需要让BootROM不要去执行Flash里的引导程序。方法是在上电瞬间保持升级键按下同时用工具在极早的时机复位设备。有些烧录工具在Loader模式界面下也提供了“切换Maskrom”的选项原理是让上位机给Loader发送一个复位命令迫使Loader在复位后不再尝试加载系统的后续部分而是重新把设备枚举成Maskrom。在Linux下rkdeveloptool rdreset device命令也可以实现类似效果。先识别到Loader设备执行复位命令然后非常快地重新上电并按住升级键就有机会在BootROM重新检测介质的过程中把它带入Maskrom。这个操作需要一点手速但多试几次成功率还是可以的。我这里还有一个经验分享如果板子还能进Uboot命令行完全不需要这么折腾。直接在Uboot控制台里执行md 0、mw之类的命令把Flash前几个扇区清掉让BootROM下次启动时找不到引导程序它就自然掉进Maskrom了。这个方法对熟悉Uboot调试的人非常友好比特意去短接CLK安全得多。6. 写在最后把救砖路径提前固化到工作流里每次拿到一块新的RK3568/RK3566开发板我的习惯是先不看性能参数直接做三件事通电看串口日志、确认烧录工具能不能识别设备、把进入Maskrom和Loader的方式手动试一遍并记录下来。这套流程下来后面调试过程中即使板子出了什么幺蛾子我心里也有底知道最快能通过什么方式把它拖回下载模式。按键这类东西看起来不起眼但在现场调试的时候真的是救命稻草。尤其是借来的板子、客户寄过来的样品、没有外壳的裸板丝印不全、原理图也没有只能靠经验判断哪里可能是升级按钮。我踩过不少这种坑最夸张的一次是RK3568的盒子上根本没有实体按键最后从USB座的CC引脚引线出来才触发了Maskrom下载模式。如果你手头正好在调RK3568相关的板子不妨现在就花五分钟确认一下你手上这块板卡支持哪几种进Maskrom的方式写进你自己的调试备忘里。等哪天它真变砖了你会感谢这五分钟的。
返回列表