转自: http://blog.sina.com.cn/s/blog_5f18cbd10100d4xm.html
 
如何使应用程序在 RAM 里面跑起来。对于 IAR 编译器,其使很简单,只要稍做修改即可。下面这一段代码,是截取 LM3S.icf 配置文件的某一段,
//
// Define a memory region that covers the entire 4 GB addressible space of the
// processor.
//
define memory mem with size = 4G;                 //  指定 CPU 的寻址范围
//
// Define a region for the on-chip flash.
//
define region FLASH = mem:[from 0x00000000 to 0x0003ffff];     //  指定片内 Flash 的范围
//
// Define a region for the on-chip SRAM.
//
define region SRAM = mem:[from 0x20000000 to 0x2000ffff];    //  指定片内 SRAM 的范围
//
// Define a block for the heap.  The size should be set to something other
// than zero if things in the C library that require the heap are used.
//
define block HEAP with alignment = 8, size = 0x00000000 { };     //  定义堆空间的大小
//
// Indicate that the read/write values should be initialized by copying from
// flash.
//
initialize by copy { readwrite };   //  指示 read/write 数据在初始化过程中要从 Flash 中拷贝出来
//
// Indicate that the noinit values should be left alone.  This includes the
// stack, which if initialized will destroy the return address from the
// initialization code, causing the processor to branch to zero and fault.
//
do not initialize { section .noinit }; //  预留一个段不拷贝到 RAM ,这部分通常是包含着中断 // 向量表的段
//
// Place the interrupt vectors at the start of flash.
//
place at start of SRAM { readonly section .intvec };     //  将中断向量表放在 SRAM 的起始地址处
//
// Place the remainder of the read-only items into flash.
//
place in SRAM { readonly };      //  将剩余的 read-only 项放入 SRAM
//
// Place all read/write items into SRAM.
//
place in SRAM { readwrite, block HEAP };      //  将所有的 read/write 项及堆空间放入 SRAM
 
代码中红色单词就是被改之后的,没有改之前,这些红色的单词是 FLASH ,程序在 FLASH 中运行。