www.pudn.com > IEC104_codeamaterial.rar > MCF52259_INTERNAL_FLASH.lcf, change:2011-03-08,size:3062b


# Sample Linker Command File for CodeWarrior for ColdFire 
 
KEEP_SECTION {.vectortable} 
 
# Memory ranges	 
 
MEMORY { 
   vectorrom   (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400 
   cfmprotrom  (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000020    
   code        (RX)  : ORIGIN = 0x00000500, LENGTH = 0x0007FB00 
   vectorram   (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000400 
   rsvram      (RWX) : ORIGIN = 0x20000400, LENGTH = 0x00000400 
   userram1    (RWX) : ORIGIN = 0x20000800, LENGTH = 0x0000F800    
   userram2    (RWX) : ORIGIN = 0x80000000, LENGTH = 0x000FFFF0 
}       
 
SECTIONS { 
 
# MCF52259 Derivative Memory map definitions from linker command files: 
# __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker 
# symbols must be defined in the linker command file. 
 
# Memory Mapped Registers (IPSBAR= 0x40000000) 
   ___IPSBAR         = 0x40000000; 
 
# 64 Kbytes Internal SRAM 
   ___RAMBAR         = 0x20000000; 
   ___RAMBAR_SIZE    = 0x00010000; 
 
# 1M bytes Extern SRAM 
   ___ESRAM		     = 0x80000000; 
   ___ESRAM_SIZE	 = 0x000FFFF0;    
 
# 512 KByte Internal Flash Memory 
   ___FLASHBAR       = 0x00000000; 
   ___FLASHBAR_SIZE  = 0x00080000; 
 
   ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4; 
 
   ___stack_size     = 0x1000; 
 
    .userram1	: {} > userram1	 
    .userram2    : {} > userram2 
    .code	    : {} > code		 
    .vectorram	: {} > vectorram			 
    .rsvram      : {} > rsvram 
	  
	.vectors : 
	{ 
		exceptions.c(.vectortable) 
		. = ALIGN (0x4);  
	} > vectorrom 
 
	.cfmprotect : 
	{ 
		*(.cfmconfig) 
		. = ALIGN (0x4); 
	} > cfmprotrom 
 
	.text : 
	{ 
		*(.text) 
		. = ALIGN (0x4); 
		*(.rodata) 
		. = ALIGN (0x4);		 
		___ROM_AT = .; 
		___DATA_ROM = .; 
	} >> code 
 
	.data : AT(___ROM_AT)  
	{   
		___DATA_RAM = .; 
		. = ALIGN(0x4); 
		*(.exception)	 
		. = ALIGN(0x4);	 
		__exception_table_start__ = .; 
		EXCEPTION 
		__exception_table_end__ = .; 
		 
		___sinit__ = .; 
	    STATICINIT 
		__START_DATA = .; 
 
		*(.data) 
		. = ALIGN (0x4); 
		__END_DATA = .; 
 
		__START_SDATA = .; 
		*(.sdata) 
		. = ALIGN (0x4); 
		__END_SDATA = .; 
 
		___DATA_END = .; 
		__SDA_BASE = .; 
		. = ALIGN (0x4); 
	} >> userram1 
 
	.bss : 
	{ 
		___BSS_START = .; 
		__START_SBSS = .; 
		*(.sbss) 
		. = ALIGN (0x4); 
		*(SCOMMON) 
		__END_SBSS = .; 
 
		__START_BSS = .; 
		*(.bss) 
		. = ALIGN (0x4); 
		*(COMMON) 
		__END_BSS = .; 
		___BSS_END = .; 
 
		. = ALIGN(0x4); 
 
		___SP_END		= .; 
		___SP_INIT		= ___SP_END + ___stack_size; 
	} >> userram1 
 
	.custom : 
	{ 
		___HEAP_START	= .; 
		___heap_addr	= ___HEAP_START; 
		___HEAP_END		= ___ESRAM + ___ESRAM_SIZE; 
		 
		. = ALIGN (0x4); 
	} >> userram2 
  	 
	___VECTOR_RAM = ADDR(.vectorram); 
	 
	___RSRAM = ADDR(.rsvram); 
	 
	__SP_INIT = ___SP_INIT; 
 
	___heap_size = ___HEAP_END - ___HEAP_START ; 
 
	_romp_at = ___ROM_AT + SIZEOF(.data); 
	.romp : AT(_romp_at) 
	{ 
		__S_romp = _romp_at; 
		WRITEW(___ROM_AT); 
		WRITEW(ADDR(.data)); 
		WRITEW(SIZEOF(.data)); 
		WRITEW(0); 
		WRITEW(0); 
		WRITEW(0); 
	} 
 
}