提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b
当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序,
可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。
我们先来用J-Link命令行验证下是否是真的开启了安全保护的
打开J-Link Commander
如下,根据提示,输入Connect
,
根据提示,再输出?
,选择你对应的单片机芯片,博主这里选择为GD32F303RC
根据提示,选择连接方式,博主这里使用的是SWD
,所以输入s
即可;
选择速率:输入4000
即为4000kHz
如下,表示连接成功
我们使用mem 0x08000000 10
命令来查看地址为0x08000000起始的10个字节的数据
上图中可以看到,提示我们并不能读取到内存(Flash)的的内容;
还有一种方法,GD32同STM32一样,可通过查看相应的配置寄存器内容来辨别是否安全保护(上锁),如下图
当地址0x1ffff800,即SPC的内容不是0xA5时,则处于保护状态,同样他的布字节同理
我们输入mem 0x1ffff800 10
命令
可以看到SPC的地址并不是0xA5,而是0xBB,同理它的补字节即SPC_N,也不是0x5A,而是0x44,所以我们可以肯定的是当前单片机Flash是处于保护状态的。
提示:演示使用的单片机为GD32F303RC
选择芯片为STM32F103RC,256KB的Flash大小这一款
选择Unsecure Chip
,开始解锁
弹窗提示解锁成功,然后可以开始愉快的编程下载了
打开后,如下,输入2,为什么输入2,因为GD32F303类比为STM32F103(懂得都懂),虽然内核不同,但Flash大小相同
如果不放心,我们可以使用keil、J-Flash再下载程序(简单),或者使用命令行(略高级)来查看
打开J-Link Commander
如下,根据提示,输入Connect
,
根据提示,再输出?
,选择你对应的单片机芯片,博主这里选择为GD32F303RC
根据提示,选择连接方式,博主这里使用的是SWD
,所以输入s
即可;
选择速率:输入4000
即为4000kHz
如下,表示连接成功
接下来根据手册,我们查看是是否解锁成功,查看0x1ffff800地址的头两个字节是否为A5 5A(即A5和它的补字节)
输入命令,mem 0x1ffff800 10
,可以看到头两个字节是A5和5A,所以也验证了确实解锁成功了
同时,也可以验证下手册中提到的,当保护解除,会自动触发一次全片擦除
我们输入命令,mem 0x08000000 10
,
可以看到,地址内的内容全变为0xFF,验证现象与手册中提到的是一致的。
附录来源于网络,供参考未验证
GD32E230系列 <—> STM32F030系列
GD32E230F4 <—> STM32F030F4
GD32E230R8 <—> STM32F030R8
GD32F10X,GD32F30X,GD32E103,GD32F3X0 <—> STM32F103系列
GD32F103C8 GD32F303C8 GD32E103C8 GD32F3x0C8<—> STM32F103C8
GD32F450 <—> STM32F429系列
GD32F450VE <—> STM32F429VE
J-Link 命令行相关命令查询 https://wiki.segger.com/J-Link_Commander
以上就是使用J-Falsh相关工具解锁GD32单片机的两种简易方法!!!