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:
bogdanm
Date:
Mon Aug 19 18:17:02 2013 +0300
Revision:
19:398f4c622e1b
Child:
20:4263a77256ae
Sync with official mbed library release 66

Who changed what in which revision?

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