11/*
2- *****************************************************************************
2+ ******************************************************************************
33**
4-
54** File : LinkerScript.ld
65**
7- ** Abstract : Linker script for STM32H743ZI Device with
8- ** 2048KByte FLASH, 1056KByte RAM
6+ ** Author : Auto-generated by STM32CubeIDE
7+ **
8+ ** Abstract : Linker script for NUCLEO-H743ZI(2) Board embedding STM32H743ZITx Device from STM32H7 series
9+ ** 2048Kbytes FLASH
10+ ** 128Kbytes DTCMRAM
11+ ** 64Kbytes ITCMRAM
12+ ** 512Kbytes RAM_D1
13+ ** 288Kbytes RAM_D2
14+ ** 64Kbytes RAM_D3
915**
1016** Set heap size, stack size and stack location according
1117** to application requirements.
1420**
1521** Target : STMicroelectronics STM32
1622**
17- **
18- ** Distribution: The file is distributed as is, without any warranty
23+ ** Distribution: The file is distributed as is without any warranty
1924** of any kind.
2025**
2126*****************************************************************************
2227** @attention
2328**
24- ** <h2><center>© COPYRIGHT(c) 2014 Ac6 </center></h2>
29+ ** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics </center></h2>
2530**
2631** Redistribution and use in source and binary forms, with or without modification,
2732** are permitted provided that the following conditions are met:
3035** 2. Redistributions in binary form must reproduce the above copyright notice,
3136** this list of conditions and the following disclaimer in the documentation
3237** and/or other materials provided with the distribution.
33- ** 3. Neither the name of Ac6 nor the names of its contributors
38+ ** 3. Neither the name of STMicroelectronics nor the names of its contributors
3439** may be used to endorse or promote products derived from this software
3540** without specific prior written permission.
3641**
5257ENTRY (Reset_Handler)
5358
5459/* 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 */
60+ _estack = 0x24080000; /* end of "RAM_D1" Ram type memory */
61+
62+ _Min_Heap_Size = 0x200 ; /* required amount of heap */
63+ _Min_Stack_Size = 0x400 ; /* required amount of stack */
5964
60- /* Specify the memory areas */
65+ /* Memories definition */
6166MEMORY
6267{
63- DTCMRAM ( xrw) : ORIGIN = 0x20000000 , LENGTH = 128K
64- RAM_D1 ( xrw) : ORIGIN = 0x24000000 , LENGTH = 512K
65- RAM_D2 ( xrw) : ORIGIN = 0x30000000 , LENGTH = 288K
66- RAM_D3 ( xrw) : ORIGIN = 0x38000000 , LENGTH = 64K
67- ITCMRAM ( xrw) : ORIGIN = 0x00000000 , LENGTH = 64K
68- FLASH ( rx) : ORIGIN = 0x8000000 , LENGTH = 2048K
68+ DTCMRAM ( xrw) : ORIGIN = 0x20000000 , LENGTH = 128K
69+ ITCMRAM ( xrw) : ORIGIN = 0x00000000 , LENGTH = 64K
70+ RAM_D1 ( xrw) : ORIGIN = 0x24000000 , LENGTH = 512K
71+ RAM_D2 ( xrw) : ORIGIN = 0x30000000 , LENGTH = 288K
72+ RAM_D3 ( xrw) : ORIGIN = 0x38000000 , LENGTH = 64K
73+ FLASH ( rx) : ORIGIN = 0x8000000 , LENGTH = 2048K
6974}
7075
71- /* Define output sections */
76+ /* Sections */
7277SECTIONS
7378{
74- /* The startup code goes first into FLASH */
79+ /* The startup code into " FLASH" Rom type memory */
7580 .isr_vector :
7681 {
7782 . = ALIGN (4 );
7883 KEEP (*(.isr_vector )) /* Startup code */
7984 . = ALIGN (4 );
8085 } >FLASH
8186
82- /* The program code and other data goes into FLASH */
83- .text ALIGN ( 4 ) :
87+ /* The program code and other data into " FLASH" Rom type memory */
88+ .text :
8489 {
8590 . = ALIGN (4 );
8691 *(.text ) /* .text sections (code) */
@@ -96,7 +101,7 @@ SECTIONS
96101 _etext = .; /* define a global symbols at end of code */
97102 } >FLASH
98103
99- /* Constant data goes into FLASH */
104+ /* Constant data into " FLASH" Rom type memory */
100105 .rodata :
101106 {
102107 . = ALIGN (4 );
@@ -105,39 +110,54 @@ SECTIONS
105110 . = ALIGN (4 );
106111 } >FLASH
107112
108- .ARM.extab : { *(.ARM .extab * .gnu .linkonce .armextab .*) } >FLASH
113+ .ARM.extab : {
114+ . = ALIGN (4 );
115+ *(.ARM .extab * .gnu .linkonce .armextab .*)
116+ . = ALIGN (4 );
117+ } >FLASH
118+
109119 .ARM : {
120+ . = ALIGN (4 );
110121 __exidx_start = .;
111122 *(.ARM .exidx *)
112123 __exidx_end = .;
124+ . = ALIGN (4 );
113125 } >FLASH
114126
115127 .preinit_array :
116128 {
129+ . = ALIGN (4 );
117130 PROVIDE_HIDDEN (__preinit_array_start = .);
118131 KEEP (*(.preinit_array *))
119132 PROVIDE_HIDDEN (__preinit_array_end = .);
133+ . = ALIGN (4 );
120134 } >FLASH
135+
121136 .init_array :
122137 {
138+ . = ALIGN (4 );
123139 PROVIDE_HIDDEN (__init_array_start = .);
124140 KEEP (*(SORT (.init_array .*)))
125141 KEEP (*(.init_array *))
126142 PROVIDE_HIDDEN (__init_array_end = .);
143+ . = ALIGN (4 );
127144 } >FLASH
145+
128146 .fini_array :
129147 {
148+ . = ALIGN (4 );
130149 PROVIDE_HIDDEN (__fini_array_start = .);
131150 KEEP (*(SORT (.fini_array .*)))
132151 KEEP (*(.fini_array *))
133152 PROVIDE_HIDDEN (__fini_array_end = .);
153+ . = ALIGN (4 );
134154 } >FLASH
135155
136- /* used by the startup to initialize data */
156+ /* Used by the startup to initialize data */
137157 _sidata = LOADADDR (.data );
138158
139- /* Initialized data sections goes into RAM, load LMA copy after code */
140- .data :
159+ /* Initialized data sections into "RAM_D1" Ram type memory */
160+ .data :
141161 {
142162 . = ALIGN (4 );
143163 _sdata = .; /* create a global symbol at data start */
@@ -146,10 +166,10 @@ SECTIONS
146166
147167 . = ALIGN (4 );
148168 _edata = .; /* define a global symbol at data end */
149- } >DTCMRAM AT> FLASH
150-
151-
152- /* Uninitialized data section */
169+
170+ } >RAM_D1 AT> FLASH
171+
172+ /* Uninitialized data section into "RAM_D1" Ram type memory */
153173 . = ALIGN (4 );
154174 .bss :
155175 {
@@ -163,9 +183,9 @@ SECTIONS
163183 . = ALIGN (4 );
164184 _ebss = .; /* define a global symbol at bss end */
165185 __bss_end__ = _ebss;
166- } >DTCMRAM
186+ } >RAM_D1
167187
168- /* User_heap_stack section, used to check that there is enough RAM left */
188+ /* User_heap_stack section, used to check that there is enough "RAM_D1" Ram type memory left */
169189 ._user_heap_stack :
170190 {
171191 . = ALIGN (8 );
@@ -174,11 +194,9 @@ SECTIONS
174194 . = . + _Min_Heap_Size;
175195 . = . + _Min_Stack_Size;
176196 . = ALIGN (8 );
177- } >DTCMRAM
178-
179-
197+ } >RAM_D1
180198
181- /* Remove information from the standard libraries */
199+ /* Remove information from the compiler libraries */
182200 /DISCARD/ :
183201 {
184202 libc.a ( * )
@@ -188,5 +206,3 @@ SECTIONS
188206
189207 .ARM .attributes 0 : { *(.ARM .attributes ) }
190208}
191-
192-
0 commit comments