这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 实测APM32F407的写保护功能效果

共1条 1/1 1 跳转至

实测APM32F407的写保护功能效果

院士
2025-07-18 14:35:05     打赏

不知道大家有没有遇到FLASH中的代码擦除或篡改的情况,这种机率是很低很低的。只有在大批量生产和使用的情况下有可能遇到。有安全意识的嵌入式工程师会充分利用MCU的写保护功能来增强设计的可靠性。这里以APM32F407作为例子,来看看FLASH写保护的效果。

1.写保护的作用和目的
写保护(Write Protection)主要用于防止Flash存储区的代码或非易失性数据被意外擦除或篡改。当保护启用时,任何尝试写入受保护扇区的操作都会触发Flash错误标志(WRPERR),确保关键数据的安全性。

2.保护颗粒度
APM32F407支持扇区级保护,可灵活选择需保护的扇区(共12个用户扇区:0-11)。每个扇区通过选项字节(Option Bytes)中的FMC_OPTCTRL[NWPROT]位独立控制保护状态:
◦ NWPROT= 1:取消写保护
◦ NWPROT = 0:启用写保护(默认值0xFFF,即所有扇区未保护)

3.实现过程与代码示例

HAL_FLASH_Unlock();           // 解锁Flash控制器
HAL_FLASH_OB_Unlock();        // 解锁选项字节
 
// 配置写保护参数(以保护扇区0为例)
FLASH_OBProgramInitTypeDef OBConfig;
OBConfig.OptionType = OPTIONBYTE_WRP;
OBConfig.WRPSector = OB_WRP_SECTOR_0; //  选择扇区
OBConfig.WRPState = OB_WRP_ENABLE;     // 启用保护
 
HAL_FLASHEx_OBProgram(&OBConfig);      // 应用配置
 
HAL_FLASH_OB_Lock();          // 锁定选项字节
HAL_FLASH_Lock();             // 锁定Flash控制器

4.使用烧录工具和JLINK测试效果
1)使用轩微烧录器烧录程序,选择的程序是简单的GPIO翻转程式:

2)烧录器界面上,配置扇区0为写保护扇区:


3)烧录后重启MCU,使用JLINK连接检查,确认烧录正常,写保护生效:

4)在0扇区有写保护的基础上,尝试用JLINK去擦除扇区0,会出现写保护错误标志,确认写保护有生效:

5)对比不对扇区0加写保护,对扇区0做擦除操作的效果:





关键词: APM32F407     写保护     扇区    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]