mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Oct 24 09:15:06 2014 +0100
Revision:
365:7ced7d9d5ffe
Child:
614:9d86c2ae5de0
Synchronized with git revision 3dfb03322653b12ab2e485aadfff8653ecea2429

Full URL: https://github.com/mbedmicro/mbed/commit/3dfb03322653b12ab2e485aadfff8653ecea2429/

Toolchain: LPC824 - new Toolchain support by GCC_ARM for LPC824

Who changed what in which revision?

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