/* identify the Entry Point */ ENTRY(_startup) /* specify the LPC2106 memory areas */ MEMORY { flash : ORIGIN = 0x80000000, LENGTH = 1M /* FLASH ROM */ ram : ORIGIN = 0x40000200, LENGTH = 64K - 0x220 /* free RAM area */ } /* define a global symbol _stack_end */ _stack_end = 0x4000FEDC; /* now define the output sections */ SECTIONS { . = 0; /* set location counter to address zero */ startup : { *(.startup) } >flash /* the startup code goes into FLASH */ .text : /* collect all sections that should go into FLASH after startup */ { *(.text) /* all .text sections (code) */ *(.rodata) /* all .rodata sections (constants, strings, etc.) */ *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ *(.glue_7) /* all .glue_7 sections (no idea what these are) */ *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ _etext = .; /* define a global symbol _etext just after the last code byte */ } >flash /* put all the above into FLASH */ .data : /* collect all initialized .data sections that go into RAM */ { _data = .; /* create a global symbol marking the start of the .data section */ *(.data) /* all .data sections */ _edata = .; /* define a global symbol marking the end of the .data section */ } >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */ .bss : /* collect all uninitialized .bss sections that go into RAM */ { _bss_start = .; /* define a global symbol marking the start of the .bss section */ *(.bss) /* all .bss sections */ } >ram /* put all the above in RAM (it will be cleared in the startup code */ . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ _bss_end = . ; /* define a global symbol marking the end of the .bss section */ } _end = .; /* define a global symbol marking the end of application RAM */ PROVIDE( BCFG0 = 0xFFE00000); PROVIDE( BCFG1 = 0xFFE00004); PROVIDE( BCFG2 = 0xFFE00008); PROVIDE( PINSEL0 = 0xE002C000); PROVIDE( PINSEL2 = 0xE002C014); PROVIDE( IO0PIN = 0xE0028000);