C和ARM汇编源文件经过ARM开发环境ADS1.2编译链接后,生成的映像(Image)文件包含RO(只读代码、数据段)、RW(可读写数据段)和ZI(将要初始化为0的段)三个输出段。当映像文件加载到flash中的时,RO段和RW段在Flash中的位置见图2(a),其中|Image$$RO$$Base|是RO段的开始地址,也是包含RO输出段的加载和执行地址,可以在ARM Linker中设置,即-ro-base的值,从flash启动时,这个值设置为0x00000000,ZI段不需要加载到flash中。当硬件电路复位后,映像文件中的RW段需要从Flash中拷贝到SDRAM内,同时要将ZI输出段的内容需要用“0”进行初始化,此时输出段在存储区内的位置见图2(b)。|Image$$RW$$Base|是包含RW输出段的执行地址,这个地址值也需要在ARM Linker中设置,即-rw-base的值,一般将-rw-base的值设置到SDRAM的地址范围内,在这里设置为SDRAM的首地址0x30000000。在Nucleus PLUS移植的过程中要编写代码,完成以上操作过程。
图2 加载和执行时存储区分布