11/*
22*****************************************************************************
33**
4- ** File : ldscript.ld
4+
5+ ** File : LinkerScript.ld
56**
6- ** Abstract : Linker script for STM32 Device
7+ ** Abstract : Linker script for STM32F207ZGTx Device with
8+ ** 1024KByte FLASH, 128KByte RAM
79**
810** Set heap size, stack size and stack location according
911** to application requirements.
1315** Target : STMicroelectronics STM32
1416**
1517**
18+ ** Distribution: The file is distributed as is, without any warranty
19+ ** of any kind.
20+ **
21+ *****************************************************************************
22+ ** @attention
23+ **
24+ ** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
25+ **
26+ ** Redistribution and use in source and binary forms, with or without modification,
27+ ** are permitted provided that the following conditions are met:
28+ ** 1. Redistributions of source code must retain the above copyright notice,
29+ ** this list of conditions and the following disclaimer.
30+ ** 2. Redistributions in binary form must reproduce the above copyright notice,
31+ ** this list of conditions and the following disclaimer in the documentation
32+ ** and/or other materials provided with the distribution.
33+ ** 3. Neither the name of Ac6 nor the names of its contributors
34+ ** may be used to endorse or promote products derived from this software
35+ ** without specific prior written permission.
36+ **
37+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
38+ ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39+ ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40+ ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
41+ ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
42+ ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43+ ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
44+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45+ ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
46+ ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47+ **
1648*****************************************************************************
1749*/
18- /* Copy here linker script for the new STM32 Device
19- * or
20- * replace this file by the new one with the same file name
21- * It could be get thanks STM32CubeMX after code generation for Toolchain/IDE: 'SW4STM32',
22- * ldscript will be availabe is the source folder
23- * or
24- * copied from a STM32CubeYY project examples
25- * where 'YY' could be F0, F1, F2, F3, F4, F7, L0, L1, L4)
26- */
50+
51+ /* Entry Point */
52+ ENTRY (Reset_Handler)
53+
54+ /* Highest address of the user mode stack */
55+ _estack = 0x20020000; /* end of RAM */
56+ /* Generate a link error if heap and stack don't fit into RAM */
57+ _Min_Heap_Size = 0x200 ; /* required amount of heap */
58+ _Min_Stack_Size = 0x400 ; /* required amount of stack */
59+
60+ /* Specify the memory areas */
61+ MEMORY
62+ {
63+ RAM (xrw) : ORIGIN = 0x20000000 , LENGTH = 128K
64+ FLASH (rx) : ORIGIN = 0x8000000 , LENGTH = 1024K
65+ }
66+
67+ /* Define output sections */
68+ SECTIONS
69+ {
70+ /* The startup code goes first into FLASH */
71+ .isr_vector :
72+ {
73+ . = ALIGN (4 );
74+ KEEP (*(.isr_vector )) /* Startup code */
75+ . = ALIGN (4 );
76+ } >FLASH
77+
78+ /* The program code and other data goes into FLASH */
79+ .text :
80+ {
81+ . = ALIGN (4 );
82+ *(.text ) /* .text sections (code) */
83+ *(.text *) /* .text* sections (code) */
84+ *(.glue_7 ) /* glue arm to thumb code */
85+ *(.glue_7t ) /* glue thumb to arm code */
86+ *(.eh_frame )
87+
88+ KEEP (*(.init ))
89+ KEEP (*(.fini ))
90+
91+ . = ALIGN (4 );
92+ _etext = .; /* define a global symbols at end of code */
93+ } >FLASH
94+
95+ /* Constant data goes into FLASH */
96+ .rodata :
97+ {
98+ . = ALIGN (4 );
99+ *(.rodata ) /* .rodata sections (constants, strings, etc.) */
100+ *(.rodata *) /* .rodata* sections (constants, strings, etc.) */
101+ . = ALIGN (4 );
102+ } >FLASH
103+
104+ .ARM.extab : { *(.ARM .extab * .gnu .linkonce .armextab .*) } >FLASH
105+ .ARM : {
106+ __exidx_start = .;
107+ *(.ARM .exidx *)
108+ __exidx_end = .;
109+ } >FLASH
110+
111+ .preinit_array :
112+ {
113+ PROVIDE_HIDDEN (__preinit_array_start = .);
114+ KEEP (*(.preinit_array *))
115+ PROVIDE_HIDDEN (__preinit_array_end = .);
116+ } >FLASH
117+ .init_array :
118+ {
119+ PROVIDE_HIDDEN (__init_array_start = .);
120+ KEEP (*(SORT (.init_array .*)))
121+ KEEP (*(.init_array *))
122+ PROVIDE_HIDDEN (__init_array_end = .);
123+ } >FLASH
124+ .fini_array :
125+ {
126+ PROVIDE_HIDDEN (__fini_array_start = .);
127+ KEEP (*(SORT (.fini_array .*)))
128+ KEEP (*(.fini_array *))
129+ PROVIDE_HIDDEN (__fini_array_end = .);
130+ } >FLASH
131+
132+ /* used by the startup to initialize data */
133+ _sidata = LOADADDR (.data );
134+
135+ /* Initialized data sections goes into RAM, load LMA copy after code */
136+ .data :
137+ {
138+ . = ALIGN (4 );
139+ _sdata = .; /* create a global symbol at data start */
140+ *(.data ) /* .data sections */
141+ *(.data *) /* .data* sections */
142+
143+ . = ALIGN (4 );
144+ _edata = .; /* define a global symbol at data end */
145+ } >RAM AT> FLASH
146+
147+
148+ /* Uninitialized data section */
149+ . = ALIGN (4 );
150+ .bss :
151+ {
152+ /* This is used by the startup in order to initialize the .bss secion */
153+ _sbss = .; /* define a global symbol at bss start */
154+ __bss_start__ = _sbss;
155+ *(.bss )
156+ *(.bss *)
157+ *(COMMON)
158+
159+ . = ALIGN (4 );
160+ _ebss = .; /* define a global symbol at bss end */
161+ __bss_end__ = _ebss;
162+ } >RAM
163+
164+ /* User_heap_stack section, used to check that there is enough RAM left */
165+ ._user_heap_stack :
166+ {
167+ . = ALIGN (8 );
168+ PROVIDE ( end = . );
169+ PROVIDE ( _end = . );
170+ . = . + _Min_Heap_Size;
171+ . = . + _Min_Stack_Size;
172+ . = ALIGN (8 );
173+ } >RAM
174+
175+
176+
177+ /* Remove information from the standard libraries */
178+ /DISCARD/ :
179+ {
180+ libc.a ( * )
181+ libm.a ( * )
182+ libgcc.a ( * )
183+ }
184+
185+ .ARM .attributes 0 : { *(.ARM .attributes ) }
186+ }
187+
188+
0 commit comments