فهرست منبع

ChibiOS 17.

ChibiOS file reorganization.
Konstantin Oblaukhov 8 سال پیش
والد
کامیت
17e03112c1

+ 6 - 6
cmake/ChibiOS16.cmake → cmake/ChibiOS/ChibiOS16.cmake

@@ -32,18 +32,18 @@ IF(${ChibiOS_FIND_COMPONENTS_st} LESS 0)
   LIST(APPEND ChibiOS_FIND_COMPONENTS st)
   LIST(APPEND ChibiOS_FIND_COMPONENTS st)
 ENDIF()
 ENDIF()
 
 
-INCLUDE(ChibiOS16_LD)
-INCLUDE(ChibiOS16_HAL)
-INCLUDE(ChibiOS16_Community)
+INCLUDE(ChibiOS/ChibiOS16_LD)
+INCLUDE(ChibiOS/ChibiOS16_HAL)
+INCLUDE(ChibiOS/ChibiOS16_Community)
 
 
 
 
 IF(${CHIBIOS_KERNEL} STREQUAL rt)
 IF(${CHIBIOS_KERNEL} STREQUAL rt)
-  INCLUDE(ChibiOS16_RT)
+  INCLUDE(ChibiOS/ChibiOS16_RT)
 ELSE()
 ELSE()
-  INCLUDE(ChibiOS16_NIL)
+  INCLUDE(ChibiOS/ChibiOS16_NIL)
 ENDIF()
 ENDIF()
 
 
-INCLUDE(ChibiOS16_Various)
+INCLUDE(ChibiOS/ChibiOS16_Various)
 
 
 SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES} ${CHIBIOS_COMMUNITY_MODULES})
 SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES} ${CHIBIOS_COMMUNITY_MODULES})
 
 

+ 0 - 0
cmake/ChibiOS16_Community.cmake → cmake/ChibiOS/ChibiOS16_Community.cmake


+ 0 - 0
cmake/ChibiOS16_HAL.cmake → cmake/ChibiOS/ChibiOS16_HAL.cmake


+ 0 - 0
cmake/ChibiOS16_LD.cmake → cmake/ChibiOS/ChibiOS16_LD.cmake


+ 0 - 0
cmake/ChibiOS16_NIL.cmake → cmake/ChibiOS/ChibiOS16_NIL.cmake


+ 0 - 0
cmake/ChibiOS16_RT.cmake → cmake/ChibiOS/ChibiOS16_RT.cmake


+ 0 - 0
cmake/ChibiOS16_Various.cmake → cmake/ChibiOS/ChibiOS16_Various.cmake


+ 73 - 0
cmake/ChibiOS/ChibiOS17.cmake

@@ -0,0 +1,73 @@
+IF(NOT ChibiOS_FIND_COMPONENTS)
+    SET(ChibiOS_FIND_COMPONENTS nil hal st)
+    MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
+ENDIF()
+
+# 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)
+# # LIST(FIND ChibiOS_FIND_COMPONENTS st ChibiOS_FIND_COMPONENTS_st)
+# 
+# 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(${ChibiOS_FIND_COMPONENTS_st} LESS 0)
+#   LIST(APPEND ChibiOS_FIND_COMPONENTS st)
+# ENDIF()
+
+INCLUDE(ChibiOS/ChibiOS17_LD)
+INCLUDE(ChibiOS/ChibiOS17_Kernel)
+INCLUDE(ChibiOS/ChibiOS17_HAL)
+#INCLUDE(ChibiOS/ChibiOS17_Various)
+#INCLUDE(ChibiOS/ChibiOS17_Community)
+
+SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES} ${CHIBIOS_COMMUNITY_MODULES})
+
+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_${comp}_SOURCES})
+        FIND_FILE(CHIBIOS_${comp}_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+        LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_${source}})
+    ENDFOREACH()
+    IF(CHIBIOS_${comp}_SEARCH_HEADERS)
+        FOREACH(header ${CHIBIOS_${comp}_SEARCH_HEADERS})
+            FIND_PATH(CHIBIOS_${comp}_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_${header}_INCLUDE_DIR})
+        ENDFOREACH()
+    ENDIF()
+    IF(CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS)
+        FOREACH(header ${CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS})
+            FIND_PATH(CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR})
+        ENDFOREACH()
+    ENDIF()
+    IF(CHIBIOS_${comp}_PLATFORM_SOURCES)
+        FOREACH(source ${CHIBIOS_${comp}_PLATFORM_SOURCES})
+            FIND_FILE(CHIBIOS_${comp}_PLATFORM_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
+        ENDFOREACH()
+    ENDIF()
+ENDFOREACH()

+ 254 - 0
cmake/ChibiOS/ChibiOS17_HAL.cmake

@@ -0,0 +1,254 @@
+SET(CHIBIOS_HAL_LIB_MODULES chprintf memstreams nullstreams)
+SET(CHIBIOS_HAL_MODULES adc buffers can channels dac ext files gpt i2c i2s icu ioblock mac mii mmc_spi mmcsd pal pwm qspi queues rtc sdc serial serial_usb spi st streams uart usb_cdc usb wdg)
+
+IF(${CHIBIOS_KERNEL} STREQUAL nil)
+  SET(CHIBIOS_OSAL_PATH ${CHIBIOS_ROOT}/os/hal/osal/nil)
+ELSE()
+  SET(CHIBIOS_OSAL_PATH ${CHIBIOS_ROOT}/os/hal/osal/rt)
+ENDIF()
+
+SET(CHIBIOS_hal_SEARCH_PATH 
+  ${CHIBIOS_ROOT}/os/hal/include 
+  ${CHIBIOS_ROOT}/os/hal/src/
+  ${CHIBIOS_ROOT}/os/hal/osal/lib
+  ${CHIBIOS_OSAL_PATH}
+)
+SET(CHIBIOS_hal_SEARCH_HEADERS 
+  hal.h 
+  osal.h
+)
+SET(CHIBIOS_hal_SOURCES 
+  hal.c 
+  osal.c
+)
+
+FOREACH(module ${CHIBIOS_HAL_MODULES})
+  SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/include ${CHIBIOS_ROOT}/os/hal/src)
+  SET(CHIBIOS_${module}_SOURCES hal_${module}.c)
+  SET(CHIBIOS_${module}_SEARCH_HEADERS hal_${module}.h)
+ENDFOREACH()
+
+IF(STM32_FAMILY STREQUAL "F0")
+    SET(CHIBIOS_HAL_PLATFORM_MODULES adc can dac ext gpt i2c i2s icu mac pal pwm rtc sdc serial spi st uart usb wdg)
+    SET(CHIBIOS_HAL_PLATFORM_MODULES_PATHES
+            LLD/ADCv1
+            LLD/CANv1
+            LLD/DACv1
+            LLD/EXTIv1
+            LLD/TIMv1
+            LLD/I2Cv2
+            LLD/SPIv1
+            LLD/TIMv1
+            LLD/MACv1
+            LLD/GPIOv2
+            LLD/TIMv1
+            LLD/RTCv2
+            LLD/SDMMCv1
+            LLD/USARTv2
+            LLD/SPIv2
+            LLD/TIMv1
+            LLD/USARTv2
+            LLD/USBv1
+            LDD/DMAv1
+            LDD/xWDGv1
+            )
+
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH
+            ${CHIBIOS_ROOT}/os/hal/ports/common/ARMCMx
+            ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F0xx
+            ${CHIBIOS_ROOT}/os/hal/ports/STM32/LLD/DMAv1
+            )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+            hal_lld.h
+            stm32_isr.h
+            stm32_rcc.h
+            stm32_registry.h
+            nvic.h
+            stm32_dma.h
+            )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES
+            hal_lld.c
+            nvic.c
+            stm32_dma.c
+            )
+    SET(INDEX 0)
+    FOREACH(module ${CHIBIOS_HAL_PLATFORM_MODULES})
+        LIST(GET CHIBIOS_HAL_PLATFORM_MODULES_PATHES ${INDEX} path)
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/ports/STM32/${path})
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS hal_${module}_lld.h)
+        SET(CHIBIOS_${module}_PLATFORM_SOURCES hal_${module}_lld.c)
+
+        IF(${module} STREQUAL ext)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F0xx)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} hal_ext_lld_isr.h)
+            SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} hal_ext_lld_isr.c)
+        ENDIF()
+
+        MATH(EXPR INDEX "${INDEX} + 1")
+    ENDFOREACH()
+ELSEIF(STM32_FAMILY STREQUAL "F1")
+    SET(CHIBIOS_HAL_PLATFORM_MODULES adc can dac ext gpt i2c icu pal pwm rtc sdc serial spi st uart usb)
+    SET(CHIBIOS_HAL_PLATFORM_MODULES_PATHES
+      STM32F1xx
+      LLD/CANv1
+      LLD/DACv1
+      LLD/EXTIv1
+      LLD/TIMv1
+      LLD/I2Cv1
+      LLD/TIMv1
+      LLD/GPIOv1
+      LLD/TIMv1
+      LLD/RTCv1
+      LLD/SDIOv1
+      LLD/USARTv1
+      LLD/SPIv1
+      LLD/TIMv1
+      LLD/USARTv1
+      LLD/USBv1
+    )
+
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH
+        ${CHIBIOS_ROOT}/os/hal/ports/common/ARMCMx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F1xx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/LLD/DMAv1
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        stm32_isr.h
+        stm32_rcc.h
+        stm32_registry.h
+        nvic.h
+        stm32_dma.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES
+        hal_lld.c
+        nvic.c
+        stm32_dma.c
+    )
+    SET(INDEX 0)
+    FOREACH(module ${CHIBIOS_HAL_PLATFORM_MODULES})
+        LIST(GET CHIBIOS_HAL_PLATFORM_MODULES_PATHES ${INDEX} path)
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/ports/STM32/${path})
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS hal_${module}_lld.h)
+        SET(CHIBIOS_${module}_PLATFORM_SOURCES hal_${module}_lld.c)
+
+        IF(${module} STREQUAL ext)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F1xx)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} hal_ext_lld_isr.h)
+            SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} hal_ext_lld_isr.c)
+        ENDIF()
+
+        MATH(EXPR INDEX "${INDEX} + 1")
+    ENDFOREACH()
+ELSEIF(STM32_FAMILY STREQUAL "F4")
+    SET(CHIBIOS_HAL_PLATFORM_MODULES adc can dac ext gpt i2c i2s icu mac pal pwm rtc sdc serial spi st uart usb)
+    SET(CHIBIOS_HAL_PLATFORM_MODULES_PATHES
+      LLD/ADCv2
+      LLD/CANv1
+      LLD/DACv1
+      LLD/EXTIv1
+      LLD/TIMv1
+      LLD/I2Cv1
+      LLD/SPIv1
+      LLD/TIMv1
+      LLD/MACv1
+      LLD/GPIOv2
+      LLD/TIMv1
+      LLD/RTCv2
+      LLD/SDIOv1
+      LLD/USARTv1
+      LLD/SPIv1
+      LLD/TIMv1
+      LLD/USARTv1
+      LLD/OTGv1
+    )
+
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH
+        ${CHIBIOS_ROOT}/os/hal/ports/common/ARMCMx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F4xx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/LLD/DMAv2
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        stm32_isr.h
+        stm32_rcc.h
+        stm32_registry.h
+        nvic.h
+        stm32_dma.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES
+        hal_lld.c
+        nvic.c
+        stm32_dma.c
+    )
+    SET(INDEX 0)
+    FOREACH(module ${CHIBIOS_HAL_PLATFORM_MODULES})
+        LIST(GET CHIBIOS_HAL_PLATFORM_MODULES_PATHES ${INDEX} path)
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/ports/STM32/${path})
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS hal_${module}_lld.h)
+        SET(CHIBIOS_${module}_PLATFORM_SOURCES hal_${module}_lld.c)
+
+        IF(${module} STREQUAL ext)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32F4xx)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} hal_ext_lld_isr.h)
+            SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} hal_ext_lld_isr.c)
+        ENDIF()
+
+        MATH(EXPR INDEX "${INDEX} + 1")
+    ENDFOREACH()
+ELSEIF(STM32_FAMILY STREQUAL "L0")
+    SET(CHIBIOS_HAL_PLATFORM_MODULES adc can dac ext gpt i2c icu pal pwm rtc serial spi st uart usb wdg)
+    SET(CHIBIOS_HAL_PLATFORM_MODULES_PATHES
+      LLD/ADCv1
+      LLD/CANv1
+      LLD/DACv1
+      LLD/EXTIv1
+      LLD/TIMv1
+      LLD/I2Cv2
+      LLD/TIMv1
+      LLD/GPIOv2
+      LLD/TIMv1
+      LLD/RTCv2
+      LLD/USARTv2
+      LLD/SPIv1
+      LLD/TIMv1
+      LLD/USARTv2
+      LLD/USBv1
+      LLD/xWDGv1
+    )
+
+
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH
+        ${CHIBIOS_ROOT}/os/hal/ports/common/ARMCMx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32L0xx
+        ${CHIBIOS_ROOT}/os/hal/ports/STM32/LLD/DMAv1
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        stm32_isr.h
+        stm32_rcc.h
+        stm32_registry.h
+        nvic.h
+        stm32_dma.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES
+        hal_lld.c
+        nvic.c
+        stm32_dma.c
+    )
+    SET(INDEX 0)
+    FOREACH(module ${CHIBIOS_HAL_PLATFORM_MODULES})
+        LIST(GET CHIBIOS_HAL_PLATFORM_MODULES_PATHES ${INDEX} path)
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/ports/STM32/${path})
+        SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS hal_${module}_lld.h)
+        SET(CHIBIOS_${module}_PLATFORM_SOURCES hal_${module}_lld.c)
+
+        IF(${module} STREQUAL ext)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/ports/STM32/STM32L0xx)
+            SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} hal_ext_lld_isr.h)
+            SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} hal_ext_lld_isr.c)
+        ENDIF()
+
+        MATH(EXPR INDEX "${INDEX} + 1")
+    ENDFOREACH()
+ENDIF()

+ 184 - 0
cmake/ChibiOS/ChibiOS17_Kernel.cmake

@@ -0,0 +1,184 @@
+LIST(FIND ChibiOS_FIND_COMPONENTS nil ChibiOS_FIND_COMPONENTS_nil)
+LIST(FIND ChibiOS_FIND_COMPONENTS rt ChibiOS_FIND_COMPONENTS_rt)
+
+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()
+
+SET(CHIBIOS_kernel_SEARCH_PATH 
+  ${CHIBIOS_ROOT}/os/license
+  ${CHIBIOS_ROOT}/os/common/ports/ARMCMx
+  ${CHIBIOS_ROOT}/os/common/ports/ARMCMx/compilers/GCC
+  ${CHIBIOS_ROOT}/os/common/startup/ARMCMx/compilers/GCC
+  ${CHIBIOS_ROOT}/os/common/oslib/src
+  ${CHIBIOS_ROOT}/os/common/oslib/include
+  ${CHIBIOS_ROOT}/os/common/ext/CMSIS/include
+  ${CHIBIOS_ROOT}/os/common/ext/CMSIS/include
+)
+
+SET(CHIBIOS_kernel_SEARCH_HEADERS 
+  ch.h
+  chcore.h
+  chlicense.h
+  chtypes.h
+  cmparams.h
+  chbsem.h
+  chheap.h
+  chmboxes.h
+  chmemcore.h
+  chmempools.h
+)
+
+SET(CHIBIOS_kernel_SOURCES
+  chcore.c
+  crt1.c
+  vectors.c
+  chheap.c
+  chmboxes.c
+  chmemcore.c
+  chmempools.c
+)
+
+IF(STM32_FAMILY STREQUAL "F0")
+  SET(CHIBIOS_kernel_SEARCH_PATH 
+    ${CHIBIOS_kernel_SEARCH_PATH} 
+    ${CHIBIOS_ROOT}/os/common/startup/ARMCMx/devices/STM32F0xx
+    ${CHIBIOS_ROOT}/os/common/ext/CMSIS/ST/STM32F0xx
+  )
+  SET(CHIBIOS_kernel_SEARCH_HEADERS
+    ${CHIBIOS_kernel_SEARCH_HEADERS}
+    core_cm0.h
+    stm32f0xx.h
+  )
+  SET(CHIBIOS_kernel_SOURCES  
+    ${CHIBIOS_kernel_SOURCES} 
+    crt0_v6m.S 
+    chcore_v6m.c
+    chcoreasm_v6m.S
+  )
+ELSEIF(STM32_FAMILY STREQUAL "F1")
+  SET(CHIBIOS_kernel_SEARCH_PATH 
+    ${CHIBIOS_kernel_SEARCH_PATH} 
+    ${CHIBIOS_ROOT}/os/common/startup/ARMCMx/devices/STM32F1xx
+    ${CHIBIOS_ROOT}/os/common/ext/CMSIS/ST/STM32F1xx
+  )
+  SET(CHIBIOS_kernel_SEARCH_HEADERS
+    ${CHIBIOS_kernel_SEARCH_HEADERS}
+    core_cm3.h
+    stm32f1xx.h
+  )
+  SET(CHIBIOS_kernel_SOURCES  
+    ${CHIBIOS_kernel_SOURCES} 
+    crt0_v7m.S 
+    chcore_v7m.c
+    chcoreasm_v7m.S
+  )
+ELSEIF(STM32_FAMILY STREQUAL "F4")
+  SET(CHIBIOS_kernel_SEARCH_PATH 
+    ${CHIBIOS_kernel_SEARCH_PATH} 
+    ${CHIBIOS_ROOT}/os/common/startup/ARMCMx/devices/STM32F4xx
+    ${CHIBIOS_ROOT}/os/common/ext/CMSIS/ST/STM32F4xx
+  )
+  SET(CHIBIOS_kernel_SEARCH_HEADERS
+    ${CHIBIOS_kernel_SEARCH_HEADERS}
+    core_cm4.h
+    stm32f4xx.h
+  )
+  SET(CHIBIOS_kernel_SOURCES  
+    ${CHIBIOS_kernel_SOURCES} 
+    crt0_v7m.S 
+    chcore_v7m.c
+    chcoreasm_v7m.S
+  )
+ELSEIF(STM32_FAMILY STREQUAL "L0")
+  SET(CHIBIOS_kernel_SEARCH_PATH 
+    ${CHIBIOS_kernel_SEARCH_PATH} 
+    ${CHIBIOS_ROOT}/os/common/startup/ARMCMx/devices/STM32L0xx
+    ${CHIBIOS_ROOT}/os/common/ext/CMSIS/ST/STM32L0xx
+  )
+  SET(CHIBIOS_kernel_SEARCH_HEADERS
+    ${CHIBIOS_kernel_SEARCH_HEADERS}
+    core_cm0.h
+    stm32l0xx.h
+  )
+  SET(CHIBIOS_kernel_SOURCES  
+    ${CHIBIOS_kernel_SOURCES} 
+    crt0_v6m.S 
+    chcore_v6m.c
+    chcoreasm_v6m.S
+  )
+ENDIF()
+
+SET(CHIBIOS_nil_SEARCH_PATH 
+  ${CHIBIOS_kernel_SEARCH_PATH}
+  ${CHIBIOS_ROOT}/os/nil/src
+  ${CHIBIOS_ROOT}/os/nil/include
+)
+
+SET(CHIBIOS_rt_SEARCH_PATH 
+  ${CHIBIOS_kernel_SEARCH_PATH}
+  ${CHIBIOS_ROOT}/os/rt/src
+  ${CHIBIOS_ROOT}/os/rt/include
+)
+
+SET(CHIBIOS_nil_SEARCH_HEADERS
+  ${CHIBIOS_kernel_SEARCH_HEADERS}
+)
+
+SET(CHIBIOS_rt_SEARCH_HEADERS
+  ${CHIBIOS_kernel_SEARCH_HEADERS}
+  ch.h
+  chalign.h
+  chchecks.h
+  chcond.h
+  chdebug.h
+  chdynamic.h
+  chevents.h
+  chmsg.h
+  chmtx.h
+  chregistry.h
+  chschd.h
+  chsem.h
+  chstats.h
+  chsys.h
+  chsystypes.h
+  chthreads.h
+  chtm.h
+  chtrace.h
+  chvt.h
+)
+
+SET(CHIBIOS_nil_SOURCES  
+  ${CHIBIOS_kernel_SOURCES}
+  ch.c
+)
+
+SET(CHIBIOS_rt_SOURCES  
+  ${CHIBIOS_kernel_SOURCES}
+  chcond.c
+  chdebug.c
+  chdynamic.c
+  chevents.c
+  chmsg.c
+  chmtx.c
+  chregistry.c
+  chschd.c
+  chsem.c
+  chstats.c
+  chsys.c
+  chthreads.c
+  chtm.c
+  chtrace.c
+  chvt.c
+)

+ 57 - 0
cmake/ChibiOS/ChibiOS17_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()

+ 0 - 0
cmake/ChibiOS2.cmake → cmake/ChibiOS/ChibiOS2.cmake


+ 6 - 6
cmake/ChibiOS3.cmake → cmake/ChibiOS/ChibiOS3.cmake

@@ -31,16 +31,16 @@ IF(${ChibiOS_FIND_COMPONENTS_st} LESS 0)
   LIST(APPEND ChibiOS_FIND_COMPONENTS st)
   LIST(APPEND ChibiOS_FIND_COMPONENTS st)
 ENDIF()
 ENDIF()
   
   
-INCLUDE(ChibiOS3_LD)
-INCLUDE(ChibiOS3_HAL)
+INCLUDE(ChibiOS/ChibiOS3_LD)
+INCLUDE(ChibiOS/ChibiOS3_HAL)
 
 
 IF(${CHIBIOS_KERNEL} STREQUAL rt)
 IF(${CHIBIOS_KERNEL} STREQUAL rt)
-  INCLUDE(ChibiOS3_RT)
+  INCLUDE(ChibiOS/ChibiOS3_RT)
 ELSE()
 ELSE()
-  INCLUDE(ChibiOS3_NIL)
+  INCLUDE(ChibiOS/ChibiOS3_NIL)
 ENDIF()
 ENDIF()
 
 
-INCLUDE(ChibiOS3_Various)
+INCLUDE(ChibiOS/ChibiOS3_Various)
 
 
 SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES})
 SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES})
 
 
@@ -75,4 +75,4 @@ FOREACH(comp ${ChibiOS_FIND_COMPONENTS})
             LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
             LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
         ENDFOREACH()
         ENDFOREACH()
     ENDIF()
     ENDIF()
-ENDFOREACH()
+ENDFOREACH()

+ 0 - 0
cmake/ChibiOS3_HAL.cmake → cmake/ChibiOS/ChibiOS3_HAL.cmake


+ 0 - 0
cmake/ChibiOS3_LD.cmake → cmake/ChibiOS/ChibiOS3_LD.cmake


+ 0 - 0
cmake/ChibiOS3_NIL.cmake → cmake/ChibiOS/ChibiOS3_NIL.cmake


+ 0 - 0
cmake/ChibiOS3_RT.cmake → cmake/ChibiOS/ChibiOS3_RT.cmake


+ 0 - 0
cmake/ChibiOS3_Various.cmake → cmake/ChibiOS/ChibiOS3_Various.cmake


+ 4 - 2
cmake/FindChibiOS.cmake

@@ -8,10 +8,12 @@ MESSAGE(STATUS "Chibios version:" ${ChibiOS_FIND_VERSION_MAJOR})
 
 
 IF(ChibiOS_FIND_VERSION_MAJOR EQUAL 2)
 IF(ChibiOS_FIND_VERSION_MAJOR EQUAL 2)
   MESSAGE(FATAL_ERROR "ChibiOS v2.x.x is not supported. Use older version of stm32-cmake")
   MESSAGE(FATAL_ERROR "ChibiOS v2.x.x is not supported. Use older version of stm32-cmake")
+ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 17))
+  INCLUDE(ChibiOS/ChibiOS17)
 ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 16))
 ELSEIF((ChibiOS_FIND_VERSION_MAJOR EQUAL 16))
-  INCLUDE(ChibiOS16)
+  INCLUDE(ChibiOS/ChibiOS16)
 ELSEIF((NOT ChibiOS_FIND_VERSION_MAJOR) OR (ChibiOS_FIND_VERSION_MAJOR EQUAL 3))
 ELSEIF((NOT ChibiOS_FIND_VERSION_MAJOR) OR (ChibiOS_FIND_VERSION_MAJOR EQUAL 3))
-  INCLUDE(ChibiOS3)
+  INCLUDE(ChibiOS/ChibiOS3)
 ENDIF()
 ENDIF()
 
 
 LIST(REMOVE_DUPLICATES ChibiOS_INCLUDE_DIRS)
 LIST(REMOVE_DUPLICATES ChibiOS_INCLUDE_DIRS)