# ------------------------------------------------------------------------------
# ПРИОРИТЕТ 3: ИСПРАВЛЕННЫЙ ПЕРЕНОС КОДА ВАШЕГО ПРИЛОЖЕНИЯ (zephyr_pjsua, lcd и др.)
# ------------------------------------------------------------------------------
# 1. Находим вообще ВСЕ файлы .c приложения, включая те, что лежат в корне папки
file(GLOB_RECURSE APP_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
)
if(APP_SOURCES)
# Переносим все исходники приложения (включая zephyr_pjsua.c с функцией main) в RAM
zephyr_code_relocate(FILES ${APP_SOURCES} LOCATION RAM_TEXT)
endif()
# 2. Насильно переносим весь скомпилированный архив приложения (libapp.a) целиком
zephyr_code_relocate(LIBRARIES app LOCATION RAM_TEXT)
# ------------------------------------------------------------------------------
# ПРИОРИТЕТ 4: Перенос ядра Zephyr, МЕНЕДЖЕРА КУЧИ и сетевого стека в RAM
# ------------------------------------------------------------------------------
# 1. Системная математика компилятора GCC и функции деления/float
zephyr_code_relocate(LIBRARIES gcc LOCATION RAM_TEXT)
# 2. Вся тригонометрия и логарифмы (включая sin, scalbn, cos, log, pow)
zephyr_code_relocate(LIBRARIES m LOCATION RAM_TEXT)
# 3. Полный перенос стандартной Си-библиотеки для подстраховки picolibc/newlib
zephyr_code_relocate(LIBRARIES lib__libc__common LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES lib__libc__picolibc LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES c LOCATION RAM_TEXT)
# 4. Сетевой стек Zephyr (Sockets, IPv4, IPv6, TCP/UDP, ARP, Буферы)
zephyr_code_relocate(LIBRARIES subsys__net LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES subsys__net__ip LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES subsys__net__l2__ethernet LOCATION RAM_TEXT)
# 5. Слой совместимости POSIX (потоки pthread, опрос сокетов select)
zephyr_code_relocate(LIBRARIES lib__posix__options LOCATION RAM_TEXT)
# 6. Планировщик ОС, а также КРИТИЧЕСКИ ВАЖНЫЙ менеджер кучи (heap.c) со скриншота
zephyr_code_relocate(LIBRARIES kernel LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES zephyr LOCATION RAM_TEXT)
# Принудительно забираем саму общую системную библиотеку Zephyr, куда линкуется heap.c.obj:
zephyr_code_relocate(LIBRARIES libzephyr LOCATION RAM_TEXT)
# 7. Аппаратные драйверы NXP HAL (I2C, Ethernet, fsl_ocotp)
zephyr_code_relocate(LIBRARIES modules__hal_nxp LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARIES drivers__i2c LOCATION RAM_TEXT)