ARM---RO, RW, ZI

.text段是代码段。它用来放程序代码(code)。它通常是只读的(程序代码,编译好了就确定了,不可能改来改去的嘛)。
.data段是数据段。它用来存放初始化了的(initailized)全局变量(global)和初始化了的静态变量(static)。它是可读可写的。
.bss段是全局变量数据段。它用来存放未初始化的(uninitailized)全局变量(global)和未初始化的静态变量(static)。它也是可读可写的。 bss是英文Block Started by Symbol的缩写。之所以把bss跟data分开来,是因为 系统会为这些bss段的变量的初值清零。

.constdata段是常量数据段。它用来存放常量(const)。它也是只读的。

 

 

源程序中使用malloc分配的内存就是bss这一块,它的大小不是根据data的大小确定的,主要是由程序中同时分配内存最大值所确定的,不过如果超出了范围,也就是分配失败,可以等空间释放之后再分配。

       以上这些段,用户可以非常灵活的定义其首地址和大小。但对大部分用户来说,程序代码区在ROMFLASH中,可读写区域在SRAMDRAM中。考虑一下自己程序规模,函数调用规模,内存使用大小,然后,参照一个连接定位文件,稍加修改就可以了。

    

ARM的集成开发环境中,

1、只读的代码段称为Code段,即上述的.text段。

2、只读的常量数据段,被称作RO Data段,即上述的.constdata

以上两个段统称为RORead Only,放在ROMFLASH非易失性器件中

3、可读可写的初始化了的全局变量和静态变量段,被称作RW Data段(ReadWrite),即上述的.bss

4、可读可写的未初始化的全局变量和静态变量段,被称作ZI Data段(Zero Init),即上述的.data段。因为这个段里的变量要被初始化为零,所以叫ZI段。

以上两个段统称为RW段,而在运行时,它必须重新装载到可读可写的RAM中。

你可能感兴趣的:(ARM---RO, RW, ZI)