单片机:
STM32F030CCT6
编程器:ST-Link/V2
软件:STM32 ST-LINK U
tility v4.1.0.0
我是 STM32 mcu 的新手,正在尝试理解内存映射。
参考手册(RM0091,DocID018940 Rev 9)在第 2.5 节中指出,当 Boot0(引脚)为高且 nBoot1(位)为高时,系统内存别名为引导区 0x0000 0000。
当 Boot0(引脚)为低电平时,Main Flash Memory 被别名为引导区。
为了更舒适地使用 ST-LINK Utility 并测试我对内存映射的理解,我认为验证这一点将是一个很好的练习。
因此,使用 STM32 ST-Link Utility,当 Boot0(引脚)为低时,我将 3KB 的主闪存与引导区域进行比较。
是的,边界之间的内存内容
0x0000 0000 - 0x0000 0C00
等同于
0x0800 0000 - 0x0800 0C00
这符合预期。
现在我重新启动系统,同时保持 Boot0 引脚为高电平(和 nBoot1
位也很高),因此我希望引导区域的系统内存内容。
但是边界之间的内存内容
0x0000 0000 - 0x0000 0C00
不等于
0x1FFF EC00 - 0x1FFF F800
这是出乎意料的吧?
进一步阅读 AN2606(修订版 42)表 136 指出 STM32F030xC 的系统内存位于 0x1FFF
D8 00 - 0x1FFF F7FF
阅读本节时引导区匹配,显然系统内存移动了 5KByte,
从 0x1FFF
EC 00 到 0x1FFF
D8 00,这是为什么呢?
在我看来,参考手册(RM0091,Rev9)中关于系统内存位置的信息不正确。
我误会了什么吗?