STM32 内存空间中的选项字节

STM32的选项字节(Option Bytes)是一组存储在芯片内部独立Flash区域中的特殊配置数据,用于控制芯片的关键硬件特性和安全功能。

一、 选项字节的定义与位置

选项字节是STM32片内Flash信息块的一部分,与用于存储用户程序的主存储块(Main Flash)和存放官方Bootloader的系统存储器(System Memory)分开。它是一个可编程的非易失性存储区域,用户可以根据应用需求进行修改。

其地址因芯片系列和型号而异。例如,在STM32F103中,其基地址定义为 0x1FFFF800。选项字节的内容在每次系统复位时,会被加载到对应的寄存器(如 FLASH_OBRFLASH_WRPR)中生效。

二、 选项字节的核心功能

选项字节主要配置以下几类功能:

  1. 读保护(RDP - Read Protection)

    • 功能:保护主Flash中的程序代码不被通过调试接口(如JTAG/SWD)或从RAM启动的程序非法读取,是防止固件被抄袭的关键手段。
    • 级别
      • 级别0:无保护,默认状态(RDP = 0xAA)。
      • 级别1:使能读保护。启用后,通过调试器无法读取Flash内容;若从级别1降级到级别0,芯片会自动擦除整个主Flash。
      • 级别2 :最高保护级别(RDP = 0xCC)。一旦设置将永久禁用调试接口(JTAG熔断),且无法再降级,程序更新通常需依靠预留的IAP(在应用中编程)接口。
  2. 写保护(WRP - Write Protection)

    • 功能:对主Flash的特定扇区(页)设置写保护,防止内容被意外或恶意擦写。通常用于保护Bootloader或关键数据。
    • 操作:可以按扇区(或成对扇区)进行保护设置。保护状态为"0"表示保护,"1"表示不保护。
  3. 用户配置(USER)

    • 功能 :配置一些硬件行为,主要包括:
      • 看门狗:选择看门狗(IWDG)是上电后硬件使能还是软件使能。
      • 复位配置:配置芯片进入Stop或Standby低功耗模式后是否产生复位。
      • 欠压复位(BOR):配置芯片的欠压复位阈值电平(部分系列)。
  4. 启动配置(BOOT)

    • 功能:与外部BOOT引脚配合,决定芯片的启动源(主Flash、系统存储器、SRAM)。在某些系列(如STM32G系列)中,可以通过选项字节完全配置启动模式,忽略外部引脚状态,从而节省一个IO口。

三、 如何操作选项字节

操作选项字节主要有两种方式:

  1. 使用编程工具 :这是最常用的方法。可以使用ST官方工具如 STM32CubeProgrammerST-LINK Utility 或第三方工具如 J-Flash,通过调试器(ST-LINK, J-Link)连接芯片后进行图形化配置和编程。

  2. 在应用程序中编程:用户可以在自己的代码中调用HAL库或标准外设库函数来修改选项字节。这常用于产品量产时自动启用保护,或实现IAP升级中的配置切换。

    • 基本流程包括:解锁Flash和选项字节、配置参数、编程、最后执行加载或系统复位使新配置生效。

四、 重要注意事项

  1. 复位生效 :修改选项字节后,通常需要执行一次系统复位重新上电,新的配置才会生效。
  2. 操作顺序与影响:在STM32F1等系列中,修改选项字节(如设置读保护)可能会导致其他部分(如写保护设置、用户数据)被恢复为默认值。因此,在需要同时配置多项时,应注意操作的先后顺序,并在操作后重新校验所有配置。
  3. 级别2的永久性RDP级别2(0xCC)的设置是不可逆的,会永久关闭调试接口。设置前务必确认产品后续无需再通过调试器更新程序。
  4. 系列差异:不同STM32系列(如F1, F4, G0, H7)的选项字节地址、位定义和功能可能有所不同,具体操作时应以对应型号的参考手册为准。
相关推荐
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书5 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
Alaso_shuang5 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
2501_918126915 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315205 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机
星马梦缘5 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动