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:
<>
Date:
Wed Apr 12 16:07:08 2017 +0100
Revision:
140:97feb9bacc10
Parent:
128:9bcdf88f62b0
Child:
143:86740a56073b
Release 140 of the mbed library

Ports for Upcoming Targets

3841: Add nRf52840 target https://github.com/ARMmbed/mbed-os/pull/3841
3992: Introducing UBLOX_C030 platform. https://github.com/ARMmbed/mbed-os/pull/3992

Fixes and Changes

3951: [NUCLEO_F303ZE] Correct ARDUINO pin https://github.com/ARMmbed/mbed-os/pull/3951
4021: Fixing a macro to detect when RTOS was in use for the NRF52840_DK https://github.com/ARMmbed/mbed-os/pull/4021
3979: KW24D: Add missing SPI defines and Arduino connector definitions https://github.com/ARMmbed/mbed-os/pull/3979
3990: UBLOX_C027: construct a ticker-based wait, rather than calling wait_ms(), in the https://github.com/ARMmbed/mbed-os/pull/3990
4003: Fixed OBOE in async serial tx for NRF52 target, fixes #4002 https://github.com/ARMmbed/mbed-os/pull/4003
4012: STM32: Correct I2C master error handling https://github.com/ARMmbed/mbed-os/pull/4012
4020: NUCLEO_L011K4 remove unsupported tool chain files https://github.com/ARMmbed/mbed-os/pull/4020
4065: K66F: Move bss section to m_data_2 Section https://github.com/ARMmbed/mbed-os/pull/4065
4014: Issue 3763: Reduce heap allocation in the GCC linker file https://github.com/ARMmbed/mbed-os/pull/4014
4030: [STM32L0] reduce IAR heap and stack size for small targets https://github.com/ARMmbed/mbed-os/pull/4030
4109: NUCLEO_L476RG : minor serial pin update https://github.com/ARMmbed/mbed-os/pull/4109
3982: Ticker - kl25z bugfix for handling events in the past https://github.com/ARMmbed/mbed-os/pull/3982

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 125:2e9cc70d1897 1 /*
AnnaBridge 125:2e9cc70d1897 2 * NCS36510 ARM GCC linker script file
AnnaBridge 125:2e9cc70d1897 3 */
AnnaBridge 125:2e9cc70d1897 4
<> 128:9bcdf88f62b0 5 MEMORY {
<> 128:9bcdf88f62b0 6 VECTORS (rx) : ORIGIN = 0x00003000, LENGTH = 0x00000090
<> 128:9bcdf88f62b0 7 FLASH (rx) : ORIGIN = 0x00003090, LENGTH = 320K - 4K - 0x90
<> 128:9bcdf88f62b0 8 RAM (rwx) : ORIGIN = 0x3FFF4000, LENGTH = 48K
<> 128:9bcdf88f62b0 9 }
AnnaBridge 125:2e9cc70d1897 10
<> 128:9bcdf88f62b0 11 /* Linker script to place sections and symbol values. Should be used together
<> 128:9bcdf88f62b0 12 * with other linker script that defines memory regions FLASH and RAM.
<> 128:9bcdf88f62b0 13 * It references following symbols, which must be defined in code:
<> 128:9bcdf88f62b0 14 * _reset_init : Entry of reset handler
<> 128:9bcdf88f62b0 15 *
<> 128:9bcdf88f62b0 16 * It defines following symbols, which code can use without definition:
<> 128:9bcdf88f62b0 17 * __exidx_start
<> 128:9bcdf88f62b0 18 * __exidx_end
<> 128:9bcdf88f62b0 19 * __etext
<> 128:9bcdf88f62b0 20 * __data_start__
<> 128:9bcdf88f62b0 21 * __preinit_array_start
<> 128:9bcdf88f62b0 22 * __preinit_array_end
<> 128:9bcdf88f62b0 23 * __init_array_start
<> 128:9bcdf88f62b0 24 * __init_array_end
<> 128:9bcdf88f62b0 25 * __fini_array_start
<> 128:9bcdf88f62b0 26 * __fini_array_end
<> 128:9bcdf88f62b0 27 * __data_end__
<> 128:9bcdf88f62b0 28 * __bss_start__
<> 128:9bcdf88f62b0 29 * __bss_end__
<> 128:9bcdf88f62b0 30 * __end__
<> 128:9bcdf88f62b0 31 * end
<> 128:9bcdf88f62b0 32 * __HeapLimit
<> 128:9bcdf88f62b0 33 * __StackLimit
<> 128:9bcdf88f62b0 34 * __StackTop
<> 128:9bcdf88f62b0 35 * __stack
<> 128:9bcdf88f62b0 36 */
<> 128:9bcdf88f62b0 37 ENTRY(Reset_Handler)
AnnaBridge 125:2e9cc70d1897 38
<> 128:9bcdf88f62b0 39 SECTIONS {
<> 128:9bcdf88f62b0 40 .isr_vector :
AnnaBridge 125:2e9cc70d1897 41 {
AnnaBridge 125:2e9cc70d1897 42 __vector_table = .;
AnnaBridge 125:2e9cc70d1897 43 KEEP(*(.vector_table))
<> 128:9bcdf88f62b0 44 . = ALIGN(4);
AnnaBridge 125:2e9cc70d1897 45 } > VECTORS
AnnaBridge 125:2e9cc70d1897 46
AnnaBridge 125:2e9cc70d1897 47 /* ensure that uvisor bss is at the beginning of memory */
AnnaBridge 125:2e9cc70d1897 48 .uvisor.bss (NOLOAD):
AnnaBridge 125:2e9cc70d1897 49 {
AnnaBridge 125:2e9cc70d1897 50 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 51 __uvisor_bss_start = .;
AnnaBridge 125:2e9cc70d1897 52
AnnaBridge 125:2e9cc70d1897 53 /* protected uvisor main bss */
AnnaBridge 125:2e9cc70d1897 54 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 55 __uvisor_bss_main_start = .;
AnnaBridge 125:2e9cc70d1897 56 KEEP(*(.keep.uvisor.bss.main))
AnnaBridge 125:2e9cc70d1897 57 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 58 __uvisor_bss_main_end = .;
AnnaBridge 125:2e9cc70d1897 59
AnnaBridge 125:2e9cc70d1897 60 /* protected uvisor secure boxes bss */
AnnaBridge 125:2e9cc70d1897 61 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 62 __uvisor_bss_boxes_start = .;
AnnaBridge 125:2e9cc70d1897 63 KEEP(*(.keep.uvisor.bss.boxes))
AnnaBridge 125:2e9cc70d1897 64 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 65 __uvisor_bss_boxes_end = .;
AnnaBridge 125:2e9cc70d1897 66
AnnaBridge 125:2e9cc70d1897 67 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 68 __uvisor_bss_end = .;
AnnaBridge 125:2e9cc70d1897 69 } > RAM
AnnaBridge 125:2e9cc70d1897 70
<> 128:9bcdf88f62b0 71 .text :
AnnaBridge 125:2e9cc70d1897 72 {
AnnaBridge 125:2e9cc70d1897 73 /* uVisor code and data */
AnnaBridge 125:2e9cc70d1897 74 . = ALIGN(4);
AnnaBridge 125:2e9cc70d1897 75 __uvisor_main_start = .;
AnnaBridge 125:2e9cc70d1897 76 *(.uvisor.main)
AnnaBridge 125:2e9cc70d1897 77 __uvisor_main_end = .;
AnnaBridge 125:2e9cc70d1897 78
AnnaBridge 125:2e9cc70d1897 79 *(.text*)
AnnaBridge 125:2e9cc70d1897 80
AnnaBridge 125:2e9cc70d1897 81 KEEP(*(.init))
AnnaBridge 125:2e9cc70d1897 82 KEEP(*(.fini))
AnnaBridge 125:2e9cc70d1897 83
AnnaBridge 125:2e9cc70d1897 84 /* .ctors */
AnnaBridge 125:2e9cc70d1897 85 *crtbegin.o(.ctors)
AnnaBridge 125:2e9cc70d1897 86 *crtbegin?.o(.ctors)
AnnaBridge 125:2e9cc70d1897 87 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
AnnaBridge 125:2e9cc70d1897 88 *(SORT(.ctors.*))
AnnaBridge 125:2e9cc70d1897 89 *(.ctors)
AnnaBridge 125:2e9cc70d1897 90
AnnaBridge 125:2e9cc70d1897 91 /* .dtors */
AnnaBridge 125:2e9cc70d1897 92 *crtbegin.o(.dtors)
AnnaBridge 125:2e9cc70d1897 93 *crtbegin?.o(.dtors)
AnnaBridge 125:2e9cc70d1897 94 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
AnnaBridge 125:2e9cc70d1897 95 *(SORT(.dtors.*))
AnnaBridge 125:2e9cc70d1897 96 *(.dtors)
AnnaBridge 125:2e9cc70d1897 97
AnnaBridge 125:2e9cc70d1897 98 *(.rodata*)
AnnaBridge 125:2e9cc70d1897 99
AnnaBridge 125:2e9cc70d1897 100 KEEP(*(.eh_frame*))
AnnaBridge 125:2e9cc70d1897 101 } > FLASH
AnnaBridge 125:2e9cc70d1897 102
<> 128:9bcdf88f62b0 103 .ARM.extab :
AnnaBridge 125:2e9cc70d1897 104 {
AnnaBridge 125:2e9cc70d1897 105 *(.ARM.extab* .gnu.linkonce.armextab.*)
AnnaBridge 125:2e9cc70d1897 106 } > FLASH
AnnaBridge 125:2e9cc70d1897 107
<> 128:9bcdf88f62b0 108 .ARM.exidx :
AnnaBridge 125:2e9cc70d1897 109 {
<> 128:9bcdf88f62b0 110 __exidx_start = .;
AnnaBridge 125:2e9cc70d1897 111 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
<> 128:9bcdf88f62b0 112 __exidx_end = .;
AnnaBridge 125:2e9cc70d1897 113 } > FLASH
AnnaBridge 125:2e9cc70d1897 114
<> 128:9bcdf88f62b0 115 .data :
AnnaBridge 125:2e9cc70d1897 116 {
AnnaBridge 125:2e9cc70d1897 117 PROVIDE( __etext = LOADADDR(.data) );
AnnaBridge 125:2e9cc70d1897 118
AnnaBridge 125:2e9cc70d1897 119 __data_start__ = .;
AnnaBridge 125:2e9cc70d1897 120 *(vtable)
AnnaBridge 125:2e9cc70d1897 121 *(.data*)
AnnaBridge 125:2e9cc70d1897 122
AnnaBridge 125:2e9cc70d1897 123 . = ALIGN(4);
AnnaBridge 125:2e9cc70d1897 124 /* preinit data */
AnnaBridge 125:2e9cc70d1897 125 PROVIDE_HIDDEN (__preinit_array_start = .);
AnnaBridge 125:2e9cc70d1897 126 KEEP(*(.preinit_array))
AnnaBridge 125:2e9cc70d1897 127 PROVIDE_HIDDEN (__preinit_array_end = .);
AnnaBridge 125:2e9cc70d1897 128
AnnaBridge 125:2e9cc70d1897 129 . = ALIGN(4);
AnnaBridge 125:2e9cc70d1897 130 /* init data */
AnnaBridge 125:2e9cc70d1897 131 PROVIDE_HIDDEN (__init_array_start = .);
AnnaBridge 125:2e9cc70d1897 132 KEEP(*(SORT(.init_array.*)))
AnnaBridge 125:2e9cc70d1897 133 KEEP(*(.init_array))
AnnaBridge 125:2e9cc70d1897 134 PROVIDE_HIDDEN (__init_array_end = .);
AnnaBridge 125:2e9cc70d1897 135
AnnaBridge 125:2e9cc70d1897 136 . = ALIGN(4);
AnnaBridge 125:2e9cc70d1897 137 /* finit data */
AnnaBridge 125:2e9cc70d1897 138 PROVIDE_HIDDEN (__fini_array_start = .);
AnnaBridge 125:2e9cc70d1897 139 KEEP(*(SORT(.fini_array.*)))
AnnaBridge 125:2e9cc70d1897 140 KEEP(*(.fini_array))
AnnaBridge 125:2e9cc70d1897 141 PROVIDE_HIDDEN (__fini_array_end = .);
AnnaBridge 125:2e9cc70d1897 142
AnnaBridge 125:2e9cc70d1897 143 /* All data end */
AnnaBridge 125:2e9cc70d1897 144 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 145 __data_end__ = .;
AnnaBridge 125:2e9cc70d1897 146
AnnaBridge 125:2e9cc70d1897 147 } >RAM AT>FLASH
AnnaBridge 125:2e9cc70d1897 148
AnnaBridge 125:2e9cc70d1897 149 /* uvisor configuration data */
<> 128:9bcdf88f62b0 150 .uvisor.secure :
AnnaBridge 125:2e9cc70d1897 151 {
AnnaBridge 125:2e9cc70d1897 152 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 153 __uvisor_secure_start = .;
AnnaBridge 125:2e9cc70d1897 154
AnnaBridge 125:2e9cc70d1897 155 /* uvisor secure boxes configuration tables */
AnnaBridge 125:2e9cc70d1897 156 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 157 __uvisor_cfgtbl_start = .;
AnnaBridge 125:2e9cc70d1897 158 KEEP(*(.keep.uvisor.cfgtbl))
AnnaBridge 125:2e9cc70d1897 159 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 160 __uvisor_cfgtbl_end = .;
AnnaBridge 125:2e9cc70d1897 161
AnnaBridge 125:2e9cc70d1897 162 /* pointers to uvisor secure boxes configuration tables */
AnnaBridge 125:2e9cc70d1897 163 /* note: no further alignment here, we need to have the exact list of pointers */
AnnaBridge 125:2e9cc70d1897 164 __uvisor_cfgtbl_ptr_start = .;
AnnaBridge 125:2e9cc70d1897 165 KEEP(*(.keep.uvisor.cfgtbl_ptr_first))
AnnaBridge 125:2e9cc70d1897 166 KEEP(*(.keep.uvisor.cfgtbl_ptr))
AnnaBridge 125:2e9cc70d1897 167 __uvisor_cfgtbl_ptr_end = .;
AnnaBridge 125:2e9cc70d1897 168
AnnaBridge 125:2e9cc70d1897 169 /* the following symbols are kept for backward compatibility and will be soon
AnnaBridge 125:2e9cc70d1897 170 * deprecated; applications actively using uVisor (__uvisor_mode == UVISOR_ENABLED)
AnnaBridge 125:2e9cc70d1897 171 * will need to use uVisor 0.8.x or above, or the security assetions will halt the
AnnaBridge 125:2e9cc70d1897 172 * system */
AnnaBridge 125:2e9cc70d1897 173 /************************/
AnnaBridge 125:2e9cc70d1897 174 __uvisor_data_src = .;
AnnaBridge 125:2e9cc70d1897 175 __uvisor_data_start = .;
AnnaBridge 125:2e9cc70d1897 176 __uvisor_data_end = .;
AnnaBridge 125:2e9cc70d1897 177 /************************/
AnnaBridge 125:2e9cc70d1897 178
AnnaBridge 125:2e9cc70d1897 179 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 180 __uvisor_secure_end = .;
AnnaBridge 125:2e9cc70d1897 181 } >FLASH
AnnaBridge 125:2e9cc70d1897 182
AnnaBridge 125:2e9cc70d1897 183 .uninitialized (NOLOAD):
AnnaBridge 125:2e9cc70d1897 184 {
AnnaBridge 125:2e9cc70d1897 185 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 186 __uninitialized_start = .;
AnnaBridge 125:2e9cc70d1897 187 *(.uninitialized)
AnnaBridge 125:2e9cc70d1897 188 KEEP(*(.keep.uninitialized))
AnnaBridge 125:2e9cc70d1897 189 . = ALIGN(32);
AnnaBridge 125:2e9cc70d1897 190 __uninitialized_end = .;
AnnaBridge 125:2e9cc70d1897 191 } > RAM
AnnaBridge 125:2e9cc70d1897 192
AnnaBridge 125:2e9cc70d1897 193 .bss (NOLOAD):
AnnaBridge 125:2e9cc70d1897 194 {
AnnaBridge 125:2e9cc70d1897 195 __bss_start__ = .;
AnnaBridge 125:2e9cc70d1897 196 *(.bss*)
AnnaBridge 125:2e9cc70d1897 197 *(COMMON)
AnnaBridge 125:2e9cc70d1897 198 __bss_end__ = .;
AnnaBridge 125:2e9cc70d1897 199 } > RAM
AnnaBridge 125:2e9cc70d1897 200
AnnaBridge 125:2e9cc70d1897 201 .heap (NOLOAD):
AnnaBridge 125:2e9cc70d1897 202 {
AnnaBridge 125:2e9cc70d1897 203 __end__ = .;
AnnaBridge 125:2e9cc70d1897 204 end = __end__;
AnnaBridge 125:2e9cc70d1897 205 *(.heap*);
<> 128:9bcdf88f62b0 206 . += 0x800;
AnnaBridge 125:2e9cc70d1897 207 __HeapLimit = .;
AnnaBridge 125:2e9cc70d1897 208 } > RAM
AnnaBridge 125:2e9cc70d1897 209 PROVIDE(__heap_size = SIZEOF(.heap));
AnnaBridge 125:2e9cc70d1897 210 PROVIDE(__mbed_sbrk_start = ADDR(.heap));
AnnaBridge 125:2e9cc70d1897 211 PROVIDE(__mbed_krbs_start = ADDR(.heap) + SIZEOF(.heap));
<> 128:9bcdf88f62b0 212
AnnaBridge 125:2e9cc70d1897 213 /* .stack section doesn't contains any symbols. It is only
AnnaBridge 125:2e9cc70d1897 214 * used for linker to reserve space for the main stack section
AnnaBridge 125:2e9cc70d1897 215 * WARNING: .stack should come immediately after the last secure memory
AnnaBridge 125:2e9cc70d1897 216 * section. This provides stack overflow detection. */
AnnaBridge 125:2e9cc70d1897 217 .stack (NOLOAD):
AnnaBridge 125:2e9cc70d1897 218 {
AnnaBridge 125:2e9cc70d1897 219 __StackLimit = .;
AnnaBridge 125:2e9cc70d1897 220 *(.stack*);
AnnaBridge 125:2e9cc70d1897 221 . += 0x800 - (. - __StackLimit);
AnnaBridge 125:2e9cc70d1897 222 } > RAM
AnnaBridge 125:2e9cc70d1897 223
AnnaBridge 125:2e9cc70d1897 224 /* Set stack top to end of RAM */
AnnaBridge 125:2e9cc70d1897 225 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
AnnaBridge 125:2e9cc70d1897 226 __StackLimit = __StackTop - SIZEOF(.stack);
AnnaBridge 125:2e9cc70d1897 227 PROVIDE(__stack = __StackTop);
AnnaBridge 125:2e9cc70d1897 228
AnnaBridge 125:2e9cc70d1897 229 }