Загрузка данных


/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-rodata.ld>

#include <zephyr/linker/kobject-rom.ld>

        /*
         * For XIP images, in order to avoid the situation when __data_rom_start
         * is 32-bit aligned, but the actual data is placed right after rodata
         * section, which may not end exactly at 32-bit border, pad rodata
         * section, so __data_rom_start points at data and it is 32-bit aligned.
         *
         * On non-XIP images this may enlarge image size up to 3 bytes. This
         * generally is not an issue, since modern ROM and FLASH memory is
         * usually 4k aligned.
         */
        . = ALIGN(4);
        } GROUP_LINK_IN(ROMABLE_REGION)

#include <zephyr/linker/cplusplus-rom.ld>

#if defined(CONFIG_BUILD_ALIGN_LMA) || !defined(CONFIG_XIP)
    /*
     * Include a padding section here to make sure that the LMA address
     * of the sections in the RAMABLE_REGION are aligned with those
     * section's VMA alignment requirements.
     */
    SECTION_PROLOGUE(padding_section,,)
        {
        __rodata_region_end = .;
        MPU_ALIGN(__rodata_region_end - ADDR(rom_start));
        } GROUP_LINK_IN(ROMABLE_REGION)
#else
        __rodata_region_end = .;
        MPU_ALIGN(__rodata_region_end - ADDR(rom_start));
#endif
        __rom_region_end = __rom_region_start + . - ADDR(rom_start);

    GROUP_END(ROMABLE_REGION)

    /*
     * These are here according to 'arm-zephyr-elf-ld --verbose',
     * before data section.
     */
    /DISCARD/ : {
        *(.got.plt)
        *(.igot.plt)
        *(.got)
        *(.igot)
        }

    GROUP_START(RAMABLE_REGION)

#if ROM_ADDR != RAM_ADDR
        . = RAM_ADDR;
#endif

        /* Align the start of image RAM with the
         * minimum granularity required by MPU.
         */
        . = ALIGN(_region_min_align);
        _image_ram_start = .;

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-ram-sections.ld>

#if defined(CONFIG_USERSPACE)
#define APP_SHARED_ALIGN . = ALIGN(_region_min_align);
#define SMEM_PARTITION_ALIGN MPU_ALIGN

#include <app_smem.ld>

        _app_smem_size = _app_smem_end - _app_smem_start;
        _app_smem_rom_start = LOADADDR(_APP_SMEM_SECTION_NAME);
#endif  /* CONFIG_USERSPACE */

    GROUP_START(DATA_REGION)

    SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,)
        {
        __data_region_start = .;
        __data_start = .;
        *(.data)
        *(".data.*")
        *(".kernel.*")

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-rwdata.ld>

#ifdef CONFIG_CODE_DATA_RELOCATION
#include <linker_sram_data_relocate.ld>
#endif
        __data_end = .;

        } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
    __data_size = __data_end - __data_start;
    __data_load_start = LOADADDR(_DATA_SECTION_NAME);

    __data_region_load_start = LOADADDR(_DATA_SECTION_NAME);

#include <zephyr/linker/common-ram.ld>
#include <zephyr/linker/kobject-data.ld>

#include <zephyr/linker/cplusplus-ram.ld>

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-data-sections.ld>

    __data_region_end = .;

#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay)
GROUP_START(ITCM)

        SECTION_PROLOGUE(_ITCM_SECTION_NAME,,SUBALIGN(4))
        {
                __itcm_start = .;
                *(.itcm)
                *(".itcm.*")

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function. */
#include <snippets-itcm-section.ld>

                __itcm_end = .;
        } GROUP_LINK_IN(ITCM AT> ROMABLE_REGION)

        __itcm_size = __itcm_end - __itcm_start;
        __itcm_load_start = LOADADDR(_ITCM_SECTION_NAME);

GROUP_END(ITCM)
#endif

#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay)
GROUP_START(DTCM)

        SECTION_PROLOGUE(_DTCM_BSS_SECTION_NAME, (NOLOAD),SUBALIGN(4))
        {
                __dtcm_start = .;
                __dtcm_bss_start = .;
                *(.dtcm_bss)
                *(".dtcm_bss.*")
                __dtcm_bss_end = .;
        } GROUP_LINK_IN(DTCM)

        SECTION_PROLOGUE(_DTCM_NOINIT_SECTION_NAME, (NOLOAD),SUBALIGN(4))
        {
                __dtcm_noinit_start = .;
                *(.dtcm_noinit)
                *(".dtcm_noinit.*")
                __dtcm_noinit_end = .;
        } GROUP_LINK_IN(DTCM)

        SECTION_PROLOGUE(_DTCM_DATA_SECTION_NAME,,SUBALIGN(4))
        {
                __dtcm_data_start = .;
                *(.dtcm_data)
                *(".dtcm_data.*")

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function. */
#include <snippets-dtcm-section.ld>

                __dtcm_data_end = .;
        } GROUP_LINK_IN(DTCM AT> ROMABLE_REGION)

        __dtcm_end = .;

        __dtcm_data_load_start = LOADADDR(_DTCM_DATA_SECTION_NAME);

GROUP_END(DTCM)
#endif

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-sections.ld>

#include <zephyr/linker/debug-sections.ld>

    /DISCARD/ : { *(.note.GNU-stack) }

    SECTION_PROLOGUE(.ARM.attributes, 0,)
        {
        KEEP(*(.ARM.attributes))
        KEEP(*(.gnu.attributes))
        }

/* Output section descriptions are needed for these sections to suppress
 * warnings when "--orphan-handling=warn" is set for lld.
 */
#if defined(CONFIG_LLVM_USE_LLD)
    SECTION_PROLOGUE(.symtab, 0,) { *(.symtab) }
    SECTION_PROLOGUE(.strtab, 0,) { *(.strtab) }
    SECTION_PROLOGUE(.shstrtab, 0,) { *(.shstrtab) }
#endif

    /* Sections generated from 'zephyr,memory-region' nodes */
    LINKER_DT_SECTIONS()

/* Must be last in romable region */
SECTION_PROLOGUE(.last_section,,)
{
  /* .last_section contains a fixed word to ensure location counter and actual
   * rom region data usage match when CONFIG_LINKER_LAST_SECTION_ID=y. */
  KEEP(*(.last_section))
} GROUP_LINK_IN(ROMABLE_REGION)