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


/* ====================================================================
 * CUSTOM ARCHITECTURAL LINKER WRAPPER FOR MONOLITHIC SDRAM EXECUTION
 * ====================================================================
 * Этот скрипт принудительно раздваивает адреса:
 * VMA (выполнение) остается в ваших регионах SDRAM (0x80... / 0x8040...)
 * LMA (загрузка для программатора) жестко уходит во Flash (0x60000000).
 */

/* 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. ЖЕСТКОЕ РАЗДВОЕНИЕ АДРЕСОВ (VMA -> SDRAM, LMA -> PHYS_FLASH):
      Мы переопределяем макросы размещения секций Zephyr.
      Вариативный синтаксис (__VA_ARGS__) гарантирует, что препроцессор 
      чисто обработает вызовы и с одним, и с двумя аргументами, 
      полностью исключая появление "syntax error" на строке 155. */

#undef GROUP_LINK_IN
#define GROUP_LINK_IN(vma, ...) > vma AT> PHYS_FLASH

#undef GROUP_DATA_LINK_IN
#define GROUP_DATA_LINK_IN(vma, ...) > vma AT> PHYS_FLASH

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

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