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:
Tue Sep 01 16:00:09 2015 +0100
Revision:
614:9d86c2ae5de0
Parent:
365:7ced7d9d5ffe
Synchronized with git revision 483bb0197fd032956a31330bd6c6eb50758f2dda

Full URL: https://github.com/mbedmicro/mbed/commit/483bb0197fd032956a31330bd6c6eb50758f2dda/

LPC81X: reduce code size and add ARM_GCC support

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 *(.text*)
mbed_official 365:7ced7d9d5ffe 49
mbed_official 365:7ced7d9d5ffe 50 KEEP(*(.init))
mbed_official 365:7ced7d9d5ffe 51 KEEP(*(.fini))
mbed_official 365:7ced7d9d5ffe 52
mbed_official 365:7ced7d9d5ffe 53 /* .ctors */
mbed_official 365:7ced7d9d5ffe 54 *crtbegin.o(.ctors)
mbed_official 365:7ced7d9d5ffe 55 *crtbegin?.o(.ctors)
mbed_official 365:7ced7d9d5ffe 56 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
mbed_official 365:7ced7d9d5ffe 57 *(SORT(.ctors.*))
mbed_official 365:7ced7d9d5ffe 58 *(.ctors)
mbed_official 365:7ced7d9d5ffe 59
mbed_official 365:7ced7d9d5ffe 60 /* .dtors */
mbed_official 365:7ced7d9d5ffe 61 *crtbegin.o(.dtors)
mbed_official 365:7ced7d9d5ffe 62 *crtbegin?.o(.dtors)
mbed_official 365:7ced7d9d5ffe 63 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
mbed_official 365:7ced7d9d5ffe 64 *(SORT(.dtors.*))
mbed_official 365:7ced7d9d5ffe 65 *(.dtors)
mbed_official 365:7ced7d9d5ffe 66
mbed_official 365:7ced7d9d5ffe 67 *(.rodata*)
mbed_official 365:7ced7d9d5ffe 68
mbed_official 365:7ced7d9d5ffe 69 KEEP(*(.eh_frame*))
mbed_official 365:7ced7d9d5ffe 70 } > FLASH
mbed_official 365:7ced7d9d5ffe 71
mbed_official 365:7ced7d9d5ffe 72 .ARM.extab :
mbed_official 365:7ced7d9d5ffe 73 {
mbed_official 365:7ced7d9d5ffe 74 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 365:7ced7d9d5ffe 75 } > FLASH
mbed_official 365:7ced7d9d5ffe 76
mbed_official 365:7ced7d9d5ffe 77 __exidx_start = .;
mbed_official 365:7ced7d9d5ffe 78 .ARM.exidx :
mbed_official 365:7ced7d9d5ffe 79 {
mbed_official 365:7ced7d9d5ffe 80 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
mbed_official 365:7ced7d9d5ffe 81 } > FLASH
mbed_official 365:7ced7d9d5ffe 82 __exidx_end = .;
mbed_official 365:7ced7d9d5ffe 83
mbed_official 365:7ced7d9d5ffe 84 __etext = .;
mbed_official 365:7ced7d9d5ffe 85
mbed_official 365:7ced7d9d5ffe 86 .data : AT (__etext)
mbed_official 365:7ced7d9d5ffe 87 {
mbed_official 365:7ced7d9d5ffe 88 __data_start__ = .;
mbed_official 365:7ced7d9d5ffe 89 *(vtable)
mbed_official 365:7ced7d9d5ffe 90 *(.data*)
mbed_official 365:7ced7d9d5ffe 91
mbed_official 365:7ced7d9d5ffe 92 . = ALIGN(4);
mbed_official 365:7ced7d9d5ffe 93 /* preinit data */
mbed_official 365:7ced7d9d5ffe 94 PROVIDE (__preinit_array_start = .);
mbed_official 365:7ced7d9d5ffe 95 KEEP(*(.preinit_array))
mbed_official 365:7ced7d9d5ffe 96 PROVIDE (__preinit_array_end = .);
mbed_official 365:7ced7d9d5ffe 97
mbed_official 365:7ced7d9d5ffe 98 . = ALIGN(4);
mbed_official 365:7ced7d9d5ffe 99 /* init data */
mbed_official 365:7ced7d9d5ffe 100 PROVIDE (__init_array_start = .);
mbed_official 365:7ced7d9d5ffe 101 KEEP(*(SORT(.init_array.*)))
mbed_official 365:7ced7d9d5ffe 102 KEEP(*(.init_array))
mbed_official 365:7ced7d9d5ffe 103 PROVIDE (__init_array_end = .);
mbed_official 365:7ced7d9d5ffe 104
mbed_official 365:7ced7d9d5ffe 105
mbed_official 365:7ced7d9d5ffe 106 . = ALIGN(4);
mbed_official 365:7ced7d9d5ffe 107 /* finit data */
mbed_official 365:7ced7d9d5ffe 108 PROVIDE (__fini_array_start = .);
mbed_official 365:7ced7d9d5ffe 109 KEEP(*(SORT(.fini_array.*)))
mbed_official 365:7ced7d9d5ffe 110 KEEP(*(.fini_array))
mbed_official 365:7ced7d9d5ffe 111 PROVIDE (__fini_array_end = .);
mbed_official 365:7ced7d9d5ffe 112
mbed_official 365:7ced7d9d5ffe 113 . = ALIGN(4);
mbed_official 365:7ced7d9d5ffe 114 /* All data end */
mbed_official 365:7ced7d9d5ffe 115 __data_end__ = .;
mbed_official 365:7ced7d9d5ffe 116
mbed_official 365:7ced7d9d5ffe 117 } > RAM
mbed_official 365:7ced7d9d5ffe 118
mbed_official 365:7ced7d9d5ffe 119 .bss :
mbed_official 365:7ced7d9d5ffe 120 {
mbed_official 365:7ced7d9d5ffe 121 __bss_start__ = .;
mbed_official 365:7ced7d9d5ffe 122 *(.bss*)
mbed_official 365:7ced7d9d5ffe 123 *(COMMON)
mbed_official 365:7ced7d9d5ffe 124 __bss_end__ = .;
mbed_official 365:7ced7d9d5ffe 125 } > RAM
mbed_official 365:7ced7d9d5ffe 126
mbed_official 365:7ced7d9d5ffe 127 .heap :
mbed_official 365:7ced7d9d5ffe 128 {
mbed_official 365:7ced7d9d5ffe 129 __end__ = .;
mbed_official 365:7ced7d9d5ffe 130 end = __end__;
mbed_official 365:7ced7d9d5ffe 131 *(.heap*)
mbed_official 365:7ced7d9d5ffe 132 __HeapLimit = .;
mbed_official 365:7ced7d9d5ffe 133 } > RAM
mbed_official 365:7ced7d9d5ffe 134
mbed_official 365:7ced7d9d5ffe 135 /* .stack_dummy section doesn't contains any symbols. It is only
mbed_official 365:7ced7d9d5ffe 136 * used for linker to calculate size of stack sections, and assign
mbed_official 365:7ced7d9d5ffe 137 * values to stack symbols later */
mbed_official 365:7ced7d9d5ffe 138 .stack_dummy :
mbed_official 365:7ced7d9d5ffe 139 {
mbed_official 365:7ced7d9d5ffe 140 *(.stack)
mbed_official 365:7ced7d9d5ffe 141 } > RAM
mbed_official 365:7ced7d9d5ffe 142
mbed_official 365:7ced7d9d5ffe 143 /* Set stack top to end of RAM, and stack limit move down by
mbed_official 365:7ced7d9d5ffe 144 * size of stack_dummy section */
mbed_official 365:7ced7d9d5ffe 145 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
mbed_official 365:7ced7d9d5ffe 146 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
mbed_official 365:7ced7d9d5ffe 147 PROVIDE(__stack = __StackTop);
mbed_official 365:7ced7d9d5ffe 148
mbed_official 365:7ced7d9d5ffe 149 /* Check if data + heap + stack exceeds RAM limit */
mbed_official 365:7ced7d9d5ffe 150 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
mbed_official 365:7ced7d9d5ffe 151 }