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