mbed library sources: Modified to operate FRDM-KL25Z at 48MHz from internal 32kHz oscillator (nothing else changed).

Fork of mbed-src by mbed official

The only file that changed is: mbed-src-FLL48/targets/cmsis/TARGET_Freescale/TARGET_KL25Z/system_MKL25Z4.h

Committer:
bogdanm
Date:
Tue Sep 10 15:14:19 2013 +0300
Revision:
20:4263a77256ae
Parent:
19:398f4c622e1b
Sync with git revision 171dda705c947bf910926a0b73d6a4797802554d

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 20:4263a77256ae 7 RAM (rwx) : ORIGIN = 0x100000C0, LENGTH = 0x0F40
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 20:4263a77256ae 43 *(.text.Reset_Handler)
bogdanm 20:4263a77256ae 44 *(.text.SystemInit)
bogdanm 20:4263a77256ae 45 . = 0x200;
bogdanm 19:398f4c622e1b 46 *(.text*)
bogdanm 19:398f4c622e1b 47
bogdanm 19:398f4c622e1b 48 KEEP(*(.init))
bogdanm 19:398f4c622e1b 49 KEEP(*(.fini))
bogdanm 19:398f4c622e1b 50
bogdanm 19:398f4c622e1b 51 /* .ctors */
bogdanm 19:398f4c622e1b 52 *crtbegin.o(.ctors)
bogdanm 19:398f4c622e1b 53 *crtbegin?.o(.ctors)
bogdanm 19:398f4c622e1b 54 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
bogdanm 19:398f4c622e1b 55 *(SORT(.ctors.*))
bogdanm 19:398f4c622e1b 56 *(.ctors)
bogdanm 19:398f4c622e1b 57
bogdanm 19:398f4c622e1b 58 /* .dtors */
bogdanm 19:398f4c622e1b 59 *crtbegin.o(.dtors)
bogdanm 19:398f4c622e1b 60 *crtbegin?.o(.dtors)
bogdanm 19:398f4c622e1b 61 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
bogdanm 19:398f4c622e1b 62 *(SORT(.dtors.*))
bogdanm 19:398f4c622e1b 63 *(.dtors)
bogdanm 19:398f4c622e1b 64
bogdanm 19:398f4c622e1b 65 *(.rodata*)
bogdanm 19:398f4c622e1b 66
bogdanm 19:398f4c622e1b 67 KEEP(*(.eh_frame*))
bogdanm 19:398f4c622e1b 68 } > FLASH
bogdanm 19:398f4c622e1b 69
bogdanm 19:398f4c622e1b 70 .ARM.extab :
bogdanm 19:398f4c622e1b 71 {
bogdanm 19:398f4c622e1b 72 *(.ARM.extab* .gnu.linkonce.armextab.*)
bogdanm 19:398f4c622e1b 73 } > FLASH
bogdanm 19:398f4c622e1b 74
bogdanm 19:398f4c622e1b 75 __exidx_start = .;
bogdanm 19:398f4c622e1b 76 .ARM.exidx :
bogdanm 19:398f4c622e1b 77 {
bogdanm 19:398f4c622e1b 78 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
bogdanm 19:398f4c622e1b 79 } > FLASH
bogdanm 19:398f4c622e1b 80 __exidx_end = .;
bogdanm 19:398f4c622e1b 81
bogdanm 19:398f4c622e1b 82 __etext = .;
bogdanm 19:398f4c622e1b 83
bogdanm 19:398f4c622e1b 84 .data : AT (__etext)
bogdanm 19:398f4c622e1b 85 {
bogdanm 19:398f4c622e1b 86 __data_start__ = .;
bogdanm 19:398f4c622e1b 87 *(vtable)
bogdanm 19:398f4c622e1b 88 *(.data*)
bogdanm 19:398f4c622e1b 89
bogdanm 19:398f4c622e1b 90 . = ALIGN(4);
bogdanm 19:398f4c622e1b 91 /* preinit data */
bogdanm 19:398f4c622e1b 92 PROVIDE (__preinit_array_start = .);
bogdanm 19:398f4c622e1b 93 KEEP(*(.preinit_array))
bogdanm 19:398f4c622e1b 94 PROVIDE (__preinit_array_end = .);
bogdanm 19:398f4c622e1b 95
bogdanm 19:398f4c622e1b 96 . = ALIGN(4);
bogdanm 19:398f4c622e1b 97 /* init data */
bogdanm 19:398f4c622e1b 98 PROVIDE (__init_array_start = .);
bogdanm 19:398f4c622e1b 99 KEEP(*(SORT(.init_array.*)))
bogdanm 19:398f4c622e1b 100 KEEP(*(.init_array))
bogdanm 19:398f4c622e1b 101 PROVIDE (__init_array_end = .);
bogdanm 19:398f4c622e1b 102
bogdanm 19:398f4c622e1b 103
bogdanm 19:398f4c622e1b 104 . = ALIGN(4);
bogdanm 19:398f4c622e1b 105 /* finit data */
bogdanm 19:398f4c622e1b 106 PROVIDE (__fini_array_start = .);
bogdanm 19:398f4c622e1b 107 KEEP(*(SORT(.fini_array.*)))
bogdanm 19:398f4c622e1b 108 KEEP(*(.fini_array))
bogdanm 19:398f4c622e1b 109 PROVIDE (__fini_array_end = .);
bogdanm 19:398f4c622e1b 110
bogdanm 19:398f4c622e1b 111 . = ALIGN(4);
bogdanm 19:398f4c622e1b 112 /* All data end */
bogdanm 19:398f4c622e1b 113 __data_end__ = .;
bogdanm 19:398f4c622e1b 114
bogdanm 19:398f4c622e1b 115 } > RAM
bogdanm 19:398f4c622e1b 116
bogdanm 19:398f4c622e1b 117 .bss :
bogdanm 19:398f4c622e1b 118 {
bogdanm 19:398f4c622e1b 119 __bss_start__ = .;
bogdanm 19:398f4c622e1b 120 *(.bss*)
bogdanm 19:398f4c622e1b 121 *(COMMON)
bogdanm 19:398f4c622e1b 122 __bss_end__ = .;
bogdanm 19:398f4c622e1b 123 } > RAM
bogdanm 19:398f4c622e1b 124
bogdanm 19:398f4c622e1b 125 .heap :
bogdanm 19:398f4c622e1b 126 {
bogdanm 19:398f4c622e1b 127 __end__ = .;
bogdanm 19:398f4c622e1b 128 end = __end__;
bogdanm 19:398f4c622e1b 129 *(.heap*)
bogdanm 19:398f4c622e1b 130 __HeapLimit = .;
bogdanm 19:398f4c622e1b 131 } > RAM
bogdanm 19:398f4c622e1b 132
bogdanm 19:398f4c622e1b 133 /* .stack_dummy section doesn't contains any symbols. It is only
bogdanm 19:398f4c622e1b 134 * used for linker to calculate size of stack sections, and assign
bogdanm 19:398f4c622e1b 135 * values to stack symbols later */
bogdanm 19:398f4c622e1b 136 .stack_dummy :
bogdanm 19:398f4c622e1b 137 {
bogdanm 19:398f4c622e1b 138 *(.stack)
bogdanm 19:398f4c622e1b 139 } > RAM
bogdanm 19:398f4c622e1b 140
bogdanm 19:398f4c622e1b 141 /* Set stack top to end of RAM, and stack limit move down by
bogdanm 19:398f4c622e1b 142 * size of stack_dummy section */
bogdanm 19:398f4c622e1b 143 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
bogdanm 19:398f4c622e1b 144 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
bogdanm 19:398f4c622e1b 145 PROVIDE(__stack = __StackTop);
bogdanm 19:398f4c622e1b 146
bogdanm 19:398f4c622e1b 147 /* Check if data + heap + stack exceeds RAM limit */
bogdanm 19:398f4c622e1b 148 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
bogdanm 19:398f4c622e1b 149 }