Mbed for VNG board

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Wed Nov 19 08:45:06 2014 +0000
Revision:
408:4dd1c1251ba6
Synchronized with git revision 81f72e6a68303e10c44c14596a953c68dc60a8e4

Full URL: https://github.com/mbedmicro/mbed/commit/81f72e6a68303e10c44c14596a953c68dc60a8e4/

Who changed what in which revision?

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