ZI (Zero Initialize),未初始化的全局变量和静态变量,以及初始化为0的变量
ZI的数据全部是0,没必要开始就包含,只要程序运行之前将ZI数据所在的区域(RAM)清 0,不占用Flash,运行时候占用RAM
数据段 | 说明 |
---|---|
bss | Block Started by Symbol,储存未初始化的,或初始化为0的全局变量和静态变量 在RTOS中声明的大数组占用的bss段 |
heap | 堆 是用于存放进程运行中动态分配的内存段,其可用大小定义在启动文件中 |
stack | 栈 用于存放函数的参数,局部变量等,由系统自动分配和释放,其可用大小定义在启动文件中 |
RW (Read Write),已经初始化的全局变量和静态变量
数据段 | 说明 |
---|---|
data | 由于这些初始值不会凭空产生,所以得存在Flash中 即RW即占RAM空间也占Flash空间,有时占用Flash的空间比RAM小,因为会压缩 |
RW (Read Only) ,代码,常量等
数据段 | 说明 |
---|---|
text | 代码段 |
const data | 储存只读常量,const修饰的常量,不管是在局部还是全局 一些只读的大变量最好用const修饰 |
==============================================================================
Code (inc. data) RO Data RW Data ZI Data Debug
141728 14222 4844 6220 44092 1748837 Grand Totals
141728 14222 4844 420 44092 1748837 ELF Image Totals (compressed)
141728 14222 4844 420 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 146572 ( 143.14kB)
Total RW Size (RW Data + ZI Data) 50312 ( 49.13kB)
Total ROM Size (Code + RO Data + RW Data) 146992 ( 143.55kB)
==============================================================================
程序占用 Flash=Code + RO Data + RW Data(压缩后的)
程序运行时候占用 RAM = RW data + ZI data