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


vovan@localhost:~/ZEPHYR_RTOS/zephyrproject/zephyr/build_rt1024/build_pjsip/zephyr> cat .config | grep RELOCATION
# CONFIG_CODE_DATA_RELOCATION_SRAM is not set
CONFIG_CODE_DATA_RELOCATION=y
# CONFIG_ROMSTART_RELOCATION_ROM is not set
CONFIG_ARCH_HAS_VECTOR_TABLE_RELOCATION=y
CONFIG_ARCH_HAS_CODE_DATA_RELOCATION=y

#FOR IMXRT1024 ONLY!!!!
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia-audiodev/zephyr_portaudio/audio_utils.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia-audiodev/zephyr_portaudio/zephyr_i2s_dev.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/drivers/i2s/i2s_mcux_sai.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/drivers/dma/dma_mcux_edma.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/stream.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/rtp.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/endpoint.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/g711.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${ZEPHYR_BASE}/../modules/crypto/mbedtls/library/aes.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/../modules/crypto/mbedtls/library/sha256.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/transport_srtp.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${ZEPHYR_BASE}/kernel/timeout.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/kernel/timeslicing.c LOCATION ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/drivers/timer/cortex_m_systick.c LOCATION ITCM_TEXT)

zephyr_code_relocate(FILES ${ZEPHYR_BASE}/drivers/ethernet/eth_nxp_enet.c LOCATION ITCM_TEXT)


get_target_property(PJSIP_CONFIGURED_SOURCES pjsip SOURCES)


# 2. Массово отправляем во внешнюю RAM только этот отфильтрованный список
if(PJSIP_CONFIGURED_SOURCES)
    zephyr_code_relocate(FILES ${PJSIP_CONFIGURED_SOURCES} LOCATION RAM_TEXT)
endif()

# 2. Насильно переносим весь скомпилированный архив приложения (libapp.a) целиком
zephyr_code_relocate(LIBRARY app LOCATION RAM_TEXT)


# ПРИОРИТЕТ 4: Перенос ядра Zephyr, МЕНЕДЖЕРА КУЧИ и сетевого стека в RAM

# 3. Полный перенос стандартной Си-библиотеки для подстраховки picolibc/newlib
zephyr_code_relocate(LIBRARY lib__libc__common LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARY lib__libc__picolibc LOCATION RAM_TEXT)


# 4. Сетевой стек Zephyr (Sockets, IPv4, IPv6, TCP/UDP, ARP, Буферы)
zephyr_code_relocate(LIBRARY subsys__net LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARY subsys__net__ip LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARY subsys__net__l2__ethernet LOCATION RAM_TEXT)
zephyr_code_relocate(LIBRARY lib__net_buf LOCATION RAM_TEXT)

#zephyr_code_relocate(LIBRARY lib__os__zvfs LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY subsys__fs LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY subsys__random LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY subsys__usb__device_next LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY subsys__input LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY subsys__net__lib__config LOCATION RAM_TEXT)

#zephyr_code_relocate(LIBRARY drivers__disk LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__usb__udc LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__audio LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__clock_control LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__console LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__entropy LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__ethernet LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__gpio LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__i2s LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__input LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__mdio LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__pinctrl LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__serial LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY modules__littlefs LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY mbedTLSBase LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY pjproject LOCATION RAM_TEXT)

# 5. Слой совместимости POSIX (потоки pthread, опрос сокетов select)
#zephyr_code_relocate(LIBRARY lib__posix__options LOCATION RAM_TEXT)

# 6. Планировщик ОС, а также КРИТИЧЕСКИ ВАЖНЫЙ менеджер кучи (heap.c) со скриншота
#zephyr_code_relocate(LIBRARY kernel LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY zephyr LOCATION RAM_TEXT)
# Принудительно забираем саму общую системную библиотеку Zephyr, куда линкуется heap.c.obj:
#zephyr_code_relocate(LIBRARY libzephyr LOCATION RAM_TEXT)

# 7. Аппаратные драйверы NXP HAL (I2C, Ethernet, fsl_ocotp)
#zephyr_code_relocate(LIBRARY modules__hal_nxp LOCATION RAM_TEXT)
#zephyr_code_relocate(LIBRARY drivers__i2c LOCATION RAM_TEXT)