Konstantin Oblaukhov пре 11 година
родитељ
комит
32a36acf47
5 измењених фајлова са 256 додато и 123 уклоњено
  1. 0 118
      cmake/Modules/ChibiOS.cmake
  2. 250 0
      cmake/Modules/FindChibiOS.cmake
  3. 1 1
      gcc_stm32.cmake
  4. 4 4
      stm32-chibios/CMakeLists.txt
  5. 1 0
      stm32-chibios/chconf.h

+ 0 - 118
cmake/Modules/ChibiOS.cmake

@@ -1,118 +0,0 @@
-IF(NOT CHIBIOS_ROOT)
-    SET(CHIBIOS_ROOT /usr/src/chibios)
-    MESSAGE(STATUS "No CHIBIOS_ROOT specified, using default: ${CHIBIOS_ROOT}")
-ENDIF()
-
-IF(STM32_FAMILY STREQUAL "F4")
-    SET(CHIBIOS_HAL_PLATFORM_SOURCES
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx/stm32_dma.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx/hal_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx/adc_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx/ext_lld_isr.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/GPIOv2/pal_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/I2Cv1/i2c_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/OTGv1/usb_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/RTCv2/rtc_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/SPIv1/spi_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/TIMv1/gpt_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/TIMv1/icu_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/TIMv1/pwm_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/USARTv1/serial_lld.c
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/USARTv1/uart_lld.c
-    )
-    SET(CHIBIOS_KERNEL_PLATFORM_SOURCES
-        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/vectors.c
-    )  
-    SET(CHIBIOS_HAL_PLATFORM_INCLUDE_DIRS
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx/
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/GPIOv2
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/I2Cv1
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/OTGv1
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/RTCv2
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/SPIv1
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/TIMv1
-        ${CHIBIOS_ROOT}/os/hal/platforms/STM32/USARTv1
-    )
-    SET(CHIBIOS_KERNEL_PLATFORM_INCLUDE_DIRS
-        ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx
-    )
-ENDIF()
-
-SET(CHIBIOS_HAL_PLATFORM_SOURCES ${CHIBIOS_HAL_PLATFORM_SOURCES}
-    ${CHIBIOS_ROOT}/os/hal/platforms/STM32/can_lld.c
-    ${CHIBIOS_ROOT}/os/hal/platforms/STM32/ext_lld.c
-    ${CHIBIOS_ROOT}/os/hal/platforms/STM32/mac_lld.c
-    ${CHIBIOS_ROOT}/os/hal/platforms/STM32/sdc_lld.c
-)  
-
-SET(CHIBIOS_KERNEL_PLATFORM_SOURCES ${CHIBIOS_KERNEL_PLATFORM_SOURCES}
-    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/crt0.c
-    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/chcore.c
-    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/chcore_v7m.c
-    ${CHIBIOS_ROOT}/os/ports/common/ARMCMx/nvic.c
-)
-
-SET(CHIBIOS_KERNEL_PLATFORM_INCLUDE_DIRS ${CHIBIOS_KERNEL_PLATFORM_INCLUDE_DIRS}
-    ${CHIBIOS_ROOT}/os/ports/common/ARMCMx
-    ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx
-)
-
-SET(CHIBIOS_HAL_INCLUDE_DIRS
-    ${CHIBIOS_ROOT}/os/hal/include
-)
-
-SET(CHIBIOS_HAL_SOURCES
-    ${CHIBIOS_ROOT}/os/hal/src/hal.c
-    ${CHIBIOS_ROOT}/os/hal/src/adc.c
-    ${CHIBIOS_ROOT}/os/hal/src/can.c
-    ${CHIBIOS_ROOT}/os/hal/src/ext.c
-    ${CHIBIOS_ROOT}/os/hal/src/gpt.c
-    ${CHIBIOS_ROOT}/os/hal/src/i2c.c
-    ${CHIBIOS_ROOT}/os/hal/src/icu.c
-    ${CHIBIOS_ROOT}/os/hal/src/mac.c
-    ${CHIBIOS_ROOT}/os/hal/src/mmc_spi.c
-    ${CHIBIOS_ROOT}/os/hal/src/mmcsd.c
-    ${CHIBIOS_ROOT}/os/hal/src/pal.c
-    ${CHIBIOS_ROOT}/os/hal/src/pwm.c
-    ${CHIBIOS_ROOT}/os/hal/src/rtc.c
-    ${CHIBIOS_ROOT}/os/hal/src/sdc.c
-    ${CHIBIOS_ROOT}/os/hal/src/serial.c
-    ${CHIBIOS_ROOT}/os/hal/src/serial_usb.c
-    ${CHIBIOS_ROOT}/os/hal/src/spi.c
-    ${CHIBIOS_ROOT}/os/hal/src/tm.c
-    ${CHIBIOS_ROOT}/os/hal/src/uart.c
-    ${CHIBIOS_ROOT}/os/hal/src/usb.c
-)
-
-SET(CHIBIOS_KERNEL_INCLUDE_DIRS
-    ${CHIBIOS_ROOT}/os/kernel/include
-)
-  
-SET(CHIBIOS_KERNEL_SOURCES  
-    ${CHIBIOS_ROOT}/os/kernel/src/chsys.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chdebug.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chlists.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chvt.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chschd.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chthreads.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chdynamic.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chregistry.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chsem.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chmtx.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chcond.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chevents.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chmsg.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chmboxes.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chqueues.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chmemcore.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chheap.c
-    ${CHIBIOS_ROOT}/os/kernel/src/chmempools.c
-)
-
-SET(CHIBIOS_VARIOUS_INCLUDE_DIRS
-    ${CHIBIOS_ROOT}/os/various/
-)
-
-SET(CHIBIOS_SOURCES ${CHIBIOS_KERNEL_PLATFORM_SOURCES} ${CHIBIOS_KERNEL_SOURCES} ${CHIBIOS_HAL_PLATFORM_SOURCES} ${CHIBIOS_HAL_SOURCES})
-SET(CHIBIOS_INCLUDE_DIRS ${CHIBIOS_KERNEL_PLATFORM_INCLUDE_DIRS} ${CHIBIOS_KERNEL_INCLUDE_DIRS} ${CHIBIOS_HAL_PLATFORM_INCLUDE_DIRS} ${CHIBIOS_HAL_INCLUDE_DIRS} ${CHIBIOS_VARIOUS_INCLUDE_DIRS})

+ 250 - 0
cmake/Modules/FindChibiOS.cmake

@@ -0,0 +1,250 @@
+IF(NOT CHIBIOS_ROOT)
+    SET(CHIBIOS_ROOT /usr/src/chibios)
+    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/USBv1
+    )
+    
+    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_SEARCH_PATH ${CHIBIOS_ext_PLATFORM_SEARCH_PATH} ${CHIBIOS_ROOT}/os/hal/platforms/STM32F4xx)
+           SET(CHIBIOS_${module}_PLATFORM_SOURCES ${CHIBIOS_ext_PLATFORM_SOURCES} ext_lld_isr.c)
+        ENDIF()
+        
+        MATH(EXPR INDEX "${INDEX} + 1")
+    ENDFOREACH()
+        
+    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()
+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)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ChibiOS DEFAULT_MSG ChibiOS_SOURCES ChibiOS_INCLUDE_DIRS ChibiOS_LINKER_SCRIPT)

+ 1 - 1
gcc_stm32.cmake

@@ -136,9 +136,9 @@ FUNCTION(STM32_SET_TARGET_PROPERTIES TARGET)
         IF((NOT STM32_FLASH_SIZE) OR (NOT STM32_RAM_SIZE))
         IF((NOT STM32_FLASH_SIZE) OR (NOT STM32_RAM_SIZE))
             MESSAGE(FATAL_ERROR "Unknown chip: ${STM32_CHIP}. Try to use STM32_FLASH_SIZE/STM32_RAM_SIZE directly.")
             MESSAGE(FATAL_ERROR "Unknown chip: ${STM32_CHIP}. Try to use STM32_FLASH_SIZE/STM32_RAM_SIZE directly.")
         ENDIF()
         ENDIF()
-        MESSAGE(STATUS "${STM32_CHIP} has ${STM32_FLASH_SIZE}iB of flash memory and ${STM32_RAM_SIZE}iB of RAM")
     ENDIF()
     ENDIF()
     STM32_SET_FLASH_PARAMS(${TARGET} ${STM32_FLASH_SIZE} ${STM32_RAM_SIZE})
     STM32_SET_FLASH_PARAMS(${TARGET} ${STM32_FLASH_SIZE} ${STM32_RAM_SIZE})
+    MESSAGE(STATUS "${STM32_CHIP} has ${STM32_FLASH_SIZE}iB of flash memory and ${STM32_RAM_SIZE}iB of RAM")
 ENDFUNCTION()
 ENDFUNCTION()
 
 
 MACRO(STM32_GENERATE_LIBRARIES NAME SOURCES LIBRARIES)
 MACRO(STM32_GENERATE_LIBRARIES NAME SOURCES LIBRARIES)

+ 4 - 4
stm32-chibios/CMakeLists.txt

@@ -3,11 +3,11 @@ PROJECT(stm32-chibios)
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 ENABLE_LANGUAGE(ASM)
 ENABLE_LANGUAGE(ASM)
 
 
-INCLUDE(ChibiOS)
+FIND_PACKAGE(ChibiOS COMPONENTS kernel hal pal serial REQUIRED)
 
 
 INCLUDE_DIRECTORIES(
 INCLUDE_DIRECTORIES(
     ${CMAKE_CURRENT_SOURCE_DIR}    
     ${CMAKE_CURRENT_SOURCE_DIR}    
-    ${CHIBIOS_INCLUDE_DIRS}
+    ${ChibiOS_INCLUDE_DIRS}
 )
 )
 
 
 SET(PROJECT_SOURCES
 SET(PROJECT_SOURCES
@@ -15,9 +15,9 @@ SET(PROJECT_SOURCES
     board.c
     board.c
 )
 )
 
 
-SET(STM32_LINKER_SCRIPT ${CHIBIOS_ROOT}/os/ports/GCC/ARMCMx/STM32F4xx/ld/STM32F407xG_CCM.ld)
+SET(STM32_LINKER_SCRIPT ${ChibiOS_LINKER_SCRIPT})
 
 
-ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${PROJECT_SOURCES} ${CHIBIOS_SOURCES})
+ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${PROJECT_SOURCES} ${ChibiOS_SOURCES})
 TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME})
 TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME})
 
 
 STM32_SET_TARGET_PROPERTIES(${CMAKE_PROJECT_NAME})
 STM32_SET_TARGET_PROPERTIES(${CMAKE_PROJECT_NAME})

+ 1 - 0
stm32-chibios/chconf.h

@@ -72,6 +72,7 @@
 
 
 #if !defined(CH_USE_MAILBOXES)
 #if !defined(CH_USE_MAILBOXES)
 #define CH_USE_MAILBOXES                TRUE
 #define CH_USE_MAILBOXES                TRUE
+#endif
 
 
 #if !defined(CH_USE_QUEUES)
 #if !defined(CH_USE_QUEUES)
 #define CH_USE_QUEUES                   TRUE
 #define CH_USE_QUEUES                   TRUE