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:
Fri Jan 31 10:00:06 2014 +0000
Revision:
82:0b31dbcd4769
Parent:
targets/cmsis/TARGET_Freescale/TARGET_KL05Z/TOOLCHAIN_GCC_ARM/MKL05Z4.ld@60:142c6c6f5949
Synchronized with git revision 74409cbd593d1daab530a57baaa563f30b04b018

Full URL: https://github.com/mbedmicro/mbed/commit/74409cbd593d1daab530a57baaa563f30b04b018/

Who changed what in which revision?

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