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