Describes predefine macros for mbed online compiler (armcc)

Committer:
MACRUM
Date:
Thu Mar 16 21:58:09 2017 +0900
Revision:
6:40e873bbc5f7
Add licence header info

Who changed what in which revision?

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