一、编译信息内存分布的思维导图
ARM Cortex-M系列内核的编译信息内存分布——思维导图如下所示:
- Code是代码占用大小;
- RO-data是只读常量;
- RW-data是已初始化的可读可写变量,当MCU上电时,RW-data会搬运到RAM中运行。当MCU下电时,RW-data保存在Flash,等待MCU上电工作;
- ZI-data是未初始化的可读可写变量。

二、举实例
arm-none-eabi-gcc交叉编译工具链内存区域的占用详细信息表征:

keil MDK 的armcc / armclang编译工具链内存区域的占用详细信息表征:

以上述的 arm-none-eabi-gcc交叉编译工具链内存区域的占用详细信息作为分析:
①dec十进制42713 = hex十六进制a6d9,hex文件是即将要烧录到MCU中的产物(实际上烧录到MCU中的是二进制bin文件);
②a6d9(hex)=42713=31521+2512+8680,在上面的思维导图中我们已经知道,text+data是在flash中运行的、data+bss是在上电后搬运到ram中运行的;
③最终烧录到MCU的hex文件是由flash部分+ram部分构成。
2985

被折叠的 条评论
为什么被折叠?



