这里写自定义目录标题
- 错误现象
- 判断读保护开启的方法
- 用JLink-commander查看选项字节地址处的值
- 解锁读保护
错误现象
用j-flash v7.68b软件通过ARM仿真器设置接口为SWD烧录编译好的目标.bin文件,第一次烧录成功,后面再也烧录不进,出先现象
如下图:
推测原因,flash的读保护被打开
判断读保护开启的方法
GD和ST系列的选项字节处是读保护是否开启的判断位置
参考如下链接:GD32的flash读保护和写保护
查看memory map 选项字节所在的地址
如下图:
选项字节里具体的各个位的含义,课参考如上链接
每次系统复位后,闪存的可选字节块被重加载到FMC_OBSTAT和FMC_WP寄存器,可选字节生效。可选字节的补字节具体为可选字节取反。当可选字节被重装载时,如果可选字节的补字节和可选字节不匹配,FMC_OBSTAT寄存器的OBERR位将被置1,可选字节被强制设置为0xFF。
用JLink-commander查看选项字节地址处的值
参考链接如下:
JFlash软件解锁GD32MCU
上述链接的查看方法可取,解锁方法不行
解锁读保护
还是用jlink的软件:J-Link STM32 Unlock
这里选择ST的型号,为啥选ST的,一方面因为GD的型号不全,另一方面选择GD的型号可能解锁指令不能用,后面新的J-Flash版本应该会逐步完善GD。下面给出一些对应的参考型号,不唯一,大体原则就是FLASH大小保持一致。
GD32E230系列 <—> STM32F030系列
例如:GD32E230F4 <—> STM32F030F4
GD32E230R8 <—> STM32F030R8
…
GD32F10X,GD32F30X,GD32E103,GD32F3X0 <—> STM32F103系列
例如:GD32F103C8 GD32F303C8 GD32E103C8 GD32F3x0C8<—> STM32F103C8
…
GD32F450 <—> STM32F429系列
例如:GD32F450VE <—> STM32F429VE
…
其他系列类似。
还有其它问题可参考以下文章:
GD32 MCU烧录指南及常见问题