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:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
167:84c0a372a020
mbed library. Release version 162

Who changed what in which revision?

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