如何在RAM中调试程序

//*****************************************************************************

//

// LM3S.icf - Linker configuration file for timers.

//

// Copyright (c) 2005-2008 Luminary Micro, Inc.  All rights reserved.

// 

// Software License Agreement

// 

// Luminary Micro, Inc. (LMI) is supplying this software for use solely and

// exclusively on LMI's microcontroller products.

// 

// The software is owned by LMI and/or its suppliers, and is protected under

// applicable copyright laws.  All rights are reserved.  You may not combine

// this software with "viral" open-source software in order to form a larger

// program.  Any use in violation of the foregoing restrictions may subject

// the user to criminal sanctions under applicable laws, as well as to civil

// liability for the breach of the terms and conditions of this license.

// 

// THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED

// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF

// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.

// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR

// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

// 

// This is part of revision 2752 of the Stellaris Peripheral Driver Library.

//

//*****************************************************************************

 

//

// Define a memory region that covers the entire 4 GB addressible space of the

// processor.

//

define memory mem with size = 4G;

 

//

// Define a region for the on-chip flash.

//这里是片上flash的大小,256k

define region FLASH = mem:[from 0x00000000 to 0x0003FFFF];

 

//这里是片上ram的大小,96k

// Define a region for the on-chip SRAM.

//

define region SRAM = mem:[from 0x20000000 to 0x20017fff];

 

//

// 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 };

 

//

// 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 };

 

//

// Place the interrupt vectors at the start of flash.

//

//place at start of FLASH { readonly section .intvec };

//  将中断向量表放在SRAM的起始地址处

place at address mem:0x20000000 { readonly section .intvec};

//

// Place the remainder of the read-only items into flash.

//

//place in FLASH { readonly };

place in mem:[from 0x20000000 to 0x2000ee00] {readonly};

//

// Place all read/write items into SRAM.

//

//place in SRAM { readwrite, block HEAP };

place in mem:[from 0x2000ee01 to 0x20017FFF]  { readwrite, block HEAP };