STM32 内存空间中的选项字节

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

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

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

其地址因芯片系列和型号而异。例如,在STM32F103中,其基地址定义为 0x1FFFF800。选项字节的内容在每次系统复位时,会被加载到对应的寄存器(如 FLASH_OBR 和 FLASH_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官方工具如 STM32CubeProgrammer 、ST-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)的选项字节地址、位定义和功能可能有所不同,具体操作时应以对应型号的参考手册为准。
相关推荐
西城微科方案开发19 分钟前
方案商|西城微科胎压计方案开发
单片机·嵌入式硬件
深圳市尚想信息技术有限公司23 分钟前
HITENX海速芯TM56M152A-SOP8单片机MCU微控制器IC,高精度ADC-16位PWM国产主控芯片
单片机·嵌入式硬件
艾芯微科技31 分钟前
CJX3134K 长晶双 N 沟道 MOS 管详解|SOT-563 20V 小型电源开关方案
网络·单片机·嵌入式硬件·集成测试·51单片机
番茄灭世神1 小时前
PN学堂GD32教程第14篇——Arm单片机启动流程
arm开发·单片机·嵌入式硬件
似是燕归来2 小时前
Rtthread OS 功能开发之 socket udp协议程序开发
网络·stm32·网络协议·udp·socket·rtthread
Zw-awa3 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
stm32
嵌入式学习菌3 小时前
Modbus 03H 最多读多少寄存器?10H 最多写多少寄存器?
单片机
小李不想当小白3 小时前
USART串口数据包(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
硅基手札4 小时前
【Linux 内核专栏 18】进程间通信 IPC(下)— Socket·Netlink·fd 三件套·futex·线程同步
linux·运维·驱动开发·单片机·嵌入式硬件·mcu·架构
无敌贵点大王19 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展