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