在STM32中,System memory(系统存储器)是芯片内部的一块特殊存储区域,主要功能是存储ST公司预置的BootLoader程序,用于系统启动配置、固件更新和调试支持。以下是其核心功能和技术细节的详细说明:
1. 核心功能
• 出厂预置的BootLoader
System memory中固化了一段由ST公司编写的不可修改的引导程序(BootLoader)。该程序在芯片出厂时已烧录,用户无法擦除或修改。其主要作用包括:
• 系统启动控制:根据BOOT引脚配置(如BOOT0=1且BOOT1=0),从System memory启动以执行BootLoader,而非用户的主程序。
• 固件更新支持:通过BootLoader提供的接口(如串口、USB、CAN等),用户可在不依赖外部调试工具的情况下更新主Flash中的程序。
• 调试与恢复:当主Flash被锁死或程序损坏时,通过System memory启动可重新烧录程序,修复系统。
2. 技术特性
• 地址与容量
• 在STM32F1系列中,System memory的起始地址为0x1FFF_F000,容量通常为2KB(具体型号需参考数据手册)。
• 属于Flash信息区(Information Block)的一部分,与Option Bytes(配置字节)共同构成Flash的非主存储区域。
• 只读属性
System memory的内容由ST公司固化,用户无法通过常规编程操作修改,仅能读取或通过特定硬件接口(如串口)调用其功能。
3. 应用场景
• 串口下载程序(ISP模式)
当BOOT引脚设置为从System memory启动时,芯片会运行预置的BootLoader,允许通过串口(如USART)直接下载程序到主Flash,无需JTAG/SWD调试工具。
• 系统恢复
若主Flash因误操作被写保护或程序崩溃,可通过System memory的BootLoader重新烧录程序,解除锁定状态。
• 低功耗设备支持
某些低功耗型号(如STM32L系列)的System memory可能包含针对低功耗模式的优化启动代码。
4. 与主Flash的区别
特性 | System Memory | 主Flash(Main Memory) |
---|---|---|
内容 | ST预置的BootLoader | 用户编写的应用程序代码和常量数据 |
可修改性 | 不可修改 | 可擦写和编程 |
地址范围 | 0x1FFF_F000起(F1系列) | 0x08000000起 |
典型容量 | 2KB(F1系列) | 16KB~2MB(依型号而定) |
5. 配置与使用注意事项
• 启动模式选择:需通过BOOT引脚配置选择从System memory启动(如BOOT0=1,BOOT1=0)。
• 兼容性:不同型号STM32的System memory地址和BootLoader功能可能略有差异,需参考具体数据手册。
• 安全机制:System memory的BootLoader可能包含访问权限控制,防止未授权操作。
总结来说,System memory是STM32芯片中用于系统级操作的关键模块,其预置的BootLoader为系统启动、固件更新和故障恢复提供了底层支持,是开发过程中重要的调试和维护工具。