/*
 *  @(#) $Id: lpc2388_flash.ld,v 1.1 2009-12-27 21:42:03 suikan Exp $
 */

OUTPUT_FORMAT("elf32-littlearm") 
OUTPUT_ARCH(arm)

PROVIDE(hardware_init_hook = 0);
PROVIDE(software_init_hook = 0);
PROVIDE(software_term_hook = 0);

MEMORY
  {
    MEM_FLASH (X!W)	  : ORIGIN = 0x00000000, LENGTH = 512K
    MEM_SRAM (XW)     : ORIGIN = 0x40000040, LENGTH = 64K-64	/*リマップ領域を避ける*/
    MEM_USBSRAM (XW)  : ORIGIN = 0x7FD00000, LENGTH = 16K
    MEM_ETHERSRAM (XW): ORIGIN = 0x7FE00000, LENGTH = 16K
    MEM_EXTSRAM_0 (XW): ORIGIN = 0x80000000, LENGTH = 64K
    MEM_EXTSRAM_1 (XW): ORIGIN = 0x81000000, LENGTH = 64K
  }

SECTIONS
{
    .text :
    {
    	KEEP(start.o(.vector))
        KEEP(*.o(.text))
    } > MEM_FLASH
    
		/* リードオンリー変数の配置 */
    .rodata : { 
		*(.rodata) 
		*(.rodata.str1.4) 
    } > MEM_FLASH


		/* 初期値付きの変数の配置。初期値はROMに書いておき、変数本体はRAMに配置 */
    . = ALIGN(4);
    __idata_start = . ;					/* 初期値が置かれるFlash ROMのアドレス */
    .data   :  AT(__idata_start) 
    {
        __data_start = . ;				/* 変数が置かれるRAMのアドレス */
        *(.data)
    } > MEM_SRAM
   . = ALIGN(4);
    __idata_end = __idata_start + SIZEOF(.data);


		/* 初期値なしの変数の配置 */
    __bss_start = .	;		
    .bss       :
    {
      *(.bss)
      *(COMMON)
    } > MEM_SRAM
   . = ALIGN(4);
    __bss_end = __bss_start + SIZEOF(.bss);

}	

	
		
	