Просмотр исходного кода

ChibiOS 18.2.x support.

With module autodetection from chconf.h/halconf.h
Konstantin Oblaukhov 7 лет назад
Родитель
Сommit
95ce14e922

+ 106 - 0
cmake/ChibiOS/18.2/ChibiOS.cmake

@@ -0,0 +1,106 @@
+IF(NOT ChibiOS_FIND_COMPONENTS)
+    SET(ChibiOS_FIND_COMPONENTS nil hal)
+    MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
+ENDIF()
+
+SET (CHIBIOS_COMPONENTS nil rt hal)
+
+LIST(FIND ChibiOS_FIND_COMPONENTS nil ChibiOS_FIND_COMPONENTS_nil)
+LIST(FIND ChibiOS_FIND_COMPONENTS rt ChibiOS_FIND_COMPONENTS_rt)
+LIST(FIND ChibiOS_FIND_COMPONENTS hal ChibiOS_FIND_COMPONENTS_hal)
+
+IF((${ChibiOS_FIND_COMPONENTS_nil} LESS 0) AND (${ChibiOS_FIND_COMPONENTS_rt} LESS 0))
+  MESSAGE(STATUS "No kernel component selected, using Nil kernel")
+  LIST(APPEND ChibiOS_FIND_COMPONENTS nil)
+  SET(CHIBIOS_KERNEL nil)
+ELSE()
+  IF((NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0)) AND (NOT (${ChibiOS_FIND_COMPONENTS_rt} LESS 0)))
+    MESSAGE(FATAL_ERROR "Cannot use RT and Nil kernel at the same time")
+  ENDIF()
+  IF(NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0))
+    SET(CHIBIOS_KERNEL nil)
+  ELSE()
+    SET(CHIBIOS_KERNEL rt)
+  ENDIF()
+ENDIF()
+
+IF(${ChibiOS_FIND_COMPONENTS_hal} LESS 0)
+  LIST(APPEND ChibiOS_FIND_COMPONENTS hal)
+ENDIF()
+
+IF(NOT CHIBIOS_HALCONF_FILE)
+    MESSAGE(STATUS "No ChibiOS halconf.h specified, trying to find it...")
+    FILE(GLOB CHIBIOS_HALCONF_FILE "halconf.h")
+    IF (CHIBIOS_HALCONF_FILE STREQUAL "")
+        MESSAGE(FATAL_ERROR "Cannot find halconf.h, please specify it using CHIBIOS_HALCONF_FILE variable")
+    ELSE()
+        MESSAGE(STATUS "Found halconf.h: ${CHIBIOS_HALCONF_FILE}")
+    ENDIF()
+ENDIF()
+    
+IF(NOT CHIBIOS_CHCONF_FILE)
+    MESSAGE(STATUS "No ChibiOS chconf.h specified, trying to find it...")
+    FILE(GLOB CHIBIOS_CHCONF_FILE "chconf.h")
+    IF (CHIBIOS_CHCONF_FILE STREQUAL "")
+        MESSAGE(FATAL_ERROR "Cannot find chconf.h, please specify it using CHIBIOS_CHCONF_FILE variable")
+    ELSE()
+        MESSAGE(STATUS "Found chconf.h: ${CHIBIOS_CHCONF_FILE}")
+    ENDIF()
+ENDIF()
+
+FILE(STRINGS ${CHIBIOS_CHCONF_FILE} CHCONF_LINES REGEX "#define CH_CFG_USE_([a-zA-Z_0-9]+) +TRUE")
+FOREACH(LINE ${CHCONF_LINES})
+    STRING(REGEX REPLACE "#define CH_CFG_USE_([a-zA-Z_0-9]+) +TRUE" "\\1" COMP ${LINE})
+    LIST(APPEND CHIBIOS_RTOS_COMPONENTS ${COMP})
+ENDFOREACH()
+
+MESSAGE(STATUS "Detected ChibiOS RTOS components:")
+FOREACH(COMP ${CHIBIOS_RTOS_COMPONENTS})
+    MESSAGE(STATUS "\t${COMP}")
+ENDFOREACH()
+
+FILE(STRINGS ${CHIBIOS_HALCONF_FILE} HALCONF_LINES REGEX "#define HAL_USE_([a-zA-Z_0-9]+) +TRUE")
+FOREACH(LINE ${HALCONF_LINES})
+    STRING(REGEX REPLACE "#define HAL_USE_([a-zA-Z_0-9]+) +TRUE" "\\1" COMP ${LINE})
+    LIST(APPEND CHIBIOS_HAL_COMPONENTS ${COMP})
+ENDFOREACH()
+
+MESSAGE(STATUS "Detected ChibiOS HAL components:")
+FOREACH(COMP ${CHIBIOS_HAL_COMPONENTS})
+    MESSAGE(STATUS "\t${COMP}")
+ENDFOREACH()
+
+INCLUDE(ChibiOS/18.2/ChibiOS_LD)
+INCLUDE(ChibiOS/18.2/ChibiOS_RTOS)
+INCLUDE(ChibiOS/18.2/ChibiOS_HAL)
+
+MESSAGE(STATUS "RTOS sources: ")
+FOREACH(SOURCE ${CHIBIOS_SOURCES_${CHIBIOS_KERNEL}})
+    MESSAGE(STATUS "\t${SOURCE}")
+ENDFOREACH()
+
+MESSAGE(STATUS "HAL sources: ")
+FOREACH(SOURCE ${CHIBIOS_SOURCES_hal})
+    MESSAGE(STATUS "\t${SOURCE}")
+ENDFOREACH()
+
+IF(NOT ChibiOS_LINKER_SCRIPT)
+    MESSAGE(STATUS "ChibiOS doesn't have linker script for your chip, please specify it directly using ChibiOS_LINKER_SCRIPT variable.")
+ENDIF()
+
+FOREACH(comp ${ChibiOS_FIND_COMPONENTS})
+    LIST(FIND CHIBIOS_COMPONENTS ${comp} INDEX)
+    IF(INDEX EQUAL -1)
+        MESSAGE(FATAL_ERROR "Unknown ChibiOS component: ${comp}\nSupported ChibiOS components: ${CHIBIOS_COMPONENTS}")
+    ENDIF()
+    FOREACH(source ${CHIBIOS_SOURCES_${comp}})
+        FIND_FILE(CHIBIOS_${comp}_${source} NAMES ${source} PATHS ${CHIBIOS_ROOT} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+        LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_${source}})
+    ENDFOREACH()
+    FOREACH(incl ${CHIBIOS_INCLUDES_${comp}})
+        LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_ROOT}/${incl})
+    ENDFOREACH()
+ENDFOREACH()
+
+
+

+ 490 - 0
cmake/ChibiOS/18.2/ChibiOS_HAL.cmake

@@ -0,0 +1,490 @@
+SET (CHIBIOS_SOURCES_hal
+    os/hal/src/hal.c
+    os/hal/src/hal_st.c
+    os/hal/src/hal_buffers.c
+    os/hal/src/hal_queues.c
+    os/hal/src/hal_mmcsd.c
+    os/hal/ports/common/ARMCMx/nvic.c
+)
+
+SET (CHIBIOS_INCLUDES_hal
+    os/hal/include
+    os/hal/ports/common/ARMCMx
+)
+
+SET (CHIBIOS_SOURCES_hal_nil
+    os/hal/osal/nil/osal.c
+)
+
+SET (CHIBIOS_SOURCES_hal_rt
+    os/hal/osal/rt/osal.c
+)
+
+SET (CHIBIOS_INCLUDES_hal_nil
+    os/hal/osal/nil
+)
+
+SET (CHIBIOS_INCLUDES_hal_rt
+    os/hal/osal/rt
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC         os/hal/src/hal_adc.c)
+SET (CHIBIOS_SOURCES_hal_CAN         os/hal/src/hal_can.c)
+SET (CHIBIOS_SOURCES_hal_CRY         os/hal/src/hal_crypto.c)
+SET (CHIBIOS_SOURCES_hal_DAC         os/hal/src/hal_dac.c)
+SET (CHIBIOS_SOURCES_hal_EXT         os/hal/src/hal_ext.c)
+SET (CHIBIOS_SOURCES_hal_GPT         os/hal/src/hal_gpt.c)
+SET (CHIBIOS_SOURCES_hal_I2C         os/hal/src/hal_i2c.c)
+SET (CHIBIOS_SOURCES_hal_I2S         os/hal/src/hal_i2s.c)
+SET (CHIBIOS_SOURCES_hal_ICU         os/hal/src/hal_icu.c)
+SET (CHIBIOS_SOURCES_hal_MAC         os/hal/src/hal_mac.c)
+SET (CHIBIOS_SOURCES_hal_MMC_SPI     os/hal/src/hal_mmc_spi.c)
+SET (CHIBIOS_SOURCES_hal_PAL         os/hal/src/hal_pal.c)
+SET (CHIBIOS_SOURCES_hal_PWM         os/hal/src/hal_pwm.c)
+SET (CHIBIOS_SOURCES_hal_QSPI        os/hal/src/hal_qspi.c)
+SET (CHIBIOS_SOURCES_hal_RTC         os/hal/src/hal_rtc.c)
+SET (CHIBIOS_SOURCES_hal_SDC         os/hal/src/hal_sdc.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL      os/hal/src/hal_serial.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_USB  os/hal/src/hal_serial_usb.c)
+SET (CHIBIOS_SOURCES_hal_SPI         os/hal/src/hal_spi.c)
+SET (CHIBIOS_SOURCES_hal_UART        os/hal/src/hal_uart.c)
+SET (CHIBIOS_SOURCES_hal_USB         os/hal/src/hal_usb.c)
+SET (CHIBIOS_SOURCES_hal_WDG         os/hal/src/hal_wdg.c)
+
+
+
+SET (CHIBIOS_INCLUDES_hal_F0
+    os/hal/ports/STM32/STM32F0xx
+    os/hal/ports/STM32/LLD/DMAv1
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F0
+    os/hal/ports/STM32/STM32F0xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F0xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+SET (CHIBIOS_SOURCES_hal_ADC_F0     os/hal/ports/STM32/LLD/ADCv1/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F0     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F0     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F0     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F0     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F0     os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F0     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F0     os/hal/ports/STM32/LLD/SPIv2/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F0     os/hal/ports/STM32/LLD/SPIv2/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F0     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F0     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F0     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F0  os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F0    os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F0     os/hal/ports/STM32/LLD/USBv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F0     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F0    os/hal/ports/STM32/LLD/ADCv1)
+SET (CHIBIOS_INCLUDES_hal_CAN_F0    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F0    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F0    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F0    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_F0    os/hal/ports/STM32/LLD/I2Cv2)
+SET (CHIBIOS_INCLUDES_hal_RTC_F0    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_F0    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SPI_F0    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_GPT_F0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F0 os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_UART_F0   os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_USB_F0    os/hal/ports/STM32/LLD/USBv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_F0    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+SET (CHIBIOS_INCLUDES_hal_F1
+    os/hal/ports/STM32/STM32F1xx
+    os/hal/ports/STM32/LLD/DMAv1
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F1
+    os/hal/ports/STM32/STM32F1xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F1xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+SET (CHIBIOS_SOURCES_hal_ADC_F1     os/hal/ports/STM32/STM32F1xx/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F1     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F1     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F1     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F1     os/hal/ports/STM32/LLD/GPIOv1/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F1     os/hal/ports/STM32/LLD/I2Cv1/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F1     os/hal/ports/STM32/LLD/RTCv1/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F1     os/hal/ports/STM32/LLD/SPIv1/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F1     os/hal/ports/STM32/LLD/SPIv1/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F1     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F1     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F1     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F1  os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F1    os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F1     os/hal/ports/STM32/LLD/USBv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F1     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F1    os/hal/ports/STM32/STM32F1xx)
+SET (CHIBIOS_INCLUDES_hal_CAN_F1    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F1    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F1    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F1    os/hal/ports/STM32/LLD/GPIOv1)
+SET (CHIBIOS_INCLUDES_hal_I2C_F1    os/hal/ports/STM32/LLD/I2Cv1)
+SET (CHIBIOS_INCLUDES_hal_RTC_F1    os/hal/ports/STM32/LLD/RTCv1)
+SET (CHIBIOS_INCLUDES_hal_I2S_F1    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SPI_F1    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_F1    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F1    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F1    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F1 os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_UART_F1   os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_USB_F1    os/hal/ports/STM32/LLD/USBv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_F1    os/hal/ports/STM32/LLD/xWDGv1)
+
+SET (CHIBIOS_INCLUDES_hal_F2
+    os/hal/ports/STM32/STM32F4xx
+    os/hal/ports/STM32/LLD/DMAv2
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F2
+    os/hal/ports/STM32/STM32F4xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F4xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv2/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_F2     os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F2     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F2     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F2     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F2     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F2     os/hal/ports/STM32/LLD/I2Cv1/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_MAC_F2     os/hal/ports/STM32/LLD/MACv1/hal_mac_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F2     os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_QSPI_F2    os/hal/ports/STM32/LLD/QUADSPIv1/hal_qspi_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F2     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F2     os/hal/ports/STM32/LLD/SPIv1/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F2     os/hal/ports/STM32/LLD/SPIv1/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_SDC_F2     os/hal/ports/STM32/LLD/SDIOv1/hal_sdc_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F2     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F2     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F2     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F2  os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F2    os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F2     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F2    os/hal/ports/STM32/LLD/ADCv2)
+SET (CHIBIOS_INCLUDES_hal_CAN_F2    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F2    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F2    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F2    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_F2    os/hal/ports/STM32/LLD/I2Cv1)
+SET (CHIBIOS_INCLUDES_hal_MAC_F2    os/hal/ports/STM32/LLD/MACv1)
+SET (CHIBIOS_INCLUDES_hal_USB_F2    os/hal/ports/STM32/LLD/OTGv1)
+SET (CHIBIOS_INCLUDES_hal_QSPI_F2   os/hal/ports/STM32/LLD/QUADSPIv1)
+SET (CHIBIOS_INCLUDES_hal_RTC_F2    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_F2    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SPI_F2    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SDC_F2    os/hal/ports/STM32/LLD/SDIOv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_F2    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F2    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F2    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F2 os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_UART_F2   os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_F2    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+SET (CHIBIOS_INCLUDES_hal_F3
+    os/hal/ports/STM32/STM32F3xx
+    os/hal/ports/STM32/LLD/DMAv1
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F3
+    os/hal/ports/STM32/STM32F3xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F3xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_F3     os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F3     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F3     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F3     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F3     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F3     os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F3     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F3     os/hal/ports/STM32/LLD/SPIv2/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F3     os/hal/ports/STM32/LLD/SPIv2/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F3     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F3     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F3     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F3  os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F3    os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F3     os/hal/ports/STM32/LLD/USBv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F3     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F3    os/hal/ports/STM32/LLD/ADCv3)
+SET (CHIBIOS_INCLUDES_hal_CAN_F3    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F3    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F3    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F3    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_F3    os/hal/ports/STM32/LLD/I2Cv2)
+SET (CHIBIOS_INCLUDES_hal_RTC_F3    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_F3    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SPI_F3    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_GPT_F3    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F3    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F3    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F3 os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_UART_F3   os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_USB_F3    os/hal/ports/STM32/LLD/USBv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_F3    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+
+SET (CHIBIOS_INCLUDES_hal_F4
+    os/hal/ports/STM32/STM32F4xx
+    os/hal/ports/STM32/LLD/DMAv2
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F4
+    os/hal/ports/STM32/STM32F4xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F4xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv2/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_F4     os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F4     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F4     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F4     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F4     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F4     os/hal/ports/STM32/LLD/I2Cv1/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_MAC_F4     os/hal/ports/STM32/LLD/MACv1/hal_mac_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F4     os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_QSPI_F4    os/hal/ports/STM32/LLD/QUADSPIv1/hal_qspi_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F4     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F4     os/hal/ports/STM32/LLD/SPIv1/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F4     os/hal/ports/STM32/LLD/SPIv1/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_SDC_F4     os/hal/ports/STM32/LLD/SDIOv1/hal_sdc_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F4     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F4     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F4     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F4  os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F4    os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F4     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F4    os/hal/ports/STM32/LLD/ADCv2)
+SET (CHIBIOS_INCLUDES_hal_CAN_F4    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F4    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F4    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F4    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_F4    os/hal/ports/STM32/LLD/I2Cv1)
+SET (CHIBIOS_INCLUDES_hal_MAC_F4    os/hal/ports/STM32/LLD/MACv1)
+SET (CHIBIOS_INCLUDES_hal_USB_F4    os/hal/ports/STM32/LLD/OTGv1)
+SET (CHIBIOS_INCLUDES_hal_QSPI_F4   os/hal/ports/STM32/LLD/QUADSPIv1)
+SET (CHIBIOS_INCLUDES_hal_RTC_F4    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_F4    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SPI_F4    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SDC_F4    os/hal/ports/STM32/LLD/SDIOv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_F4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F4 os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_UART_F4   os/hal/ports/STM32/LLD/USARTv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_F4    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+
+SET (CHIBIOS_INCLUDES_hal_F7
+    os/hal/ports/STM32/STM32F7xx
+    os/hal/ports/STM32/LLD/DMAv2
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_F7
+    os/hal/ports/STM32/STM32F7xx/stm32_isr.c
+    os/hal/ports/STM32/STM32F7xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv2/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_F7     os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_F7     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_CRY_F7     os/hal/ports/STM32/LLD/CRYPv1/hal_crypto_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_F7     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_F7     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_F7     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_F7     os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_MAC_F7     os/hal/ports/STM32/LLD/MACv1/hal_mac_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_F7     os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_QSPI_F7    os/hal/ports/STM32/LLD/QUADSPIv1/hal_qspi_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_F7     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_F7     os/hal/ports/STM32/LLD/SPIv2/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_F7     os/hal/ports/STM32/LLD/SPIv2/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_SDC_F7     os/hal/ports/STM32/LLD/SDMMCv1/hal_sdc_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_F7     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_F7     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_F7     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_F7  os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_F7    os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_F7     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_F7    os/hal/ports/STM32/LLD/ADCv2)
+SET (CHIBIOS_INCLUDES_hal_CAN_F7    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_CRY_F7    os/hal/ports/STM32/LLD/CRYPv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_F7    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_F7    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_F7    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_F7    os/hal/ports/STM32/LLD/I2Cv2)
+SET (CHIBIOS_INCLUDES_hal_MAC_F7    os/hal/ports/STM32/LLD/MACv1)
+SET (CHIBIOS_INCLUDES_hal_USB_F7    os/hal/ports/STM32/LLD/OTGv1)
+SET (CHIBIOS_INCLUDES_hal_QSPI_F7   os/hal/ports/STM32/LLD/QUADSPIv1)
+SET (CHIBIOS_INCLUDES_hal_RTC_F7    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_F7    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SPI_F7    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SDC_F7    os/hal/ports/STM32/LLD/SDMMCv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_F7    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_F7    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_F7    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_F7 os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_UART_F7   os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_WDG_F7    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+
+SET (CHIBIOS_INCLUDES_hal_L0
+    os/hal/ports/STM32/STM32L0xx
+    os/hal/ports/STM32/LLD/DMAv1
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_L0
+    os/hal/ports/STM32/STM32L0xx/stm32_isr.c
+    os/hal/ports/STM32/STM32L0xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_L0     os/hal/ports/STM32/LLD/ADCv1/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_L0     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_L0     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_L0     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_L0     os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_L0     os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_L0     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_L0     os/hal/ports/STM32/LLD/SPIv1/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_L0     os/hal/ports/STM32/LLD/SPIv1/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_L0     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_L0     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_L0     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_L0  os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_L0    os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_L0     os/hal/ports/STM32/LLD/USBv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_L0     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_L0    os/hal/ports/STM32/LLD/ADCv1)
+SET (CHIBIOS_INCLUDES_hal_CAN_L0    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_L0    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_L0    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_L0    os/hal/ports/STM32/LLD/GPIOv2)
+SET (CHIBIOS_INCLUDES_hal_I2C_L0    os/hal/ports/STM32/LLD/I2Cv2)
+SET (CHIBIOS_INCLUDES_hal_RTC_L0    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_L0    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_SPI_L0    os/hal/ports/STM32/LLD/SPIv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_L0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_L0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_L0    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_L0 os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_UART_L0   os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_USB_L0    os/hal/ports/STM32/LLD/USBv1)
+SET (CHIBIOS_INCLUDES_hal_WDG_L0    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+
+SET (CHIBIOS_INCLUDES_hal_L4
+    os/hal/ports/STM32/STM32L4xx
+    os/hal/ports/STM32/LLD/DMAv1
+    os/hal/ports/STM32/LLD/TIMv1
+)
+SET (CHIBIOS_SOURCES_hal_L4
+    os/hal/ports/STM32/STM32L4xx/stm32_isr.c
+    os/hal/ports/STM32/STM32L4xx/hal_lld.c
+    os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c
+    os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c
+)
+
+SET (CHIBIOS_SOURCES_hal_ADC_L4     os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c)
+SET (CHIBIOS_SOURCES_hal_CAN_L4     os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c)
+SET (CHIBIOS_SOURCES_hal_DAC_L4     os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c)
+SET (CHIBIOS_SOURCES_hal_EXT_L4     os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c)
+SET (CHIBIOS_SOURCES_hal_PAL_L4     os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2C_L4     os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c)
+SET (CHIBIOS_SOURCES_hal_USB_L4     os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c)
+SET (CHIBIOS_SOURCES_hal_QSPI_L4    os/hal/ports/STM32/LLD/QUADSPIv1/hal_qspi_lld.c)
+SET (CHIBIOS_SOURCES_hal_RTC_L4     os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c)
+SET (CHIBIOS_SOURCES_hal_I2S_L4     os/hal/ports/STM32/LLD/SPIv2/hal_i2s_lld.c)
+SET (CHIBIOS_SOURCES_hal_SPI_L4     os/hal/ports/STM32/LLD/SPIv2/hal_spi_lld.c)
+SET (CHIBIOS_SOURCES_hal_SDC_L4     os/hal/ports/STM32/LLD/SDMMCv1/hal_sdc_lld.c)
+SET (CHIBIOS_SOURCES_hal_GPT_L4     os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c)
+SET (CHIBIOS_SOURCES_hal_ICU_L4     os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c)
+SET (CHIBIOS_SOURCES_hal_PWM_L4     os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c)
+SET (CHIBIOS_SOURCES_hal_SERIAL_L4  os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c)
+SET (CHIBIOS_SOURCES_hal_UART_L4    os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c)
+SET (CHIBIOS_SOURCES_hal_WDG_L4     os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c)
+
+SET (CHIBIOS_INCLUDES_hal_ADC_L4    os/hal/ports/STM32/LLD/ADCv3)
+SET (CHIBIOS_INCLUDES_hal_CAN_L4    os/hal/ports/STM32/LLD/CANv1)
+SET (CHIBIOS_INCLUDES_hal_DAC_L4    os/hal/ports/STM32/LLD/DACv1)
+SET (CHIBIOS_INCLUDES_hal_EXT_L4    os/hal/ports/STM32/LLD/EXTIv1)
+SET (CHIBIOS_INCLUDES_hal_PAL_L4    os/hal/ports/STM32/LLD/GPIOv3)
+SET (CHIBIOS_INCLUDES_hal_I2C_L4    os/hal/ports/STM32/LLD/I2Cv2)
+SET (CHIBIOS_INCLUDES_hal_USB_L4    os/hal/ports/STM32/LLD/OTGv1)
+SET (CHIBIOS_INCLUDES_hal_QSPI_L4   os/hal/ports/STM32/LLD/QUADSPIv1)
+SET (CHIBIOS_INCLUDES_hal_RTC_L4    os/hal/ports/STM32/LLD/RTCv2)
+SET (CHIBIOS_INCLUDES_hal_I2S_L4    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SPI_L4    os/hal/ports/STM32/LLD/SPIv2)
+SET (CHIBIOS_INCLUDES_hal_SDC_L4    os/hal/ports/STM32/LLD/SDMMCv1)
+SET (CHIBIOS_INCLUDES_hal_GPT_L4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_ICU_L4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_PWM_L4    os/hal/ports/STM32/LLD/TIMv1)
+SET (CHIBIOS_INCLUDES_hal_SERIAL_L4 os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_UART_L4   os/hal/ports/STM32/LLD/USARTv2)
+SET (CHIBIOS_INCLUDES_hal_WDG_L4    os/hal/ports/STM32/LLD/xWDGv1)
+
+
+
+IF (CHIBIOS_SOURCES_hal_${CHIBIOS_KERNEL})
+    LIST(APPEND CHIBIOS_SOURCES_hal ${CHIBIOS_SOURCES_hal_${CHIBIOS_KERNEL}})
+ENDIF()
+    
+IF (CHIBIOS_INCLUDES_hal_${CHIBIOS_KERNEL})
+    LIST(APPEND CHIBIOS_INCLUDES_hal ${CHIBIOS_INCLUDES_hal_${CHIBIOS_KERNEL}})
+ENDIF()
+
+IF (CHIBIOS_SOURCES_hal_${STM32_FAMILY})
+    LIST(APPEND CHIBIOS_SOURCES_hal ${CHIBIOS_SOURCES_hal_${STM32_FAMILY}})
+ENDIF()
+    
+IF (CHIBIOS_INCLUDES_hal_${STM32_FAMILY})
+    LIST(APPEND CHIBIOS_INCLUDES_hal ${CHIBIOS_INCLUDES_hal_${STM32_FAMILY}})
+ENDIF()
+
+FOREACH (COMP ${CHIBIOS_HAL_COMPONENTS})
+    IF (CHIBIOS_SOURCES_hal_${COMP})
+        LIST(APPEND CHIBIOS_SOURCES_hal ${CHIBIOS_SOURCES_hal_${COMP}})
+    ENDIF()
+    IF (CHIBIOS_INCLUDES_hal_${COMP})
+        LIST(APPEND CHIBIOS_INCLUDES_hal ${CHIBIOS_INCLUDES_hal_${COMP}})
+    ENDIF()
+    
+    IF (CHIBIOS_SOURCES_hal_${COMP}_${STM32_FAMILY})
+        LIST(APPEND CHIBIOS_SOURCES_hal ${CHIBIOS_SOURCES_hal_${COMP}_${STM32_FAMILY}})
+    ENDIF()
+    IF (CHIBIOS_INCLUDES_hal_${COMP}_${STM32_FAMILY})
+        LIST(APPEND CHIBIOS_INCLUDES_hal ${CHIBIOS_INCLUDES_hal_${COMP}_${STM32_FAMILY}})
+    ENDIF()
+ENDFOREACH()
+
+

+ 57 - 0
cmake/ChibiOS/18.2/ChibiOS_LD.cmake

@@ -0,0 +1,57 @@
+IF(NOT CHIBIOS_PROCESS_STACK_SIZE)
+    SET(CHIBIOS_PROCESS_STACK_SIZE 0x200)
+    MESSAGE(STATUS "No CHIBIOS_PROCESS_STACK_SIZE specified, using default: ${CHIBIOS_PROCESS_STACK_SIZE}")
+ENDIF()
+
+IF(NOT CHIBIOS_MAIN_STACK_SIZE)
+    SET(CHIBIOS_MAIN_STACK_SIZE 0x200)
+    MESSAGE(STATUS "No CHIBIOS_MAIN_STACK_SIZE specified, using default: ${CHIBIOS_MAIN_STACK_SIZE}")
+ENDIF()
+
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L\"${CHIBIOS_ROOT}/os/common/startup/ARMCMx/compilers/GCC/ld\"")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--defsym=__process_stack_size__=${CHIBIOS_PROCESS_STACK_SIZE}")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--defsym=__main_stack_size__=${CHIBIOS_MAIN_STACK_SIZE}")
+
+# Auto-generate linker script
+IF(NOT ChibiOS_LINKER_SCRIPT)
+    FILE(WRITE ${CMAKE_BINARY_DIR}/chibios_link.ld.in
+        "MEMORY\n"
+        "{\n"
+            "flash0  : org = 0x08000000, len = \${STM32_FLASH_SIZE}\n"
+            "flash1  : org = 0x00000000, len = 0\n"
+            "flash2  : org = 0x00000000, len = 0\n"
+            "flash3  : org = 0x00000000, len = 0\n"
+            "flash4  : org = 0x00000000, len = 0\n"
+            "flash5  : org = 0x00000000, len = 0\n"
+            "flash6  : org = 0x00000000, len = 0\n"
+            "flash7  : org = 0x00000000, len = 0\n"
+            "ram0    : org = 0x20000000, len = \${STM32_RAM_SIZE}\n"
+            "ram1    : org = 0x00000000, len = 0\n"
+            "ram2    : org = 0x00000000, len = 0\n"
+            "ram3    : org = 0x00000000, len = 0\n"
+            "ram4    : org = \${STM32_CCRAM_ORIGIN}, len = \${STM32_CCRAM_SIZE}\n"
+            "ram5    : org = 0x00000000, len = 0\n"
+            "ram6    : org = 0x00000000, len = 0\n"
+            "ram7    : org = 0x00000000, len = 0\n"
+        "}\n"
+        "REGION_ALIAS(\"VECTORS_FLASH\", flash0);\n"
+        "REGION_ALIAS(\"VECTORS_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"XTORS_FLASH\", flash0);\n"
+        "REGION_ALIAS(\"XTORS_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"TEXT_FLASH\", flash0);\n"
+        "REGION_ALIAS(\"TEXT_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"RODATA_FLASH\", flash0);\n"
+        "REGION_ALIAS(\"RODATA_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"VARIOUS_FLASH\", flash0);\n"
+        "REGION_ALIAS(\"VARIOUS_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"RAM_INIT_FLASH_LMA\", flash0);\n"
+        "REGION_ALIAS(\"MAIN_STACK_RAM\", ram0);\n"
+        "REGION_ALIAS(\"PROCESS_STACK_RAM\", ram0);\n"
+        "REGION_ALIAS(\"DATA_RAM\", ram0);\n"
+        "REGION_ALIAS(\"DATA_RAM_LMA\", flash0);\n"
+        "REGION_ALIAS(\"BSS_RAM\", ram0);\n"
+        "REGION_ALIAS(\"HEAP_RAM\", ram0);\n"
+        "INCLUDE rules.ld\n"
+    )
+    SET(ChibiOS_LINKER_SCRIPT ${CMAKE_BINARY_DIR}/chibios_link.ld.in)
+ENDIF()

+ 94 - 0
cmake/ChibiOS/18.2/ChibiOS_RTOS.cmake

@@ -0,0 +1,94 @@
+FOREACH (FAMILY L0 L4)
+    SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${FAMILY}
+        os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.S
+        os/common/ports/ARMCMx/chcore.c
+        os/common/ports/ARMCMx/chcore_v6m.c
+        os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.S
+    )
+ENDFOREACH()
+
+FOREACH (FAMILY F0 F1 F2 F3 F4 F7)
+    SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${FAMILY}
+        os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.S
+        os/common/ports/ARMCMx/chcore.c
+        os/common/ports/ARMCMx/chcore_v7m.c
+        os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.S
+    )
+ENDFOREACH()
+
+FOREACH (FAMILY F0 F1 F2 F3 F4 F7 L0 L1)
+    SET (CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${FAMILY}
+        os/common/startup/ARMCMx/devices/STM32${FAMILY}xx
+        os/common/ext/ST/STM32${FAMILY}xx
+        os/common/oslib/include
+        os/common/ports/ARMCMx
+        os/common/ports/ARMCMx/compilers/GCC
+    )
+ENDFOREACH()
+
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}
+    os/common/startup/ARMCMx/compilers/GCC/crt1.c
+    os/common/startup/ARMCMx/compilers/GCC/vectors.S
+)
+
+SET (CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}
+    os/license
+    os/common/portability/GCC
+    os/common/startup/ARMCMx/compilers/GCC
+    os/common/ext/ARM/CMSIS/Core/Include
+)
+
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_MAILBOXES  os/common/oslib/src/chmboxes.c)
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_MEMCORE    os/common/oslib/src/chmemcore.c)
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_HEAP       os/common/oslib/src/chheap.c)
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_MEMPOOLS   os/common/oslib/src/chmempools.c)
+SET (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_FACTORY    os/common/oslib/src/chfactory.c)
+
+SET (CHIBIOS_SOURCES_rt_TM:         os/rt/src/chtm.c)
+SET (CHIBIOS_SOURCES_rt_REGISTRY    os/rt/src/chregistry.c)
+SET (CHIBIOS_SOURCES_rt_SEMAPHORES  os/rt/src/chsem.c)
+SET (CHIBIOS_SOURCES_rt_MUTEXES     os/rt/src/chmtx.c)
+SET (CHIBIOS_SOURCES_rt_CONDVARS    os/rt/src/chcond.c)
+SET (CHIBIOS_SOURCES_rt_EVENTS      os/rt/src/chevents.c)
+SET (CHIBIOS_SOURCES_rt_MESSAGES    os/rt/src/chmsg.c)
+SET (CHIBIOS_SOURCES_rt_DYNAMIC     os/rt/src/chdynamic.c)
+
+LIST (APPEND CHIBIOS_SOURCES_nil     os/nil/src/ch.c)
+LIST (APPEND CHIBIOS_INCLUDES_nil    os/nil/include)
+
+LIST (APPEND CHIBIOS_SOURCES_rt
+    os/rt/src/chsys.c
+    os/rt/src/chdebug.c
+    os/rt/src/chtrace.c
+    os/rt/src/chvt.c
+    os/rt/src/chschd.c
+    os/rt/src/chthreads.c
+)
+
+LIST (APPEND CHIBIOS_INCLUDES_rt     os/rt/include)
+
+IF (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${STM32_FAMILY})
+    LIST(APPEND CHIBIOS_SOURCES_${CHIBIOS_KERNEL} ${CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${STM32_FAMILY}})
+ENDIF()
+    
+IF (CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${STM32_FAMILY})
+    LIST(APPEND CHIBIOS_INCLUDES_${CHIBIOS_KERNEL} ${CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${STM32_FAMILY}})
+ENDIF()
+
+FOREACH (COMP ${CHIBIOS_RTOS_COMPONENTS})
+    IF (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${COMP})
+        LIST(APPEND CHIBIOS_SOURCES_${CHIBIOS_KERNEL} ${CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${COMP}})
+    ENDIF()
+    IF (CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${COMP})
+        LIST(APPEND CHIBIOS_INCLUDES_${CHIBIOS_KERNEL} ${CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${COMP}})
+    ENDIF()
+    
+    IF (CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${COMP}_${STM32_FAMILY})
+        LIST(APPEND CHIBIOS_SOURCES_${CHIBIOS_KERNEL} ${CHIBIOS_SOURCES_${CHIBIOS_KERNEL}_${COMP}_${STM32_FAMILY}})
+    ENDIF()
+    IF (CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${COMP}_${STM32_FAMILY})
+        LIST(APPEND CHIBIOS_INCLUDES_${CHIBIOS_KERNEL} ${CHIBIOS_INCLUDES_${CHIBIOS_KERNEL}_${COMP}_${STM32_FAMILY}})
+    ENDIF()
+ENDFOREACH()
+
+

+ 2 - 0
cmake/FindChibiOS.cmake

@@ -8,6 +8,8 @@ MESSAGE(STATUS "Chibios version:" ${ChibiOS_FIND_VERSION_MAJOR})
 
 IF(ChibiOS_FIND_VERSION_MAJOR EQUAL 2)
   MESSAGE(FATAL_ERROR "ChibiOS v2.x.x is not supported. Use older version of stm32-cmake")
+ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 18))
+  INCLUDE(ChibiOS/18.2/ChibiOS)
 ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 17))
   INCLUDE(ChibiOS/ChibiOS17)
 ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 16))