/* Linker script for STR912FAW44 ARM MCU */ /* $Id: str912faw44.ld 3787 2012-05-04 10:58:50Z svn $ */ MEMORY { flash : ORIGIN = 0x00000000, LENGTH = 512K ram : ORIGIN = 0x04000000, LENGTH = 96K } __rom_start__ = ORIGIN(flash); __rom_size__ = LENGTH(flash); __ram_start__ = ORIGIN(ram); __ram_size__ = LENGTH(ram); __STACK_SIZE_FIQ__ = 0x100; __STACK_SIZE_IRQ__ = 0x100; __STACK_SIZE_SUPERVISOR__ = 0x4; __STACK_SIZE_ABORT__ = 0x4; __STACK_SIZE_UNDEFINED__ = 0x4; __stack_size__ = 16K; __stack_end__ = __ram_start__ + __ram_size__ - 4 - __STACK_SIZE_FIQ__ - __STACK_SIZE_IRQ__ - __STACK_SIZE_SUPERVISOR__ - __STACK_SIZE_ABORT__ - __STACK_SIZE_UNDEFINED__; __stack_beg__ = __stack_end__ - __stack_size__; __stack_end_undefined__ = __ram_start__ + __ram_size__ - 4 - __STACK_SIZE_FIQ__ - __STACK_SIZE_IRQ__ - __STACK_SIZE_SUPERVISOR__ - __STACK_SIZE_ABORT__; __stack_end_abort__ = __ram_start__ + __ram_size__ - 4 - __STACK_SIZE_FIQ__ - __STACK_SIZE_IRQ__ - __STACK_SIZE_SUPERVISOR__; __stack_end_supervisor__ = __ram_start__ + __ram_size__ - 4 - __STACK_SIZE_FIQ__ - __STACK_SIZE_IRQ__; __stack_end_irq__ = __ram_start__ + __ram_size__ - 4 - __STACK_SIZE_FIQ__; __stack_end_fiq__ = __ram_start__ + __ram_size__ - 4; __heap_start__ = __bss_end__; /* Heap is between bss and stack */ __heap_end__ = __stack_beg__; SECTIONS { . = 0; /* Start at address 0. */ code : { *(.startup) /* Startup sections are first. */ *(.text*) /* Program (.text) sections */ KEEP(*(.rodata*)) /* are next, then constant data.*/ *(.glue_7) *(.glue_7t) *(.eh_frame) . = ALIGN(4); __ctors_start__ = .; KEEP(*(.init_array)) /* C++ constructors */ KEEP(*(.ctors)) /* C++ constructors */ __ctors_end__ = .; . = ALIGN(16); __data_beg_src__ = .; /* Used by startup. */ } >flash /* Initialized data, located in ram but a copy is placed */ /* in flash so it can be used to init the ram on startup. */ data : ALIGN(16) { __data_beg__ = .; /* Used by startup. */ *(.data) __data_end__ = .; /* Used by startup. */ } >ram AT>flash /* Unitialized data, located in ram, no copy in flash needed */ /* since startup will zero associated area in RAM. */ bss (NOLOAD) : ALIGN(16) { __bss_beg__ = .; /* Used by startup. */ *(.bss) *(COMMON) __bss_end__ = .; /* Used by startup. */ } >ram /* C++ exception unwinding stuff--needed by some toolchains */ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >flash __exidx_start = .; .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } >flash __exidx_end = .; } /* Libraries to link against. */ INPUT( -lstr912faw44 )