0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32加密问题:怎样预置一段Flash读保护和清除读保护的程序

工程师邓生 来源:未知 作者:刘芹 2023-10-29 17:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32加密问题:怎样预置一段Flash读保护和清除读保护的程序

在STM32加密方案中,为了对芯片进行加密,我们需要加入读保护功能。读保护功能即使未经授权的人无法读取芯片的Flash程序,在STM32芯片中,我们可以通过设置BFB2和BFB1位来对Flash进行保护。BFB2位用于读保护和写保护,其中1表示打开读保护和写保护,0表示关闭读保护和写保护;BFB1位用于写保护,1表示打开写保护,0表示关闭写保护。在本文中,我们将讨论如何预置一段Flash读保护和清除读保护的程序。

预置Flash读保护程序:

我们首先需要在STM32中编写一段Flash读保护程序。该程序主要用于保护芯片的程序不被未经授权的人读取。以下是预置Flash读保护程序的步骤:

1.选择合适的开发环境。建议使用Keil MDK Arm开发环境。

2.创建一个新的工程并定义一个main函数。可以按照以下代码定义main函数:

int main(void) {
//对Flash进行读保护
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_2);
FLASH_OB_Launch();
FLASH_OB_Lock();

//程序执行完毕后重启
NVIC_SystemReset();

while(1);

}

在此代码中,我们使用FLASH_OB_RDPConfig函数来设置读保护级别。OB_RDP_Level_2表示设置为级别2,也就是最高级别的读保护。FLASH_OB_Launch函数用于启动Flash设置操作,然后使用FLASH_OB_Lock函数锁定Flash。

3.编译并下载程序到STM32芯片。完成以上步骤后,芯片现在将受到读保护。

预置Flash清除读保护程序:

如果我们需要更改STM32芯片的Flash保护设置,我们需要先清除读保护。以下是预置Flash清除读保护程序的步骤:

1.创建一个新的工程并定义一个main函数。可以按照以下代码定义main函数:

int main(void) {
//对Flash进行清除读保护
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_0);
FLASH_OB_Launch();
FLASH_OB_Lock();

//程序执行完毕后重启
NVIC_SystemReset();

while(1);

}

在此代码中,我们使用FLASH_OB_RDPConfig函数将读保护级别设置为0,这意味着芯片上的读保护已被禁用。代码还使用FLASH_OB_Launch函数和FLASH_OB_Lock函数锁定Flash。

2.编译并下载程序到STM32芯片。完成以上步骤后,读保护已被禁用。

总结:

通过编写预置Flash读保护和清除读保护程序,我们可以更有效地保障STM32芯片的安全性。需要注意的是,在进行这些操作时,需要仔细检查代码,确保程序正确地执行了读保护和清除读保护动作,并且不会导致芯片的其他问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1718

    浏览量

    154783
  • STM32
    +关注

    关注

    2306

    文章

    11124

    浏览量

    371346
  • 芯片加密
    +关注

    关注

    0

    文章

    8

    浏览量

    9536
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32F030的FLASH存储器支持擦写PC页的保护功能

    CW32F030 的 FLASH 存储器支持擦写 PC 页保护功能。 当用户程序运行 FLASH 时,如果当前程序指针 PC 正好位于待擦写
    发表于 12-11 07:38

    CW32F030 FLASH保护功能

    保护等级,当前保护等级可通过读取 FLASH 控制寄存器 FLASH_CR1 的安全位域 SECURITY 来获取,安全位域是只读属性,不能修改。
    发表于 12-11 06:54

    4级保护等级的设置

    FLASH 存储器擦写以及保护:通过寄存器进行FLASH存储器的擦写保护,通过 ISP 指令进行 4 级
    发表于 11-28 07:16

    CW32L010用jlink能去除保护吗?

    如题,板上的CW32L010有保护,JLINK能识别到内核,但无法擦除下载程序。 要怎么才能去除保护
    发表于 11-20 06:23

    FLASH 存储器4级保护等级的设置

    LEVEL0 无保护,可通过 SWD 或者 ISP 方式对 FLASH 进行读取操作。 ‒ LEVEL1 FLASH
    发表于 11-17 08:09

    CW32L010的安全运行库保护是什么功能?

    它是针对用户指定的MCU内部FLASH数据,提供的保护功能;该功能生效后,就可以禁止对安全运行库进行任何形式的读取操作(比如CPU、 SWD、 ISP 均无法正确读取该区数据),
    发表于 11-12 06:19

    海康码器说明书

    海康码器设置教程
    发表于 10-22 17:16 2次下载

    PY32F003解除保护,实在很困难

    STM32 ST-LINK Utility重写选项字再进行全擦除,也以失败告终。 有网友说可以用J-link,但经过测试,也是以失败告终! 看起来,这py32想解除保护,只能通过厂家提供的工具了。的确很不适合我们玩。 20
    发表于 10-12 17:55

    Flash保护怎么实现?

    我们客户要求要对代码存储区(code flash)增加外部保护机制 我在TRM手册中只看到有flash保护
    发表于 07-30 07:30

    STM32G473解除写保护失败的原因?

    在进行使用串口升级,下载程序时,有个步骤是解除flash的写保护。在此过程中是基本上按照官方例程的实现的,包括了flash、选项字节的解锁
    发表于 04-28 07:05

    STM32G473解除写保护失败的原因?

    在进行使用串口升级,下载程序时,有个步骤是解除flash的写保护。在此过程中是基本上按照官方例程的实现的,包括了flash、选项字节的解锁
    发表于 04-22 10:29

    PSoC6怎么设置Flash保护,防止用编程器读出?

    PSoC6 怎么设置Flash保护,防止用编程器读出
    发表于 04-21 06:15

    stm32的pcrop安全系数高不高,是否会像普通flash保护那样被人家破解?

    问题1,stm32的pcrop安全系数高不高,是否会像普通flash保护那样被人家破解?能否起到代码保护作用不被解密 2,哪些
    发表于 03-13 06:09

    STM32H533芯片设置了保护如何解决?

    我下载了STM32H533u3000FLASH下载之后,芯片进入了保护状态,现在在系统管理里面可以看到u3000ST-LINKV3,但是在KEIL中找不到ST-LINKV3 ;; 尝试使用串口下载,出现如下问题;; 2 33
    发表于 03-11 07:31

    STM32微控制器中实现数据加密的方法

    进行加密,增加**的难度。例如,出厂时程序读取唯ID并保存在个位置,以后程序执行之前要读取并匹配这个唯
    发表于 03-07 07:30