source: EcnlProtoTool/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/TARGET_RZ_A1H/device/TOOLCHAIN_GCC_ARM/RZA1H.ld@ 429

Last change on this file since 429 was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

File size: 6.4 KB
Line 
1/* Linker script for mbed RZ_A1H */
2PROVIDE(hardware_init_hook = 0);
3PROVIDE(software_init_hook = 0);
4PROVIDE(software_term_hook = 0);
5PROVIDE(IRQTable = _kernel_inh_table);
6PROVIDE(IRQ_NestLevel = _kernel_excpt_nest_count);
7
8/* Linker script to configure memory regions. */
9MEMORY
10{
11 ROM (rx) : ORIGIN = 0x00000000, LENGTH = 0x02000000
12 BOOT_LOADER (rx) : ORIGIN = 0x18000000, LENGTH = 0x00004000
13 SFLASH (rx) : ORIGIN = 0x18004000, LENGTH = 0x07FFC000
14 L_TTB (rw) : ORIGIN = 0x20000000, LENGTH = 0x00004000
15 RAM (rw) : ORIGIN = 0x20004000, LENGTH = 0x000FC000
16 RAM_CMD (rwx) : ORIGIN = 0x20100000, LENGTH = 0x00800000
17 RAM_NC (rw) : ORIGIN = 0x20900000, LENGTH = 0x00100000
18}
19
20/* Linker script to place sections and symbol values. Should be used together
21 * with other linker script that defines memory regions FLASH and RAM.
22 * It references following symbols, which must be defined in code:
23 * Reset_Handler : Entry of reset handler
24 *
25 * It defines following symbols, which code can use without definition:
26 * __exidx_start
27 * __exidx_end
28 * __etext
29 * __data_start__
30 * __preinit_array_start
31 * __preinit_array_end
32 * __init_array_start
33 * __init_array_end
34 * __fini_array_start
35 * __fini_array_end
36 * __data_end__
37 * __bss_start__
38 * __bss_end__
39 * __end__
40 * end
41 * __HeapLimit
42 * __StackLimit
43 * __StackTop
44 * __stack
45 */
46ENTRY(Reset_Handler)
47
48SECTIONS
49{
50 .boot :
51 {
52 KEEP(*(.boot_loader))
53 } > BOOT_LOADER
54
55 .text :
56 {
57
58 Image$$VECTORS$$Base = .;
59 * (RESET)
60
61 KEEP(*(.isr_vector))
62 *(SVC_TABLE)
63 *(.text*)
64
65 KEEP(*(.init))
66 KEEP(*(.fini))
67
68 /* .ctors */
69 *crtbegin.o(.ctors)
70 *crtbegin?.o(.ctors)
71 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
72 *(SORT(.ctors.*))
73 *(.ctors)
74
75 /* .dtors */
76 *crtbegin.o(.dtors)
77 *crtbegin?.o(.dtors)
78 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
79 *(SORT(.dtors.*))
80 *(.dtors)
81 Image$$VECTORS$$Limit = .;
82
83 Image$$RO_DATA$$Base = .;
84 *(.rodata*)
85 Image$$RO_DATA$$Limit = .;
86
87 KEEP(*(.eh_frame*))
88 } > SFLASH
89
90 .ARM.extab :
91 {
92 *(.ARM.extab* .gnu.linkonce.armextab.*)
93 } > SFLASH
94
95 __exidx_start = .;
96 .ARM.exidx :
97 {
98 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
99 } > SFLASH
100 __exidx_end = .;
101
102
103 .copy.table :
104 {
105 . = ALIGN(4);
106 __copy_table_start__ = .;
107 LONG (__etext)
108 LONG (__data_start__)
109 LONG (__data_end__ - __data_start__)
110 LONG (__etext2)
111 LONG (__nc_data_start)
112 LONG (__nc_data_end - __nc_data_start)
113 LONG (LOADADDR(.ram_code))
114 LONG (ADDR(.ram_code))
115 LONG (SIZEOF(.ram_code))
116 __copy_table_end__ = .;
117 } > SFLASH
118
119 .zero.table :
120 {
121 . = ALIGN(4);
122 __zero_table_start__ = .;
123 LONG (__bss_start__)
124 LONG (__bss_end__ - __bss_start__)
125 LONG (__nc_bss_start)
126 LONG (__nc_bss_end - __nc_bss_start)
127 __zero_table_end__ = .;
128 } > SFLASH
129
130 .ram_code : ALIGN( 0x4 ) {
131 __ram_code_load = .;
132 __ram_code_start = LOADADDR(.ram_code) + ( __ram_code_load - ADDR(.ram_code) );
133
134 *(RAM_CODE)
135
136 *(RAM_CONST)
137
138 . = ALIGN( 0x4 );
139 __ram_code_end = LOADADDR(.ram_code) + ( . - ADDR(.ram_code) );
140 } > RAM AT > SFLASH
141
142 Load$$SEC_RAM_CODE$$Base = LOADADDR(.ram_code);
143 Image$$SEC_RAM_CODE$$Base = ADDR(.ram_code);
144 Load$$SEC_RAM_CODE$$Length = SIZEOF(.ram_code);
145
146 .ttb :
147 {
148 Image$$TTB$$ZI$$Base = .;
149 . += 0x00004000;
150 Image$$TTB$$ZI$$Limit = .;
151 } > L_TTB
152
153 __etext = Load$$SEC_RAM_CODE$$Base + SIZEOF(.ram_code);
154
155 .data : AT (__etext)
156 {
157 Image$$RW_DATA$$Base = .;
158 __data_start__ = .;
159 *(vtable)
160 *(.data*)
161 Image$$RW_DATA$$Limit = .;
162
163 . = ALIGN(4);
164 /* preinit data */
165 PROVIDE (__preinit_array_start = .);
166 KEEP(*(.preinit_array))
167 PROVIDE (__preinit_array_end = .);
168
169 . = ALIGN(4);
170 /* init data */
171 PROVIDE (__init_array_start = .);
172 KEEP(*(SORT(.init_array.*)))
173 KEEP(*(.init_array))
174 PROVIDE (__init_array_end = .);
175
176 . = ALIGN(4);
177 /* finit data */
178 PROVIDE (__fini_array_start = .);
179 KEEP(*(SORT(.fini_array.*)))
180 KEEP(*(.fini_array))
181 PROVIDE (__fini_array_end = .);
182
183 . = ALIGN(4);
184 /* All data end */
185 __data_end__ = .;
186
187 } > RAM
188
189 .bss ALIGN(0x10):
190 {
191 Image$$RW_IRAM1$$Base = .;
192 __bss_start__ = .;
193 *(.bss*)
194 *(COMMON)
195 __bss_end__ = .;
196 Image$$RW_IRAM1$$Limit = .;
197 } > RAM
198
199 /* .stack_dummy section doesn't contains any symbols. It is only
200 * used for linker to calculate size of stack sections, and assign
201 * values to stack symbols later */
202 .stack_dummy (COPY):
203 {
204 *(.stack*)
205 } > RAM
206
207 .heap :
208 {
209 __end__ = .;
210 end = __end__;
211 *(.heap*)
212 __HeapLimit = .;
213 } > RAM
214
215 .cmd_area :
216 {
217 __CmdBase = .;
218 Image$$CMD_AREA$$Base = .;
219 . = . + LENGTH(RAM_CMD);
220 __CmdLimit = .;
221 Image$$CMD_AREA$$Limit = .;
222 } > RAM_CMD
223
224 __etext2 = __etext + SIZEOF(.data);
225 .nc_data : AT (__etext2)
226 {
227 Image$$RW_DATA_NC$$Base = .;
228 __nc_data_start = .;
229 *(NC_DATA)
230
231 . = ALIGN(4);
232 __nc_data_end = .;
233 Image$$RW_DATA_NC$$Limit = .;
234 } > RAM_NC
235
236 .nc_bss (NOLOAD) :
237 {
238 Image$$ZI_DATA_NC$$Base = .;
239 __nc_bss_start = .;
240 *(NC_BSS)
241
242 . = ALIGN(4);
243 __nc_bss_end = .;
244 Image$$ZI_DATA_NC$$Limit = .;
245 } > RAM_NC
246
247 /* Set stack top to end of RAM, and stack limit move down by
248 * size of stack_dummy section */
249 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
250 _estack = __StackTop;
251 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
252 __HeapLimit = __StackLimit;
253 PROVIDE(__stack = __StackTop);
254
255 /* Check if data + heap + stack exceeds RAM limit */
256 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
257}
Note: See TracBrowser for help on using the repository browser.