如何使用代码清除STM32单片机上的PCROP

发布者:甜美瞬间最新更新时间:2024-08-20 来源: elecfans关键字:STM32  单片机  PCROP 手机看文章 扫描二维码
随时随地手机看文章

前言

STM32PCROP专有代码读出保护,将某个区域设置为仅允许执行,可防止代码被非法读出与修改。ST网站提供了免费的PCROP参考代码,但是例程中仅仅提供了用代码设置PCROP。为方便利用PCROP进行知识产权保护的开发和部署,这篇文章提供了方法,可在RDP级别设置为1或者0时,使用代码清除PCROP。


ST网站上的PCROP参考代码

学习使用PCROP,可从ST网站下载文档以及参考代码。文档里有一步一步的详细说明。参考代码则实现了,如何设置编译开发环境去掉文字库(Literal pool),以避免受保护区域需要被读访问;参考代码也实现了如何利用代码使能PCROP保护以及如何导出接口符号供二次开发使用。


你可以编译运行PCROP参考代码。一旦下载到开发板并运行后,扇区2会自动被设置成PCROP保护。你将无法再次下载代码到该扇区,也无法读出该扇区的内容。若想通过STLink工具解除PCROP保护,则会导致整个Flash被擦除。


使用代码清除PCROP

在熟悉ST网站上的PCROP参考代码基础之上,我们将讨论如何使用代码清除PCROP。

1. 原理

根据STM32用户手册,要想清除PCROP保护,读保护RDP级别必须从1设置成0。也就是说,即使当前RDP级别为0,我们也要使用代码将其设置成1。然后,同时关掉PCROP和将RDP设置成0。这也说明,尽管是清除PCROP保护,我们的代码必须加入RDP的设置函数, 而不能仅仅修改参考代码中的PCROP_Enable的状态字段使其变成PCROP_Disable。

如何使用代码清除STM32单片机上的PCROP

2. 材料准备

开发板:STM32F429I_Discovery

开发工具:STM32Cube_FW_F4_V1.15.0

STM32CubeExpansion_AN4701_F4_V1.0.0(从ST网站下载的参考代码)

STM32STLink

IAR/Keil

注:也可以选择其他支持PCROP的STM32系列,并选择相应的STM32开发板与STM32固件库。

3. 代码

 ●设置RDP到级别1

该函数在RDP级别为0时,若需要清除PCROP, 必须被使用。

如何使用代码清除STM32单片机上的PCROP

 ●设置RDP到级别0

在清除PCROP保护的代码里不会直接调用这个函数。参考手册提到,PCROP的清除必须与RDP从1到0同时发生,而下列RDP_Disable函数则是完整独立的,无法与PCROP的Option bytes同时操作。不过,这个代码的中间部分,也就是实际功能部分,将在清除PCROP时被重用。

如何使用代码清除STM32单片机上的PCROP

如何使用代码清除STM32单片机上的PCROP

●清除PCROP

下述代码清除PCROP,它基于参考代码中的PCROP_Enable函数改写而成。首先,它通过RDP_Enable将RDP设置成1。注意实验中不要将RDP设置成为2,否则所有的Option bytes将不再被允许修改。然后将RDP和PCROP都设置完毕,调用一次HAL_FLASH_OB_Launch达到同时将RDP设置成1并清除PCROP保护。

如何使用代码清除STM32单片机上的PCROP

如何使用代码清除STM32单片机上的PCROP

4.运行

在主函数中,调用PCROP_Disable可解除PCROP保护。RDP_Enable后需要关闭电源,重新启动,然后系统正常运行解除PCROP保护。解除保护后,可通过STLink确认PCROP Option bytes已恢复,同时也可以看到整个Flash内容已被擦除。


结论

本文讨论了完全使用代码控制PCROP的设置与清除。它可以使用在PCROP代码保护的开发与部署阶段。


关键字:STM32  单片机  PCROP 引用地址:如何使用代码清除STM32单片机上的PCROP

上一篇:STM32中C语言的基础知识
下一篇:如何创建一个STM32工程模板

推荐阅读最新更新时间:2026-03-19 03:29

S3c2440代码重定位详解6---重定位清除BSS段的C函数实现
在前面,我们使用汇编程序来实现了重定位和清bss段,本节我们将使用C语言,实现重定位和清除bss段。 1.打开start.S把原来的汇编代码删除改为调用C函数 /* 重定位text, rodata, data段整个程序 */ mov r1, #0 ldr r2, =_start /* 第1条指令运行时的地址 */ ldr r3, =__bss_start /* bss段的起始地址 */ cpy: ldr r4, str r4, add r1, r1, #4 add r2, r2, #4 cmp r2, r3 ble cpy /* 清除BSS段 */ ld
[单片机]
S3c2440<font color='red'>代码</font>重定位详解6---重定位<font color='red'>清除</font>BSS段的C函数实现
STM32单片机学习】第12章 GPIO—按键轮询
12.1 关于按键 前面控制LED灯是让GPIO输出高低电平,而获取按键则是读取GPIO电平,从而获知用户是否按下按键。 按键监测一般有两种:按键扫描和按键中断。按键扫描是间隔很短时间反复查询GPIO状态,从而得知是否有按键动作,这种方式代码简单,但比较耗资源。按键中断而是通过按键产生中断信号,从而实现按键的检测,这种方式需要使用到中断机制,需要对MCU了解深入一点,效果是最好的。 本节先介绍按键扫描,理解按键的基本原理,下一章再介绍按键中断,同时了解STM32F103的中断使用方法。 按键一般占用一个GPIO口,通过监测该GPIO的电平变化得知按键操作,典型的电路如图 12.1.1 所示。当所需按键比较多时,则可以采用矩阵按键减
[单片机]
陈老师告诉你STM32单片机的DMA怎么使用
DMA技术的运用合乎真香定律,是提高单片机CPU程序执行效率的常用方法之一,但是在其运用前须要对很多的寄存器进行初始配置,对新手不够友好,今天我以串口为例,来带大家梳理一下DMA的运用方法,理清概念之间的关系,帮助大家更好的掌握和运用DMA技术. ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令陈老师/// 串口是单片机最常用的外设,一般可用于达到多机的通讯功能.(串口USART1在单片机内部的位置如下图1处所示),CPU是控制和计算核心(如下图2处所示),DMA也能够认为是一个内部的控制器,(如下图3处所示)
[单片机]
STM32单片机的内存分布详解(1)
STM32具有和PC机类似的结构组成。那么我们平时听到的RAM和ROM就相当于PC的内存条和硬盘,当然了PC的硬盘和单片机的ROM也并不是所谓的只读,只不过以前的技术原因很难做到多次读写,因为最初的存储器是纸带、熔丝或者其他一次性存储器,因此只能读取,也就是ROM,当然那时候也不需要持续的修改。随着技术的革新,这些最初的ROM慢慢的增大内存、增加写功能、提高读写速度。而ROM的叫法也一直延续下来。 扩展一下,为什么ROM也可以写,不用ROM当RAM呢?因为ROM还是太慢了,读取可还行(比如F7、H7就支持QSPI运行程序),写就是肉眼可见级别的延迟了。所以RAM这种需要高速读写的还是让SRAM、SDRAM、DDR等
[单片机]
STM32单片机学习】第15章 通信—调试串口
15.1 关于串口 15.1.1 串口理论知识 说到串口,经常提到TTL、RS232、RS422、RS485,简单的说,就是为了适应不同的环境条件,使用了不同的电平标准。假如微处理器和板载的蓝牙透传模块通信时,一般就使用TTL电平,引脚直接连接即可。假如微处理器在工业现场,需要连接一个几十米外的装置,则应该考虑将TTL电平转为RS232、RS422、RS485。 图 15.1.1 不同通信电平应用的场景 如下表 15.1.1 是几个通信接口标准总结。可以发现为了加大传输距离,人们依次尝试了增加电压、差分传输等方式。 表 15.1.1 常见通信接口标准 以TTL电平的接口为例讲解串口怎么传输数据,对于RS2
[单片机]
STM32单片机的Bootloader详解(2)
之前我们说到了Bootloader,有了它我们就可以方便的下载和运行新的程序,但是这也意味着别人也可以抄你的板子,用仿真器读出来你的程序,从而复制你的完整产品功能。所以你还需要学会对产品加密。 加密和破解是个比较那个的话题了。怎么说呢?有的东西不该收费、不该限制那么破解就是合理的,比如黑客们就看不惯某些网站企图垄断收费,某些软件企图限制网速收费。当然了,大多数人都是出于需求考虑选择的破解或者是盗版。总不能需要编辑个文档就买一套Word吧,总不能学个单片机花数十万买MDK和AD授权吧。一定程度上这些也是大多数人需求。这里关于故意引导用户习惯养成、低价 盗版挤压垄断软件市场垄断等等的话题我们就不谈了。 那么如果
[单片机]
stm32单片机,我们该如何学习,这里给新人的一个入门总结!
一、入门总结 1.1为什么要把时间花在“犹豫”上? 每当我们在入门之前(ARM是这样,DSP也一样),总会会有很多疑问,会有很多顾虑。我们渴望知道学习STM32前景如何?需要啥基础?难不难?适不适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间用来看书吧,效果能好一万倍。 大家可能是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩板子(实践)。严格地说,应该是模仿实验。熟悉之后才会自己写程序代码实现某个功能。因此,如果你正在咨询STM32;如果你正对STM32心潮澎湃;如果你想入门STM32;那么,
[单片机]
STM32 - 软件设置单片机重启
__set_FAULTMASK(1);//关闭总中断 NVIC_SystemReset();//请求单片机重启 执行NVIC_SystemReset()函数不允许被打断,所以关总中断
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved