[研电赛技术支持] J-Flash J-Link解锁GD32单片机

[复制链接]
7625|5
 楼主| tpgf 发表于 2024-3-12 08:15 | 显示全部楼层 |阅读模式
前言
提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b

当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序,

可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。

4437065ef9dcf72a77.png

我们先来用J-Link命令行验证下是否是真的开启了安全保护的

打开J-Link Commander

881165ef9dd753a25.png

如下,根据提示,输入Connect,

7752065ef9ddd5fed4.png

根据提示,再输出?,选择你对应的单片机芯片,博主这里选择为GD32F303RC

1977265ef9de8f3a31.png

根据提示,选择连接方式,博主这里使用的是SWD,所以输入s即可;
选择速率:输入4000即为4000kHz

5729565ef9df037e80.png

如下,表示连接成功

3356265ef9dfa87a07.png

我们使用mem 0x08000000 10命令来查看地址为0x08000000起始的10个字节的数据

2278565ef9e019bee1.png

上图中可以看到,提示我们并不能读取到内存(Flash)的的内容;
还有一种方法,GD32同STM32一样,可通过查看相应的配置寄存器内容来辨别是否安全保护(上锁),如下图

498965ef9e0fdfb0e.png

当地址0x1ffff800,即SPC的内容不是0xA5时,则处于保护状态,同样他的布字节同理
我们输入mem 0x1ffff800 10命令

2312765ef9e18c1ef8.png

可以看到SPC的地址并不是0xA5,而是0xBB,同理它的补字节即SPC_N,也不是0x5A,而是0x44,所以我们可以肯定的是当前单片机Flash是处于保护状态的。

提示:演示使用的单片机为GD32F303RC

一、使用J-Flash工具解锁单片机
1.打开J-Flash软件

3583165ef9e24a770e.png

2.创建工程

7326765ef9e2a3beac.png

选择芯片为STM32F103RC,256KB的Flash大小这一款

8664565ef9e34e0f17.png


3.连接 J-Link
选择连接,Connect

9174265ef9e3fa8aad.png

弹窗,点击Yes

3193165ef9e46ea849.png


4.解锁Flash
选择Unsecure Chip,开始解锁

8366965ef9e504b7ed.png

弹窗提示解锁成功,然后可以开始愉快的编程下载了

8280665ef9e57a9cf5.png


二、使用J-Link STM32 Unlock解锁GD32
1.打开J-Link STM32 Unlock工具

196665ef9e616c1e8.png

2.命令行输入
打开后,如下,输入2,为什么输入2,因为GD32F303类比为STM32F103(懂得都懂),虽然内核不同,但Flash大小相同

2380265ef9e68bc3fa.png

3.解锁成功
出现如下图所示即解锁成功

834965ef9e70935d9.png

4.验证
如果不放心,我们可以使用keil、J-Flash再下载程序(简单),或者使用命令行(略高级)来查看
打开J-Link Commander

1320765ef9e7743c53.png

如下,根据提示,输入Connect,

3367665ef9e7e2bc89.png


根据提示,再输出?,选择你对应的单片机芯片,博主这里选择为GD32F303RC

9728865ef9e87f26f8.png

根据提示,选择连接方式,博主这里使用的是SWD,所以输入s即可;
选择速率:输入4000即为4000kHz

3547365ef9e8deccd6.png

如下,表示连接成功

8897465ef9e9449a4b.png

接下来根据手册,我们查看是是否解锁成功,查看0x1ffff800地址的头两个字节是否为A5 5A(即A5和它的补字节)

4819165ef9e9ae441b.png

输入命令,mem 0x1ffff800 10,可以看到头两个字节是A5和5A,所以也验证了确实解锁成功了

1569565ef9ea1846d2.png

同时,也可以验证下手册中提到的,当保护解除,会自动触发一次全片擦除

1397165ef9ea7a8acc.png

我们输入命令,mem 0x08000000 10,

374865ef9eadefb43.png


可以看到,地址内的内容全变为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单片机的两种简易方法!!!
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_44147894/article/details/136169916

yangxiaoshan 发表于 2024-3-19 09:52 | 显示全部楼层
哥,人家提供了一键解锁,你这是整哪出。。。

评论

怎么一键解锁呀,我用的GD32F103VE,上面三个方法都试了,就是连不上,有没有官方的链接,谢谢  发表于 2024-11-8 17:22
高级安全大使 发表于 2025-1-31 18:39 | 显示全部楼层
J-Link 提供了一种专门用于解锁被锁定的 STM32 系列微控制器的方法,虽然 GD32 系列与 STM32 类似,但 J-Link 工具的 STM32 Unlock 功能依然可以用于解锁。
caigang13 发表于 2025-2-5 22:28 来自手机 | 显示全部楼层
学到了,感谢楼主分享经验。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2384

主题

17636

帖子

21

粉丝
快速回复 在线客服 返回列表 返回顶部