这里仅将嵌入式写程序中遇到的代码全局变量过多(做的是激光雷达的数据处理,数据量有些大),导致SRAM不够用的情况简单分析如下:
SRAM用超之后(多加了个函数),keil编译器报错如下:
大意就是No space,之前程序可以有效编译的结果如下:
代码占用了多少空间:
Code是代码占用的空间,RO-data是 Read Only 程序中的指令和只读常量的大小,如const型,RW-data是(Read Write) 初始化后为非0的可读写变量的大小,ZI-data是(Zero Initialize) 未被初始化或初始化为0的变量的大小。
一个ARM程序包含3部分:RO,RW和ZI(“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,ARM映像文件就是指烧录到ROM中的bin文件,具体这里的区别我还没有细究,具体可参考http