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:
Fri May 11 16:51:14 2018 +0100
Revision:
167:84c0a372a020
Child:
171:3a7713b1edbc
mbed library. Release version 162

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:84c0a372a020 1 /*******************************************************************************
AnnaBridge 167:84c0a372a020 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
AnnaBridge 167:84c0a372a020 3 *
AnnaBridge 167:84c0a372a020 4 * Permission is hereby granted, free of charge, to any person obtaining a
AnnaBridge 167:84c0a372a020 5 * copy of this software and associated documentation files (the "Software"),
AnnaBridge 167:84c0a372a020 6 * to deal in the Software without restriction, including without limitation
AnnaBridge 167:84c0a372a020 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
AnnaBridge 167:84c0a372a020 8 * and/or sell copies of the Software, and to permit persons to whom the
AnnaBridge 167:84c0a372a020 9 * Software is furnished to do so, subject to the following conditions:
AnnaBridge 167:84c0a372a020 10 *
AnnaBridge 167:84c0a372a020 11 * The above copyright notice and this permission notice shall be included
AnnaBridge 167:84c0a372a020 12 * in all copies or substantial portions of the Software.
AnnaBridge 167:84c0a372a020 13 *
AnnaBridge 167:84c0a372a020 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
AnnaBridge 167:84c0a372a020 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
AnnaBridge 167:84c0a372a020 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
AnnaBridge 167:84c0a372a020 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
AnnaBridge 167:84c0a372a020 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
AnnaBridge 167:84c0a372a020 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
AnnaBridge 167:84c0a372a020 20 * OTHER DEALINGS IN THE SOFTWARE.
AnnaBridge 167:84c0a372a020 21 *
AnnaBridge 167:84c0a372a020 22 * Except as contained in this notice, the name of Maxim Integrated
AnnaBridge 167:84c0a372a020 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
AnnaBridge 167:84c0a372a020 24 * Products, Inc. Branding Policy.
AnnaBridge 167:84c0a372a020 25 *
AnnaBridge 167:84c0a372a020 26 * The mere transfer of this software does not imply any licenses
AnnaBridge 167:84c0a372a020 27 * of trade secrets, proprietary technology, copyrights, patents,
AnnaBridge 167:84c0a372a020 28 * trademarks, maskwork rights, or any other form of intellectual
AnnaBridge 167:84c0a372a020 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
AnnaBridge 167:84c0a372a020 30 * ownership rights.
AnnaBridge 167:84c0a372a020 31 *******************************************************************************
AnnaBridge 167:84c0a372a020 32 */
AnnaBridge 167:84c0a372a020 33
AnnaBridge 167:84c0a372a020 34 MEMORY
AnnaBridge 167:84c0a372a020 35 {
AnnaBridge 167:84c0a372a020 36 FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 2M
AnnaBridge 167:84c0a372a020 37 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 256K
AnnaBridge 167:84c0a372a020 38 }
AnnaBridge 167:84c0a372a020 39
AnnaBridge 167:84c0a372a020 40 /* Linker script to place sections and symbol values. Should be used together
AnnaBridge 167:84c0a372a020 41 * with other linker script that defines memory regions FLASH and RAM.
AnnaBridge 167:84c0a372a020 42 * It references following symbols, which must be defined in code:
AnnaBridge 167:84c0a372a020 43 * Reset_Handler : Entry of reset handler
AnnaBridge 167:84c0a372a020 44 *
AnnaBridge 167:84c0a372a020 45 * It defines following symbols, which code can use without definition:
AnnaBridge 167:84c0a372a020 46 * __exidx_start
AnnaBridge 167:84c0a372a020 47 * __exidx_end
AnnaBridge 167:84c0a372a020 48 * __etext
AnnaBridge 167:84c0a372a020 49 * __data_start__
AnnaBridge 167:84c0a372a020 50 * __preinit_array_start
AnnaBridge 167:84c0a372a020 51 * __preinit_array_end
AnnaBridge 167:84c0a372a020 52 * __init_array_start
AnnaBridge 167:84c0a372a020 53 * __init_array_end
AnnaBridge 167:84c0a372a020 54 * __fini_array_start
AnnaBridge 167:84c0a372a020 55 * __fini_array_end
AnnaBridge 167:84c0a372a020 56 * __data_end__
AnnaBridge 167:84c0a372a020 57 * __bss_start__
AnnaBridge 167:84c0a372a020 58 * __bss_end__
AnnaBridge 167:84c0a372a020 59 * __end__
AnnaBridge 167:84c0a372a020 60 * end
AnnaBridge 167:84c0a372a020 61 * __HeapLimit
AnnaBridge 167:84c0a372a020 62 * __StackLimit
AnnaBridge 167:84c0a372a020 63 * __StackTop
AnnaBridge 167:84c0a372a020 64 * __stack
AnnaBridge 167:84c0a372a020 65 */
AnnaBridge 167:84c0a372a020 66 ENTRY(Reset_Handler)
AnnaBridge 167:84c0a372a020 67
AnnaBridge 167:84c0a372a020 68 SECTIONS
AnnaBridge 167:84c0a372a020 69 {
AnnaBridge 167:84c0a372a020 70 .text :
AnnaBridge 167:84c0a372a020 71 {
AnnaBridge 167:84c0a372a020 72 KEEP(*(.isr_vector))
AnnaBridge 167:84c0a372a020 73 *(.text*)
AnnaBridge 167:84c0a372a020 74
AnnaBridge 167:84c0a372a020 75 KEEP(*(.init))
AnnaBridge 167:84c0a372a020 76 KEEP(*(.fini))
AnnaBridge 167:84c0a372a020 77
AnnaBridge 167:84c0a372a020 78 /* .ctors */
AnnaBridge 167:84c0a372a020 79 *crtbegin.o(.ctors)
AnnaBridge 167:84c0a372a020 80 *crtbegin?.o(.ctors)
AnnaBridge 167:84c0a372a020 81 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
AnnaBridge 167:84c0a372a020 82 *(SORT(.ctors.*))
AnnaBridge 167:84c0a372a020 83 *(.ctors)
AnnaBridge 167:84c0a372a020 84
AnnaBridge 167:84c0a372a020 85 /* .dtors */
AnnaBridge 167:84c0a372a020 86 *crtbegin.o(.dtors)
AnnaBridge 167:84c0a372a020 87 *crtbegin?.o(.dtors)
AnnaBridge 167:84c0a372a020 88 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
AnnaBridge 167:84c0a372a020 89 *(SORT(.dtors.*))
AnnaBridge 167:84c0a372a020 90 *(.dtors)
AnnaBridge 167:84c0a372a020 91
AnnaBridge 167:84c0a372a020 92 *(.rodata*)
AnnaBridge 167:84c0a372a020 93
AnnaBridge 167:84c0a372a020 94 KEEP(*(.eh_frame*))
AnnaBridge 167:84c0a372a020 95 } > FLASH
AnnaBridge 167:84c0a372a020 96
AnnaBridge 167:84c0a372a020 97 .ARM.extab :
AnnaBridge 167:84c0a372a020 98 {
AnnaBridge 167:84c0a372a020 99 *(.ARM.extab* .gnu.linkonce.armextab.*)
AnnaBridge 167:84c0a372a020 100 } > FLASH
AnnaBridge 167:84c0a372a020 101
AnnaBridge 167:84c0a372a020 102 __exidx_start = .;
AnnaBridge 167:84c0a372a020 103 .ARM.exidx :
AnnaBridge 167:84c0a372a020 104 {
AnnaBridge 167:84c0a372a020 105 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
AnnaBridge 167:84c0a372a020 106 } > FLASH
AnnaBridge 167:84c0a372a020 107 __exidx_end = .;
AnnaBridge 167:84c0a372a020 108
AnnaBridge 167:84c0a372a020 109 __etext = .;
AnnaBridge 167:84c0a372a020 110
AnnaBridge 167:84c0a372a020 111 .data : AT (__etext)
AnnaBridge 167:84c0a372a020 112 {
AnnaBridge 167:84c0a372a020 113 __data_start__ = .;
AnnaBridge 167:84c0a372a020 114 *(vtable)
AnnaBridge 167:84c0a372a020 115 *(.data*)
AnnaBridge 167:84c0a372a020 116
AnnaBridge 167:84c0a372a020 117 . = ALIGN(4);
AnnaBridge 167:84c0a372a020 118 /* preinit data */
AnnaBridge 167:84c0a372a020 119 PROVIDE_HIDDEN (__preinit_array_start = .);
AnnaBridge 167:84c0a372a020 120 KEEP(*(.preinit_array))
AnnaBridge 167:84c0a372a020 121 PROVIDE_HIDDEN (__preinit_array_end = .);
AnnaBridge 167:84c0a372a020 122
AnnaBridge 167:84c0a372a020 123 . = ALIGN(4);
AnnaBridge 167:84c0a372a020 124 /* init data */
AnnaBridge 167:84c0a372a020 125 PROVIDE_HIDDEN (__init_array_start = .);
AnnaBridge 167:84c0a372a020 126 KEEP(*(SORT(.init_array.*)))
AnnaBridge 167:84c0a372a020 127 KEEP(*(.init_array))
AnnaBridge 167:84c0a372a020 128 PROVIDE_HIDDEN (__init_array_end = .);
AnnaBridge 167:84c0a372a020 129
AnnaBridge 167:84c0a372a020 130
AnnaBridge 167:84c0a372a020 131 . = ALIGN(4);
AnnaBridge 167:84c0a372a020 132 /* finit data */
AnnaBridge 167:84c0a372a020 133 PROVIDE_HIDDEN (__fini_array_start = .);
AnnaBridge 167:84c0a372a020 134 KEEP(*(SORT(.fini_array.*)))
AnnaBridge 167:84c0a372a020 135 KEEP(*(.fini_array))
AnnaBridge 167:84c0a372a020 136 PROVIDE_HIDDEN (__fini_array_end = .);
AnnaBridge 167:84c0a372a020 137
AnnaBridge 167:84c0a372a020 138 . = ALIGN(4);
AnnaBridge 167:84c0a372a020 139 /* All data end */
AnnaBridge 167:84c0a372a020 140 __data_end__ = .;
AnnaBridge 167:84c0a372a020 141
AnnaBridge 167:84c0a372a020 142 } > RAM
AnnaBridge 167:84c0a372a020 143
AnnaBridge 167:84c0a372a020 144 .bss :
AnnaBridge 167:84c0a372a020 145 {
AnnaBridge 167:84c0a372a020 146 __bss_start__ = .;
AnnaBridge 167:84c0a372a020 147 *(.bss*)
AnnaBridge 167:84c0a372a020 148 *(COMMON)
AnnaBridge 167:84c0a372a020 149 __bss_end__ = .;
AnnaBridge 167:84c0a372a020 150 } > RAM
AnnaBridge 167:84c0a372a020 151
AnnaBridge 167:84c0a372a020 152 .heap :
AnnaBridge 167:84c0a372a020 153 {
AnnaBridge 167:84c0a372a020 154 __end__ = .;
AnnaBridge 167:84c0a372a020 155 end = __end__;
AnnaBridge 167:84c0a372a020 156 *(.heap*)
AnnaBridge 167:84c0a372a020 157 __HeapLimit = .;
AnnaBridge 167:84c0a372a020 158 } > RAM
AnnaBridge 167:84c0a372a020 159
AnnaBridge 167:84c0a372a020 160 /* .stack_dummy section doesn't contains any symbols. It is only
AnnaBridge 167:84c0a372a020 161 * used for linker to calculate size of stack sections, and assign
AnnaBridge 167:84c0a372a020 162 * values to stack symbols later */
AnnaBridge 167:84c0a372a020 163 .stack_dummy :
AnnaBridge 167:84c0a372a020 164 {
AnnaBridge 167:84c0a372a020 165 *(.stack)
AnnaBridge 167:84c0a372a020 166 } > RAM
AnnaBridge 167:84c0a372a020 167
AnnaBridge 167:84c0a372a020 168 /* Set stack top to end of RAM, and stack limit move down by
AnnaBridge 167:84c0a372a020 169 * size of stack_dummy section */
AnnaBridge 167:84c0a372a020 170 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
AnnaBridge 167:84c0a372a020 171 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
AnnaBridge 167:84c0a372a020 172 PROVIDE(__stack = __StackTop);
AnnaBridge 167:84c0a372a020 173
AnnaBridge 167:84c0a372a020 174 /* Check if data + heap + stack exceeds RAM limit */
AnnaBridge 167:84c0a372a020 175 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
AnnaBridge 167:84c0a372a020 176 }