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


/* ====================================================================
 * CUSTOM ARCHITECTURAL LINKER WRAPPER FOR MONOLITHIC SDRAM EXECUTION
 * ====================================================================
 * Скрипт перенаправляет LMA-адреса на уровне алиасов самого линкера GNU LD.
 * Это гарантирует отсутствие ошибок препроцессора "syntax error".
 */

/* 1. Подключаем базовые заголовочные макросы архитектуры Zephyr */
#include <zephyr/linker/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. КЛЮЧЕВОЙ АЛИАС ДЛЯ СДВИГА LMA ПОД ВАШУ DTS РАЗМЕТКУ:
      Так как в вашем DTS указано zephyr,flash = &RAM, оригинальный скрипт Zephyr 
      направляет загрузку (LMA) в регион с именем "RAM".
      Мы говорим GNU Линкеру: если секция требует загрузки в RAM, принудительно 
      смести этот физический поток в PHYS_FLASH (на адрес 0x60000000). 
      При этом адрес выполнения (VMA) останется в SDRAM! */
REGION_ALIAS("RAM", PHYS_FLASH);

/* 5. Включаем оригинальный мастер-скрипт Zephyr для архитектуры ARM Cortex-M.
      Он развернется в своем стандартном, родном синтаксисе без ошибок препроцессора. */
#include <zephyr/arch/arm/cortex_m/scripts/linker.ld>

/* Финальная страховка текстовых макросов */
#undef ROMABLE_REGION
#define ROMABLE_REGION PHYS_FLASH