mbed library sources

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Mar 21 11:45:09 2014 +0000
Revision:
130:1dec54e4aec3
Synchronized with git revision e5c9ff6781a4e277a5a454e5a0b037f76e31739d

Full URL: https://github.com/mbedmicro/mbed/commit/e5c9ff6781a4e277a5a454e5a0b037f76e31739d/

STM32F0-Discovery (STM32F051R8) initial port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 130:1dec54e4aec3 1 /* Linker script for STM32F */
mbed_official 130:1dec54e4aec3 2
mbed_official 130:1dec54e4aec3 3 /* Linker script to configure memory regions. */
mbed_official 130:1dec54e4aec3 4 MEMORY
mbed_official 130:1dec54e4aec3 5 {
mbed_official 130:1dec54e4aec3 6 FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64k
mbed_official 130:1dec54e4aec3 7 RAM (rwx) : ORIGIN = 0x200000C0, LENGTH = 0x2000-0xC0
mbed_official 130:1dec54e4aec3 8 }
mbed_official 130:1dec54e4aec3 9
mbed_official 130:1dec54e4aec3 10 /* Linker script to place sections and symbol values. Should be used together
mbed_official 130:1dec54e4aec3 11 * with other linker script that defines memory regions FLASH and RAM.
mbed_official 130:1dec54e4aec3 12 * It references following symbols, which must be defined in code:
mbed_official 130:1dec54e4aec3 13 * Reset_Handler : Entry of reset handler
mbed_official 130:1dec54e4aec3 14 *
mbed_official 130:1dec54e4aec3 15 * It defines following symbols, which code can use without definition:
mbed_official 130:1dec54e4aec3 16 * __exidx_start
mbed_official 130:1dec54e4aec3 17 * __exidx_end
mbed_official 130:1dec54e4aec3 18 * __etext
mbed_official 130:1dec54e4aec3 19 * __data_start__
mbed_official 130:1dec54e4aec3 20 * __preinit_array_start
mbed_official 130:1dec54e4aec3 21 * __preinit_array_end
mbed_official 130:1dec54e4aec3 22 * __init_array_start
mbed_official 130:1dec54e4aec3 23 * __init_array_end
mbed_official 130:1dec54e4aec3 24 * __fini_array_start
mbed_official 130:1dec54e4aec3 25 * __fini_array_end
mbed_official 130:1dec54e4aec3 26 * __data_end__
mbed_official 130:1dec54e4aec3 27 * __bss_start__
mbed_official 130:1dec54e4aec3 28 * __bss_end__
mbed_official 130:1dec54e4aec3 29 * __end__
mbed_official 130:1dec54e4aec3 30 * end
mbed_official 130:1dec54e4aec3 31 * __HeapLimit
mbed_official 130:1dec54e4aec3 32 * __StackLimit
mbed_official 130:1dec54e4aec3 33 * __StackTop
mbed_official 130:1dec54e4aec3 34 * __stack
mbed_official 130:1dec54e4aec3 35 */
mbed_official 130:1dec54e4aec3 36 ENTRY(Reset_Handler)
mbed_official 130:1dec54e4aec3 37
mbed_official 130:1dec54e4aec3 38 SECTIONS
mbed_official 130:1dec54e4aec3 39 {
mbed_official 130:1dec54e4aec3 40 .text :
mbed_official 130:1dec54e4aec3 41 {
mbed_official 130:1dec54e4aec3 42 KEEP(*(.isr_vector))
mbed_official 130:1dec54e4aec3 43 *(.text*)
mbed_official 130:1dec54e4aec3 44
mbed_official 130:1dec54e4aec3 45 KEEP(*(.init))
mbed_official 130:1dec54e4aec3 46 KEEP(*(.fini))
mbed_official 130:1dec54e4aec3 47
mbed_official 130:1dec54e4aec3 48 /* .ctors */
mbed_official 130:1dec54e4aec3 49 *crtbegin.o(.ctors)
mbed_official 130:1dec54e4aec3 50 *crtbegin?.o(.ctors)
mbed_official 130:1dec54e4aec3 51 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
mbed_official 130:1dec54e4aec3 52 *(SORT(.ctors.*))
mbed_official 130:1dec54e4aec3 53 *(.ctors)
mbed_official 130:1dec54e4aec3 54
mbed_official 130:1dec54e4aec3 55 /* .dtors */
mbed_official 130:1dec54e4aec3 56 *crtbegin.o(.dtors)
mbed_official 130:1dec54e4aec3 57 *crtbegin?.o(.dtors)
mbed_official 130:1dec54e4aec3 58 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
mbed_official 130:1dec54e4aec3 59 *(SORT(.dtors.*))
mbed_official 130:1dec54e4aec3 60 *(.dtors)
mbed_official 130:1dec54e4aec3 61
mbed_official 130:1dec54e4aec3 62 *(.rodata*)
mbed_official 130:1dec54e4aec3 63
mbed_official 130:1dec54e4aec3 64 KEEP(*(.eh_frame*))
mbed_official 130:1dec54e4aec3 65 } > FLASH
mbed_official 130:1dec54e4aec3 66
mbed_official 130:1dec54e4aec3 67 .ARM.extab :
mbed_official 130:1dec54e4aec3 68 {
mbed_official 130:1dec54e4aec3 69 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 130:1dec54e4aec3 70 } > FLASH
mbed_official 130:1dec54e4aec3 71
mbed_official 130:1dec54e4aec3 72 __exidx_start = .;
mbed_official 130:1dec54e4aec3 73 .ARM.exidx :
mbed_official 130:1dec54e4aec3 74 {
mbed_official 130:1dec54e4aec3 75 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
mbed_official 130:1dec54e4aec3 76 } > FLASH
mbed_official 130:1dec54e4aec3 77 __exidx_end = .;
mbed_official 130:1dec54e4aec3 78
mbed_official 130:1dec54e4aec3 79 __etext = .;
mbed_official 130:1dec54e4aec3 80 _sidata = .;
mbed_official 130:1dec54e4aec3 81
mbed_official 130:1dec54e4aec3 82 .data : AT (__etext)
mbed_official 130:1dec54e4aec3 83 {
mbed_official 130:1dec54e4aec3 84 __data_start__ = .;
mbed_official 130:1dec54e4aec3 85 _sdata = .;
mbed_official 130:1dec54e4aec3 86 *(vtable)
mbed_official 130:1dec54e4aec3 87 *(.data*)
mbed_official 130:1dec54e4aec3 88
mbed_official 130:1dec54e4aec3 89 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 90 /* preinit data */
mbed_official 130:1dec54e4aec3 91 PROVIDE_HIDDEN (__preinit_array_start = .);
mbed_official 130:1dec54e4aec3 92 KEEP(*(.preinit_array))
mbed_official 130:1dec54e4aec3 93 PROVIDE_HIDDEN (__preinit_array_end = .);
mbed_official 130:1dec54e4aec3 94
mbed_official 130:1dec54e4aec3 95 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 96 /* init data */
mbed_official 130:1dec54e4aec3 97 PROVIDE_HIDDEN (__init_array_start = .);
mbed_official 130:1dec54e4aec3 98 KEEP(*(SORT(.init_array.*)))
mbed_official 130:1dec54e4aec3 99 KEEP(*(.init_array))
mbed_official 130:1dec54e4aec3 100 PROVIDE_HIDDEN (__init_array_end = .);
mbed_official 130:1dec54e4aec3 101
mbed_official 130:1dec54e4aec3 102
mbed_official 130:1dec54e4aec3 103 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 104 /* finit data */
mbed_official 130:1dec54e4aec3 105 PROVIDE_HIDDEN (__fini_array_start = .);
mbed_official 130:1dec54e4aec3 106 KEEP(*(SORT(.fini_array.*)))
mbed_official 130:1dec54e4aec3 107 KEEP(*(.fini_array))
mbed_official 130:1dec54e4aec3 108 PROVIDE_HIDDEN (__fini_array_end = .);
mbed_official 130:1dec54e4aec3 109
mbed_official 130:1dec54e4aec3 110 KEEP(*(.jcr*))
mbed_official 130:1dec54e4aec3 111 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 112 /* All data end */
mbed_official 130:1dec54e4aec3 113 __data_end__ = .;
mbed_official 130:1dec54e4aec3 114 _edata = .;
mbed_official 130:1dec54e4aec3 115
mbed_official 130:1dec54e4aec3 116 } > RAM
mbed_official 130:1dec54e4aec3 117
mbed_official 130:1dec54e4aec3 118 .bss :
mbed_official 130:1dec54e4aec3 119 {
mbed_official 130:1dec54e4aec3 120 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 121 __bss_start__ = .;
mbed_official 130:1dec54e4aec3 122 _sbss = .;
mbed_official 130:1dec54e4aec3 123 *(.bss*)
mbed_official 130:1dec54e4aec3 124 *(COMMON)
mbed_official 130:1dec54e4aec3 125 . = ALIGN(4);
mbed_official 130:1dec54e4aec3 126 __bss_end__ = .;
mbed_official 130:1dec54e4aec3 127 _ebss = .;
mbed_official 130:1dec54e4aec3 128 } > RAM
mbed_official 130:1dec54e4aec3 129
mbed_official 130:1dec54e4aec3 130 .heap (COPY):
mbed_official 130:1dec54e4aec3 131 {
mbed_official 130:1dec54e4aec3 132 __end__ = .;
mbed_official 130:1dec54e4aec3 133 end = __end__;
mbed_official 130:1dec54e4aec3 134 *(.heap*)
mbed_official 130:1dec54e4aec3 135 __HeapLimit = .;
mbed_official 130:1dec54e4aec3 136 } > RAM
mbed_official 130:1dec54e4aec3 137
mbed_official 130:1dec54e4aec3 138 /* .stack_dummy section doesn't contains any symbols. It is only
mbed_official 130:1dec54e4aec3 139 * used for linker to calculate size of stack sections, and assign
mbed_official 130:1dec54e4aec3 140 * values to stack symbols later */
mbed_official 130:1dec54e4aec3 141 .stack_dummy (COPY):
mbed_official 130:1dec54e4aec3 142 {
mbed_official 130:1dec54e4aec3 143 *(.stack*)
mbed_official 130:1dec54e4aec3 144 } > RAM
mbed_official 130:1dec54e4aec3 145
mbed_official 130:1dec54e4aec3 146 /* Set stack top to end of RAM, and stack limit move down by
mbed_official 130:1dec54e4aec3 147 * size of stack_dummy section */
mbed_official 130:1dec54e4aec3 148 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
mbed_official 130:1dec54e4aec3 149 _estack = __StackTop;
mbed_official 130:1dec54e4aec3 150 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
mbed_official 130:1dec54e4aec3 151 PROVIDE(__stack = __StackTop);
mbed_official 130:1dec54e4aec3 152
mbed_official 130:1dec54e4aec3 153 /* Check if data + heap + stack exceeds RAM limit */
mbed_official 130:1dec54e4aec3 154 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
mbed_official 130:1dec54e4aec3 155 }
mbed_official 130:1dec54e4aec3 156