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:
AnnaBridge
Date:
Wed Jun 21 17:31:38 2017 +0100
Revision:
145:64910690c574
Parent:
142:4eea097334d6
Release 145 of the mbed library.

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