Загрузка данных
# ==============================================================================
# ХИРУРГИЧЕСКАЯ РЕЛОКАЦИЯ СИСТЕМЫ И PJSIP В ИНТЕРФЕЙСЫ FLEXRAM (ITCM / DTCM)
# ==============================================================================
if (CONFIG_CODE_DATA_RELOCATION)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 1: Аудио-конвертация, ресемплинг и обработка звука (ВЫСШИЙ)
# Исключает задержки ядра при расчете математики аудио-потока в реальном времени.
# --------------------------------------------------------------------------
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia-audiodev/zephyr_portaudio/audio_utils.c ITCM_TEXT)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 2: Низкоуровневая шина прерываний и Векторная таблица
# Убирает джиттер на аппаратном уровне. Процессор мгновенно реагирует на события.
# --------------------------------------------------------------------------
zephyr_code_relocate(cpu_flash_vt ITCM_TEXT)
zephyr_code_relocate(arch/arm/core/cortex_m ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(arch/arm/core/cortex_m/mpu ITCM_TEXT DTCM_DATA)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 3: Драйверы аудио-тракта (SAI) и Прямого доступа к памяти (eDMA)
# Предотвращает заикания (dropouts) при переключении Ping-Pong буферов звука.
# --------------------------------------------------------------------------
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia-audiodev/zephyr_portaudio/zephyr_i2s_dev.c ITCM_TEXT)
zephyr_code_relocate(drivers/i2s ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(drivers/dma ITCM_TEXT DTCM_DATA)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 4: Ядро планировщика Zephyr, примитивы синхронизации и POSIX-стек
# Делает операции переключения потоков (pthread) атомарными и быстрыми.
# --------------------------------------------------------------------------
zephyr_code_relocate(kernel ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(lib/posix ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(drivers/timer/cortex_m_systick.c ITCM_TEXT)
zephyr_code_relocate(kernel/timeout.c ITCM_TEXT)
zephyr_code_relocate(kernel/timeslicing.c ITCM_TEXT)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 5: Базовый кодек, RTP-парсер и медиа-потоки PJSIP
# Ускоряет разбор и упаковку голосовых RTP-пакетов перед отправкой в сеть.
# --------------------------------------------------------------------------
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/stream.c ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/rtp.c ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/endpoint.c ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/g711.c ITCM_TEXT)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 6: Криптография реального времени (Шифрование SRTP-потока)
# Освобождает конвейер процессора от тяжелых вычислений AES/SHA над фреймами.
# --------------------------------------------------------------------------
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/../modules/crypto/mbedtls/library/aes.c ITCM_TEXT)
zephyr_code_relocate(FILES ${ZEPHYR_BASE}/../modules/crypto/mbedtls/library/sha256.c ITCM_TEXT)
zephyr_code_relocate(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pjmedia/src/pjmedia/transport_srtp.c ITCM_TEXT)
# --------------------------------------------------------------------------
# ПРИОРИТЕТ 7: Драйвер сетевой карты Ethernet (ENET) и менеджер буферов пакетов
# Минимизирует время нахождения сетевого пакета на физическом уровне абстракции.
# Отключать в первую очередь, если заполнится лимит ITCM в 160 КБ!
# --------------------------------------------------------------------------
zephyr_code_relocate(drivers/ethernet ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(subsys/net/ip/net_buf ITCM_TEXT DTCM_DATA)
zephyr_code_relocate(lib/os/fdtable.c ITCM_TEXT)
endif()