| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- 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()
|