Subversion Repositories EngineBay2

Rev

Details | Last modification | View Log | RSS feed

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