meh

Fork of mbed by mbed official

Committer:
ricardobtez
Date:
Tue Apr 05 23:51:21 2016 +0000
Revision:
118:16969dd821af
Parent:
92:4fc01daae5a5
dgdgr

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 92:4fc01daae5a5 1 /*
bogdanm 92:4fc01daae5a5 2 *****************************************************************************
bogdanm 92:4fc01daae5a5 3 **
bogdanm 92:4fc01daae5a5 4 ** File : STM32L152XE_FLASH.ld
bogdanm 92:4fc01daae5a5 5 **
bogdanm 92:4fc01daae5a5 6 ** Abstract : Linker script for STM32L152XE Device with
bogdanm 92:4fc01daae5a5 7 ** 512KByte FLASH, 80KByte RAM
bogdanm 92:4fc01daae5a5 8 **
bogdanm 92:4fc01daae5a5 9 ** Set heap size, stack size and stack location according
bogdanm 92:4fc01daae5a5 10 ** to application requirements.
bogdanm 92:4fc01daae5a5 11 **
bogdanm 92:4fc01daae5a5 12 ** Set memory bank area and size if external memory is used.
bogdanm 92:4fc01daae5a5 13 **
bogdanm 92:4fc01daae5a5 14 ** Target : STMicroelectronics STM32
bogdanm 92:4fc01daae5a5 15 **
bogdanm 92:4fc01daae5a5 16 ** Environment : Atollic TrueSTUDIO(R)
bogdanm 92:4fc01daae5a5 17 **
bogdanm 92:4fc01daae5a5 18 ** Distribution: The file is distributed “as is,” without any warranty
bogdanm 92:4fc01daae5a5 19 ** of any kind.
bogdanm 92:4fc01daae5a5 20 **
bogdanm 92:4fc01daae5a5 21 ** (c)Copyright Atollic AB.
bogdanm 92:4fc01daae5a5 22 ** You may use this file as-is or modify it according to the needs of your
bogdanm 92:4fc01daae5a5 23 ** project. This file may only be built (assembled or compiled and linked)
bogdanm 92:4fc01daae5a5 24 ** using the Atollic TrueSTUDIO(R) product. The use of this file together
bogdanm 92:4fc01daae5a5 25 ** with other tools than Atollic TrueSTUDIO(R) is not permitted.
bogdanm 92:4fc01daae5a5 26 **
bogdanm 92:4fc01daae5a5 27 *****************************************************************************
bogdanm 92:4fc01daae5a5 28 */
bogdanm 92:4fc01daae5a5 29
bogdanm 92:4fc01daae5a5 30 /* Entry Point */
bogdanm 92:4fc01daae5a5 31 ENTRY(Reset_Handler)
bogdanm 92:4fc01daae5a5 32
bogdanm 92:4fc01daae5a5 33 /* Highest address of the user mode stack */
bogdanm 92:4fc01daae5a5 34 _estack = 0x20013FFF; /* end of RAM */
bogdanm 92:4fc01daae5a5 35
bogdanm 92:4fc01daae5a5 36 /* Generate a link error if heap and stack don't fit into RAM */
bogdanm 92:4fc01daae5a5 37 _Min_Heap_Size = 0x200; /* required amount of heap */
bogdanm 92:4fc01daae5a5 38 _Min_Stack_Size = 0x400; /* required amount of stack */
bogdanm 92:4fc01daae5a5 39
bogdanm 92:4fc01daae5a5 40 /* Specify the memory areas */
bogdanm 92:4fc01daae5a5 41 MEMORY
bogdanm 92:4fc01daae5a5 42 {
bogdanm 92:4fc01daae5a5 43 FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
bogdanm 92:4fc01daae5a5 44 RAM (xrw) : ORIGIN = 0x2000013C, LENGTH = 80K - 0x13C
bogdanm 92:4fc01daae5a5 45 }
bogdanm 92:4fc01daae5a5 46
bogdanm 92:4fc01daae5a5 47 /* Define output sections */
bogdanm 92:4fc01daae5a5 48 SECTIONS
bogdanm 92:4fc01daae5a5 49 {
bogdanm 92:4fc01daae5a5 50 /* The startup code goes first into FLASH */
bogdanm 92:4fc01daae5a5 51 .isr_vector :
bogdanm 92:4fc01daae5a5 52 {
bogdanm 92:4fc01daae5a5 53 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 54 KEEP(*(.isr_vector)) /* Startup code */
bogdanm 92:4fc01daae5a5 55 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 56 } >FLASH
bogdanm 92:4fc01daae5a5 57
bogdanm 92:4fc01daae5a5 58 /* The program code and other data goes into FLASH */
bogdanm 92:4fc01daae5a5 59 .text :
bogdanm 92:4fc01daae5a5 60 {
bogdanm 92:4fc01daae5a5 61 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 62 *(.text) /* .text sections (code) */
bogdanm 92:4fc01daae5a5 63 *(.text*) /* .text* sections (code) */
bogdanm 92:4fc01daae5a5 64 *(.glue_7) /* glue arm to thumb code */
bogdanm 92:4fc01daae5a5 65 *(.glue_7t) /* glue thumb to arm code */
bogdanm 92:4fc01daae5a5 66 *(.eh_frame)
bogdanm 92:4fc01daae5a5 67
bogdanm 92:4fc01daae5a5 68 KEEP (*(.init))
bogdanm 92:4fc01daae5a5 69 KEEP (*(.fini))
bogdanm 92:4fc01daae5a5 70
bogdanm 92:4fc01daae5a5 71 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 72 _etext = .; /* define a global symbols at end of code */
bogdanm 92:4fc01daae5a5 73 } >FLASH
bogdanm 92:4fc01daae5a5 74
bogdanm 92:4fc01daae5a5 75 /* Constant data goes into FLASH */
bogdanm 92:4fc01daae5a5 76 .rodata :
bogdanm 92:4fc01daae5a5 77 {
bogdanm 92:4fc01daae5a5 78 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 79 *(.rodata) /* .rodata sections (constants, strings, etc.) */
bogdanm 92:4fc01daae5a5 80 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
bogdanm 92:4fc01daae5a5 81 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 82 } >FLASH
bogdanm 92:4fc01daae5a5 83
bogdanm 92:4fc01daae5a5 84 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
bogdanm 92:4fc01daae5a5 85 .ARM : {
bogdanm 92:4fc01daae5a5 86 __exidx_start = .;
bogdanm 92:4fc01daae5a5 87 *(.ARM.exidx*)
bogdanm 92:4fc01daae5a5 88 __exidx_end = .;
bogdanm 92:4fc01daae5a5 89 } >FLASH
bogdanm 92:4fc01daae5a5 90
bogdanm 92:4fc01daae5a5 91 .preinit_array :
bogdanm 92:4fc01daae5a5 92 {
bogdanm 92:4fc01daae5a5 93 PROVIDE_HIDDEN (__preinit_array_start = .);
bogdanm 92:4fc01daae5a5 94 KEEP (*(.preinit_array*))
bogdanm 92:4fc01daae5a5 95 PROVIDE_HIDDEN (__preinit_array_end = .);
bogdanm 92:4fc01daae5a5 96 } >FLASH
bogdanm 92:4fc01daae5a5 97 .init_array :
bogdanm 92:4fc01daae5a5 98 {
bogdanm 92:4fc01daae5a5 99 PROVIDE_HIDDEN (__init_array_start = .);
bogdanm 92:4fc01daae5a5 100 KEEP (*(SORT(.init_array.*)))
bogdanm 92:4fc01daae5a5 101 KEEP (*(.init_array*))
bogdanm 92:4fc01daae5a5 102 PROVIDE_HIDDEN (__init_array_end = .);
bogdanm 92:4fc01daae5a5 103 } >FLASH
bogdanm 92:4fc01daae5a5 104 .fini_array :
bogdanm 92:4fc01daae5a5 105 {
bogdanm 92:4fc01daae5a5 106 PROVIDE_HIDDEN (__fini_array_start = .);
bogdanm 92:4fc01daae5a5 107 KEEP (*(SORT(.fini_array.*)))
bogdanm 92:4fc01daae5a5 108 KEEP (*(.fini_array*))
bogdanm 92:4fc01daae5a5 109 PROVIDE_HIDDEN (__fini_array_end = .);
bogdanm 92:4fc01daae5a5 110 } >FLASH
bogdanm 92:4fc01daae5a5 111
bogdanm 92:4fc01daae5a5 112 /* used by the startup to initialize data */
bogdanm 92:4fc01daae5a5 113 _sidata = LOADADDR(.data);
bogdanm 92:4fc01daae5a5 114
bogdanm 92:4fc01daae5a5 115 /* Initialized data sections goes into RAM, load LMA copy after code */
bogdanm 92:4fc01daae5a5 116 .data :
bogdanm 92:4fc01daae5a5 117 {
bogdanm 92:4fc01daae5a5 118 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 119 _sdata = .; /* create a global symbol at data start */
bogdanm 92:4fc01daae5a5 120 *(.data) /* .data sections */
bogdanm 92:4fc01daae5a5 121 *(.data*) /* .data* sections */
bogdanm 92:4fc01daae5a5 122
bogdanm 92:4fc01daae5a5 123 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 124 _edata = .; /* define a global symbol at data end */
bogdanm 92:4fc01daae5a5 125 } >RAM AT> FLASH
bogdanm 92:4fc01daae5a5 126
bogdanm 92:4fc01daae5a5 127
bogdanm 92:4fc01daae5a5 128 /* Uninitialized data section */
bogdanm 92:4fc01daae5a5 129 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 130 .bss :
bogdanm 92:4fc01daae5a5 131 {
bogdanm 92:4fc01daae5a5 132 /* This is used by the startup in order to initialize the .bss secion */
bogdanm 92:4fc01daae5a5 133 _sbss = .; /* define a global symbol at bss start */
bogdanm 92:4fc01daae5a5 134 __bss_start__ = _sbss;
bogdanm 92:4fc01daae5a5 135 *(.bss)
bogdanm 92:4fc01daae5a5 136 *(.bss*)
bogdanm 92:4fc01daae5a5 137 *(COMMON)
bogdanm 92:4fc01daae5a5 138
bogdanm 92:4fc01daae5a5 139 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 140 _ebss = .; /* define a global symbol at bss end */
bogdanm 92:4fc01daae5a5 141 __bss_end__ = _ebss;
bogdanm 92:4fc01daae5a5 142 } >RAM
bogdanm 92:4fc01daae5a5 143
bogdanm 92:4fc01daae5a5 144 /* User_heap_stack section, used to check that there is enough RAM left */
bogdanm 92:4fc01daae5a5 145 ._user_heap_stack :
bogdanm 92:4fc01daae5a5 146 {
bogdanm 92:4fc01daae5a5 147 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 148 PROVIDE ( end = . );
bogdanm 92:4fc01daae5a5 149 PROVIDE ( _end = . );
bogdanm 92:4fc01daae5a5 150 PROVIDE ( __end__ = .);
bogdanm 92:4fc01daae5a5 151 . = . + _Min_Heap_Size;
bogdanm 92:4fc01daae5a5 152 . = . + _Min_Stack_Size;
bogdanm 92:4fc01daae5a5 153 . = ALIGN(4);
bogdanm 92:4fc01daae5a5 154 } >RAM
bogdanm 92:4fc01daae5a5 155
bogdanm 92:4fc01daae5a5 156
bogdanm 92:4fc01daae5a5 157
bogdanm 92:4fc01daae5a5 158 /* Remove information from the standard libraries */
bogdanm 92:4fc01daae5a5 159 /DISCARD/ :
bogdanm 92:4fc01daae5a5 160 {
bogdanm 92:4fc01daae5a5 161 libc.a ( * )
bogdanm 92:4fc01daae5a5 162 libm.a ( * )
bogdanm 92:4fc01daae5a5 163 libgcc.a ( * )
bogdanm 92:4fc01daae5a5 164 }
bogdanm 92:4fc01daae5a5 165
bogdanm 92:4fc01daae5a5 166 .ARM.attributes 0 : { *(.ARM.attributes) }
bogdanm 92:4fc01daae5a5 167 }