GD32读保护解除

本文介绍了如何使用JlinkCommander工具解除单片机的读保护。通过特定的内存地址写入解锁密钥,清除错误标志位,并执行擦除和编程操作,最终恢复默认值并重新开启保护。详细步骤包括查看和修改SPC字节、解锁FMC_Bank0以及执行相关寄存器操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读保护现象

  开启读保护后,jflash 可成功连接,但是什么也做不了。
在这里插入图片描述

但是通过 Jlink Commander 是可以读写其寄存器的:
在这里插入图片描述
最开始两个字节不是A5 5A,表示读保护开启。

读保护解除

通过 ?字符,可查看Jlink Commander 支持的命令及其语法:
在这里插入图片描述

w4		// 写 32 bit 数据至指定地址内存,语法为 w4 <addr> <data>, 均为 hex 格式
mem		// 读取指定内存的制定字节数据,语法为 mem <addr> <numBytes>, 均为 hex 格式
mem32	// 读取指定内存的多组 4Bytes(item) 数据,语法为 mem <addr> <numItems>, 均为 hex 格式

通过 Jlink Commander 可以读写单片机寄存器,那么修改OB相关寄存器即可解除读保护,过程如下:

// 查看当前 SPC 字节
mem 0x1fffF800 0x10 

// 解锁 FMC_Bank0
w4 0x40022004 0x45670123 //FMC_KEY = UNLOCK_KEY0;
W4 0x40022004 0xcdef89ab // FMC_KEY = UNLOCK_KEY1;
// 查看寄存器
mem32 0x40022000 0x10
w4 0x40022008 0x45670123 //FMC_OBKEY = UNLOCK_KEY0;
w4 0x40022008 0xcdef89ab //FMC_OBKEY = UNLOCK_KEY1;
mem32 0x40022000 0x10
// 清楚可能存在的错误标志位
w4 0x4002200C 0x00000034  //fmc_flag_clear(FMC_FLAG_PGERR | FMC_FLAG_WPERR | FMC_FLAG_END);
// OB 字节擦除指令使能
w4 0x40022010 0x0220     // OBER   
// 执行擦除
w4 0x40022010 0x0260     //STAR   
// 使能 OB 字节编程
w4 0x40022010 0x0270     //OBPG 
// 恢复默认值,退回未保护态
w2 0x1ffff800 0x5aa5
// 开启寄存器锁保护
w4 0x40022010 0x80
// 可再次查看 SPC 字节
mem 0x1fffF800 0x10      //

在这里插入图片描述
最开始两个字节变为A5 5A,表示读保护关闭。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值