60 GROUP(libgcc.a libc.a libm.a libnosys.a)
62 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
63 #define IMG_FW_IVT_OFFSET (0x400)
64 #define RETENTION_RAM_INIT_SIZE (__retention_ram_init_end__ - __retention_ram_init_start__)
65 #define NON_RETENTION_RAM_INIT_SIZE (__non_retention_ram_init_end__ - __non_retention_ram_init_start__)
71 #if ( dg_configUSE_SEGGER_FLASH_LOADER == 1 )
72 #define CS_OFFSET 0x1000
73 #if (dg_configCODE_LOCATION == NON_VOLATILE_IS_EMBEDDED_FLASH)
78 #define LOAD_ADDRESS_OFFSET 0x31000000
79 #define PROD_HEAD_OFFSET 0x800
80 #elif (dg_configCODE_LOCATION == NON_VOLATILE_IS_QSPI_FLASH)
81 #define LOAD_ADDRESS_OFFSET 0x32000000
82 #define PROD_HEAD_OFFSET 0x1000
84 #error "Flash Loader does not support other code location."
86 #if (dg_configCODE_LOCATION == NON_VOLATILE_IS_EMBEDDED_FLASH)
87 #define IMG_FW_BASE_OFFSET 0x2000
88 #elif (dg_configCODE_LOCATION == NON_VOLATILE_IS_QSPI_FLASH)
89 #define IMG_FW_BASE_OFFSET 0x3000
91 #define IMG_FW_BASE_ADDRESS (IMG_FW_BASE_OFFSET + LOAD_ADDRESS_OFFSET)
92 #define IMG_FW_IVT_BASE_ADDRESS (IMG_FW_BASE_OFFSET + IMG_FW_IVT_OFFSET + LOAD_ADDRESS_OFFSET)
94 #define IMG_FW_IVT_BASE_ADDRESS 0x0
102 #if ( dg_configUSE_SEGGER_FLASH_LOADER == 1 )
103 AT (IMG_FW_IVT_BASE_ADDRESS)
110 __Vectors_Size = __Vectors_End - __isr_vector;
112 KEEP(*(__external_application_parameters__))
123 *(EXCLUDE_FILE(*libnosys.a:sbrk.o
124 *libgcc.a:_aeabi_uldivmod.o
126 *libgcc.a:_dvmd_tls.o
130 *libgcc.a:_clzsi2.o) .text*)
134 #ifdef CONFIG_USE_BLE
135 #if (dg_configEXEC_MODE != MODE_IS_CACHED)
145 __cmi_fw_area_start = .;
146 KEEP(*(.cmi_fw_area*))
147 __cmi_fw_area_end = .;
149 #if (dg_configEXEC_MODE != MODE_IS_CACHED)
150 __cmi_section_start__ = .;
157 KEEP(*(.cmi_data_area*))
161 __cmi_section_end__ = . - 1;
163 KEEP(*(.cmi_data_ext_area*))
168 __start_adapter_init_section = .;
169 KEEP(*(adapter_init_section))
170 __stop_adapter_init_section = .;
173 __start_bus_init_section = .;
174 KEEP(*(bus_init_section))
175 __stop_bus_init_section = .;
178 __start_device_init_section = .;
179 KEEP(*(device_init_section))
180 __stop_device_init_section = .;
188 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
195 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
201 PROVIDE_HIDDEN (__preinit_array_start = .);
202 KEEP(*(.preinit_array))
203 PROVIDE_HIDDEN (__preinit_array_end = .);
207 PROVIDE_HIDDEN (__init_array_start = .);
208 KEEP(*(SORT(.init_array.*)))
210 PROVIDE_HIDDEN (__init_array_end = .);
214 PROVIDE_HIDDEN (__fini_array_start = .);
215 KEEP(*(SORT(.fini_array.*)))
217 PROVIDE_HIDDEN (__fini_array_end = .);
226 *(.ARM.extab* .gnu.linkonce.armextab.*)
232 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
243 __copy_table_start__ = .;
244 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
246 LONG (__retention_ram_init_start__)
247 LONG (RETENTION_RAM_INIT_SIZE)
249 LONG (__etext + (RETENTION_RAM_INIT_SIZE))
250 LONG (__non_retention_ram_init_start__)
251 LONG (NON_RETENTION_RAM_INIT_SIZE)
253 __copy_table_end__ = .;
264 __zero_table_start__ = .;
265 LONG (__retention_ram_zi_start__)
266 LONG (__retention_ram_zi_end__ - __retention_ram_zi_start__)
267 #ifdef CONFIG_USE_BLE
268 LONG (__cmi_section_retained_zi_start__)
269 LONG (__cmi_section_retained_zi_end__ - __cmi_section_retained_zi_start__)
271 __zero_table_end__ = .;
286 .retention_ram_uninit (NOLOAD) :
288 __retention_ram_uninit_start__ = .;
289 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
290 ASSERT( . == ORIGIN(RAM),
".retention_ram_uninit section moved!");
293 KEEP(*(hard_fault_info))
294 KEEP(*(retention_mem_uninit))
297 "retention_ram_uninit section overflowed! Increase dg_configRETAINED_UNINIT_SECTION_SIZE.");
300 __retention_ram_uninit_end__ = .;
306 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
307 .retention_ram_init : AT (IMG_FW_IVT_BASE_ADDRESS +__etext)
313 .retention_ram_init :
316 __retention_ram_init_start__ = .;
322 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
328 *libnosys.a:sbrk.o (.text*)
329 *libgcc.a:_aeabi_uldivmod.o (.text*)
330 *libgcc.a:_muldi3.o (.text*)
331 *libgcc.a:_dvmd_tls.o (.text*)
332 *libgcc.a:bpabi.o (.text*)
333 *libgcc.a:_udivdi3.o (.text*)
334 *libgcc.a:_clzdi2.o (.text*)
335 *libgcc.a:_clzsi2.o (.text*)
342 *(privileged_data_init)
347 *(retention_mem_init)
348 *(retention_mem_const)
351 *libg_nano.a:* (.data*)
352 *libnosys.a:* (.data*)
354 *libble_stack_da1459x.a:* (.data*)
363 __retention_ram_init_end__ = .;
369 .retention_ram_zi (NOLOAD) :
371 __retention_ram_zi_start__ = .;
373 *(privileged_data_zi)
376 *libg_nano.a:* (.bss*)
377 *libnosys.a:* (.bss*)
379 *libble_stack_da1459x.a:* (.bss*)
390 __retention_ram_zi_end__ = .;
393 .stack_section (NOLOAD) :
407 PROVIDE(__stack = __StackTop);
411 #ifdef CONFIG_USE_BLE
412 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
416 .cmi_section (NOLOAD) :
418 __cmi_section_start__ = .;
431 . += (__cmi_fw_area_end - __cmi_fw_area_start);
438 KEEP(*(.cmi_data_area*))
442 __cmi_section_end__ = . - 1;
443 KEEP(*(.cmi_data_ext_area*))
446 .cmi_section_retained_zi (NOLOAD) :
448 __cmi_section_retained_zi_start__ = .;
449 *(retention_mem_cmi_zi)
450 __cmi_section_retained_zi_end__ = .;
454 __non_retention_ram_start__ = .;
461 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
462 .non_retention_ram_init : AT (IMG_FW_IVT_BASE_ADDRESS + __etext + (RETENTION_RAM_INIT_SIZE))
464 __non_retention_ram_init_start__ = .;
466 *(EXCLUDE_FILE(*libg_nano.a:* *libnosys.a:* *libgcc.a:* *libble_stack_da1459x.a:* *crtbegin.o) .data*)
469 __non_retention_ram_init_end__ = .;
482 *(EXCLUDE_FILE(*libg_nano.a:* *libnosys.a:* *libgcc.a:* *libble_stack_da1459x.a:* *crtbegin.o) .bss*)
489 __non_retention_ram_end__ = .;
491 __unused_ram_start__ = . + 1;
493 #if ( dg_configUSE_SEGGER_FLASH_LOADER == 1 )
496 AT (LOAD_ADDRESS_OFFSET)
502 LONG(0x60000000 | CS_OFFSET)
503 #if (defined(CONFIG_USE_BLE) && (dg_configSUOTA_SUPPORT == 0))
511 . += CS_OFFSET - 16 - 1;
515 . += CS_OFFSET - 8 - 1;
522 AT (CS_OFFSET + LOAD_ADDRESS_OFFSET)
527 LONG(IMG_FW_BASE_OFFSET)
528 LONG(IMG_FW_BASE_OFFSET)
529 #if (dg_configCODE_LOCATION == NON_VOLATILE_IS_QSPI_FLASH)
530 KEEP(*(__product_header_primary__))
531 #elif (dg_configCODE_LOCATION == NON_VOLATILE_IS_EMBEDDED_FLASH)
539 . = PROD_HEAD_OFFSET;
543 AT (CS_OFFSET + PROD_HEAD_OFFSET + LOAD_ADDRESS_OFFSET)
548 LONG(IMG_FW_BASE_OFFSET)
549 LONG(IMG_FW_BASE_OFFSET)
550 #if (dg_configCODE_LOCATION == NON_VOLATILE_IS_QSPI_FLASH)
551 KEEP(*(__product_header_backup__))
552 #elif (dg_configCODE_LOCATION == NON_VOLATILE_IS_EMBEDDED_FLASH)
560 . = PROD_HEAD_OFFSET;
564 AT (IMG_FW_BASE_ADDRESS)
574 LONG(IMG_FW_IVT_OFFSET)
579 . = IMG_FW_IVT_OFFSET;
583 #if (dg_configEXEC_MODE == MODE_IS_CACHED)
587 #if (dg_configCODE_LOCATION == NON_VOLATILE_IS_QSPI_FLASH)
589 ASSERT(__etext + RETENTION_RAM_INIT_SIZE + NON_RETENTION_RAM_INIT_SIZE + IMG_FW_IVT_OFFSET <
592 ASSERT(__etext + RETENTION_RAM_INIT_SIZE + NON_RETENTION_RAM_INIT_SIZE + IMG_FW_IVT_OFFSET <