diff options
Diffstat (limited to 'lib/cmsis-stm32f1/source/stm32f1.ld')
-rw-r--r-- | lib/cmsis-stm32f1/source/stm32f1.ld | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/lib/cmsis-stm32f1/source/stm32f1.ld b/lib/cmsis-stm32f1/source/stm32f1.ld new file mode 100644 index 00000000..112d0fc0 --- /dev/null +++ b/lib/cmsis-stm32f1/source/stm32f1.ld @@ -0,0 +1,112 @@ +/* + Generic Cortex-M linker script + Public Domain +*/ + +ENTRY(Reset_Handler) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K +} + +/* highest address of the user mode stack */ +_estack = 0x20005000; + +SECTIONS +{ + /* Interrupt vector table */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) + . = ALIGN(4); + } >FLASH + + /* Program code and constant data */ + .text : + { + . = ALIGN(4); + *(.text) + *(.text*) + *(.rodata) + *(.rodata*) + KEEP (*(.init)) + KEEP (*(.fini)) + . = ALIGN(4); + _etext = .; + } >FLASH + + /* Exception handling */ + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + /* Static constructor initialization (C++) */ + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + + /* Initialized data, needs to be handled by startup code */ + _sidata = .; + .data : AT (_sidata) + { + . = ALIGN(4); + _sdata = . ; + _data = . ; + *(.data) + *(.data*) + *(.RAMtext) + . = ALIGN(4); + _edata = . ; + } >RAM + + /* Uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = .; + __bss_start__ = .; + _bss = .; + *(.bss) + *(.bss*) + *(COMMON) + . = ALIGN(4); + _ebss = .; + __bss_end__ = _ebss; + } >RAM + + /* Pointers to end of data for dynamic memory management */ + PROVIDE (end = _ebss); + PROVIDE (_end = _ebss); + + /* Remove debugging from standard libraries */ + /DISCARD/ : + { + libc.a (*) + libm.a (*) + libgcc.a (*) + } +} |