mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Fri May 26 12:39:01 2017 +0100
Revision:
165:e614a9f1c9e2
Parent:
149:156823d33999
Child:
188:bcfe06ba3d64
This updates the lib to the mbed lib v 143

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /*
<> 144:ef7eb2e8f9f7 2 *****************************************************************************
<> 144:ef7eb2e8f9f7 3 **
<> 144:ef7eb2e8f9f7 4 ** File : KL25Z128M4_flash.ld
<> 144:ef7eb2e8f9f7 5 **
<> 144:ef7eb2e8f9f7 6 ** Default linker command file for Flash targets
<> 144:ef7eb2e8f9f7 7 **
<> 144:ef7eb2e8f9f7 8 *****************************************************************************
<> 144:ef7eb2e8f9f7 9 */
<> 144:ef7eb2e8f9f7 10 /* Entry Point */
<> 144:ef7eb2e8f9f7 11 ENTRY(__thumb_startup)
<> 144:ef7eb2e8f9f7 12
<> 144:ef7eb2e8f9f7 13 /* Highest address of the user mode stack */
<> 144:ef7eb2e8f9f7 14 _estack = 0x20003000; /* end of SRAM */
<> 144:ef7eb2e8f9f7 15 __SP_INIT = _estack;
<> 144:ef7eb2e8f9f7 16
<> 144:ef7eb2e8f9f7 17 /* Generate a link error if heap and stack don't fit into RAM */
<> 144:ef7eb2e8f9f7 18 __heap_size = 0x400; /* required amount of heap */
<> 144:ef7eb2e8f9f7 19 __stack_size = 0x400; /* required amount of stack */
<> 144:ef7eb2e8f9f7 20
<> 144:ef7eb2e8f9f7 21 /* Specify the memory areas */
<> 144:ef7eb2e8f9f7 22 MEMORY
<> 144:ef7eb2e8f9f7 23 {
<> 144:ef7eb2e8f9f7 24 m_interrupts (rx) : ORIGIN = 0x00000000, LENGTH = 0xC0
<> 144:ef7eb2e8f9f7 25 m_cfmprotrom (rx) : ORIGIN = 0x00000400, LENGTH = 0x10
<> 144:ef7eb2e8f9f7 26 m_text (rx) : ORIGIN = 0x00000800, LENGTH = 128K - 0x800
<> 144:ef7eb2e8f9f7 27 m_data (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* SRAM */
<> 144:ef7eb2e8f9f7 28 }
<> 144:ef7eb2e8f9f7 29
<> 144:ef7eb2e8f9f7 30
<> 144:ef7eb2e8f9f7 31 /* Define output sections */
<> 144:ef7eb2e8f9f7 32 SECTIONS
<> 144:ef7eb2e8f9f7 33 {
<> 144:ef7eb2e8f9f7 34 /* The startup code goes first into Flash */
<> 144:ef7eb2e8f9f7 35 .interrupts :
<> 144:ef7eb2e8f9f7 36 {
<> 144:ef7eb2e8f9f7 37 __vector_table = .;
<> 144:ef7eb2e8f9f7 38 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 39 KEEP(*(.vectortable)) /* Startup code */
<> 144:ef7eb2e8f9f7 40 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 41 } > m_interrupts
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 .cfmprotect :
<> 144:ef7eb2e8f9f7 44 {
<> 144:ef7eb2e8f9f7 45 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 46 KEEP(*(.cfmconfig)) /* Flash Configuration Field (FCF) */
<> 144:ef7eb2e8f9f7 47 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 48 } > m_cfmprotrom
<> 144:ef7eb2e8f9f7 49
<> 144:ef7eb2e8f9f7 50 /* The program code and other data goes into Flash */
<> 144:ef7eb2e8f9f7 51 .text :
<> 144:ef7eb2e8f9f7 52 {
<> 144:ef7eb2e8f9f7 53 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 54 *(.text) /* .text sections (code) */
<> 144:ef7eb2e8f9f7 55 *(.text*) /* .text* sections (code) */
<> 144:ef7eb2e8f9f7 56 *(.rodata) /* .rodata sections (constants, strings, etc.) */
<> 144:ef7eb2e8f9f7 57 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
<> 144:ef7eb2e8f9f7 58 *(.glue_7) /* glue arm to thumb code */
<> 144:ef7eb2e8f9f7 59 *(.glue_7t) /* glue thumb to arm code */
<> 144:ef7eb2e8f9f7 60 *(.eh_frame)
<> 144:ef7eb2e8f9f7 61
<> 144:ef7eb2e8f9f7 62 KEEP (*(.init))
<> 144:ef7eb2e8f9f7 63 KEEP (*(.fini))
<> 144:ef7eb2e8f9f7 64
<> 144:ef7eb2e8f9f7 65 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 66 _etext = .; /* define a global symbols at end of code */
<> 144:ef7eb2e8f9f7 67 } > m_text
<> 144:ef7eb2e8f9f7 68
<> 144:ef7eb2e8f9f7 69 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > m_text
<> 144:ef7eb2e8f9f7 70 .ARM : {
<> 144:ef7eb2e8f9f7 71 __exidx_start = .;
<> 144:ef7eb2e8f9f7 72 *(.ARM.exidx*)
<> 144:ef7eb2e8f9f7 73 __exidx_end = .;
<> 144:ef7eb2e8f9f7 74 } > m_text
<> 144:ef7eb2e8f9f7 75
<> 144:ef7eb2e8f9f7 76 .ctors :
<> 144:ef7eb2e8f9f7 77 {
<> 144:ef7eb2e8f9f7 78 __CTOR_LIST__ = .;
<> 144:ef7eb2e8f9f7 79 /* gcc uses crtbegin.o to find the start of
<> 144:ef7eb2e8f9f7 80 the constructors, so we make sure it is
<> 144:ef7eb2e8f9f7 81 first. Because this is a wildcard, it
<> 144:ef7eb2e8f9f7 82 doesn't matter if the user does not
<> 144:ef7eb2e8f9f7 83 actually link against crtbegin.o; the
<> 144:ef7eb2e8f9f7 84 linker won't look for a file to match a
<> 144:ef7eb2e8f9f7 85 wildcard. The wildcard also means that it
<> 144:ef7eb2e8f9f7 86 doesn't matter which directory crtbegin.o
<> 144:ef7eb2e8f9f7 87 is in. */
<> 144:ef7eb2e8f9f7 88 KEEP (*crtbegin.o(.ctors))
<> 144:ef7eb2e8f9f7 89 /* We don't want to include the .ctor section from
<> 144:ef7eb2e8f9f7 90 from the crtend.o file until after the sorted ctors.
<> 144:ef7eb2e8f9f7 91 The .ctor section from the crtend file contains the
<> 144:ef7eb2e8f9f7 92 end of ctors marker and it must be last */
<> 144:ef7eb2e8f9f7 93 KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
<> 144:ef7eb2e8f9f7 94 KEEP (*(SORT(.ctors.*)))
<> 144:ef7eb2e8f9f7 95 KEEP (*(.ctors))
<> 144:ef7eb2e8f9f7 96 __CTOR_END__ = .;
<> 144:ef7eb2e8f9f7 97 } > m_text
<> 144:ef7eb2e8f9f7 98 .dtors :
<> 144:ef7eb2e8f9f7 99 {
<> 144:ef7eb2e8f9f7 100 __DTOR_LIST__ = .;
<> 144:ef7eb2e8f9f7 101 KEEP (*crtbegin.o(.dtors))
<> 144:ef7eb2e8f9f7 102 KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
<> 144:ef7eb2e8f9f7 103 KEEP (*(SORT(.dtors.*)))
<> 144:ef7eb2e8f9f7 104 KEEP (*(.dtors))
<> 144:ef7eb2e8f9f7 105 __DTOR_END__ = .;
<> 144:ef7eb2e8f9f7 106 } > m_text
<> 144:ef7eb2e8f9f7 107
<> 144:ef7eb2e8f9f7 108 .preinit_array :
<> 144:ef7eb2e8f9f7 109 {
<> 144:ef7eb2e8f9f7 110 PROVIDE_HIDDEN (__preinit_array_start = .);
<> 144:ef7eb2e8f9f7 111 KEEP (*(.preinit_array*))
<> 144:ef7eb2e8f9f7 112 PROVIDE_HIDDEN (__preinit_array_end = .);
<> 144:ef7eb2e8f9f7 113 } > m_text
<> 144:ef7eb2e8f9f7 114 .init_array :
<> 144:ef7eb2e8f9f7 115 {
<> 144:ef7eb2e8f9f7 116 PROVIDE_HIDDEN (__init_array_start = .);
<> 144:ef7eb2e8f9f7 117 KEEP (*(SORT(.init_array.*)))
<> 144:ef7eb2e8f9f7 118 KEEP (*(.init_array*))
<> 144:ef7eb2e8f9f7 119 PROVIDE_HIDDEN (__init_array_end = .);
<> 144:ef7eb2e8f9f7 120 } > m_text
<> 144:ef7eb2e8f9f7 121 .fini_array :
<> 144:ef7eb2e8f9f7 122 {
<> 144:ef7eb2e8f9f7 123 PROVIDE_HIDDEN (__fini_array_start = .);
<> 144:ef7eb2e8f9f7 124 KEEP (*(SORT(.fini_array.*)))
<> 144:ef7eb2e8f9f7 125 KEEP (*(.fini_array*))
<> 144:ef7eb2e8f9f7 126 PROVIDE_HIDDEN (__fini_array_end = .);
<> 144:ef7eb2e8f9f7 127
<> 144:ef7eb2e8f9f7 128 ___ROM_AT = .;
<> 144:ef7eb2e8f9f7 129 } > m_text
<> 144:ef7eb2e8f9f7 130
<> 144:ef7eb2e8f9f7 131 /* reserve MTB memory at the beginning of m_data */
<> 144:ef7eb2e8f9f7 132 .mtb : /* MTB buffer address as defined by the hardware */
<> 144:ef7eb2e8f9f7 133 {
<> 144:ef7eb2e8f9f7 134 . = ALIGN(8);
<> 144:ef7eb2e8f9f7 135 _mtb_start = .;
<> 144:ef7eb2e8f9f7 136 KEEP(*(.mtb_buf)) /* need to KEEP Micro Trace Buffer as not referenced by application */
<> 144:ef7eb2e8f9f7 137 . = ALIGN(8);
<> 144:ef7eb2e8f9f7 138 _mtb_end = .;
<> 144:ef7eb2e8f9f7 139 } > m_data
<> 144:ef7eb2e8f9f7 140
<> 144:ef7eb2e8f9f7 141 /* Initialized data sections goes into RAM, load LMA copy after code */
<> 144:ef7eb2e8f9f7 142 .data : AT(___ROM_AT)
<> 144:ef7eb2e8f9f7 143 {
<> 144:ef7eb2e8f9f7 144 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 145 __sinit__ = .;
<> 144:ef7eb2e8f9f7 146 _sdata = .; /* create a global symbol at data start */
<> 144:ef7eb2e8f9f7 147 *(.data) /* .data sections */
<> 144:ef7eb2e8f9f7 148 *(.data*) /* .data* sections */
<> 144:ef7eb2e8f9f7 149
<> 144:ef7eb2e8f9f7 150 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 151 _edata = .; /* define a global symbol at data end */
<> 144:ef7eb2e8f9f7 152 } > m_data
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 ___data_size = _edata - _sdata;
<> 144:ef7eb2e8f9f7 155
<> 144:ef7eb2e8f9f7 156 /* Uninitialized data section */
<> 144:ef7eb2e8f9f7 157 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 158 .bss :
<> 144:ef7eb2e8f9f7 159 {
<> 144:ef7eb2e8f9f7 160 /* This is used by the startup in order to initialize the .bss section */
<> 144:ef7eb2e8f9f7 161 __START_BSS = .;
<> 144:ef7eb2e8f9f7 162 PROVIDE ( __bss_start__ = __START_BSS );
<> 144:ef7eb2e8f9f7 163 *(.bss)
<> 144:ef7eb2e8f9f7 164 *(.bss*)
<> 144:ef7eb2e8f9f7 165 *(COMMON)
<> 144:ef7eb2e8f9f7 166
<> 144:ef7eb2e8f9f7 167 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 168 __END_BSS = .;
<> 144:ef7eb2e8f9f7 169 PROVIDE ( __bss_end__ = __END_BSS );
<> 144:ef7eb2e8f9f7 170 } > m_data
<> 144:ef7eb2e8f9f7 171
<> 144:ef7eb2e8f9f7 172 _romp_at = ___ROM_AT + SIZEOF(.data);
<> 144:ef7eb2e8f9f7 173 .romp : AT(_romp_at)
<> 144:ef7eb2e8f9f7 174 {
<> 144:ef7eb2e8f9f7 175 __S_romp = _romp_at;
<> 144:ef7eb2e8f9f7 176 LONG(___ROM_AT);
<> 144:ef7eb2e8f9f7 177 LONG(_sdata);
<> 144:ef7eb2e8f9f7 178 LONG(___data_size);
<> 144:ef7eb2e8f9f7 179 LONG(0);
<> 144:ef7eb2e8f9f7 180 LONG(0);
<> 144:ef7eb2e8f9f7 181 LONG(0);
<> 144:ef7eb2e8f9f7 182 } > m_data
<> 144:ef7eb2e8f9f7 183
<> 144:ef7eb2e8f9f7 184 /* User_heap_stack section, used to check that there is enough RAM left */
<> 144:ef7eb2e8f9f7 185 ._user_heap_stack :
<> 144:ef7eb2e8f9f7 186 {
<> 144:ef7eb2e8f9f7 187 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 188 PROVIDE ( end = . );
<> 144:ef7eb2e8f9f7 189 PROVIDE ( _end = . );
<> 144:ef7eb2e8f9f7 190 __heap_addr = .;
<> 144:ef7eb2e8f9f7 191 . = . + __heap_size;
<> 144:ef7eb2e8f9f7 192 . = . + __stack_size;
<> 144:ef7eb2e8f9f7 193 . = ALIGN(4);
<> 144:ef7eb2e8f9f7 194 } > m_data
<> 144:ef7eb2e8f9f7 195
<> 144:ef7eb2e8f9f7 196 .ARM.attributes 0 : { *(.ARM.attributes) }
<> 144:ef7eb2e8f9f7 197 }