在STM32系列微控制器中,关于bootloader和用户Flash的使用,以下是关键点的分步解释:
Bootloader的存储位置:
- STM32的出厂预置bootloader位于独立的系统存储器(System Memory)中,而非主Flash存储区。
- 系统存储器的地址因型号而异,例如:
- STM32F1系列:
0x1FFFF000 开始
- STM32F4系列:
0x1FFF0000 开始
- 该区域由ST预编程,无法被用户擦写,不会占用用户可用Flash空间。
用户Flash起始地址(0x08000000):
- 主Flash存储区起始于
0x08000000,这是用户程序的标准入口点。
- 用户可完全使用从该地址开始的全部Flash空间,容量取决于具体型号(如64KB、256KB等)。
- 无需为系统bootloader保留空间,两者物理上独立。
用户程序配置要点:
- 中断向量表必须放置在
0x08000000处,需在IDE(如Keil、STM32CubeIDE)中设置正确的偏移量(通常为0x0)。
- 若实现自定义Bootloader+App架构,需将App的起始地址后移(如0x08008000),此时主Flash分区为两部分。但原厂bootloader无此问题。
验证与注意事项:
- 查阅对应型号的参考手册(Reference Manual)和数据手册(Datasheet),确认:
- 系统存储器的具体地址及大小
- 主Flash的容量及分页信息
- 使用ST-Link Utility或CubeProgrammer工具可直观查看内存映射。
示例:STM32F103C8T6(64KB Flash)
- 系统存储器:0x1FFFF000 ~ 0x1FFFF7FF(2KB,独立区域)
- 用户Flash:0x08000000 ~ 0x0800FFFF(64KB全可用)
- 用户程序直接从0x08000000开始,无需偏移。
总结:STM32的原厂bootloader不占用用户Flash资源,用户可完全使用从0x08000000开始的全部主Flash空间,只需确保编译时正确配置工程参数。具体型号的差异需通过官方文档确认。
在STM32系列微控制器中,关于bootloader和用户Flash的使用,以下是关键点的分步解释:
Bootloader的存储位置:
- STM32的出厂预置bootloader位于独立的系统存储器(System Memory)中,而非主Flash存储区。
- 系统存储器的地址因型号而异,例如:
- STM32F1系列:
0x1FFFF000 开始
- STM32F4系列:
0x1FFF0000 开始
- 该区域由ST预编程,无法被用户擦写,不会占用用户可用Flash空间。
用户Flash起始地址(0x08000000):
- 主Flash存储区起始于
0x08000000,这是用户程序的标准入口点。
- 用户可完全使用从该地址开始的全部Flash空间,容量取决于具体型号(如64KB、256KB等)。
- 无需为系统bootloader保留空间,两者物理上独立。
用户程序配置要点:
- 中断向量表必须放置在
0x08000000处,需在IDE(如Keil、STM32CubeIDE)中设置正确的偏移量(通常为0x0)。
- 若实现自定义Bootloader+App架构,需将App的起始地址后移(如0x08008000),此时主Flash分区为两部分。但原厂bootloader无此问题。
验证与注意事项:
- 查阅对应型号的参考手册(Reference Manual)和数据手册(Datasheet),确认:
- 系统存储器的具体地址及大小
- 主Flash的容量及分页信息
- 使用ST-Link Utility或CubeProgrammer工具可直观查看内存映射。
示例:STM32F103C8T6(64KB Flash)
- 系统存储器:0x1FFFF000 ~ 0x1FFFF7FF(2KB,独立区域)
- 用户Flash:0x08000000 ~ 0x0800FFFF(64KB全可用)
- 用户程序直接从0x08000000开始,无需偏移。
总结:STM32的原厂bootloader不占用用户Flash资源,用户可完全使用从0x08000000开始的全部主Flash空间,只需确保编译时正确配置工程参数。具体型号的差异需通过官方文档确认。
举报