有些疑惑,STM32F407的Flash和Ram总容量是怎么计算的? 比如:
ARM Cortex-M4 32b MCU+FPU, 210DMIPS, up to 1MB Flash/192+4KB RAM, USB
OTG HS/FS, Ethernet, 17 TIMs, 3 ADCs, 15 comm. interfaces & camera
flash 512KB 和 192+4KB ram
Flash占用大小=Code+RO+RW
SRAM占用大小=RW+ZI
编译后:
Size: Code=39452 RO-data=1316 RW-data=372 ZI-data=1231108
按上面计算
Flash占用大小=39452+1316+372=41140B=40.17KB
SRAM占用大小=372 + 1231108=1231480B=1202KB
SRAM计算超出了芯片的192+4KB,超过了芯片RAM为什么还能正常运行?
出现.\Obj\103ZE_MDK5.axf: Error: L6406E: No space in execution regions with .ANY selector matching tim_x.o(.data). 是不是意味着RAM不够用了?
查阅资料:
这些参数的单位是Byte
图中几个参数分别代表
Code:代码的大小
RO:常量所占空间
RW:程序中已经初始化的变量所占空间
ZI:未初始化的static和全局变量以及堆栈所占的空间
上述参数和芯片Flash以及SRAM的对应关系是
Flash占用大小=Code+RO+RW
SRAM占用大小=RW+ZI
资料出处
https://blog.csdn.net/u014471291/article/details/79641192