1 /* Linker script for mbed RZ_A1H */
3 /* Linker script to configure memory regions. */
6 ROM (rx) : ORIGIN = 0x00000000, LENGTH = 0x02000000
7 BOOT_LOADER (rx) : ORIGIN = 0x18000000, LENGTH = 0x00004000
8 SFLASH (rx) : ORIGIN = 0x18004000, LENGTH = 0x07FFC000
9 L_TTB (rw) : ORIGIN = 0x20000000, LENGTH = 0x00004000
10 RAM (rwx) : ORIGIN = 0x20020000, LENGTH = 0x00700000
11 RAM_NC (rwx) : ORIGIN = 0x20900000, LENGTH = 0x00100000
14 /* Linker script to place sections and symbol values. Should be used together
15 * with other linker script that defines memory regions FLASH and RAM.
16 * It references following symbols, which must be defined in code:
17 * Reset_Handler : Entry of reset handler
19 * It defines following symbols, which code can use without definition:
24 * __preinit_array_start
52 Image$$VECTORS$$Base = .;
54 Image$$VECTORS$$Limit = .;
67 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
74 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
78 Image$$RO_DATA$$Base = .;
80 Image$$RO_DATA$$Limit = .;
87 *(.ARM.extab* .gnu.linkonce.armextab.*)
93 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
101 __copy_table_start__ = .;
103 LONG (__data_start__)
104 LONG (__data_end__ - __data_start__)
106 LONG (__nc_data_start)
107 LONG (__nc_data_end - __nc_data_start)
108 __copy_table_end__ = .;
114 __zero_table_start__ = .;
116 LONG (__bss_end__ - __bss_start__)
117 LONG (__nc_bss_start)
118 LONG (__nc_bss_end - __nc_bss_start)
119 __zero_table_end__ = .;
126 Image$$TTB$$ZI$$Base = .;
128 Image$$TTB$$ZI$$Limit = .;
133 Image$$RW_DATA$$Base = .;
137 Image$$RW_DATA$$Limit = .;
141 PROVIDE (__preinit_array_start = .);
142 KEEP(*(.preinit_array))
143 PROVIDE (__preinit_array_end = .);
147 PROVIDE (__init_array_start = .);
148 KEEP(*(SORT(.init_array.*)))
150 PROVIDE (__init_array_end = .);
155 PROVIDE (__fini_array_start = .);
156 KEEP(*(SORT(.fini_array.*)))
158 PROVIDE (__fini_array_end = .);
169 Image$$ZI_DATA$$Base = .;
174 Image$$ZI_DATA$$Limit = .;
186 /* .stack_dummy section doesn't contains any symbols. It is only
187 * used for linker to calculate size of stack sections, and assign
188 * values to stack symbols later */
194 __etext2 = __etext + SIZEOF(.data);
195 .nc_data : AT (__etext2)
197 Image$$RW_DATA_NC$$Base = .;
203 Image$$RW_DATA_NC$$Limit = .;
208 Image$$ZI_DATA_NC$$Base = .;
214 Image$$ZI_DATA_NC$$Limit = .;
217 /* Set stack top to end of RAM, and stack limit move down by
218 * size of stack_dummy section */
219 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
220 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
221 PROVIDE(__stack = __StackTop);
223 /* Check if data + heap + stack exceeds RAM limit */
224 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")