ST意法半导体
直播中

李波

8年用户 1522经验值
私信 关注
[问答]

bootloader占用的flash起始地址一般在哪?从0x08000000地址开始的flash能够被用户使用吗?

对于具体的型号,可以参考产品手册。 Bootloader 对应于 system memory,是独立部分。 用户的程序区没有被占用。就是对应型号的容量。

回帖(1)

王波

2025-4-25 18:28:03

在STM32系列微控制器中,关于bootloader和用户Flash的使用,以下是关键点的分步解释:




  1. Bootloader的存储位置



    • STM32的出厂预置bootloader位于独立系统存储器(System Memory)中,而非主Flash存储区。

    • 系统存储器的地址因型号而异,例如:

      • STM32F1系列:0x1FFFF000 开始

      • STM32F4系列:0x1FFF0000 开始


    • 该区域由ST预编程,无法被用户擦写,不会占用用户可用Flash空间




  2. 用户Flash起始地址(0x08000000)



    • 主Flash存储区起始于0x08000000,这是用户程序的标准入口点。

    • 用户可完全使用从该地址开始的全部Flash空间,容量取决于具体型号(如64KB、256KB等)。

    • 无需为系统bootloader保留空间,两者物理上独立。




  3. 用户程序配置要点



    • 中断向量表必须放置在0x08000000处,需在IDE(如Keil、STM32CubeIDE)中设置正确的偏移量(通常为0x0)。

    • 若实现自定义Bootloader+App架构,需将App的起始地址后移(如0x08008000),此时主Flash分区为两部分。但原厂bootloader无此问题。




  4. 验证与注意事项



    • 查阅对应型号的参考手册(Reference Manual)数据手册(Datasheet),确认:

      • 系统存储器的具体地址及大小

      • 主Flash的容量及分页信息


    • 使用ST-Link Utility或CubeProgrammer工具可直观查看内存映射。




示例:STM32F103C8T6(64KB Flash)



  • 系统存储器:0x1FFFF000 ~ 0x1FFFF7FF(2KB,独立区域)

  • 用户Flash:0x08000000 ~ 0x0800FFFF(64KB全可用)

  • 用户程序直接从0x08000000开始,无需偏移。


总结:STM32的原厂bootloader不占用用户Flash资源,用户可完全使用从0x08000000开始的全部主Flash空间,只需确保编译时正确配置工程参数。具体型号的差异需通过官方文档确认。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分