Files
2026-09-18 10:07:08 +03:00

65 lines
1.8 KiB
Plaintext

ENTRY(Reset_Handler)
MEMORY {
boot_hdr (rx) : ORIGIN = 0x04000000, LENGTH = 0x0000b000
flash_irq (rx) : ORIGIN = 0x0400b000, LENGTH = 0x00000400
flash (rx) : ORIGIN = 0x0400b400, LENGTH = 0x00ff4c00
itcm (rwx) : ORIGIN = 0x0ffe0000, LENGTH = 128k
dtcm (rwx) : ORIGIN = 0x20000000, LENGTH = 128k
ocram1 (rw) : ORIGIN = 0x204c0000, LENGTH = 256k
}
__StackSize = 4k;
__StackTop = ORIGIN(dtcm) + LENGTH(dtcm);
__StackLimit = __StackTop - __StackSize;
SECTIONS {
.boot_hdr : {
FILL(0x00)
. = 0x0400; KEEP(*(.boot_hdr.conf))
. = 0x0800; KEEP(*(.boot_hdr.xmcd_data))
. = 0x1000; __boot_hdr_container__ = ABSOLUTE(.); KEEP(*(.boot_hdr.container))
. = 0xb000;
} > boot_hdr
.isr_vector ALIGN(1024) : { KEEP(*(.isr_vector)) } > flash_irq
.text : { *(.text .text.*) *(.rodata .rodata.*) *(.constdata .constdata.*) } > flash
.iram : { _siram = .; *(.iram .iram.*) . = ALIGN(4); _eiram = .; } > itcm AT > flash
_siiram = LOADADDR(.iram);
.data : {
__data_start__ = .;
*(.data SORT(.data.*)) *(.sdata SORT(.sdata.*))
. = ALIGN(4);
__data_end__ = .;
} > dtcm AT > flash
__data_flash_start = LOADADDR(.data);
.bss (NOLOAD) : {
__bss_start__ = .;
*(.bss SORT(.bss.*)) *(.sbss SORT(.sbss.*)) *(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > dtcm
_end = ALIGN(8);
/* Required by startup only; hal.c manages the dynamic heap from _end. */
__HeapBase = _end;
__HeapLimit = _end;
.eth_ram (NOLOAD) : {
. = ALIGN(64);
__eth_ram_start__ = .;
*(.eth_ram .eth_ram.*)
. = ALIGN(64);
__eth_ram_end__ = .;
} > ocram1
_image_size = LOADADDR(.data) + SIZEOF(.data) - ADDR(.isr_vector);
_image_loadaddr = ADDR(.isr_vector);
_image_offset = ADDR(.isr_vector) - __boot_hdr_container__;
}