lift_indicator_suite/sdk/CMakeLists.txt

186 lines
9.3 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sdk/CMakeLists.txt Драйверы NXP MCUXpresso SDK для MIMXRT1052CVJ5B Vendored:
# стабильная версия, не обновляется
#
# Добавление нового драйвера: см. docs/SDK_DRIVERS.md
if(BUILD_TESTS_HOST)
return()
endif()
# -----------------------------------------------------------------------------
# Макрос для создания SDK драйвер-таргетов Использование: add_sdk_driver(ИМЯ
# ФАЙЛ_ИСХОДНИКА) Создаёт таргет sdk_ИМЯ с автоматическим подключением
# sdk_device
# -----------------------------------------------------------------------------
macro(add_sdk_driver DRIVER_NAME DRIVER_SOURCE)
add_library(sdk_${DRIVER_NAME} STATIC
devices/MIMXRT1052/drivers/${DRIVER_SOURCE})
target_include_directories(sdk_${DRIVER_NAME}
PUBLIC devices/MIMXRT1052/drivers)
target_link_libraries(sdk_${DRIVER_NAME} PUBLIC sdk_device)
endmacro()
# -----------------------------------------------------------------------------
# Базовый таргет — нужен всегда, подключается транзитивно через bsp_board
# -----------------------------------------------------------------------------
add_library(sdk_device STATIC devices/MIMXRT1052/system_MIMXRT1052.c)
target_include_directories(
sdk_device PUBLIC devices/MIMXRT1052 devices/MIMXRT1052/drivers
devices/MIMXRT1052/periph CMSIS/Core/Include/)
target_compile_definitions(sdk_device PUBLIC CPU_MIMXRT1052CVJ5B)
# -----------------------------------------------------------------------------
# Утилиты — базовые вещи, нужны большинству драйверов
# -----------------------------------------------------------------------------
add_library(sdk_common STATIC devices/MIMXRT1052/drivers/fsl_common.c
devices/MIMXRT1052/drivers/fsl_common_arm.c)
target_include_directories(sdk_common PUBLIC devices/MIMXRT1052/drivers)
target_compile_definitions(
sdk_common PUBLIC SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY=600000000U
SDK_DELAY_USE_DWT)
target_link_libraries(sdk_common PUBLIC sdk_device)
add_sdk_driver(clock fsl_clock.c)
# clock зависит от common
target_link_libraries(sdk_clock PUBLIC sdk_common)
# -----------------------------------------------------------------------------
# Драйверы периферии
# -----------------------------------------------------------------------------
add_sdk_driver(gpio fsl_gpio.c)
add_sdk_driver(lpuart fsl_lpuart.c)
add_sdk_driver(flexcan fsl_flexcan.c)
add_sdk_driver(usdhc fsl_usdhc.c)
add_sdk_driver(lpi2c fsl_lpi2c.c)
add_sdk_driver(pwm fsl_pwm.c)
add_sdk_driver(adc fsl_adc.c)
add_sdk_driver(elcdif fsl_elcdif.c)
add_sdk_driver(pxp fsl_pxp.c)
add_sdk_driver(cache fsl_cache.c)
add_sdk_driver(sai fsl_sai.c)
add_sdk_driver(sai_edma fsl_sai_edma.c)
add_sdk_driver(edma fsl_edma.c)
add_sdk_driver(dmamux fsl_dmamux.c)
add_sdk_driver(xbara fsl_xbara.c)
add_sdk_driver(wdog fsl_wdog.c)
add_sdk_driver(src fsl_src.c)
# Драйверы которые зависят от clock
target_link_libraries(sdk_lpuart PUBLIC sdk_clock)
target_link_libraries(sdk_flexcan PUBLIC sdk_clock)
target_link_libraries(sdk_usdhc PUBLIC sdk_clock)
target_link_libraries(sdk_lpi2c PUBLIC sdk_clock)
target_link_libraries(sdk_pwm PUBLIC sdk_clock)
target_link_libraries(sdk_adc PUBLIC sdk_clock)
target_link_libraries(sdk_elcdif PUBLIC sdk_clock)
target_link_libraries(sdk_pxp PUBLIC sdk_clock) # PXP_Init → CLOCK_EnableClock(kCLOCK_Pxp)
target_link_libraries(sdk_sai PUBLIC sdk_clock)
target_link_libraries(sdk_sai_edma PUBLIC sdk_sai sdk_edma)
target_link_libraries(sdk_edma PUBLIC sdk_common)
target_link_libraries(sdk_xbara PUBLIC sdk_clock)
# -----------------------------------------------------------------------------
# SEMC и FlexSPI — инициализируются через DCD и FDCB, драйверы нужны только если
# обращаешься к ним явно из кода
# -----------------------------------------------------------------------------
add_sdk_driver(semc fsl_semc.c)
add_sdk_driver(flexspi fsl_flexspi.c)
target_link_libraries(sdk_semc PUBLIC sdk_clock)
target_link_libraries(sdk_flexspi PUBLIC sdk_clock)
# -----------------------------------------------------------------------------
# USB middleware — ручные таргеты (middleware/usb/, не drivers/)
# -----------------------------------------------------------------------------
# --- sdk_osa_bm: OS Abstraction Layer (bare-metal) ---
# Объявлен первым — от него зависят USB таргеты через fsl_os_abstraction.h
add_library(sdk_osa_bm STATIC components/osa/fsl_os_abstraction_bm.c
components/lists/fsl_component_generic_list.c)
target_include_directories(sdk_osa_bm PUBLIC components/osa components/lists)
target_link_libraries(sdk_osa_bm PUBLIC sdk_device sdk_common sdk_usb_config)
target_compile_options(sdk_osa_bm PRIVATE -w)
# --- sdk_usb_common: заголовки USB стека ---
add_library(sdk_usb_common INTERFACE)
target_include_directories(sdk_usb_common SYSTEM
INTERFACE middleware/usb/include)
# --- sdk_usb_config: application-specific конфиги ---
add_library(sdk_usb_config INTERFACE)
target_include_directories(sdk_usb_config SYSTEM
INTERFACE ${CMAKE_SOURCE_DIR}/bsp/usb_cdc/src)
# --- sdk_usb_device_ehci: EHCI контроллер + DCI абстракция ---
add_library(sdk_usb_device_ehci STATIC middleware/usb/device/usb_device_dci.c
middleware/usb/device/usb_device_ehci.c)
target_include_directories(sdk_usb_device_ehci PUBLIC middleware/usb/device)
target_link_libraries(
sdk_usb_device_ehci PUBLIC sdk_device sdk_common sdk_usb_common
sdk_usb_config sdk_osa_bm)
target_compile_options(sdk_usb_device_ehci PRIVATE -w)
# --- sdk_usb_phy: USB PHY ---
add_library(sdk_usb_phy STATIC middleware/usb/phy/usb_phy.c)
target_include_directories(sdk_usb_phy PUBLIC middleware/usb/phy)
target_link_libraries(sdk_usb_phy PUBLIC sdk_device sdk_common sdk_usb_common
sdk_usb_config sdk_osa_bm)
target_compile_options(sdk_usb_phy PRIVATE -w)
# =============================================================================
# SDMMC middleware — SD-карта через USDHC, non-blocking (interrupt-driven).
#
# НЕ зависит от ffconf.h → безопасно компилировать один раз как общую
# статическую библиотеку. Оба бинарника (firmware_test, tft_app) линкуются к
# одному и тому же sdk_sdmmc_sd.
#
# =============================================================================
add_library(
sdk_sdmmc_sd STATIC
middleware/sdmmc/sd/fsl_sd.c middleware/sdmmc/common/fsl_sdmmc_common.c
middleware/sdmmc/osa/fsl_sdmmc_osa.c
middleware/sdmmc/host/usdhc/non_blocking/fsl_sdmmc_host.c)
target_include_directories(
sdk_sdmmc_sd
PUBLIC middleware/sdmmc/sd middleware/sdmmc/common middleware/sdmmc/osa
middleware/sdmmc/host/usdhc/non_blocking middleware/sdmmc/host/usdhc)
target_link_libraries(sdk_sdmmc_sd PUBLIC sdk_usdhc sdk_osa_bm sdk_cache
sdk_common)
# Подавляем предупреждения SDK — они нам не принадлежат.
target_compile_options(sdk_sdmmc_sd PRIVATE -w)
# =============================================================================
# FatFS — только заголовки и переменные с путями к исходникам.
#
# ff.c и fsl_sd_disk.c НЕ компилируются здесь, потому что оба включают ff.h →
# ffconf.h, который разный у firmware_test (bare-metal) и tft_app (FreeRTOS).
# Каждый бинарник сам добавляет их в свои sources.
#
# Использование в CMakeLists.txt бинарника:
# target_link_libraries(my_fatfs_target PRIVATE sdk_fatfs_headers)
# target_sources(my_fatfs_target PRIVATE ${SDK_FATFS_FF_SRC}
# ${SDK_FATFS_SD_DISK_SRC})
# =============================================================================
add_library(sdk_fatfs_headers INTERFACE)
target_include_directories(
sdk_fatfs_headers INTERFACE middleware/fatfs/source
middleware/fatfs/source/fsl_sd_disk)
# Транзитивно тащим SDMMC: fsl_sd_disk.c вызывает SD_*() из sdk_sdmmc_sd.
target_link_libraries(sdk_fatfs_headers INTERFACE sdk_sdmmc_sd)
# Пути к исходникам, которые должны компилироваться per-binary. CACHE INTERNAL —
# видны во всём дереве, не переопределяются.
set(SDK_FATFS_FF_SRC
${CMAKE_CURRENT_SOURCE_DIR}/middleware/fatfs/source/ff.c
CACHE INTERNAL
"FatFS: путь к ff.c (компилировать per-binary с нужным ffconf.h)")
set(SDK_FATFS_SD_DISK_SRC
${CMAKE_CURRENT_SOURCE_DIR}/middleware/fatfs/source/fsl_sd_disk/fsl_sd_disk.c
CACHE
INTERNAL
"FatFS: путь к fsl_sd_disk.c (компилировать per-binary с нужным ffconf.h)"
)