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

    文章

    1762

    浏览量

    156091
  • STM32
    +关注

    关注

    2313

    文章

    11206

    浏览量

    375190
  • 芯片加密
    +关注

    关注

    0

    文章

    8

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CS32A010官方的烧写工具都不支持代码字节更改,如何设置保护

    CS32A010官方的烧写工具都不支持代码字节更改,如何设置保护
    发表于 02-25 10:07

    新大陆NLS Soldier300N工业码器:AI赋能工业码新标杆

    在工业自动化浪潮下,高效精准的码需求日益迫切,新大陆NLSSoldier300N工业码器作为款性能卓越的AI智能读码器,正以强大实力重塑工业码场景。这款工业级固定扫码器凭借前沿
    的头像 发表于 01-14 14:31 477次阅读
    新大陆NLS Soldier300N工业<b class='flag-5'>读</b>码器:AI赋能工业<b class='flag-5'>读</b>码新标杆

    STM32保护的解除和出现的原因,使用串口和ST-LINK Utility解除保护

    STM32保护 保护保护出现的现象 1、串口下载会出现: 当出现这个
    的头像 发表于 12-30 10:10 2447次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>读</b><b class='flag-5'>保护</b>的解除和出现的原因,使用串口和ST-LINK Utility解除<b class='flag-5'>读</b><b class='flag-5'>保护</b>

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

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

    CW32F030 FLASH保护功能

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

    CW32L052 FLASH存储器介绍

    概述CW32L052内部集成了64KB嵌入式FLASH供用户使用,可用来存储应用程序和用户数据。 芯片支持对 FLASH 存储器的、擦除和写操作,支持擦写
    发表于 12-05 08:22

    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

    STM32C011开发(3)----Flash操作

    STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍 STM32
    的头像 发表于 09-18 16:48 5412次阅读
    <b class='flag-5'>STM32</b>C011开发(3)----<b class='flag-5'>Flash</b>操作

    NVMe高速传输之摆脱XDMA设计15:PCIe的TLP处理

    对于存储器请求TLP,使用Non-Posted方式传输,即在接收到请求后,不仅要进行处理,还需要通过axis_cc总线返回CPLD,这过程由处理模块执行。
    的头像 发表于 08-04 16:51 838次阅读
    NVMe高速传输之摆脱XDMA设计15:PCIe的TLP<b class='flag-5'>读</b>处理

    Flash保护怎么实现?

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