一、keil编译完后会产生以下数据:

其中,code代表可执行代码,程序中定义的所有函数都位于此处;
RO-data代表可读数据,程序中所有的全局常量数据和字符都位于此处;
RW-data代表已经初始化的读写数据,程序中所有定义并且初始化的全局变量和静态变量均位于此处;
ZI-data代表未初始化的读写数据,程序中定义了但是没有初始化的全局变量和静态变量位于此处;
二、在map文件的最后可以看到如下数据

从这个表里可以看到ROM SIZE里包含了Code RO-data RW-data,但是没有zi-data。是因为zi-data的值没有在程序里进行初始化,所以上电运行后会直接被赋值为0,所以这个值也就没有必要保存的ROM空间里了。
三、程序空间大小计算
7828byte=0x1E94byte;
那么数据存储从0x800 0000+0x1E94=0x800 1E94开始都是安全的。
本文介绍了Keil编译器编译后的各类数据及其存放位置:code存放可执行代码,RO-data存放全局常量数据,RW-data存放已初始化变量,ZI-data存放未初始化变量。并解释了为何ZI-data不占用ROM空间。
2666

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



