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 Oct 25 14:40:21 2017 +0100
Revision:
154:fb8e0ae1cceb
Parent:
145:64910690c574
Release 154 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 66:9c8f0e3462fb 1 /* Linker script for mbed LPC1768 */
AnnaBridge 154:fb8e0ae1cceb 2 #if !defined(MBED_APP_START)
AnnaBridge 154:fb8e0ae1cceb 3 #define MBED_APP_START 0x00000000
AnnaBridge 154:fb8e0ae1cceb 4 #endif
bogdanm 66:9c8f0e3462fb 5
AnnaBridge 154:fb8e0ae1cceb 6 #if !defined(MBED_APP_SIZE)
AnnaBridge 154:fb8e0ae1cceb 7 #define MBED_APP_SIZE 512K
AnnaBridge 154:fb8e0ae1cceb 8 #endif
bogdanm 66:9c8f0e3462fb 9 /* Linker script to configure memory regions. */
bogdanm 66:9c8f0e3462fb 10 MEMORY
bogdanm 66:9c8f0e3462fb 11 {
AnnaBridge 154:fb8e0ae1cceb 12 FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE
AnnaBridge 145:64910690c574 13 RAM (rwx) : ORIGIN = 0x100000C8, LENGTH = (32K - 0xC8 - 32) /* topmost 32 bytes used by IAP functions */
bogdanm 66:9c8f0e3462fb 14
bogdanm 66:9c8f0e3462fb 15 USB_RAM(rwx) : ORIGIN = 0x2007C000, LENGTH = 16K
bogdanm 66:9c8f0e3462fb 16 ETH_RAM(rwx) : ORIGIN = 0x20080000, LENGTH = 16K
bogdanm 66:9c8f0e3462fb 17 }
bogdanm 66:9c8f0e3462fb 18
bogdanm 66:9c8f0e3462fb 19 /* Linker script to place sections and symbol values. Should be used together
bogdanm 66:9c8f0e3462fb 20 * with other linker script that defines memory regions FLASH and RAM.
bogdanm 66:9c8f0e3462fb 21 * It references following symbols, which must be defined in code:
bogdanm 66:9c8f0e3462fb 22 * Reset_Handler : Entry of reset handler
bogdanm 66:9c8f0e3462fb 23 *
bogdanm 66:9c8f0e3462fb 24 * It defines following symbols, which code can use without definition:
bogdanm 66:9c8f0e3462fb 25 * __exidx_start
bogdanm 66:9c8f0e3462fb 26 * __exidx_end
bogdanm 66:9c8f0e3462fb 27 * __etext
bogdanm 66:9c8f0e3462fb 28 * __data_start__
bogdanm 66:9c8f0e3462fb 29 * __preinit_array_start
bogdanm 66:9c8f0e3462fb 30 * __preinit_array_end
bogdanm 66:9c8f0e3462fb 31 * __init_array_start
bogdanm 66:9c8f0e3462fb 32 * __init_array_end
bogdanm 66:9c8f0e3462fb 33 * __fini_array_start
bogdanm 66:9c8f0e3462fb 34 * __fini_array_end
bogdanm 66:9c8f0e3462fb 35 * __data_end__
bogdanm 66:9c8f0e3462fb 36 * __bss_start__
bogdanm 66:9c8f0e3462fb 37 * __bss_end__
bogdanm 66:9c8f0e3462fb 38 * __end__
bogdanm 66:9c8f0e3462fb 39 * end
bogdanm 66:9c8f0e3462fb 40 * __HeapLimit
bogdanm 66:9c8f0e3462fb 41 * __StackLimit
bogdanm 66:9c8f0e3462fb 42 * __StackTop
bogdanm 66:9c8f0e3462fb 43 * __stack
bogdanm 66:9c8f0e3462fb 44 */
bogdanm 66:9c8f0e3462fb 45 ENTRY(Reset_Handler)
bogdanm 66:9c8f0e3462fb 46
bogdanm 66:9c8f0e3462fb 47 SECTIONS
bogdanm 66:9c8f0e3462fb 48 {
bogdanm 66:9c8f0e3462fb 49 .text :
bogdanm 66:9c8f0e3462fb 50 {
bogdanm 66:9c8f0e3462fb 51 KEEP(*(.isr_vector))
AnnaBridge 154:fb8e0ae1cceb 52 /* Code Read Protect data */
AnnaBridge 154:fb8e0ae1cceb 53 . = 0x000002FC ;
AnnaBridge 154:fb8e0ae1cceb 54 KEEP(*(.CRPSection))
AnnaBridge 154:fb8e0ae1cceb 55 /* End of Code Read Protect */
bogdanm 66:9c8f0e3462fb 56 *(.text*)
bogdanm 66:9c8f0e3462fb 57
bogdanm 66:9c8f0e3462fb 58 KEEP(*(.init))
bogdanm 66:9c8f0e3462fb 59 KEEP(*(.fini))
bogdanm 66:9c8f0e3462fb 60
bogdanm 66:9c8f0e3462fb 61 /* .ctors */
bogdanm 66:9c8f0e3462fb 62 *crtbegin.o(.ctors)
bogdanm 66:9c8f0e3462fb 63 *crtbegin?.o(.ctors)
bogdanm 66:9c8f0e3462fb 64 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
bogdanm 66:9c8f0e3462fb 65 *(SORT(.ctors.*))
bogdanm 66:9c8f0e3462fb 66 *(.ctors)
bogdanm 66:9c8f0e3462fb 67
bogdanm 66:9c8f0e3462fb 68 /* .dtors */
bogdanm 66:9c8f0e3462fb 69 *crtbegin.o(.dtors)
bogdanm 66:9c8f0e3462fb 70 *crtbegin?.o(.dtors)
bogdanm 66:9c8f0e3462fb 71 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
bogdanm 66:9c8f0e3462fb 72 *(SORT(.dtors.*))
bogdanm 66:9c8f0e3462fb 73 *(.dtors)
bogdanm 66:9c8f0e3462fb 74
bogdanm 66:9c8f0e3462fb 75 *(.rodata*)
bogdanm 66:9c8f0e3462fb 76
bogdanm 66:9c8f0e3462fb 77 KEEP(*(.eh_frame*))
AnnaBridge 154:fb8e0ae1cceb 78
AnnaBridge 154:fb8e0ae1cceb 79
bogdanm 66:9c8f0e3462fb 80 } > FLASH
bogdanm 66:9c8f0e3462fb 81
bogdanm 66:9c8f0e3462fb 82 .ARM.extab :
bogdanm 66:9c8f0e3462fb 83 {
bogdanm 66:9c8f0e3462fb 84 *(.ARM.extab* .gnu.linkonce.armextab.*)
bogdanm 66:9c8f0e3462fb 85 } > FLASH
bogdanm 66:9c8f0e3462fb 86
bogdanm 66:9c8f0e3462fb 87 __exidx_start = .;
bogdanm 66:9c8f0e3462fb 88 .ARM.exidx :
bogdanm 66:9c8f0e3462fb 89 {
bogdanm 66:9c8f0e3462fb 90 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
bogdanm 66:9c8f0e3462fb 91 } > FLASH
bogdanm 66:9c8f0e3462fb 92 __exidx_end = .;
bogdanm 66:9c8f0e3462fb 93
bogdanm 66:9c8f0e3462fb 94 __etext = .;
bogdanm 66:9c8f0e3462fb 95
bogdanm 66:9c8f0e3462fb 96 .data : AT (__etext)
bogdanm 66:9c8f0e3462fb 97 {
bogdanm 66:9c8f0e3462fb 98 __data_start__ = .;
bogdanm 66:9c8f0e3462fb 99 Image$$RW_IRAM1$$Base = .;
bogdanm 66:9c8f0e3462fb 100 *(vtable)
bogdanm 66:9c8f0e3462fb 101 *(.data*)
bogdanm 66:9c8f0e3462fb 102
bogdanm 66:9c8f0e3462fb 103 . = ALIGN(4);
bogdanm 66:9c8f0e3462fb 104 /* preinit data */
bogdanm 66:9c8f0e3462fb 105 PROVIDE (__preinit_array_start = .);
bogdanm 66:9c8f0e3462fb 106 KEEP(*(.preinit_array))
bogdanm 66:9c8f0e3462fb 107 PROVIDE (__preinit_array_end = .);
bogdanm 66:9c8f0e3462fb 108
bogdanm 66:9c8f0e3462fb 109 . = ALIGN(4);
bogdanm 66:9c8f0e3462fb 110 /* init data */
bogdanm 66:9c8f0e3462fb 111 PROVIDE (__init_array_start = .);
bogdanm 66:9c8f0e3462fb 112 KEEP(*(SORT(.init_array.*)))
bogdanm 66:9c8f0e3462fb 113 KEEP(*(.init_array))
bogdanm 66:9c8f0e3462fb 114 PROVIDE (__init_array_end = .);
bogdanm 66:9c8f0e3462fb 115
bogdanm 66:9c8f0e3462fb 116
bogdanm 66:9c8f0e3462fb 117 . = ALIGN(4);
bogdanm 66:9c8f0e3462fb 118 /* finit data */
bogdanm 66:9c8f0e3462fb 119 PROVIDE (__fini_array_start = .);
bogdanm 66:9c8f0e3462fb 120 KEEP(*(SORT(.fini_array.*)))
bogdanm 66:9c8f0e3462fb 121 KEEP(*(.fini_array))
bogdanm 66:9c8f0e3462fb 122 PROVIDE (__fini_array_end = .);
bogdanm 66:9c8f0e3462fb 123
bogdanm 66:9c8f0e3462fb 124 . = ALIGN(4);
bogdanm 66:9c8f0e3462fb 125 /* All data end */
bogdanm 66:9c8f0e3462fb 126 __data_end__ = .;
bogdanm 66:9c8f0e3462fb 127
bogdanm 66:9c8f0e3462fb 128 } > RAM
bogdanm 66:9c8f0e3462fb 129
bogdanm 66:9c8f0e3462fb 130
bogdanm 66:9c8f0e3462fb 131 .bss :
bogdanm 66:9c8f0e3462fb 132 {
bogdanm 66:9c8f0e3462fb 133 __bss_start__ = .;
bogdanm 66:9c8f0e3462fb 134 *(.bss*)
bogdanm 66:9c8f0e3462fb 135 *(COMMON)
bogdanm 66:9c8f0e3462fb 136 __bss_end__ = .;
bogdanm 66:9c8f0e3462fb 137 Image$$RW_IRAM1$$ZI$$Limit = . ;
bogdanm 66:9c8f0e3462fb 138 } > RAM
bogdanm 66:9c8f0e3462fb 139
bogdanm 66:9c8f0e3462fb 140
bogdanm 66:9c8f0e3462fb 141 .heap :
bogdanm 66:9c8f0e3462fb 142 {
bogdanm 66:9c8f0e3462fb 143 __end__ = .;
bogdanm 66:9c8f0e3462fb 144 end = __end__;
bogdanm 66:9c8f0e3462fb 145 *(.heap*)
bogdanm 66:9c8f0e3462fb 146 __HeapLimit = .;
bogdanm 66:9c8f0e3462fb 147 } > RAM
bogdanm 66:9c8f0e3462fb 148
bogdanm 66:9c8f0e3462fb 149 /* .stack_dummy section doesn't contains any symbols. It is only
bogdanm 66:9c8f0e3462fb 150 * used for linker to calculate size of stack sections, and assign
bogdanm 66:9c8f0e3462fb 151 * values to stack symbols later */
bogdanm 66:9c8f0e3462fb 152 .stack_dummy :
bogdanm 66:9c8f0e3462fb 153 {
bogdanm 66:9c8f0e3462fb 154 *(.stack)
bogdanm 66:9c8f0e3462fb 155 } > RAM
bogdanm 66:9c8f0e3462fb 156
bogdanm 66:9c8f0e3462fb 157 /* Set stack top to end of RAM, and stack limit move down by
bogdanm 66:9c8f0e3462fb 158 * size of stack_dummy section */
bogdanm 66:9c8f0e3462fb 159 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
bogdanm 66:9c8f0e3462fb 160 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
bogdanm 66:9c8f0e3462fb 161 PROVIDE(__stack = __StackTop);
bogdanm 66:9c8f0e3462fb 162
bogdanm 66:9c8f0e3462fb 163 /* Check if data + heap + stack exceeds RAM limit */
bogdanm 66:9c8f0e3462fb 164 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
bogdanm 66:9c8f0e3462fb 165
bogdanm 66:9c8f0e3462fb 166
bogdanm 66:9c8f0e3462fb 167 /* Code can explicitly ask for data to be
bogdanm 66:9c8f0e3462fb 168 placed in these higher RAM banks where
bogdanm 66:9c8f0e3462fb 169 they will be left uninitialized.
bogdanm 66:9c8f0e3462fb 170 */
bogdanm 66:9c8f0e3462fb 171 .AHBSRAM0 (NOLOAD):
bogdanm 66:9c8f0e3462fb 172 {
bogdanm 66:9c8f0e3462fb 173 Image$$RW_IRAM2$$Base = . ;
bogdanm 66:9c8f0e3462fb 174 *(AHBSRAM0)
bogdanm 66:9c8f0e3462fb 175 Image$$RW_IRAM2$$ZI$$Limit = .;
bogdanm 66:9c8f0e3462fb 176 } > USB_RAM
bogdanm 66:9c8f0e3462fb 177
bogdanm 66:9c8f0e3462fb 178 .AHBSRAM1 (NOLOAD):
bogdanm 66:9c8f0e3462fb 179 {
bogdanm 66:9c8f0e3462fb 180 Image$$RW_IRAM3$$Base = . ;
bogdanm 66:9c8f0e3462fb 181 *(AHBSRAM1)
bogdanm 66:9c8f0e3462fb 182 Image$$RW_IRAM3$$ZI$$Limit = .;
bogdanm 66:9c8f0e3462fb 183 } > ETH_RAM
bogdanm 66:9c8f0e3462fb 184 }