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


# ==============================================================================
# ХИРУРГИЧЕСКАЯ РЕЛОКАЦИЯ СИСТЕМЫ И 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()