summaryrefslogtreecommitdiff
path: root/nrfdemo/build/mcuboot/zephyr/linker.cmd
diff options
context:
space:
mode:
authorMichal Hanus <mikehanus@protonmail.com>2025-04-14 22:04:32 +0200
committerMichal Hanus <mikehanus@protonmail.com>2025-04-14 22:04:32 +0200
commit2e13c372f1419f08dab7797b244681f889dd9bcf (patch)
tree995a31c40f13068c4135c213e938e0a2a9ed05a3 /nrfdemo/build/mcuboot/zephyr/linker.cmd
parent620dfd94019f3c7e3022fa5a5fb9c9b51491062d (diff)
nrfdemo
Diffstat (limited to 'nrfdemo/build/mcuboot/zephyr/linker.cmd')
-rw-r--r--nrfdemo/build/mcuboot/zephyr/linker.cmd300
1 files changed, 300 insertions, 0 deletions
diff --git a/nrfdemo/build/mcuboot/zephyr/linker.cmd b/nrfdemo/build/mcuboot/zephyr/linker.cmd
new file mode 100644
index 0000000..e507e6c
--- /dev/null
+++ b/nrfdemo/build/mcuboot/zephyr/linker.cmd
@@ -0,0 +1,300 @@
+ OUTPUT_FORMAT("elf32-littlearm")
+_region_min_align = 4;
+MEMORY
+ {
+ FLASH (rx) : ORIGIN = 0x0, LENGTH = 0xc000
+ RAM (wx) : ORIGIN = 0x20000000, LENGTH = 0x8000
+
+ IDT_LIST (wx) : ORIGIN = 0xFFFF7FFF, LENGTH = 32K
+ }
+ENTRY("__start")
+SECTIONS
+ {
+ .rel.plt :
+ {
+ *(.rel.plt)
+ PROVIDE_HIDDEN (__rel_iplt_start = .);
+ *(.rel.iplt)
+ PROVIDE_HIDDEN (__rel_iplt_end = .);
+ }
+ .rela.plt :
+ {
+ *(.rela.plt)
+ PROVIDE_HIDDEN (__rela_iplt_start = .);
+ *(.rela.iplt)
+ PROVIDE_HIDDEN (__rela_iplt_end = .);
+ }
+ .rel.dyn :
+ {
+ *(.rel.*)
+ }
+ .rela.dyn :
+ {
+ *(.rela.*)
+ }
+ /DISCARD/ :
+ {
+ *(.plt)
+ }
+ /DISCARD/ :
+ {
+ *(.iplt)
+ }
+
+ __rom_region_start = 0x0;
+ rom_start :
+ {
+HIDDEN(__rom_start_address = .);
+FILL(0x00);
+. += 0x0 - (. - __rom_start_address);
+. = ALIGN(4);
+. = ALIGN( 1 << LOG2CEIL(4 * 32) );
+. = ALIGN( 1 << LOG2CEIL(4 * (16 + 65)) );
+_vector_start = .;
+KEEP(*(.exc_vector_table))
+KEEP(*(".exc_vector_table.*"))
+KEEP(*(.vectors))
+_vector_end = .;
+. = ALIGN(4);
+KEEP(*(.gnu.linkonce.irq_vector_table*))
+ _vector_end = .;
+ } > FLASH
+ text :
+ {
+ __text_region_start = .;
+ *(.text)
+ *(".text.*")
+ *(".TEXT.*")
+ *(.gnu.linkonce.t.*)
+ *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
+ . = ALIGN(4);
+ } > FLASH
+ __text_region_end = .;
+ .ARM.exidx :
+ {
+ __exidx_start = .;
+ *(.ARM.exidx* gnu.linkonce.armexidx.*)
+ __exidx_end = .;
+ } > FLASH
+ __rodata_region_start = .;
+ initlevel :
+ {
+ __init_start = .;
+ __init_EARLY_start = .; KEEP(*(SORT(.z_init_EARLY?_*))); KEEP(*(SORT(.z_init_EARLY??_*)));
+ __init_PRE_KERNEL_1_start = .; KEEP(*(SORT(.z_init_PRE_KERNEL_1?_*))); KEEP(*(SORT(.z_init_PRE_KERNEL_1??_*)));
+ __init_PRE_KERNEL_2_start = .; KEEP(*(SORT(.z_init_PRE_KERNEL_2?_*))); KEEP(*(SORT(.z_init_PRE_KERNEL_2??_*)));
+ __init_POST_KERNEL_start = .; KEEP(*(SORT(.z_init_POST_KERNEL?_*))); KEEP(*(SORT(.z_init_POST_KERNEL??_*)));
+ __init_APPLICATION_start = .; KEEP(*(SORT(.z_init_APPLICATION?_*))); KEEP(*(SORT(.z_init_APPLICATION??_*)));
+ __init_SMP_start = .; KEEP(*(SORT(.z_init_SMP?_*))); KEEP(*(SORT(.z_init_SMP??_*)));
+ __init_end = .;
+ __deferred_init_list_start = .;
+ KEEP(*(.z_deferred_init))
+ __deferred_init_list_end = .;
+ } > FLASH
+ device_area : SUBALIGN(4) { _device_list_start = .; KEEP(*(SORT(._device.static.*_?_*))); KEEP(*(SORT(._device.static.*_??_*))); _device_list_end = .; } > FLASH
+ sw_isr_table :
+ {
+ . = ALIGN(4);
+ *(.gnu.linkonce.sw_isr_table*)
+ } > FLASH
+ initlevel_error :
+ {
+ KEEP(*(SORT(.z_init_[_A-Z0-9]*)))
+ }
+ ASSERT(SIZEOF(initlevel_error) == 0, "Undefined initialization levels used.")
+ app_shmem_regions : ALIGN_WITH_INPUT
+ {
+ __app_shmem_regions_start = .;
+ KEEP(*(SORT(.app_regions.*)));
+ __app_shmem_regions_end = .;
+ } > FLASH
+ k_p4wq_initparam_area : SUBALIGN(4) { _k_p4wq_initparam_list_start = .; KEEP(*(SORT_BY_NAME(._k_p4wq_initparam.static.*))); _k_p4wq_initparam_list_end = .; } > FLASH
+ _static_thread_data_area : SUBALIGN(4) { __static_thread_data_list_start = .; KEEP(*(SORT_BY_NAME(.__static_thread_data.static.*))); __static_thread_data_list_end = .; } > FLASH
+ device_deps : ALIGN_WITH_INPUT
+ {
+__device_deps_start = .;
+KEEP(*(SORT(.__device_deps_pass2*)));
+__device_deps_end = .;
+ } > FLASH
+ztest :
+{
+ _ztest_expected_result_entry_list_start = .; KEEP(*(SORT_BY_NAME(._ztest_expected_result_entry.static.*))); _ztest_expected_result_entry_list_end = .;
+ _ztest_suite_node_list_start = .; KEEP(*(SORT_BY_NAME(._ztest_suite_node.static.*))); _ztest_suite_node_list_end = .;
+ _ztest_unit_test_list_start = .; KEEP(*(SORT_BY_NAME(._ztest_unit_test.static.*))); _ztest_unit_test_list_end = .;
+ _ztest_test_rule_list_start = .; KEEP(*(SORT_BY_NAME(._ztest_test_rule.static.*))); _ztest_test_rule_list_end = .;
+} > FLASH
+ bt_l2cap_fixed_chan_area : SUBALIGN(4) { _bt_l2cap_fixed_chan_list_start = .; KEEP(*(SORT_BY_NAME(._bt_l2cap_fixed_chan.static.*))); _bt_l2cap_fixed_chan_list_end = .; } > FLASH
+ bt_gatt_service_static_area : SUBALIGN(4) { _bt_gatt_service_static_list_start = .; KEEP(*(SORT_BY_NAME(._bt_gatt_service_static.static.*))); _bt_gatt_service_static_list_end = .; } > FLASH
+ log_strings_area : SUBALIGN(4) { _log_strings_list_start = .; KEEP(*(SORT_BY_NAME(._log_strings.static.*))); _log_strings_list_end = .; } > FLASH
+ log_const_area : SUBALIGN(4) { _log_const_list_start = .; KEEP(*(SORT_BY_NAME(._log_const.static.*))); _log_const_list_end = .; } > FLASH
+ log_backend_area : SUBALIGN(4) { _log_backend_list_start = .; KEEP(*(SORT_BY_NAME(._log_backend.static.*))); _log_backend_list_end = .; } > FLASH
+ log_link_area : SUBALIGN(4) { _log_link_list_start = .; KEEP(*(SORT_BY_NAME(._log_link.static.*))); _log_link_list_end = .; } > FLASH
+ tracing_backend_area : SUBALIGN(4) { _tracing_backend_list_start = .; KEEP(*(SORT_BY_NAME(._tracing_backend.static.*))); _tracing_backend_list_end = .; } > FLASH
+ zephyr_dbg_info : ALIGN_WITH_INPUT
+ {
+ KEEP(*(".dbg_thread_info"));
+ } > FLASH
+ symbol_to_keep : ALIGN_WITH_INPUT
+ {
+ __symbol_to_keep_start = .;
+ KEEP(*(SORT(.symbol_to_keep*)));
+ __symbol_to_keep_end = .;
+ } > FLASH
+ shell_area : SUBALIGN(4) { _shell_list_start = .; KEEP(*(SORT_BY_NAME(._shell.static.*))); _shell_list_end = .; } > FLASH
+ shell_root_cmds_area : SUBALIGN(4) { _shell_root_cmds_list_start = .; KEEP(*(SORT_BY_NAME(._shell_root_cmds.static.*))); _shell_root_cmds_list_end = .; } > FLASH
+ shell_subcmds_area : SUBALIGN(4) { _shell_subcmds_list_start = .; KEEP(*(SORT_BY_NAME(._shell_subcmds.static.*))); _shell_subcmds_list_end = .; } > FLASH
+ shell_dynamic_subcmds_area : SUBALIGN(4) { _shell_dynamic_subcmds_list_start = .; KEEP(*(SORT_BY_NAME(._shell_dynamic_subcmds.static.*))); _shell_dynamic_subcmds_list_end = .; } > FLASH
+ cfb_font_area : SUBALIGN(4) { _cfb_font_list_start = .; KEEP(*(SORT_BY_NAME(._cfb_font.static.*))); _cfb_font_list_end = .; } > FLASH
+ rodata :
+ {
+ *(.rodata)
+ *(".rodata.*")
+ *(.gnu.linkonce.r.*)
+ . = ALIGN(4);
+ } > FLASH
+ __rodata_region_end = .;
+ . = ALIGN(_region_min_align);
+ __rom_region_end = __rom_region_start + . - ADDR(rom_start);
+
+ /DISCARD/ : {
+ *(.got.plt)
+ *(.igot.plt)
+ *(.got)
+ *(.igot)
+ }
+
+ . = 0x20000000;
+ . = ALIGN(_region_min_align);
+ _image_ram_start = .;
+.ramfunc : ALIGN_WITH_INPUT
+{
+ . = ALIGN(_region_min_align);
+ __ramfunc_start = .;
+ *(.ramfunc)
+ *(".ramfunc.*")
+ . = ALIGN(_region_min_align);
+ __ramfunc_end = .;
+} > RAM AT > FLASH
+__ramfunc_size = __ramfunc_end - __ramfunc_start;
+__ramfunc_load_start = LOADADDR(.ramfunc);
+
+ datas : ALIGN_WITH_INPUT
+ {
+ __data_region_start = .;
+ __data_start = .;
+ *(.data)
+ *(".data.*")
+ *(".kernel.*")
+ __data_end = .;
+ } > RAM AT > FLASH
+ __data_size = __data_end - __data_start;
+ __data_load_start = LOADADDR(datas);
+ __data_region_load_start = LOADADDR(datas);
+ device_states : ALIGN_WITH_INPUT
+ {
+ __device_states_start = .;
+ KEEP(*(".z_devstate"));
+ KEEP(*(".z_devstate.*"));
+ __device_states_end = .;
+ } > RAM AT > FLASH
+ log_mpsc_pbuf_area : ALIGN_WITH_INPUT SUBALIGN(4) { _log_mpsc_pbuf_list_start = .; *(SORT_BY_NAME(._log_mpsc_pbuf.static.*)); _log_mpsc_pbuf_list_end = .; } > RAM AT > FLASH
+ log_msg_ptr_area : ALIGN_WITH_INPUT SUBALIGN(4) { _log_msg_ptr_list_start = .; KEEP(*(SORT_BY_NAME(._log_msg_ptr.static.*))); _log_msg_ptr_list_end = .; } > RAM AT > FLASH
+ log_dynamic_area : ALIGN_WITH_INPUT SUBALIGN(4) { _log_dynamic_list_start = .; KEEP(*(SORT_BY_NAME(._log_dynamic.static.*))); _log_dynamic_list_end = .; } > RAM AT > FLASH
+ k_timer_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_timer_list_start = .; *(SORT_BY_NAME(._k_timer.static.*)); _k_timer_list_end = .; } > RAM AT > FLASH
+ k_mem_slab_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_mem_slab_list_start = .; *(SORT_BY_NAME(._k_mem_slab.static.*)); _k_mem_slab_list_end = .; } > RAM AT > FLASH
+ k_heap_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_heap_list_start = .; *(SORT_BY_NAME(._k_heap.static.*)); _k_heap_list_end = .; } > RAM AT > FLASH
+ k_mutex_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_mutex_list_start = .; *(SORT_BY_NAME(._k_mutex.static.*)); _k_mutex_list_end = .; } > RAM AT > FLASH
+ k_stack_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_stack_list_start = .; *(SORT_BY_NAME(._k_stack.static.*)); _k_stack_list_end = .; } > RAM AT > FLASH
+ k_msgq_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_msgq_list_start = .; *(SORT_BY_NAME(._k_msgq.static.*)); _k_msgq_list_end = .; } > RAM AT > FLASH
+ k_mbox_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_mbox_list_start = .; *(SORT_BY_NAME(._k_mbox.static.*)); _k_mbox_list_end = .; } > RAM AT > FLASH
+ k_pipe_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_pipe_list_start = .; *(SORT_BY_NAME(._k_pipe.static.*)); _k_pipe_list_end = .; } > RAM AT > FLASH
+ k_sem_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_sem_list_start = .; *(SORT_BY_NAME(._k_sem.static.*)); _k_sem_list_end = .; } > RAM AT > FLASH
+ k_event_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_event_list_start = .; *(SORT_BY_NAME(._k_event.static.*)); _k_event_list_end = .; } > RAM AT > FLASH
+ k_queue_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_queue_list_start = .; *(SORT_BY_NAME(._k_queue.static.*)); _k_queue_list_end = .; } > RAM AT > FLASH
+ k_fifo_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_fifo_list_start = .; *(SORT_BY_NAME(._k_fifo.static.*)); _k_fifo_list_end = .; } > RAM AT > FLASH
+ k_lifo_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_lifo_list_start = .; *(SORT_BY_NAME(._k_lifo.static.*)); _k_lifo_list_end = .; } > RAM AT > FLASH
+ k_condvar_area : ALIGN_WITH_INPUT SUBALIGN(4) { _k_condvar_list_start = .; *(SORT_BY_NAME(._k_condvar.static.*)); _k_condvar_list_end = .; } > RAM AT > FLASH
+ sys_mem_blocks_ptr_area : ALIGN_WITH_INPUT SUBALIGN(4) { _sys_mem_blocks_ptr_list_start = .; *(SORT_BY_NAME(._sys_mem_blocks_ptr.static.*)); _sys_mem_blocks_ptr_list_end = .; } > RAM AT > FLASH
+ net_buf_pool_area : ALIGN_WITH_INPUT SUBALIGN(4) { _net_buf_pool_list_start = .; KEEP(*(SORT_BY_NAME(._net_buf_pool.static.*))); _net_buf_pool_list_end = .; } > RAM AT > FLASH
+ __data_region_end = .;
+ bss (NOLOAD) : ALIGN_WITH_INPUT
+ {
+ . = ALIGN(4);
+ __bss_start = .;
+ __kernel_ram_start = .;
+ *(.bss)
+ *(".bss.*")
+ *(COMMON)
+ *(".kernel_bss.*")
+ __bss_end = ALIGN(4);
+ } > RAM AT > RAM
+ noinit (NOLOAD) :
+ {
+ *(.noinit)
+ *(".noinit.*")
+ *(".kernel_noinit.*")
+ } > RAM AT > RAM
+ __kernel_ram_end = 0x20000000 + 0x8000;
+ __kernel_ram_size = __kernel_ram_end - __kernel_ram_start;
+PROVIDE(z_arm_platform_init = SystemInit);
+/DISCARD/ :
+{
+ KEEP(*(.irq_info*))
+ KEEP(*(.intList*))
+}
+ .last_ram_section (NOLOAD) :
+ {
+ _image_ram_end = .;
+ _image_ram_size = _image_ram_end - _image_ram_start;
+ _end = .;
+ z_mapped_end = .;
+ } > RAM AT > RAM
+
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .gnu.build.attributes 0 : { *(.gnu.build.attributes .gnu.build.attributes.*) }
+ .comment 0 : { *(.comment) }
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+ .debug_pubtypes 0 : { *(.debug_pubtypes) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+ .debug_addr 0 : { *(.debug_addr) }
+ .debug_line_str 0 : { *(.debug_line_str) }
+ .debug_loclists 0 : { *(.debug_loclists) }
+ .debug_macro 0 : { *(.debug_macro) }
+ .debug_names 0 : { *(.debug_names) }
+ .debug_rnglists 0 : { *(.debug_rnglists) }
+ .debug_str_offsets 0 : { *(.debug_str_offsets) }
+ .debug_sup 0 : { *(.debug_sup) }
+ /DISCARD/ : { *(.note.GNU-stack) }
+ .ARM.attributes 0 :
+ {
+ KEEP(*(.ARM.attributes))
+ KEEP(*(.gnu.attributes))
+ }
+
+.last_section :
+{
+ LONG(0xE015E015)
+} > FLASH
+_flash_used = LOADADDR(.last_section) + SIZEOF(.last_section) - __rom_region_start;
+ }