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

    文章

    1551

    浏览量

    146721
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348884
  • 芯片加密
    +关注

    关注

    0

    文章

    8

    浏览量

    9347
收藏 人收藏

    评论

    相关推荐

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

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

    STM32F446读写保护意外打开的原因?

    全被打开。 如果第次上电不突然断电,则以后上电程序是运行正常的。 请问是什么造成这种情况发生?stm32f103上做此实验没有发现此问题。 另外,大家都是怎么开启芯片
    发表于 04-19 07:43

    STM8S003F3的保护可以通过程序打开吗?

    STM8S003F3的保护可以通过程序打开吗
    发表于 04-17 06:43

    请问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

    STM32F407保护从leve0设置leve1程序不再运行怎么解决?

    我不管是STlinkV3、j-link和程序内部 把保护级别从leve0设置到leve1都会触发程序无法继续运行,似乎像固件全面擦除,ST-link无法链接识别单片机。但是J-link很聪明,MDK下载
    发表于 03-14 06:44

    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

    STM32Flash写了保护怎么办?STM32如何设置读保护和解除读保护

    STM32Flash写了保护怎么办?STM32如何设置读保护和解除读保护? 一、
    的头像 发表于 10-29 17:24 6941次阅读

    讲讲STM32单片机Flash的读保护和写保护

    讲讲STM32单片机Flash的读保护和写保护
    的头像 发表于 10-26 15:52 4533次阅读
    讲讲<b class='flag-5'>STM32</b>单片机<b class='flag-5'>Flash</b>的读<b class='flag-5'>保护</b>和写<b class='flag-5'>保护</b>

    关于使用STM32H7在用户代码内增加开启保护代码的问题

    在使用STM32H7系列芯片时,在用户代码内增加了开启保护的代码,有设置了通过指令触发解除保护的代码,再触发解除
    发表于 08-07 06:31