GD32读保护解除

Posted 【ql君】qlexcel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GD32读保护解除相关的知识,希望对你有一定的参考价值。

读保护现象

  开启读保护后,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,表示读保护关闭。

以上是关于GD32读保护解除的主要内容,如果未能解决你的问题,请参考以下文章

GD32的flash读保护和写保护

uboot解除nor flash写保护

STM32F407 读保护,写保护,解锁过程芯片已设置读保护,无法读取更多信息

程序加密

程序加密

程序加密