mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Jul 02 16:15:09 2015 +0100
Revision:
580:3c14cb9b87c5
Synchronized with git revision 213caf296f26963a7bea129b8ec4f33bbd1e6588

Full URL: https://github.com/mbedmicro/mbed/commit/213caf296f26963a7bea129b8ec4f33bbd1e6588/

commit of mps2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 580:3c14cb9b87c5 1 /* Linker script to configure memory regions. */
mbed_official 580:3c14cb9b87c5 2 MEMORY
mbed_official 580:3c14cb9b87c5 3 {
mbed_official 580:3c14cb9b87c5 4 FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x40000 /* 256k */
mbed_official 580:3c14cb9b87c5 5 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x08000 /* 32k */
mbed_official 580:3c14cb9b87c5 6 }
mbed_official 580:3c14cb9b87c5 7
mbed_official 580:3c14cb9b87c5 8 /* Library configurations */
mbed_official 580:3c14cb9b87c5 9 GROUP(libgcc.a libc.a libm.a libnosys.a)
mbed_official 580:3c14cb9b87c5 10
mbed_official 580:3c14cb9b87c5 11 /* Linker script to place sections and symbol values. Should be used together
mbed_official 580:3c14cb9b87c5 12 * with other linker script that defines memory regions FLASH and RAM.
mbed_official 580:3c14cb9b87c5 13 * It references following symbols, which must be defined in code:
mbed_official 580:3c14cb9b87c5 14 * Reset_Handler : Entry of reset handler
mbed_official 580:3c14cb9b87c5 15 *
mbed_official 580:3c14cb9b87c5 16 * It defines following symbols, which code can use without definition:
mbed_official 580:3c14cb9b87c5 17 * __exidx_start
mbed_official 580:3c14cb9b87c5 18 * __exidx_end
mbed_official 580:3c14cb9b87c5 19 * __copy_table_start__
mbed_official 580:3c14cb9b87c5 20 * __copy_table_end__
mbed_official 580:3c14cb9b87c5 21 * __zero_table_start__
mbed_official 580:3c14cb9b87c5 22 * __zero_table_end__
mbed_official 580:3c14cb9b87c5 23 * __etext
mbed_official 580:3c14cb9b87c5 24 * __data_start__
mbed_official 580:3c14cb9b87c5 25 * __preinit_array_start
mbed_official 580:3c14cb9b87c5 26 * __preinit_array_end
mbed_official 580:3c14cb9b87c5 27 * __init_array_start
mbed_official 580:3c14cb9b87c5 28 * __init_array_end
mbed_official 580:3c14cb9b87c5 29 * __fini_array_start
mbed_official 580:3c14cb9b87c5 30 * __fini_array_end
mbed_official 580:3c14cb9b87c5 31 * __data_end__
mbed_official 580:3c14cb9b87c5 32 * __bss_start__
mbed_official 580:3c14cb9b87c5 33 * __bss_end__
mbed_official 580:3c14cb9b87c5 34 * __end__
mbed_official 580:3c14cb9b87c5 35 * end
mbed_official 580:3c14cb9b87c5 36 * __HeapLimit
mbed_official 580:3c14cb9b87c5 37 * __StackLimit
mbed_official 580:3c14cb9b87c5 38 * __StackTop
mbed_official 580:3c14cb9b87c5 39 * __stack
mbed_official 580:3c14cb9b87c5 40 * __Vectors_End
mbed_official 580:3c14cb9b87c5 41 * __Vectors_Size
mbed_official 580:3c14cb9b87c5 42 */
mbed_official 580:3c14cb9b87c5 43 ENTRY(Reset_Handler)
mbed_official 580:3c14cb9b87c5 44
mbed_official 580:3c14cb9b87c5 45 SECTIONS
mbed_official 580:3c14cb9b87c5 46 {
mbed_official 580:3c14cb9b87c5 47 .text :
mbed_official 580:3c14cb9b87c5 48 {
mbed_official 580:3c14cb9b87c5 49 KEEP(*(.vectors))
mbed_official 580:3c14cb9b87c5 50 __Vectors_End = .;
mbed_official 580:3c14cb9b87c5 51 __Vectors_Size = __Vectors_End - __Vectors;
mbed_official 580:3c14cb9b87c5 52 __end__ = .;
mbed_official 580:3c14cb9b87c5 53
mbed_official 580:3c14cb9b87c5 54 *(.text*)
mbed_official 580:3c14cb9b87c5 55
mbed_official 580:3c14cb9b87c5 56 KEEP(*(.init))
mbed_official 580:3c14cb9b87c5 57 KEEP(*(.fini))
mbed_official 580:3c14cb9b87c5 58
mbed_official 580:3c14cb9b87c5 59 /* .ctors */
mbed_official 580:3c14cb9b87c5 60 *crtbegin.o(.ctors)
mbed_official 580:3c14cb9b87c5 61 *crtbegin?.o(.ctors)
mbed_official 580:3c14cb9b87c5 62 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
mbed_official 580:3c14cb9b87c5 63 *(SORT(.ctors.*))
mbed_official 580:3c14cb9b87c5 64 *(.ctors)
mbed_official 580:3c14cb9b87c5 65
mbed_official 580:3c14cb9b87c5 66 /* .dtors */
mbed_official 580:3c14cb9b87c5 67 *crtbegin.o(.dtors)
mbed_official 580:3c14cb9b87c5 68 *crtbegin?.o(.dtors)
mbed_official 580:3c14cb9b87c5 69 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
mbed_official 580:3c14cb9b87c5 70 *(SORT(.dtors.*))
mbed_official 580:3c14cb9b87c5 71 *(.dtors)
mbed_official 580:3c14cb9b87c5 72
mbed_official 580:3c14cb9b87c5 73 *(.rodata*)
mbed_official 580:3c14cb9b87c5 74
mbed_official 580:3c14cb9b87c5 75 KEEP(*(.eh_frame*))
mbed_official 580:3c14cb9b87c5 76 } > FLASH
mbed_official 580:3c14cb9b87c5 77
mbed_official 580:3c14cb9b87c5 78 .ARM.extab :
mbed_official 580:3c14cb9b87c5 79 {
mbed_official 580:3c14cb9b87c5 80 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 580:3c14cb9b87c5 81 } > FLASH
mbed_official 580:3c14cb9b87c5 82
mbed_official 580:3c14cb9b87c5 83 __exidx_start = .;
mbed_official 580:3c14cb9b87c5 84 .ARM.exidx :
mbed_official 580:3c14cb9b87c5 85 {
mbed_official 580:3c14cb9b87c5 86 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
mbed_official 580:3c14cb9b87c5 87 } > FLASH
mbed_official 580:3c14cb9b87c5 88 __exidx_end = .;
mbed_official 580:3c14cb9b87c5 89
mbed_official 580:3c14cb9b87c5 90 /* To copy multiple ROM to RAM sections,
mbed_official 580:3c14cb9b87c5 91 * uncomment .copy.table section and,
mbed_official 580:3c14cb9b87c5 92 * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
mbed_official 580:3c14cb9b87c5 93 /*
mbed_official 580:3c14cb9b87c5 94 .copy.table :
mbed_official 580:3c14cb9b87c5 95 {
mbed_official 580:3c14cb9b87c5 96 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 97 __copy_table_start__ = .;
mbed_official 580:3c14cb9b87c5 98 LONG (__etext)
mbed_official 580:3c14cb9b87c5 99 LONG (__data_start__)
mbed_official 580:3c14cb9b87c5 100 LONG (__data_end__ - __data_start__)
mbed_official 580:3c14cb9b87c5 101 LONG (__etext2)
mbed_official 580:3c14cb9b87c5 102 LONG (__data2_start__)
mbed_official 580:3c14cb9b87c5 103 LONG (__data2_end__ - __data2_start__)
mbed_official 580:3c14cb9b87c5 104 __copy_table_end__ = .;
mbed_official 580:3c14cb9b87c5 105 } > FLASH
mbed_official 580:3c14cb9b87c5 106 */
mbed_official 580:3c14cb9b87c5 107
mbed_official 580:3c14cb9b87c5 108 /* To clear multiple BSS sections,
mbed_official 580:3c14cb9b87c5 109 * uncomment .zero.table section and,
mbed_official 580:3c14cb9b87c5 110 * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
mbed_official 580:3c14cb9b87c5 111 /*
mbed_official 580:3c14cb9b87c5 112 .zero.table :
mbed_official 580:3c14cb9b87c5 113 {
mbed_official 580:3c14cb9b87c5 114 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 115 __zero_table_start__ = .;
mbed_official 580:3c14cb9b87c5 116 LONG (__bss_start__)
mbed_official 580:3c14cb9b87c5 117 LONG (__bss_end__ - __bss_start__)
mbed_official 580:3c14cb9b87c5 118 LONG (__bss2_start__)
mbed_official 580:3c14cb9b87c5 119 LONG (__bss2_end__ - __bss2_start__)
mbed_official 580:3c14cb9b87c5 120 __zero_table_end__ = .;
mbed_official 580:3c14cb9b87c5 121 } > FLASH
mbed_official 580:3c14cb9b87c5 122 */
mbed_official 580:3c14cb9b87c5 123
mbed_official 580:3c14cb9b87c5 124 __etext = .;
mbed_official 580:3c14cb9b87c5 125
mbed_official 580:3c14cb9b87c5 126 .data : AT (__etext)
mbed_official 580:3c14cb9b87c5 127 {
mbed_official 580:3c14cb9b87c5 128 __data_start__ = .;
mbed_official 580:3c14cb9b87c5 129 *(vtable)
mbed_official 580:3c14cb9b87c5 130 *(.data*)
mbed_official 580:3c14cb9b87c5 131
mbed_official 580:3c14cb9b87c5 132 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 133 /* preinit data */
mbed_official 580:3c14cb9b87c5 134 PROVIDE_HIDDEN (__preinit_array_start = .);
mbed_official 580:3c14cb9b87c5 135 KEEP(*(.preinit_array))
mbed_official 580:3c14cb9b87c5 136 PROVIDE_HIDDEN (__preinit_array_end = .);
mbed_official 580:3c14cb9b87c5 137
mbed_official 580:3c14cb9b87c5 138 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 139 /* init data */
mbed_official 580:3c14cb9b87c5 140 PROVIDE_HIDDEN (__init_array_start = .);
mbed_official 580:3c14cb9b87c5 141 KEEP(*(SORT(.init_array.*)))
mbed_official 580:3c14cb9b87c5 142 KEEP(*(.init_array))
mbed_official 580:3c14cb9b87c5 143 PROVIDE_HIDDEN (__init_array_end = .);
mbed_official 580:3c14cb9b87c5 144
mbed_official 580:3c14cb9b87c5 145
mbed_official 580:3c14cb9b87c5 146 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 147 /* finit data */
mbed_official 580:3c14cb9b87c5 148 PROVIDE_HIDDEN (__fini_array_start = .);
mbed_official 580:3c14cb9b87c5 149 KEEP(*(SORT(.fini_array.*)))
mbed_official 580:3c14cb9b87c5 150 KEEP(*(.fini_array))
mbed_official 580:3c14cb9b87c5 151 PROVIDE_HIDDEN (__fini_array_end = .);
mbed_official 580:3c14cb9b87c5 152
mbed_official 580:3c14cb9b87c5 153 KEEP(*(.jcr*))
mbed_official 580:3c14cb9b87c5 154 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 155 /* All data end */
mbed_official 580:3c14cb9b87c5 156 __data_end__ = .;
mbed_official 580:3c14cb9b87c5 157
mbed_official 580:3c14cb9b87c5 158 } > RAM
mbed_official 580:3c14cb9b87c5 159
mbed_official 580:3c14cb9b87c5 160 .bss :
mbed_official 580:3c14cb9b87c5 161 {
mbed_official 580:3c14cb9b87c5 162 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 163 __bss_start__ = .;
mbed_official 580:3c14cb9b87c5 164 *(.bss*)
mbed_official 580:3c14cb9b87c5 165 *(COMMON)
mbed_official 580:3c14cb9b87c5 166 . = ALIGN(4);
mbed_official 580:3c14cb9b87c5 167 __bss_end__ = .;
mbed_official 580:3c14cb9b87c5 168 } > RAM
mbed_official 580:3c14cb9b87c5 169
mbed_official 580:3c14cb9b87c5 170 .heap (COPY):
mbed_official 580:3c14cb9b87c5 171 {
mbed_official 580:3c14cb9b87c5 172 __HeapBase = .;
mbed_official 580:3c14cb9b87c5 173 __end__ = .;
mbed_official 580:3c14cb9b87c5 174 end = __end__;
mbed_official 580:3c14cb9b87c5 175 KEEP(*(.heap*))
mbed_official 580:3c14cb9b87c5 176 __HeapLimit = .;
mbed_official 580:3c14cb9b87c5 177 } > RAM
mbed_official 580:3c14cb9b87c5 178
mbed_official 580:3c14cb9b87c5 179 /* .stack_dummy section doesn't contains any symbols. It is only
mbed_official 580:3c14cb9b87c5 180 * used for linker to calculate size of stack sections, and assign
mbed_official 580:3c14cb9b87c5 181 * values to stack symbols later */
mbed_official 580:3c14cb9b87c5 182 .stack_dummy (COPY):
mbed_official 580:3c14cb9b87c5 183 {
mbed_official 580:3c14cb9b87c5 184 KEEP(*(.stack*))
mbed_official 580:3c14cb9b87c5 185 } > RAM
mbed_official 580:3c14cb9b87c5 186
mbed_official 580:3c14cb9b87c5 187 /* Set stack top to end of RAM, and stack limit move down by
mbed_official 580:3c14cb9b87c5 188 * size of stack_dummy section */
mbed_official 580:3c14cb9b87c5 189 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
mbed_official 580:3c14cb9b87c5 190 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
mbed_official 580:3c14cb9b87c5 191 PROVIDE(__stack = __StackTop);
mbed_official 580:3c14cb9b87c5 192
mbed_official 580:3c14cb9b87c5 193 /* Check if data + heap + stack exceeds RAM limit */
mbed_official 580:3c14cb9b87c5 194 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
mbed_official 580:3c14cb9b87c5 195 }