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

    文章

    1621

    浏览量

    147745
  • STM32
    +关注

    关注

    2266

    文章

    10871

    浏览量

    354786
  • 芯片加密
    +关注

    关注

    0

    文章

    8

    浏览量

    9393
收藏 人收藏

    评论

    相关推荐

    相间距离保护一段保护范围介绍

    引言 电力系统是现代社会的重要基础设施,其安全稳定运行对于保障国民经济和人民生活具有重要意义。在电力系统中,相间距离保护种重要的保护方式,其主要作用是保护电力系统的相间故障。
    的头像 发表于 08-05 10:11 665次阅读

    BLUENRG-LP开启保护的问题求解

    样的结果。 2.尝试在程序中通过软件操作FLASH寄存器开启保护,结果也是样,开启后,复位
    发表于 05-29 06:20

    STM32G0如果只执行写保护编程时,先擦除选项字节,此时保护字节是FF,那是不是就读保护生效了?

    如果只执行写保护编程时,先擦除选项字节,此时保护字节是FF,那是不是就读保护生效了?程序再修改为A5,会不会就引起
    发表于 05-20 08:17

    STM32F1 IAP操作保护选项字节设置,APP使用系统复位跳转后无法运行IAP的原因?

    最近调试程序,是基于STM32F1做的IAP,升级前后需要修改选项字节,FLASH_EraseOptionBytes函数内OB->RDP=RDP_Key语句实现
    发表于 05-13 08:09

    求助,关于STM32F302_FLASH保护的问题求解

    查看好些STM32F302资料,想通过FLASH保护来实现加密功能,添加以下代码后,没能实现预期功能: #define OB_RDP_L
    发表于 05-08 06:26

    STM32是如何从flash读取指令并执行的?

    [td]因为STM32H750自带的FLASH太小,而工程文件超过这个flash的容量,所以需要外挂flash来存
    发表于 04-24 07:09

    请问STM32怎么在代码中把保护加进去呢?

    STM32怎么在代码中把保护加进去呢?
    发表于 04-16 06:28

    STM32F7开启保护Level2后,还能擦除重新烧录程序吗?

    STM32F7开启保护Level2之后,还能擦除重新烧录程序吗?
    发表于 04-01 07:38

    STM32F030F4P6下载程序时提示Unable to run verification,设置保护失败的原因?

    新买的芯片STM32F030F4P6,测试时使用ST LINK可以正常连接读取FLASH,下载程序时提示Unable to run verification!然后尝试设置
    发表于 03-27 06:37

    STM32G0加保护后为什么就连不上了?

    STM32G0 加保护 百分之十芯片 发现再次连接不上用Jlink STLink都不行 怎么可以连接上
    发表于 03-25 06:27

    stm32误设置RDP保护LV2 chip protection怎么恢复啊?

    stm32 误设置 RDP 保护LV2chip protection 怎么恢复
    发表于 03-19 08:29

    STM32 FLASH模拟EEPROM,烧写程序时设置为保护Level-2级别,还能正常读写这个模拟的EEPROM吗?

    STM32系列内部FLASH模拟EEPROM,烧写程序时设置为保护Level-2级别,还能正常读写这个模拟的EEPROM吗?
    发表于 03-13 07:34

    STM32F407串口IDLE标识被自动清除是为什么呢?

    我现在有一段STM32F407的程序,我写了串口收发的程序,但我发现每次stm32接收完数据后IDLE标识被自动
    发表于 03-07 07:38

    PSoC6怎么设置Flash保护防止被外部读取?

    PSoC6 怎么设置Flash保护,防止被外部读取,最好是通过软件设置。
    发表于 02-18 08:08

    介绍种使用MDK解除保护的方法

    经历过产品量产的同学应该都知道,芯片般会在出厂时开启保护:要么在代码中加入,要么在烧录程序后人工通过软件开启该功能,比如 STM32 S
    的头像 发表于 12-26 09:18 995次阅读
    介绍<b class='flag-5'>一</b>种使用MDK解除<b class='flag-5'>读</b><b class='flag-5'>保护</b>的方法