mbed SDK library sources

Fork of mbed-src by mbed official

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:
Thu Nov 21 10:00:05 2013 +0000
Revision:
47:02833c62d054
Synchronized with git revision 6a5335a40ed97c7edd719e209bda5f3b5d9d997e

Full URL: https://github.com/mbedmicro/mbed/commit/6a5335a40ed97c7edd719e209bda5f3b5d9d997e/

Added sleep to LPC81x

Who changed what in which revision?

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