如今电子产品市场风云变幻,暗流汹涌,有没有小伙伴遇到自己费了大力气写出来的代码,很容易就被别人“借鉴”了,真的是让闻者伤心,听着落泪啊。
那有没有什么方法可以防止别人将你的代码从MCU读出来呢?答案当然是肯定的,GD32 MCU全系列都有“读保护”功能,我们以GD32F30x系列为例,来看下用户手册中的选项字节的介绍:

我们可以看到,地址0x1fff f800存储的是安全保护值,也就是我们所说的读保护。当该值为0xA5的时候,MCU处于无保护状态,此时可以通过Jlink、GDlink配合一些上位机比如Jflash、GDlink Programmer就可以读出,当然,通过串口ISP也可以读出代码;当读保护值为非0xA5时,就说明MCU已经进入读保护状态了,此时除了MCU自己的程序可以访问flash外,其他方式的片上flash访问都是无效的。所以,读保护加上后小伙伴们就可以不用担心代码被别人读出来了。
所以加读保护和解除读保护的操作就很好理解了,实际上就是对选项字节进行操作,将0x1fff f800地址的值设置为保护值/非保护值就可以了。
这时候有小伙伴就会问了,那既然读保护状态可以解除,别人拿到我的芯片,先解除保护,再读出来不就可以了?实际上这个问题完全不用担心,当MCU被加读保护后,MCU内部同时也给Flash上的数据增加了一个“自毁装置”,当有人对芯片进行解保护操作的时候,这个“自毁装置”就会将Flash上所有的数据都清空,这时候从芯片读出来的数据就是没有用的“空”数据啦。
小伙伴现在知道什么是读保护了吗?我们后面也会介绍加读保护和去除读保护的方法哦。
关键字:GD32 MCU 读保护
引用地址:
什么是GD32 MCU读保护?
推荐阅读最新更新时间:2026-03-20 11:29
GD32F303固件库开发(2)----读保护与写保护
概述 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。 在我们的KEIL烧写和编译过程中,有可能会触发读保护,导致程序无法下载进入到芯片内部,故需要进行解锁操作。 芯片申请 芯片和开发板都可免费申请,暂时只能以公司名义免费申请,填下下面表格即可。 软件进入读保护 打开GD-Link Programmer,点击Target- Security可以进入读保护模式。 这时候会提示是否进入读保护。 进入读保护模式后,点击Target- Program进行
[单片机]
STM32CUBEMX开发GD32F303(2)----读保护与写保护
概述 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。需要样片的可以加群申请:615061293。 芯片申请 芯片和开发板都可免费申请,暂时只能以公司名义免费申请,填下下面表格即可。 软件进入读保护 打开GD-Link Programmer,点击Target- Security可以进入读保护模式。 这时候会提示是否进入读保护。 进入读保护模式后,点击Target- Program进行下载。 这时候会提示是否解开读保护。 若在读保护状态下,k
[单片机]
STM32如何设置读保护和解除读保护?
关于STM32对内部Flash的保护 为了防止对Flash的非法访问,所有STM32的芯片都提供对Flash的保护,具体分为写保护和读保护。 如果对Flash设置了写保护,那就无法对Flash进行编程和擦除。在开发STM32的时候,如果出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能。 在使用MDK进行调试的时候,可能会遇到如下图所示的报错信息,这时候就要排查Flash是不是被保护起来了。 读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出
[单片机]
STM32F4知识:Flash如何设置成读保护
1,目的 在实际的产品发布中,如果不对储存在单片机Flash中的程序做一些保护的话,就有可能被一些不法公司,通过仿真器(J-Link,ST-Link等)把Flash中的程序读取回来,得到bin文件或hex文件,然后去山寨产品。所以我们需要对程序进行保护,一种比较简单可靠的方法就是把Flash设置成读保护。 2,开发环境 1,适用芯片:STM32F4全部芯片 2,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 3,IDE:MDK517 3,程序源码
[单片机]
stm32加密 读保护
stm32的加密有很多种方式: 最常用的就是置读保护 该方式 在STM32F10x闪存编程手册 —— 英文下载 中文下载 有详细的使用说明 下面简单说一下它的特点: 这项保护是通过设置信息块中的一个选择字节启动的。当保护字节被写入相应的值以后,在调试模式中将不允许读出闪存存储器,所有在RAM中加载和执行的功能(如JTAG/SWD,从RAM启动等)仍然有效,这样可以用于解除读保护(访问闪存仍然被禁止)。 在第2.4.2节还有一张表清楚地列出了读保护和写保护的作用范围: 当读保护生效时CPU执行程序时可以读受保护的Flash区,有两个例外情况:1)调试执行程序时;2)从RAM启动并执行程序时。 相关程序 // flash read
[单片机]
STM32-读保护功能和清除读保护功能设置
1、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:通过调试器(JTAG或SWD);从RAM中启动并执行的程序; 2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护写保护 对Flash的操作功能 有效有效 CPU只
[单片机]
STM32、GD32等单片机,上电后不运行,复位后才能运行,解决方法
问题描述:仿真器下载程序后,可运行;拔掉仿真器,断电重新上电后,处理器不运行,手动复位后产品能正常运行 出现上面描述的问题,目前我遇到的有两种情况: ①外设设备初始化未完成:可以注释排查外设设备,在初始化的地方添加一段延时,等待产品初始化完成。 ②晶振起振时间长:(上示波器查看晶振起振时间)在时钟初始化启动外部时钟之前添加一段延时等待。 以上是我诸多工程中遇到的情况及解决的方法,如有其他情况 ,欢迎大家不吝赐教。
[单片机]
VScode开发STM32/GD32单片机-环境搭建
1、软件下载 1.1、安装 VSCode 1.2、下载安装 VisualGDB 1.3、下载安装 mingwin64 1.4、下载安装 OpenOCD 1.5、下载 GNU Arm Embedded Toolchain 2、软件安装 2.1、安装完成 VisualGDB 找到安装目录如下位置 将破解软件放在里边 管理员方式运行弹出如下两个窗口 2.2、安装 mingwin64 安装完成之后将路径添加到环境变量中 找到安装目录下得bin文件夹,将文件路径添加到系统环境变量中 设置环境变量 上 2.3安装 OpenOCD 软件,直接将bi
[单片机]