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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Anna Bridge
Date:
Wed May 10 11:31:27 2017 +0100
Revision:
142:4eea097334d6
Child:
145:64910690c574
Release 142 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

4059: [Silicon Labs] Rename targets https://github.com/ARMmbed/mbed-os/pull/4059
4187: [NCS36510] Reduce default heap size allocated by IAR to 1/4 of RAM https://github.com/ARMmbed/mbed-os/pull/4187
4225: fixed missing device_name for xDot and removed progen https://github.com/ARMmbed/mbed-os/pull/4225
4251: Fix C++11 build error w/ u-blox EVK-ODIN-W2 https://github.com/ARMmbed/mbed-os/pull/4251
4236: STM32 Fixed warning related to __packed redefinition https://github.com/ARMmbed/mbed-os/pull/4236
4190: LPC4088: Enable LWIP feature https://github.com/ARMmbed/mbed-os/pull/4190
4260: Inherit Xadow M0 target from LPC11U35_501 https://github.com/ARMmbed/mbed-os/pull/4260
4249: Add consistent button names across targets https://github.com/ARMmbed/mbed-os/pull/4249

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anna Bridge 142:4eea097334d6 1 /* Linker script for Silicon Labs EFR32MG1P devices */
Anna Bridge 142:4eea097334d6 2 /* */
Anna Bridge 142:4eea097334d6 3 /* This file is subject to the license terms as defined in ARM's */
Anna Bridge 142:4eea097334d6 4 /* CMSIS END USER LICENSE AGREEMENT.pdf, governing the use of */
Anna Bridge 142:4eea097334d6 5 /* Example Code. */
Anna Bridge 142:4eea097334d6 6 /* */
Anna Bridge 142:4eea097334d6 7 /* Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com */
Anna Bridge 142:4eea097334d6 8 /* */
Anna Bridge 142:4eea097334d6 9 /* Version 4.3.0 */
Anna Bridge 142:4eea097334d6 10 /* */
Anna Bridge 142:4eea097334d6 11
Anna Bridge 142:4eea097334d6 12 MEMORY
Anna Bridge 142:4eea097334d6 13 {
Anna Bridge 142:4eea097334d6 14 FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 1048576
Anna Bridge 142:4eea097334d6 15 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 262144
Anna Bridge 142:4eea097334d6 16 }
Anna Bridge 142:4eea097334d6 17
Anna Bridge 142:4eea097334d6 18 /* MBED: mbed needs to be able to dynamically set the interrupt vector table.
Anna Bridge 142:4eea097334d6 19 * We make room for the table at the very beginning of RAM, i.e. at
Anna Bridge 142:4eea097334d6 20 * 0x20000000. We need (16+51 * sizeof(uint32_t) = 268 bytes for EFM32PG */
Anna Bridge 142:4eea097334d6 21 __vector_size = 0x10C;
Anna Bridge 142:4eea097334d6 22
Anna Bridge 142:4eea097334d6 23 /* Linker script to place sections and symbol values. Should be used together
Anna Bridge 142:4eea097334d6 24 * with other linker script that defines memory regions FLASH and RAM.
Anna Bridge 142:4eea097334d6 25 * It references following symbols, which must be defined in code:
Anna Bridge 142:4eea097334d6 26 * Reset_Handler : Entry of reset handler
Anna Bridge 142:4eea097334d6 27 *
Anna Bridge 142:4eea097334d6 28 * It defines following symbols, which code can use without definition:
Anna Bridge 142:4eea097334d6 29 * __exidx_start
Anna Bridge 142:4eea097334d6 30 * __exidx_end
Anna Bridge 142:4eea097334d6 31 * __copy_table_start__
Anna Bridge 142:4eea097334d6 32 * __copy_table_end__
Anna Bridge 142:4eea097334d6 33 * __zero_table_start__
Anna Bridge 142:4eea097334d6 34 * __zero_table_end__
Anna Bridge 142:4eea097334d6 35 * __etext
Anna Bridge 142:4eea097334d6 36 * __data_start__
Anna Bridge 142:4eea097334d6 37 * __preinit_array_start
Anna Bridge 142:4eea097334d6 38 * __preinit_array_end
Anna Bridge 142:4eea097334d6 39 * __init_array_start
Anna Bridge 142:4eea097334d6 40 * __init_array_end
Anna Bridge 142:4eea097334d6 41 * __fini_array_start
Anna Bridge 142:4eea097334d6 42 * __fini_array_end
Anna Bridge 142:4eea097334d6 43 * __data_end__
Anna Bridge 142:4eea097334d6 44 * __bss_start__
Anna Bridge 142:4eea097334d6 45 * __bss_end__
Anna Bridge 142:4eea097334d6 46 * __end__
Anna Bridge 142:4eea097334d6 47 * end
Anna Bridge 142:4eea097334d6 48 * __HeapLimit
Anna Bridge 142:4eea097334d6 49 * __StackLimit
Anna Bridge 142:4eea097334d6 50 * __StackTop
Anna Bridge 142:4eea097334d6 51 * __stack
Anna Bridge 142:4eea097334d6 52 * __Vectors_End
Anna Bridge 142:4eea097334d6 53 * __Vectors_Size
Anna Bridge 142:4eea097334d6 54 */
Anna Bridge 142:4eea097334d6 55 ENTRY(Reset_Handler)
Anna Bridge 142:4eea097334d6 56
Anna Bridge 142:4eea097334d6 57 SECTIONS
Anna Bridge 142:4eea097334d6 58 {
Anna Bridge 142:4eea097334d6 59 .text :
Anna Bridge 142:4eea097334d6 60 {
Anna Bridge 142:4eea097334d6 61 KEEP(*(.vectors))
Anna Bridge 142:4eea097334d6 62 __Vectors_End = .;
Anna Bridge 142:4eea097334d6 63 __Vectors_Size = __Vectors_End - __Vectors;
Anna Bridge 142:4eea097334d6 64 __end__ = .;
Anna Bridge 142:4eea097334d6 65
Anna Bridge 142:4eea097334d6 66 *(.text*)
Anna Bridge 142:4eea097334d6 67
Anna Bridge 142:4eea097334d6 68 KEEP(*(.init))
Anna Bridge 142:4eea097334d6 69 KEEP(*(.fini))
Anna Bridge 142:4eea097334d6 70
Anna Bridge 142:4eea097334d6 71 /* .ctors */
Anna Bridge 142:4eea097334d6 72 *crtbegin.o(.ctors)
Anna Bridge 142:4eea097334d6 73 *crtbegin?.o(.ctors)
Anna Bridge 142:4eea097334d6 74 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
Anna Bridge 142:4eea097334d6 75 *(SORT(.ctors.*))
Anna Bridge 142:4eea097334d6 76 *(.ctors)
Anna Bridge 142:4eea097334d6 77
Anna Bridge 142:4eea097334d6 78 /* .dtors */
Anna Bridge 142:4eea097334d6 79 *crtbegin.o(.dtors)
Anna Bridge 142:4eea097334d6 80 *crtbegin?.o(.dtors)
Anna Bridge 142:4eea097334d6 81 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
Anna Bridge 142:4eea097334d6 82 *(SORT(.dtors.*))
Anna Bridge 142:4eea097334d6 83 *(.dtors)
Anna Bridge 142:4eea097334d6 84
Anna Bridge 142:4eea097334d6 85 *(.rodata*)
Anna Bridge 142:4eea097334d6 86
Anna Bridge 142:4eea097334d6 87 KEEP(*(.eh_frame*))
Anna Bridge 142:4eea097334d6 88 } > FLASH
Anna Bridge 142:4eea097334d6 89
Anna Bridge 142:4eea097334d6 90 .ARM.extab :
Anna Bridge 142:4eea097334d6 91 {
Anna Bridge 142:4eea097334d6 92 *(.ARM.extab* .gnu.linkonce.armextab.*)
Anna Bridge 142:4eea097334d6 93 } > FLASH
Anna Bridge 142:4eea097334d6 94
Anna Bridge 142:4eea097334d6 95 __exidx_start = .;
Anna Bridge 142:4eea097334d6 96 .ARM.exidx :
Anna Bridge 142:4eea097334d6 97 {
Anna Bridge 142:4eea097334d6 98 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
Anna Bridge 142:4eea097334d6 99 } > FLASH
Anna Bridge 142:4eea097334d6 100 __exidx_end = .;
Anna Bridge 142:4eea097334d6 101
Anna Bridge 142:4eea097334d6 102 /* To copy multiple ROM to RAM sections,
Anna Bridge 142:4eea097334d6 103 * uncomment .copy.table section and,
Anna Bridge 142:4eea097334d6 104 * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
Anna Bridge 142:4eea097334d6 105 /*
Anna Bridge 142:4eea097334d6 106 .copy.table :
Anna Bridge 142:4eea097334d6 107 {
Anna Bridge 142:4eea097334d6 108 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 109 __copy_table_start__ = .;
Anna Bridge 142:4eea097334d6 110 LONG (__etext)
Anna Bridge 142:4eea097334d6 111 LONG (__data_start__)
Anna Bridge 142:4eea097334d6 112 LONG (__data_end__ - __data_start__)
Anna Bridge 142:4eea097334d6 113 LONG (__etext2)
Anna Bridge 142:4eea097334d6 114 LONG (__data2_start__)
Anna Bridge 142:4eea097334d6 115 LONG (__data2_end__ - __data2_start__)
Anna Bridge 142:4eea097334d6 116 __copy_table_end__ = .;
Anna Bridge 142:4eea097334d6 117 } > FLASH
Anna Bridge 142:4eea097334d6 118 */
Anna Bridge 142:4eea097334d6 119
Anna Bridge 142:4eea097334d6 120 /* To clear multiple BSS sections,
Anna Bridge 142:4eea097334d6 121 * uncomment .zero.table section and,
Anna Bridge 142:4eea097334d6 122 * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
Anna Bridge 142:4eea097334d6 123 /*
Anna Bridge 142:4eea097334d6 124 .zero.table :
Anna Bridge 142:4eea097334d6 125 {
Anna Bridge 142:4eea097334d6 126 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 127 __zero_table_start__ = .;
Anna Bridge 142:4eea097334d6 128 LONG (__bss_start__)
Anna Bridge 142:4eea097334d6 129 LONG (__bss_end__ - __bss_start__)
Anna Bridge 142:4eea097334d6 130 LONG (__bss2_start__)
Anna Bridge 142:4eea097334d6 131 LONG (__bss2_end__ - __bss2_start__)
Anna Bridge 142:4eea097334d6 132 __zero_table_end__ = .;
Anna Bridge 142:4eea097334d6 133 } > FLASH
Anna Bridge 142:4eea097334d6 134 */
Anna Bridge 142:4eea097334d6 135
Anna Bridge 142:4eea097334d6 136 __etext = .;
Anna Bridge 142:4eea097334d6 137
Anna Bridge 142:4eea097334d6 138 .data : AT (__etext)
Anna Bridge 142:4eea097334d6 139 {
Anna Bridge 142:4eea097334d6 140 __data_start__ = .;
Anna Bridge 142:4eea097334d6 141 PROVIDE( __start_vector_table__ = .);
Anna Bridge 142:4eea097334d6 142 . += __vector_size;
Anna Bridge 142:4eea097334d6 143 PROVIDE( __end_vector_table__ = .);
Anna Bridge 142:4eea097334d6 144 *(vtable)
Anna Bridge 142:4eea097334d6 145 *(.data*)
Anna Bridge 142:4eea097334d6 146 . = ALIGN (4);
Anna Bridge 142:4eea097334d6 147 *(.ram)
Anna Bridge 142:4eea097334d6 148
Anna Bridge 142:4eea097334d6 149 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 150 /* preinit data */
Anna Bridge 142:4eea097334d6 151 PROVIDE_HIDDEN (__preinit_array_start = .);
Anna Bridge 142:4eea097334d6 152 KEEP(*(.preinit_array))
Anna Bridge 142:4eea097334d6 153 PROVIDE_HIDDEN (__preinit_array_end = .);
Anna Bridge 142:4eea097334d6 154
Anna Bridge 142:4eea097334d6 155 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 156 /* init data */
Anna Bridge 142:4eea097334d6 157 PROVIDE_HIDDEN (__init_array_start = .);
Anna Bridge 142:4eea097334d6 158 KEEP(*(SORT(.init_array.*)))
Anna Bridge 142:4eea097334d6 159 KEEP(*(.init_array))
Anna Bridge 142:4eea097334d6 160 PROVIDE_HIDDEN (__init_array_end = .);
Anna Bridge 142:4eea097334d6 161
Anna Bridge 142:4eea097334d6 162 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 163 /* finit data */
Anna Bridge 142:4eea097334d6 164 PROVIDE_HIDDEN (__fini_array_start = .);
Anna Bridge 142:4eea097334d6 165 KEEP(*(SORT(.fini_array.*)))
Anna Bridge 142:4eea097334d6 166 KEEP(*(.fini_array))
Anna Bridge 142:4eea097334d6 167 PROVIDE_HIDDEN (__fini_array_end = .);
Anna Bridge 142:4eea097334d6 168
Anna Bridge 142:4eea097334d6 169 KEEP(*(.jcr*))
Anna Bridge 142:4eea097334d6 170 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 171 /* All data end */
Anna Bridge 142:4eea097334d6 172 __data_end__ = .;
Anna Bridge 142:4eea097334d6 173
Anna Bridge 142:4eea097334d6 174 } > RAM
Anna Bridge 142:4eea097334d6 175
Anna Bridge 142:4eea097334d6 176 .bss :
Anna Bridge 142:4eea097334d6 177 {
Anna Bridge 142:4eea097334d6 178 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 179 __bss_start__ = .;
Anna Bridge 142:4eea097334d6 180 *(.bss*)
Anna Bridge 142:4eea097334d6 181 *(COMMON)
Anna Bridge 142:4eea097334d6 182 . = ALIGN(4);
Anna Bridge 142:4eea097334d6 183 __bss_end__ = .;
Anna Bridge 142:4eea097334d6 184 } > RAM
Anna Bridge 142:4eea097334d6 185
Anna Bridge 142:4eea097334d6 186 .heap (COPY):
Anna Bridge 142:4eea097334d6 187 {
Anna Bridge 142:4eea097334d6 188 __HeapBase = .;
Anna Bridge 142:4eea097334d6 189 __end__ = .;
Anna Bridge 142:4eea097334d6 190 end = __end__;
Anna Bridge 142:4eea097334d6 191 _end = __end__;
Anna Bridge 142:4eea097334d6 192 KEEP(*(.heap*))
Anna Bridge 142:4eea097334d6 193 __HeapLimit = .;
Anna Bridge 142:4eea097334d6 194 } > RAM
Anna Bridge 142:4eea097334d6 195
Anna Bridge 142:4eea097334d6 196 /* .stack_dummy section doesn't contains any symbols. It is only
Anna Bridge 142:4eea097334d6 197 * used for linker to calculate size of stack sections, and assign
Anna Bridge 142:4eea097334d6 198 * values to stack symbols later */
Anna Bridge 142:4eea097334d6 199 .stack_dummy (COPY):
Anna Bridge 142:4eea097334d6 200 {
Anna Bridge 142:4eea097334d6 201 KEEP(*(.stack*))
Anna Bridge 142:4eea097334d6 202 } > RAM
Anna Bridge 142:4eea097334d6 203
Anna Bridge 142:4eea097334d6 204 /* Set stack top to end of RAM, and stack limit move down by
Anna Bridge 142:4eea097334d6 205 * size of stack_dummy section */
Anna Bridge 142:4eea097334d6 206 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
Anna Bridge 142:4eea097334d6 207 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
Anna Bridge 142:4eea097334d6 208 PROVIDE(__stack = __StackTop);
Anna Bridge 142:4eea097334d6 209
Anna Bridge 142:4eea097334d6 210 /* Check if data + heap + stack exceeds RAM limit */
Anna Bridge 142:4eea097334d6 211 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
Anna Bridge 142:4eea097334d6 212
Anna Bridge 142:4eea097334d6 213 /* Check if FLASH usage exceeds FLASH size */
Anna Bridge 142:4eea097334d6 214 ASSERT( LENGTH(FLASH) >= (__etext + SIZEOF(.data)), "FLASH memory overflowed !")
Anna Bridge 142:4eea097334d6 215 }