openmv/ports/qemu/qemu.ld.S
iabdalkader 9d0e012b1c ports/qemu: Add qemu port.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-18 16:12:19 +02:00

74 lines
1.9 KiB
ArmAsm

/* This file is part of the MicroPython project, http://micropython.org/
* The MIT License (MIT)
* Copyright (c) 2018 Damien P. George
*/
#include "omv_boardconfig.h"
MEMORY
{
#if defined(OMV_ITCM_ORIGIN)
ITCM (xrw) : ORIGIN = OMV_ITCM_ORIGIN, LENGTH = OMV_ITCM_LENGTH
#endif
#if defined(OMV_SRAM1_ORIGIN)
SRAM1 (xrw) : ORIGIN = OMV_SRAM1_ORIGIN, LENGTH = OMV_SRAM1_LENGTH
#endif
#if defined(OMV_SRAM2_ORIGIN)
SRAM2 (xrw) : ORIGIN = OMV_SRAM2_ORIGIN, LENGTH = OMV_SRAM2_LENGTH
#endif
FLASH_ISR (rx) : ORIGIN = OMV_FLASH_ISR_ORIGIN, LENGTH = OMV_FLASH_ISR_LENGTH
FLASH_TEXT (rx) : ORIGIN = OMV_FLASH_TXT_ORIGIN, LENGTH = OMV_FLASH_TXT_LENGTH
}
/* Define output sections */
SECTIONS
{
.isr_vector : ALIGN(4)
{
KEEP(*(.isr_vector))
. = ALIGN(4);
} >FLASH_ISR
/* The program code and other data goes into FLASH */
.text : ALIGN(4)
{
*(.text*) // .text* sections (code)
. = ALIGN(4);
*(.rodata*) // .rodata* sections (constants, strings, etc.)
. = ALIGN(4);
*(.ARM.exidx*)
. = ALIGN(4);
_etext = .;
} >FLASH_TEXT
/* The address used as the source for copying the initialized data section. */
_sidata = LOADADDR(.data);
/* Initialized data sections */
.data : ALIGN(4)
{
_sdata = .; // Used by the startup to initialize the data section
*(.data) // .data sections
. = ALIGN(4);
*(.data*) // .data* sections
. = ALIGN(4);
_edata = .; // Define a global symbol at data end
} >OMV_MAIN_MEMORY AT> FLASH_TEXT
/* Uninitialized data section */
.bss (NOLOAD) : ALIGN(4)
{
_sbss = .; // Used by the startup to initialize the .bss section
__bss_start__ = .;
. = ALIGN(4);
*(.bss*)
. = ALIGN(4);
*(COMMON)
. = ALIGN(4);
_ebss = .; // Define a global symbol at bss end
__bss_end__ = .;
} >OMV_MAIN_MEMORY
#include "common.ld.S"
}