ARTICLE DETAIL

资讯详情

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

嵌入式开发——芯片读保护

嵌入式开发——芯片读保护 调试器连不上板子报了一堆看不懂的错最后定位到芯片被读保护锁住了。这事在嵌入式开发里太常见。这篇讲清楚原理、判断、解锁和踩坑。一、读保护是什么读保护RDP是 MCU 内部的一道闸门开启后外部调试器读不到 Flash但芯片照常运行。目的是保护出厂固件不被抄。代价有三条调试口基本废掉不能下载、不能单步解锁必然全片擦除——不擦掉就没法保证固件读不走。这是设计不是 bug部分芯片有高级保护等级设上去不可逆芯片直接报废。一句话擦除是解锁的代价不是副作用。二、怎么被锁上的生产环节主动烧写——量产时把选项字节的保护位置位。你拿到的板子大概率是这种程序运行时自锁——固件首次启动自己写选项字节误操作——下载工具勾了下载后保护芯片自己把自己锁了。三、判断是否被锁以 STM32/GD32 为例选项字节区有个RDPGD32 叫OB_SPC。别死记某个固定值不同系列手册口径不一样有的写A5 5A有的写0xAA。判据本质是是不是未保护值具体查你型号的手册。用 J-Link Commander 读一下最快J-Link mem 0x1FFFF800 10读到A5 5A说明没锁FF FF、BB 44之类就是锁了。不过比读寄存器更快的信号是调试器自己说的话日志含义Active read protected STM32 device detectedSTM32 被读保护Secured GD32 device detectedGD32 被读保护能报出这句 等级 Low可解除Error: Failed to initialized DAPDAP 无应答与读保护无关是连接问题Can not attach to CPU同上通常是复位电路或时钟问题第二行最值得记住能报出Secured说明调试口是通的、芯片没废。真正无解的是等级 HighOB_SPC 0xCC那时连连接都建不起来SEGGER 和原厂都救不回。等级OB_SPC调试器可见能否恢复None0xAAFlash、选项字节全开放正常状态Low除0xAA/0xCC外任意值只有选项字节可解除但全片擦除High0xCC什么都看不到永久不可恢复四、解锁手段按成功率从高到低。1. 工具原生解锁首选J-Flash连上后Target → Unsecure ChipJ-Link Commanderconnect时弹确认框选解锁自动全片擦除STM32CubeProgrammer配 ST-Link选Full chip erase对 GD32 兼容性反而很好GD32 All-In-One ProgrammerGigaDevice 官方。2. 手动命令工具自动流程卡住时用手动si SWD speed 1000 # 降速4000 太高易失败 device 你的型号 connect # 弹窗选解锁 mem 0x1FFFF800 10 # 校验不再是上锁值 mem 0x08000000 10 # 校验全 FF 擦除完成兜底可试unlock KinetisJ-Link 隐藏命令对部分 GD32 有效。3. 复位窗口法多数芯片的复位检测窗口极短松手太快就进用户程序、SWD 又关了于是永远解不开NRST短接到 GND保持 2 秒松开在 300600 ms 内立刻发connect或unlock。实测超过 ~800 ms 窗口就关了。这是手动敲命令怎么都不成功的常见原因。4. 串口 / BOOT 模式绕开 SWDSWD 走不通时最稳STM32BOOT0拉高重新上电进系统存储器启动串口 ISP 解锁 烧写GD32同样支持 BOOT0 高电平进 ISP配 GD32 All-In-One Programmer。不依赖调试口只要 MCU 还能启动就能救。五、踩坑清单1.Failed to initialized DAP≠ 读保护。读保护状态下调试器仍能 attach会明确说设备被保护。报 DAP 初始化失败说明连 attach 都没做到要查硬件断电重上电、共地、NRST是否接到调试器、SWD 线上拉 4.7 kΩ、线长 10 cm。2. 一次只改一个变量。同时换器件名和降速率失败了根本不知道是哪个导致的。保留能连通的配置一次只动一项。3. 调试口可能压根没引出来。量产主板常把 SWD 引脚复用掉或关闭调试口。看一眼原理图SWDIO/SWCLK 在板上是不是空的4. 调试器记住了你的选择。J-Link 会把不再询问解锁存进注册表之后直接闷头解锁看不到过程也看不到失败原因reg delete HKCU\Software\SEGGER\J-Link\DontShowAgain /v DontShowAgainUnlockGD32 /fSTM32 的键名是DontShowAgainUnlockSTM不同系列后缀不同。5. 别盲目降级上位机。网上换低版本 J-Link 软件就能解锁流传很广但实测未必有效。若新旧版本表现一致问题就在硬件或芯片状态。换版本前先确认硬件没问题。6. 解锁前想清楚数据要不要。保护生效时读不出来解锁又要全片擦除——这是个死结正是读保护的设计目的。确认固件和标定数据能从别处恢复再动手。六、小结读保护 调试器读不到 Flash代价是解锁必擦除判断看连接日志有无Secured/read protected选项字节是否是未保护值Failed to initialized DAP是硬件问题别当读保护处理解锁优先用工具原生Unsecure Chip/Full chip erase失败再上复位窗口法和 BOOT 模式等级 High 不可逆量产固件里千万别随手写0xCC。先看日志分清是锁了还是连不上再决定解锁还是查线。
返回列表