فهرست منبع

Initial support for ChibiOS v3.

Only F1 family and NIL kernel.
Konstantin Oblaukhov 11 سال پیش
والد
کامیت
84ddbc2e94

+ 324 - 0
cmake/Modules/ChibiOS2.cmake

@@ -0,0 +1,324 @@
+SET(CHIBIOS_HAL_MODULES adc can ext gpt i2c icu mac mmc_spi mmcsd pal pwm rtc sdc serial serial_usb spi tm uart usb)
+SET(CHIBIOS_VARIOUS_MODULES chprintf chrtclib evtimer memstreams shell syscalls fatfs lwip)
+SET(CHIBIOS_COMPONENTS kernel hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_VARIOUS_MODULES})
+
+IF(NOT ChibiOS_FIND_COMPONENTS) 
+    SET(ChibiOS_FIND_COMPONENTS kernel)
+    MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
+    MESSAGE(STATUS "Supported ChibiOS components: ${CHIBIOS_COMPONENTS}")
+ENDIF()
+
+SET(CHIBIOS_HAL_LLD_MODULES adc can ext gpt i2c icu mac pal pwm rtc sdc serial spi uart usb)
+
+SET(CHIBIOS_kernel_SEARCH_PATH 
+    ${CHIBIOS_ROOT}/os/kernel/include
+    ${CHIBIOS_ROOT}/os/ports/common/ARMCMx
+    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx
+    ${CHIBIOS_ROOT}/os/kernel/src
+)
+SET(CHIBIOS_kernel_SEARCH_HEADERS
+    ch.h
+    nvic.h
+    chcore.h
+)
+SET(CHIBIOS_kernel_SOURCES  
+    chsys.c
+    chdebug.c
+    chlists.c
+    chvt.c
+    chschd.c
+    chthreads.c
+    chdynamic.c
+    chregistry.c
+    chsem.c
+    chmtx.c
+    chcond.c
+    chevents.c
+    chmsg.c
+    chmboxes.c
+    chqueues.c
+    chmemcore.c
+    chheap.c
+    chmempools.c
+    crt0.c
+    chcore.c
+    chcore_v7m.c
+    nvic.c
+)
+
+SET(CHIBIOS_hal_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/include ${CHIBIOS_ROOT}/os/hal/src)
+SET(CHIBIOS_hal_SEARCH_HEADERS hal.h)
+SET(CHIBIOS_hal_SOURCES hal.c)
+
+FOREACH(module ${CHIBIOS_HAL_MODULES})
+    SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/src)
+    SET(CHIBIOS_${module}_SOURCES ${module}.c)
+ENDFOREACH()
+
+FOREACH(module ${CHIBIOS_VARIOUS_MODULES})
+    IF(${module} STREQUAL fatfs)
+        SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/various/fatfs_bindings ${CHIBIOS_ROOT}/ext/fatfs/src/ ${CHIBIOS_ROOT}/ext/fatfs/src/option)
+        SET(CHIBIOS_${module}_SOURCES
+            fatfs_diskio.c
+            fatfs_syscall.c
+            ff.c
+            ccsbcs.c
+        )
+        SET(CHIBIOS_${module}_SEARCH_HEADERS ff.h)
+    ELSEIF(${module} STREQUAL lwip)
+        SET(CHIBIOS_${module}_SEARCH_PATH 
+            ${CHIBIOS_ROOT}/os/various/lwip_bindings 
+            ${CHIBIOS_ROOT}/os/various/lwip_bindings/arch
+            ${CHIBIOS_ROOT}/ext/lwip/src/
+            ${CHIBIOS_ROOT}/ext/lwip/src/include/
+            ${CHIBIOS_ROOT}/ext/lwip/src/include/ipv4/
+        )
+        SET(CHIBIOS_${module}_SOURCES
+            lwipthread.c
+            sys_arch.c
+            netif/etharp.c
+            core/dhcp.c 
+            core/dns.c 
+            core/init.c 
+            core/mem.c 
+            core/memp.c 
+            core/netif.c 
+            core/pbuf.c 
+            core/raw.c 
+            core/stats.c 
+            core/sys.c 
+            core/tcp.c 
+            core/tcp_in.c 
+            core/tcp_out.c 
+            core/udp.c
+            core/ipv4/autoip.c 
+            core/ipv4/icmp.c 
+            core/ipv4/igmp.c 
+            core/ipv4/inet.c 
+            core/ipv4/inet_chksum.c 
+            core/ipv4/ip.c 
+            core/ipv4/ip_addr.c 
+            core/ipv4/ip_frag.c 
+            core/def.c 
+            core/timers.c
+            api/api_lib.c 
+            api/api_msg.c 
+            api/err.c 
+            api/netbuf.c 
+            api/netdb.c 
+            api/netifapi.c 
+            api/sockets.c 
+            api/tcpip.c
+        )
+        SET(CHIBIOS_${module}_SEARCH_HEADERS 
+            lwipthread.h 
+            sys_arch.h
+            lwip/api.h
+            lwip/ip.h
+        )
+    ELSE()
+        SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/various/)
+        SET(CHIBIOS_${module}_SOURCES ${module}.c)
+        IF(NOT (${module} STREQUAL syscalls))
+            SET(CHIBIOS_${module}_SEARCH_HEADERS ${module}.h)
+        ENDIF()
+    ENDIF()
+ENDFOREACH()
+
+IF(STM32_FAMILY STREQUAL "F4")
+    SET(CHIBIOS_kernel_PLATFORM_SEARCH_PATH 
+        ${CHIBIOS_ROOT}/os/ports/common/ARMCMx/CMSIS/include
+        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx
+    )
+    SET(CHIBIOS_kernel_PLATFORM_SOURCES
+        vectors.c
+    ) 
+    SET(CHIBIOS_kernel_PLATFORM_SEARCH_HEADERS
+        core_cm4.h
+        cmparams.h
+    )
+    
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH 
+        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx
+        ${CHIBIOS_ROOT}/os/hal/platforms/STM32
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        stm32.h
+        stm32f4xx.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES  
+        hal_lld.c
+        stm32_dma.c
+    )
+    
+    SET(CHIBIOS_HAL_PLATFORM_MODULE_PATHES
+        STM32F4xx
+        STM32
+        STM32
+        STM32/TIMv1
+        STM32/I2Cv1
+        STM32/TIMv1
+        STM32
+        STM32/GPIOv2
+        STM32/TIMv1
+        STM32/RTCv2
+        STM32
+        STM32/USARTv1
+        STM32/SPIv1
+        STM32/USARTv1
+        STM32/OTGv1
+    )
+    
+    IF(NOT ChibiOS_LINKER_SCRIPT)
+        IF(NOT STM32_CHIP_TYPE)
+            STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE)
+        ENDIF()
+        IF(NOT STM32_FLASH_SIZE)
+            STM32_GET_CHIP_PARAMETERS(${STM32_CHIP} STM32_FLASH_SIZE STM32_RAM_SIZE)
+        ENDIF()
+        IF(${STM32_CHIP_TYPE} STREQUAL 40_41xxx)
+            IF(${STM32_FLASH_SIZE} STREQUAL 1024K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F405xG.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ELSEIF(${STM32_CHIP_TYPE} STREQUAL 429_439xx)
+            IF(${STM32_FLASH_SIZE} STREQUAL 2048K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F429xI.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ENDIF()
+        
+        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()
+    ENDIF()
+      
+ELSEIF(STM32_FAMILY STREQUAL "F1")
+    
+    SET(CHIBIOS_kernel_PLATFORM_SEARCH_PATH 
+        ${CHIBIOS_ROOT}/os/ports/common/ARMCMx/CMSIS/include
+        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx
+    )
+    SET(CHIBIOS_kernel_PLATFORM_SOURCES
+        vectors.c
+    ) 
+    SET(CHIBIOS_kernel_PLATFORM_SEARCH_HEADERS
+        core_cm3.h
+        cmparams.h
+    )
+    
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH 
+        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F1xx
+        ${CHIBIOS_ROOT}/os/hal/platforms/STM32
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        stm32.h
+        stm32f10x.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES  
+        hal_lld.c
+        stm32_dma.c
+    )
+    
+    SET(CHIBIOS_HAL_PLATFORM_MODULE_PATHES
+        STM32F1xx
+        STM32
+        STM32
+        STM32/TIMv1
+        STM32/I2Cv1
+        STM32/TIMv1
+        STM32
+        STM32/GPIOv1
+        STM32/TIMv1
+        STM32/RTCv1
+        STM32
+        STM32/USARTv1
+        STM32/SPIv1
+        STM32/USARTv1
+        STM32/USBv1
+    )
+            
+    IF(NOT ChibiOS_LINKER_SCRIPT)
+        IF(NOT STM32_CHIP_TYPE)
+            STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE)
+        ENDIF()
+        IF(NOT STM32_FLASH_SIZE)
+            STM32_GET_CHIP_PARAMETERS(${STM32_CHIP} STM32_FLASH_SIZE STM32_RAM_SIZE)
+        ENDIF()
+        IF(${STM32_CHIP_TYPE} STREQUAL MD_VL)
+            IF(${STM32_FLASH_SIZE} STREQUAL 128K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F100xB.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ELSEIF(${STM32_CHIP_TYPE} STREQUAL MD)
+            IF(${STM32_FLASH_SIZE} STREQUAL 128K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xB.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ELSEIF(${STM32_CHIP_TYPE} STREQUAL HD)
+            IF(${STM32_FLASH_SIZE} STREQUAL 384K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xD.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ELSEIF(${STM32_FLASH_SIZE} STREQUAL 512K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xE.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ELSEIF(${STM32_CHIP_TYPE} STREQUAL XL)
+            IF(${STM32_FLASH_SIZE} STREQUAL 1024K)
+                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xG.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            ENDIF()
+        ENDIF()
+    ENDIF()            
+ENDIF()
+
+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()
+
+SET(INDEX 0)
+FOREACH(module ${CHIBIOS_HAL_LLD_MODULES})
+    LIST(GET CHIBIOS_HAL_PLATFORM_MODULE_PATHES ${INDEX} path)
+        
+    SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/platforms/${path})
+    SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${module}_lld.h)
+    SET(CHIBIOS_${module}_PLATFORM_SOURCES ${module}_lld.c)
+        
+    IF(${module} STREQUAL ext)
+       SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} ext_lld_isr.h)
+       SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} ext_lld_isr.c)
+    ENDIF()
+        
+    MATH(EXPR INDEX "${INDEX} + 1")
+ENDFOREACH()
+
+IF(STM32_FAMILY STREQUAL "F4")
+    SET(CHIBIOS_ext_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx)
+ELSEIF(STM32_FAMILY STREQUAL "F1")
+    SET(CHIBIOS_ext_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/platforms/STM32F1xx)
+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()
+

+ 68 - 0
cmake/Modules/ChibiOS3.cmake

@@ -0,0 +1,68 @@
+IF(NOT ChibiOS_FIND_COMPONENTS) 
+    SET(ChibiOS_FIND_COMPONENTS nil)
+    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)
+
+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()
+
+INCLUDE(ChibiOS3_LD)
+INCLUDE(ChibiOS3_HAL)
+
+IF(${CHIBIOS_KERNEL} STREQUAL rt)
+  INCLUDE(ChibiOS3_RT)
+ELSE()
+  INCLUDE(ChibiOS3_NIL)
+  # Ugly, but requred
+  LIST(APPEND ChibiOS_FIND_COMPONENTS hal st)
+ENDIF()
+
+SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_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()

+ 77 - 0
cmake/Modules/ChibiOS3_HAL.cmake

@@ -0,0 +1,77 @@
+SET(CHIBIOS_HAL_MODULES adc can dac ext gpt i2c i2s icu mac mmc_spi mmcsd pal pwm rtc sdc serial serial_usb spi st uart usb)
+
+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_OSAL_PATH})
+SET(CHIBIOS_hal_SEARCH_HEADERS hal.h osal.h)
+SET(CHIBIOS_hal_SOURCES hal.c hal_queues.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 ${module}.c)
+  SET(CHIBIOS_${module}_SEARCH_HEADERS ${module}.h)
+  
+  IF(${module} STREQUAL mmcsd)
+    SET(CHIBIOS_${module}_SOURCES hal_mmcsd.c)
+  ENDIF()
+ENDFOREACH()
+
+IF(STM32_FAMILY STREQUAL "F1")
+    SET(CHIBIOS_HAL_PLATFORM_MODULES adc can ext gpt i2c icu mac pal pwm rtc sdc serial spi st uart usb)
+    SET(CHIBIOS_HAL_PLATFORM_MODULES_PATHES 
+      STM32F1xx 
+      LLD
+      LLD
+      LLD/TIMv1
+      LLD/I2Cv1
+      LLD/TIMv1
+      LLD
+      LLD/GPIOv1
+      LLD/TIMv1
+      LLD/RTCv1
+      LLD
+      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
+    )
+    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
+        hal_lld.h
+        nvic.h
+        stm32_registry.h
+    )
+    SET(CHIBIOS_hal_PLATFORM_SOURCES  
+        hal_lld.c
+        stm32_dma.c
+        nvic.c
+    )
+ENDIF()
+
+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 ${module}_lld.h)
+    SET(CHIBIOS_${module}_PLATFORM_SOURCES ${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} ext_lld_isr.h)
+       SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} ext_lld_isr.c)
+    ENDIF()
+        
+    MATH(EXPR INDEX "${INDEX} + 1")
+ENDFOREACH()
+

+ 19 - 0
cmake/Modules/ChibiOS3_LD.cmake

@@ -0,0 +1,19 @@
+IF(NOT CHIBIOS_PROCESS_STACK_SIZE)
+  SET(CHIBIOS_PROCESS_STACK_SIZE 0x400)
+  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 0x400)
+  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/ports/ARMCMx/compilers/GCC\"")
+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{\nflash : org = 0x08000000, len = \${STM32_FLASH_SIZE}\nram : org = 0x20000000, len = \${STM32_RAM_SIZE}\n}\nINCLUDE rules.ld\n")
+    SET(ChibiOS_LINKER_SCRIPT ${CMAKE_BINARY_DIR}/chibios_link.ld.in)
+ENDIF()     

+ 34 - 0
cmake/Modules/ChibiOS3_NIL.cmake

@@ -0,0 +1,34 @@
+SET(CHIBIOS_nil_SEARCH_PATH 
+  ${CHIBIOS_ROOT}/os/nil/src
+  ${CHIBIOS_ROOT}/os/nil/include
+  ${CHIBIOS_ROOT}/os/nil/ports/ARMCMx
+  ${CHIBIOS_ROOT}/os/nil/ports/ARMCMx/compilers/GCC
+  ${CHIBIOS_ROOT}/os/common/ports/ARMCMx/compilers/GCC
+  ${CHIBIOS_ROOT}/os/nil/src
+)
+SET(CHIBIOS_nil_SEARCH_HEADERS
+  nil.h
+  nilcore.h
+  niltypes.h
+)
+SET(CHIBIOS_nil_SOURCES  
+  crt0.c
+  vectors.c
+  nilcore.c
+  nilcore_v7m.c
+  nil.c
+  nilcoreasm_v7m.s
+)
+
+IF(STM32_FAMILY STREQUAL "F1")
+  SET(CHIBIOS_nil_PLATFORM_SEARCH_PATH
+    ${CHIBIOS_ROOT}/os/common/ports/ARMCMx/devices/STM32F1xx
+    ${CHIBIOS_ROOT}/os/ext/CMSIS/include
+    ${CHIBIOS_ROOT}/os/ext/CMSIS/ST
+  )
+  SET(CHIBIOS_nil_PLATFORM_SEARCH_HEADERS
+    core_cm3.h
+    stm32f10x.h
+    cmparams.h
+  )
+ENDIF()

+ 4 - 322
cmake/Modules/FindChibiOS.cmake

@@ -3,330 +3,12 @@ IF(NOT CHIBIOS_ROOT)
     MESSAGE(STATUS "No CHIBIOS_ROOT specified, using default: ${CHIBIOS_ROOT}")
 ENDIF()
 
-SET(CHIBIOS_HAL_MODULES adc can ext gpt i2c icu mac mmc_spi mmcsd pal pwm rtc sdc serial serial_usb spi tm uart usb)
-SET(CHIBIOS_VARIOUS_MODULES chprintf chrtclib evtimer memstreams shell syscalls fatfs lwip)
-SET(CHIBIOS_COMPONENTS kernel hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_VARIOUS_MODULES})
-
-IF(NOT ChibiOS_FIND_COMPONENTS) 
-    SET(ChibiOS_FIND_COMPONENTS kernel)
-    MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
-    MESSAGE(STATUS "Supported ChibiOS components: ${CHIBIOS_COMPONENTS}")
-ENDIF()
-
-SET(CHIBIOS_HAL_LLD_MODULES adc can ext gpt i2c icu mac pal pwm rtc sdc serial spi uart usb)
-
-SET(CHIBIOS_kernel_SEARCH_PATH 
-    ${CHIBIOS_ROOT}/os/kernel/include
-    ${CHIBIOS_ROOT}/os/ports/common/ARMCMx
-    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx
-    ${CHIBIOS_ROOT}/os/kernel/src
-)
-SET(CHIBIOS_kernel_SEARCH_HEADERS
-    ch.h
-    nvic.h
-    chcore.h
-)
-SET(CHIBIOS_kernel_SOURCES  
-    chsys.c
-    chdebug.c
-    chlists.c
-    chvt.c
-    chschd.c
-    chthreads.c
-    chdynamic.c
-    chregistry.c
-    chsem.c
-    chmtx.c
-    chcond.c
-    chevents.c
-    chmsg.c
-    chmboxes.c
-    chqueues.c
-    chmemcore.c
-    chheap.c
-    chmempools.c
-    crt0.c
-    chcore.c
-    chcore_v7m.c
-    nvic.c
-)
-
-SET(CHIBIOS_hal_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/include ${CHIBIOS_ROOT}/os/hal/src)
-SET(CHIBIOS_hal_SEARCH_HEADERS hal.h)
-SET(CHIBIOS_hal_SOURCES hal.c)
-
-FOREACH(module ${CHIBIOS_HAL_MODULES})
-    SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/src)
-    SET(CHIBIOS_${module}_SOURCES ${module}.c)
-ENDFOREACH()
-
-FOREACH(module ${CHIBIOS_VARIOUS_MODULES})
-    IF(${module} STREQUAL fatfs)
-        SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/various/fatfs_bindings ${CHIBIOS_ROOT}/ext/fatfs/src/ ${CHIBIOS_ROOT}/ext/fatfs/src/option)
-        SET(CHIBIOS_${module}_SOURCES
-            fatfs_diskio.c
-            fatfs_syscall.c
-            ff.c
-            ccsbcs.c
-        )
-        SET(CHIBIOS_${module}_SEARCH_HEADERS ff.h)
-    ELSEIF(${module} STREQUAL lwip)
-        SET(CHIBIOS_${module}_SEARCH_PATH 
-            ${CHIBIOS_ROOT}/os/various/lwip_bindings 
-            ${CHIBIOS_ROOT}/os/various/lwip_bindings/arch
-            ${CHIBIOS_ROOT}/ext/lwip/src/
-            ${CHIBIOS_ROOT}/ext/lwip/src/include/
-            ${CHIBIOS_ROOT}/ext/lwip/src/include/ipv4/
-        )
-        SET(CHIBIOS_${module}_SOURCES
-            lwipthread.c
-            sys_arch.c
-            netif/etharp.c
-            core/dhcp.c 
-            core/dns.c 
-            core/init.c 
-            core/mem.c 
-            core/memp.c 
-            core/netif.c 
-            core/pbuf.c 
-            core/raw.c 
-            core/stats.c 
-            core/sys.c 
-            core/tcp.c 
-            core/tcp_in.c 
-            core/tcp_out.c 
-            core/udp.c
-            core/ipv4/autoip.c 
-            core/ipv4/icmp.c 
-            core/ipv4/igmp.c 
-            core/ipv4/inet.c 
-            core/ipv4/inet_chksum.c 
-            core/ipv4/ip.c 
-            core/ipv4/ip_addr.c 
-            core/ipv4/ip_frag.c 
-            core/def.c 
-            core/timers.c
-            api/api_lib.c 
-            api/api_msg.c 
-            api/err.c 
-            api/netbuf.c 
-            api/netdb.c 
-            api/netifapi.c 
-            api/sockets.c 
-            api/tcpip.c
-        )
-        SET(CHIBIOS_${module}_SEARCH_HEADERS 
-            lwipthread.h 
-            sys_arch.h
-            lwip/api.h
-            lwip/ip.h
-        )
-    ELSE()
-        SET(CHIBIOS_${module}_SEARCH_PATH ${CHIBIOS_ROOT}/os/various/)
-        SET(CHIBIOS_${module}_SOURCES ${module}.c)
-        IF(NOT (${module} STREQUAL syscalls))
-            SET(CHIBIOS_${module}_SEARCH_HEADERS ${module}.h)
-        ENDIF()
-    ENDIF()
-ENDFOREACH()
-
-IF(STM32_FAMILY STREQUAL "F4")
-    SET(CHIBIOS_kernel_PLATFORM_SEARCH_PATH 
-        ${CHIBIOS_ROOT}/os/ports/common/ARMCMx/CMSIS/include
-        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx
-    )
-    SET(CHIBIOS_kernel_PLATFORM_SOURCES
-        vectors.c
-    ) 
-    SET(CHIBIOS_kernel_PLATFORM_SEARCH_HEADERS
-        core_cm4.h
-        cmparams.h
-    )
-    
-    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH 
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32
-    )
-    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
-        hal_lld.h
-        stm32.h
-        stm32f4xx.h
-    )
-    SET(CHIBIOS_hal_PLATFORM_SOURCES  
-        hal_lld.c
-        stm32_dma.c
-    )
-    
-    SET(CHIBIOS_HAL_PLATFORM_MODULE_PATHES
-        STM32F4xx
-        STM32
-        STM32
-        STM32/TIMv1
-        STM32/I2Cv1
-        STM32/TIMv1
-        STM32
-        STM32/GPIOv2
-        STM32/TIMv1
-        STM32/RTCv2
-        STM32
-        STM32/USARTv1
-        STM32/SPIv1
-        STM32/USARTv1
-        STM32/OTGv1
-    )
-    
-    IF(NOT ChibiOS_LINKER_SCRIPT)
-        IF(NOT STM32_CHIP_TYPE)
-            STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE)
-        ENDIF()
-        IF(NOT STM32_FLASH_SIZE)
-            STM32_GET_CHIP_PARAMETERS(${STM32_CHIP} STM32_FLASH_SIZE STM32_RAM_SIZE)
-        ENDIF()
-        IF(${STM32_CHIP_TYPE} STREQUAL 40_41xxx)
-            IF(${STM32_FLASH_SIZE} STREQUAL 1024K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F405xG.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ELSEIF(${STM32_CHIP_TYPE} STREQUAL 429_439xx)
-            IF(${STM32_FLASH_SIZE} STREQUAL 2048K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F429xI.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ENDIF()
-        
-        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()
-    ENDIF()
-      
-ELSEIF(STM32_FAMILY STREQUAL "F1")
-    
-    SET(CHIBIOS_kernel_PLATFORM_SEARCH_PATH 
-        ${CHIBIOS_ROOT}/os/ports/common/ARMCMx/CMSIS/include
-        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx
-    )
-    SET(CHIBIOS_kernel_PLATFORM_SOURCES
-        vectors.c
-    ) 
-    SET(CHIBIOS_kernel_PLATFORM_SEARCH_HEADERS
-        core_cm3.h
-        cmparams.h
-    )
-    
-    SET(CHIBIOS_hal_PLATFORM_SEARCH_PATH 
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F1xx
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32
-    )
-    SET(CHIBIOS_hal_PLATFORM_SEARCH_HEADERS
-        hal_lld.h
-        stm32.h
-        stm32f10x.h
-    )
-    SET(CHIBIOS_hal_PLATFORM_SOURCES  
-        hal_lld.c
-        stm32_dma.c
-    )
-    
-    SET(CHIBIOS_HAL_PLATFORM_MODULE_PATHES
-        STM32F1xx
-        STM32
-        STM32
-        STM32/TIMv1
-        STM32/I2Cv1
-        STM32/TIMv1
-        STM32
-        STM32/GPIOv1
-        STM32/TIMv1
-        STM32/RTCv1
-        STM32
-        STM32/USARTv1
-        STM32/SPIv1
-        STM32/USARTv1
-        STM32/USBv1
-    )
-            
-    IF(NOT ChibiOS_LINKER_SCRIPT)
-        IF(NOT STM32_CHIP_TYPE)
-            STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE)
-        ENDIF()
-        IF(NOT STM32_FLASH_SIZE)
-            STM32_GET_CHIP_PARAMETERS(${STM32_CHIP} STM32_FLASH_SIZE STM32_RAM_SIZE)
-        ENDIF()
-        IF(${STM32_CHIP_TYPE} STREQUAL MD_VL)
-            IF(${STM32_FLASH_SIZE} STREQUAL 128K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F100xB.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ELSEIF(${STM32_CHIP_TYPE} STREQUAL MD)
-            IF(${STM32_FLASH_SIZE} STREQUAL 128K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xB.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ELSEIF(${STM32_CHIP_TYPE} STREQUAL HD)
-            IF(${STM32_FLASH_SIZE} STREQUAL 384K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xD.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ELSEIF(${STM32_FLASH_SIZE} STREQUAL 512K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xE.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ELSEIF(${STM32_CHIP_TYPE} STREQUAL XL)
-            IF(${STM32_FLASH_SIZE} STREQUAL 1024K)
-                FIND_FILE(ChibiOS_LINKER_SCRIPT NAMES STM32F103xG.ld PATHS ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F1xx/ld NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
-            ENDIF()
-        ENDIF()
-    ENDIF()            
-ENDIF()
-
-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.")
+IF((NOT ChibiOS_FIND_VERSION_MAJOR) OR (ChibiOS_FIND_VERSION_MAJOR EQUAL 2))
+  INCLUDE(ChibiOS2)
+ELSE()
+  INCLUDE(ChibiOS3)
 ENDIF()
 
-SET(INDEX 0)
-FOREACH(module ${CHIBIOS_HAL_LLD_MODULES})
-    LIST(GET CHIBIOS_HAL_PLATFORM_MODULE_PATHES ${INDEX} path)
-        
-    SET(CHIBIOS_${module}_PLATFORM_SEARCH_PATH ${CHIBIOS_ROOT}/os/hal/platforms/${path})
-    SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${module}_lld.h)
-    SET(CHIBIOS_${module}_PLATFORM_SOURCES ${module}_lld.c)
-        
-    IF(${module} STREQUAL ext)
-       SET(CHIBIOS_${module}_PLATFORM_SEARCH_HEADERS ${CHIBIOS_ext_PLATFORM_SEARCH_HEADERS} ext_lld_isr.h)
-       SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} ext_lld_isr.c)
-    ENDIF()
-        
-    MATH(EXPR INDEX "${INDEX} + 1")
-ENDFOREACH()
-
-IF(STM32_FAMILY STREQUAL "F4")
-    SET(CHIBIOS_ext_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx)
-ELSEIF(STM32_FAMILY STREQUAL "F1")
-    SET(CHIBIOS_ext_PLATFORM_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/platforms/STM32F1xx)
-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()
-
 LIST(REMOVE_DUPLICATES ChibiOS_INCLUDE_DIRS)
 
 INCLUDE(FindPackageHandleStandardArgs)