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


/* ====================================================================
 * CUSTOM ARCHITECTURAL LINKER WRAPPER FOR MONOLITHIC SDRAM EXECUTION
 * ====================================================================
 */

/* 1. Подключаем базовые заголовочные макросы Zephyr */
#include <zephyr/sections.h>
#include <zephyr/devicetree.h>
#include <zephyr/linker/devicetree_regions.h>
#include <zephyr/linker/linker-defs.h>
#include <zephyr/linker/linker-tool.h>

/* 2. Объявляем физическую память Flash для хранения LMA */
MEMORY
{
    PHYS_FLASH (rx) : ORIGIN = 0x60000000, LENGTH = 0x400000 /* 4MB встроенной Flash RT1024 */
}

/* 3. Переопределяем базовые регионы для Zephyr */
#undef ROMABLE_REGION
#define ROMABLE_REGION PHYS_FLASH

#undef RAMABLE_REGION
#define RAMABLE_REGION RAM

/* 4. УМНАЯ ЛОГИКА РАЗДЕЛЕНИЯ ПАМЯТИ:
      Автоматически дописываем AT> PHYS_FLASH только для исполняемой памяти SDRAM.
      Для ITCM, DTCM, а также для секций отладки (которые линкер может помечать 
      числом 0 или дефолтным макросом) мы оставляем стандартное поведение, 
      чтобы не переполнить 4 МБ Flash-памяти дебаг-символами. */

#define _CHOOSE_LINK_IN_RAM          > RAM AT> PHYS_FLASH
#define _CHOOSE_LINK_IN_sdram_code   > sdram_code AT> PHYS_FLASH
#define _CHOOSE_LINK_IN_sdram_data   > sdram_data AT> PHYS_FLASH
#define _CHOOSE_LINK_IN_ITCM         > ITCM
#define _CHOOSE_LINK_IN_DTCM         > DTCM
#define _CHOOSE_LINK_IN_IDT_LIST     > IDT_LIST

/* Безопасный сброс для секций, идущих без указания региона (число 0) 
   или секций атрибутов компилятора и дебага */
#define _CHOOSE_LINK_IN_0            
#define _CHOOSE_LINK_IN_                 

/* Основной перехватчик макроса GROUP_LINK_IN(vma) */
#undef GROUP_LINK_IN
#define GROUP_LINK_IN(vma) _CHOOSE_LINK_IN_##vma

/* Основной перехватчик макроса GROUP_DATA_LINK_IN(vma, lma) */
#undef GROUP_DATA_LINK_IN
#define GROUP_DATA_LINK_IN(vma, lma) _CHOOSE_LINK_IN_##vma

/* 5. Включаем оригинальный мастер-скрипт Zephyr */
#include <zephyr/arch/arm/cortex_m/scripts/linker.ld>