/* ====================================================================
* 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