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读保护解除的主要内容,如果未能解决你的问题,请参考以下文章