From cc22d67b328f3428e48c76cc84e8bcf34d94ad16 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 5 Apr 2023 18:27:47 -0400 Subject: [PATCH] some chibios experiments --- cmake/Findchibios.cmake | 381 +++++++++++------------ cmake/ParseMakefile.cmake | 13 +- cmake/chibios/LLD/ADCv3.cmake | 2 + cmake/chibios/LLD/CANv1.cmake | 2 + cmake/chibios/LLD/DACv1.cmake | 2 + cmake/chibios/LLD/DMAv1.cmake | 2 + cmake/chibios/LLD/EXTIv1.cmake | 2 + cmake/chibios/LLD/GPIOv2.cmake | 2 + cmake/chibios/LLD/I2Cv2.cmake | 7 + cmake/chibios/LLD/RTCv2.cmake | 2 + cmake/chibios/LLD/SPIv2.cmake | 5 + cmake/chibios/LLD/SYSTICKv1.cmake | 2 + cmake/chibios/LLD/TIMv1.cmake | 6 + cmake/chibios/LLD/USARTv2.cmake | 9 + cmake/chibios/LLD/USBv1.cmake | 6 + cmake/chibios/LLD/xWDGv1.cmake | 6 + cmake/chibios/ports/ARMv7-M.cmake | 10 + cmake/chibios/ports/STM32F3xx.cmake | 25 ++ platforms/chibios/CMakeLists.txt | 12 +- quantum/CMakeLists.txt | 4 - tmk_core/protocol/chibios/CMakeLists.txt | 8 +- tmk_core/protocol/lufa/CMakeLists.txt | 2 +- 22 files changed, 299 insertions(+), 211 deletions(-) create mode 100644 cmake/chibios/LLD/ADCv3.cmake create mode 100644 cmake/chibios/LLD/CANv1.cmake create mode 100644 cmake/chibios/LLD/DACv1.cmake create mode 100644 cmake/chibios/LLD/DMAv1.cmake create mode 100644 cmake/chibios/LLD/EXTIv1.cmake create mode 100644 cmake/chibios/LLD/GPIOv2.cmake create mode 100644 cmake/chibios/LLD/I2Cv2.cmake create mode 100644 cmake/chibios/LLD/RTCv2.cmake create mode 100644 cmake/chibios/LLD/SPIv2.cmake create mode 100644 cmake/chibios/LLD/SYSTICKv1.cmake create mode 100644 cmake/chibios/LLD/TIMv1.cmake create mode 100644 cmake/chibios/LLD/USARTv2.cmake create mode 100644 cmake/chibios/LLD/USBv1.cmake create mode 100644 cmake/chibios/LLD/xWDGv1.cmake create mode 100644 cmake/chibios/ports/ARMv7-M.cmake create mode 100644 cmake/chibios/ports/STM32F3xx.cmake diff --git a/cmake/Findchibios.cmake b/cmake/Findchibios.cmake index dc1a663aa20..3ca1ee6002d 100644 --- a/cmake/Findchibios.cmake +++ b/cmake/Findchibios.cmake @@ -1,5 +1,7 @@ include(ParseMakefile) +# STM32F303 + set(MCU "cortex-m4") set(ARMV 7) set(MCU_FAMILY "STM32") @@ -10,220 +12,207 @@ set(BOARD "GENERIC_STM32_F303XC") set(USE_FPU TRUE) set(UF2_FAMILY "STM32F3") set(STM32_BOOTLOADER_ADDRESS 0x1FFFD800) +set(EEPROM_DRIVER "wear_leveling" CACHE STRING "" FORCE) -set(MCU_PORT_NAME ${MCU_FAMILY}) +# platforms/chibios/platform.mk + +if(NOT DEFINED MCU_PORT_NAME) + set(MCU_PORT_NAME ${MCU_FAMILY}) +endif() set(MCU_ARCH ${MCU}) -set(CHIBIOS_PORT "ARMv${ARMV}-M") -set(PLATFORM_NAME platform) +if(NOT DEFINED CHIBIOS_PORT) + set(CHIBIOS_PORT "ARMv${ARMV}-M") +endif() +if(NOT DEFINED PLATFORM_NAME) + set(PLATFORM_NAME platform) +endif() set(CHIBIOS ${CMAKE_SOURCE_DIR}/lib/chibios) set(CHIBIOS_CONTRIB ${CMAKE_SOURCE_DIR}/lib/chibios-contrib) -set(EEPROM_DRIVER "wear_leveling" CACHE STRING "" FORCE) -# target_compile_definitions(qmk PUBLIC - # __ARM_ARCH_7M__ - # STM32F303xC -# ) +# port*.mk +include(chibios/ports/${CHIBIOS_PORT}) -# F3 sources -set(CHIBIOS_PORT_SRCS - # RT - chcore.c - chcoreasm.S +# platform.mk +include(chibios/ports/${MCU_SERIES}) + +# startup_*.mk - might need to convert these +find_file(STARTUP_MK startup_${MCU_STARTUP}.mk + ${CHIBIOS}/os/common/ports/ARMCMx/compilers/GCC/mk + ${CHIBIOS}/os/common/startup/ARMCMx/compilers/GCC/mk + ${CHIBIOS_CONTRIB}/os/common/startup/ARMCMx/compilers/GCC/mk ) -foreach(SRC_FILE ${CHIBIOS_PORT_SRCS}) - set(CHIBIOS_F3_SRC_FILE SRC_FILE-NOTFOUND) - find_file(CHIBIOS_F3_SRC_FILE ${SRC_FILE} - PATHS - ${CHIBIOS}/os/common/ports/ARMv7-M/compilers/GCC - ${CHIBIOS}/os/common/ports/ARMv7-M - CMAKE_FIND_ROOT_PATH_BOTH - ) +ParseMakefile(${STARTUP_MK}) +target_sources(qmk PUBLIC ${STARTUPSRC} ${STARTUPASM}) +target_include_directories(qmk PUBLIC ${STARTUPINC}) - target_sources(qmk PUBLIC ${CHIBIOS_F3_SRC_FILE}) -endforeach() +# board paths - we should just standardize these +find_path(BOARD_PATH +NAMES + boards/${BOARD}/board.mk + board/board.mk +PATHS + ${QMK_KEYBOARD_FOLDER}/boards/${BOARD} + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/${BOARD} +) +find_file(BOARD_MK board.mk + ${BOARD_PATH}/boards/${BOARD} + ${BOARD_PATH}/board +) +ParseMakefile(${BOARD_MK}) +target_sources(qmk PUBLIC ${BOARDSRC}) +target_include_directories(qmk PUBLIC ${BOARDINC}) -target_include_directories(qmk PUBLIC - ${CHIBIOS}/os/common/ports/ARMv7-M - ${CHIBIOS}/os/hal/boards/ST_STM32F3_DISCOVERY +# bootloader +if(DEFINED STM32_BOOTLOADER_ADDRESS) + target_compile_definitions(qmk PUBLIC STM32_BOOTLOADER_ADDRESS=${STM32_BOOTLOADER_ADDRESS}) +endif() +if(DEFINED WB32_BOOTLOADER_ADDRESS) + target_compile_definitions(qmk PUBLIC WB32_BOOTLOADER_ADDRESS=${WB32_BOOTLOADER_ADDRESS}) +endif() + +find_file(BOOTLOADER_DEFS_H bootloader_defs.h + ${QMK_KEYBOARD_FOLDER} + ${QMK_KEYBOARD_FOLDER}/boards/${BOARD} + ${BOARD_PATH}/configs +) +if(EXISTS ${BOOTLOADER_DEFS_H}) + target_compile_options(qmk PUBLIC -include ${BOOTLOADER_DEFS_H}) +endif() + +# chconf directories +find_path(CHCONFDIR chconf.h + ${QMK_KEYBOARD_FOLDER} + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/${BOARD}/configs + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/common/configs +) +target_include_directories(qmk PUBLIC ${CHCONFDIR}) + +# halconf directories +find_path(HALCONFDIR halconf.h + ${QMK_KEYBOARD_FOLDER} + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/${BOARD}/configs + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/common/configs +) +target_include_directories(qmk PUBLIC ${HALCONFDIR}) + +# linker script +find_file(LDSCRIPT ${MCU_LDSCRIPT}.ld + ${QMK_KEYBOARD_FOLDER}/ld + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/${BOARD}/ld + ${CMAKE_SOURCE_DIR}/platforms/chibios/boards/common/ld ) -# F3 HAL specific +# os/hal/hal.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/src/hal.c + ${CHIBIOS}/os/hal/src/hal_st.c + ${CHIBIOS}/os/hal/src/hal_buffers.c + ${CHIBIOS}/os/hal/src/hal_queues.c + ${CHIBIOS}/os/hal/src/hal_flash.c + ${CHIBIOS}/os/hal/src/hal_mmcsd.c + ${CHIBIOS}/os/hal/src/hal_adc.c + ${CHIBIOS}/os/hal/src/hal_can.c + ${CHIBIOS}/os/hal/src/hal_crypto.c + ${CHIBIOS}/os/hal/src/hal_dac.c + ${CHIBIOS}/os/hal/src/hal_efl.c + ${CHIBIOS}/os/hal/src/hal_gpt.c + ${CHIBIOS}/os/hal/src/hal_i2c.c + ${CHIBIOS}/os/hal/src/hal_i2s.c + ${CHIBIOS}/os/hal/src/hal_icu.c + ${CHIBIOS}/os/hal/src/hal_mac.c + ${CHIBIOS}/os/hal/src/hal_mmc_spi.c + ${CHIBIOS}/os/hal/src/hal_pal.c + ${CHIBIOS}/os/hal/src/hal_pwm.c + ${CHIBIOS}/os/hal/src/hal_rtc.c + ${CHIBIOS}/os/hal/src/hal_sdc.c + ${CHIBIOS}/os/hal/src/hal_serial.c + ${CHIBIOS}/os/hal/src/hal_serial_usb.c + ${CHIBIOS}/os/hal/src/hal_sio.c + ${CHIBIOS}/os/hal/src/hal_spi.c + ${CHIBIOS}/os/hal/src/hal_trng.c + ${CHIBIOS}/os/hal/src/hal_uart.c + ${CHIBIOS}/os/hal/src/hal_usb.c + ${CHIBIOS}/os/hal/src/hal_wdg.c + ${CHIBIOS}/os/hal/src/hal_wspi.c +) target_include_directories(qmk PUBLIC - ${CHIBIOS}/os/hal/ports/common/ARMCMx ${CHIBIOS}/os/hal/include - ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx - - ${CHIBIOS}/os/common/portability/GCC - ${CHIBIOS}/os/common/ports/ARM-common - ${CHIBIOS}/os/common/ports/ARMv7-M - ${CHIBIOS}/os/common/startup/ARMCMx/compilers/GCC - ${CHIBIOS}/os/common/startup/ARMCMx/devices/STM32F3xx - ${CHIBIOS}/os/common/ext/ARM/CMSIS/Core/Include - ${CHIBIOS}/os/common/ext/ST/STM32F3xx - - ${CHIBIOS}/os/hal/ports/STM32/LLD/ADCv3 - ${CHIBIOS}/os/hal/ports/STM32/LLD/CANv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/DACv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/DMAv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/EXTIv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/GPIOv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/I2Cv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/RTCv2 - # ${CHIBIOS}/os/hal/ports/STM32/LLD/SDIOv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/SPIv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/SYSTICKv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/TIMv1 - # ${CHIBIOS}/os/hal/ports/STM32/LLD/USART - ${CHIBIOS}/os/hal/ports/STM32/LLD/USARTv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/USBv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/xWDGv1 ) -# source files for ChibiOS HAL -set(CHIBIOS_HAL_SRCS - - # startup code - crt1.c - vectors.S - crt0_v7m.S - - nvic.c - stm32_isr.c - - # HAL-OSAL files - hal.c - hal_st.c - - hal_buffers.c - hal_queues.c - hal_flash.c - hal_mmcsd.c - - hal_adc.c - hal_can.c - # hal_crypto.c - hal_dac.c - hal_efl.c - hal_gpt.c - hal_i2c.c - hal_i2s.c - hal_icu.c - hal_mac.c - hal_mmc_spi.c - hal_pal.c - hal_pwm.c - hal_rtc.c - hal_sdc.c - hal_serial.c - hal_serial_usb.c - hal_sio.c - hal_spi.c - hal_trng.c - hal_uart.c - hal_usb.c - hal_wdg.c - hal_wspi.c - - # LLD HAL files - hal_lld.c - - hal_adc_lld.c - hal_can_lld.c - hal_crypto_lld.c - hal_dac_lld.c - stm32_dma.c - stm32_exti.c - hal_pal_lld.c - hal_i2c_lld.c - hal_mac_lld.c - hal_usb_lld.c - hal_wspi_lld.c - hal_trng_lld.c - hal_rtc_lld.c - hal_sdc_lld.c - - hal_i2s_lld.c - hal_spi_v2_lld.c - - hal_st_lld.c - hal_gpt_lld.c - hal_icu_lld.c - hal_pwm_lld.c - - hal_serial_lld.c - hal_uart_lld.c - - hal_wdg_lld.c - - # OSAL - osal.c - - board.c +# os/hal/osal/rt-nil/osal.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/osal/rt-nil/osal.c ) - -foreach(SRC_FILE ${CHIBIOS_HAL_SRCS}) - - set(CHIBIOS_HAL_SRC_FILE SRC_FILE -NOTFOUND) - - find_file(CHIBIOS_HAL_SRC_FILE ${SRC_FILE} - PATHS - - ${CHIBIOS}/os/common/ports/ARMv7-M/compilers/GCC - ${CHIBIOS}/os/common/startup/ARMCMx/compilers/GCC - - ${CHIBIOS}/os/hal/src - ${CHIBIOS}/os/hal/ports/common/ARMCMx - - ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx - - ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx - ${CHIBIOS}/os/hal/ports/STM32/LLD/ADCv3 - ${CHIBIOS}/os/hal/ports/STM32/LLD/CANv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/DACv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/DMAv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/EXTIv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/GPIOv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/I2Cv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/RTCv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/SPIv2 - ${CHIBIOS}/os/hal/ports/STM32/LLD/SYSTICKv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/TIMv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/USARTv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/USBv1 - ${CHIBIOS}/os/hal/ports/STM32/LLD/xWDGv1 - - # ${OSHAL_PATH} - - # ${CHIBIOS_BOARD_DEFINITIONS_PATH} - - CMAKE_FIND_ROOT_PATH_BOTH - ) - if(EXISTS "${CHIBIOS_HAL_SRC_FILE}") - target_sources(qmk PUBLIC ${CHIBIOS_HAL_SRC_FILE}) - endif() -endforeach() - -# chibios target_include_directories(qmk PUBLIC - # ${CHIBIOS}/os/hal/include - # ${CHIBIOS}/os/hal/osal/sb - # ${CHIBIOS}/os/common/portability/GCC - # ${CHIBIOS}/os/sb/user - # ${CHIBIOS}/os/sb/common - - ${CHIBIOS}/os - ${CHIBIOS}/os/license - ${CHIBIOS}/os/hal/ports/common/ARMCMx - ${CHIBIOS}/os/hal/include ${CHIBIOS}/os/hal/osal/rt-nil - ${CHIBIOS}/os/oslib/include +) + +# os/rt/rt.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/rt/src/chsys.c + ${CHIBIOS}/os/rt/src/chrfcu.c + ${CHIBIOS}/os/rt/src/chdebug.c + ${CHIBIOS}/os/rt/src/chtrace.c + ${CHIBIOS}/os/rt/src/chvt.c + ${CHIBIOS}/os/rt/src/chschd.c + ${CHIBIOS}/os/rt/src/chinstances.c + ${CHIBIOS}/os/rt/src/chthreads.c + ${CHIBIOS}/os/rt/src/chsys.c + ${CHIBIOS}/os/rt/src/chrfcu.c + ${CHIBIOS}/os/rt/src/chdebug.c + ${CHIBIOS}/os/rt/src/chtrace.c + ${CHIBIOS}/os/rt/src/chvt.c + ${CHIBIOS}/os/rt/src/chschd.c + ${CHIBIOS}/os/rt/src/chinstances.c + ${CHIBIOS}/os/rt/src/chthreads.c + ${CHIBIOS}/os/rt/src/chtm.c + ${CHIBIOS}/os/rt/src/chstats.c + ${CHIBIOS}/os/rt/src/chregistry.c + ${CHIBIOS}/os/rt/src/chsem.c + ${CHIBIOS}/os/rt/src/chmtx.c + ${CHIBIOS}/os/rt/src/chcond.c + ${CHIBIOS}/os/rt/src/chevents.c + ${CHIBIOS}/os/rt/src/chmsg.c + ${CHIBIOS}/os/rt/src/chdynamic.c +) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/rt/include - ${CHIBIOS}/os/hal/ports/STM32/${MCU_SERIES} - ${CHIBIOS}/os/common/ports/ARMv7-M - ${CHIBIOS}/os/common/ports/ARMv7-M/compilers/GCC - ${CHIBIOS}/os/common/abstractions/cmsis_os - ${CHIBIOS}/os/common/startup/ARMCMx/compilers/GCC - ${CHIBIOS}/os/common/ext/CMSIS/include - ${CHIBIOS}/os/common/ext/CMSIS/ST/${MCU_SERIES} +) + +# os/oslib/oslib.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/oslib/src/chmboxes.c + ${CHIBIOS}/os/oslib/src/chmemcore.c + ${CHIBIOS}/os/oslib/src/chmemheaps.c + ${CHIBIOS}/os/oslib/src/chmempools.c + ${CHIBIOS}/os/oslib/src/chpipes.c + ${CHIBIOS}/os/oslib/src/chobjcaches.c + ${CHIBIOS}/os/oslib/src/chdelegates.c + ${CHIBIOS}/os/oslib/src/chfactory.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/oslib/include +) + +# os/hal/lib/streams/streams.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/lib/streams/chprintf.c + ${CHIBIOS}/os/hal/lib/streams/chscanf.c + ${CHIBIOS}/os/hal/lib/streams/memstreams.c + ${CHIBIOS}/os/hal/lib/streams/nullstreams.c + ${CHIBIOS}/os/hal/lib/streams/bufstreams.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/hal/lib/streams +) + +# resume platform.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/various/syscalls.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/license + ${CHIBIOS}/os/oslib/include + ${CHIBIOS}/os/various ) \ No newline at end of file diff --git a/cmake/ParseMakefile.cmake b/cmake/ParseMakefile.cmake index 6dee007b13a..2e913777a01 100644 --- a/cmake/ParseMakefile.cmake +++ b/cmake/ParseMakefile.cmake @@ -12,14 +12,19 @@ function(ParseMakefile MKFile) endfunction() macro(_ParseMakefile MKFile) + message(STATUS "Parsing ${MKFile}") file(READ "${MKFile}" FileContents) - string(REPLACE "\\\n" "" FileContents ${FileContents}) - string(REPLACE "\n" ";" FileLines ${FileContents}) + string(REGEX REPLACE "\\\\\r?\n *" " " FileContents ${FileContents}) + string(REGEX REPLACE "\r?\n" ";" FileLines ${FileContents}) list(REMOVE_ITEM FileLines "") foreach(line ${FileLines}) - # if(line MATCHES "$\\((.+)\\)") - # string(REPLACE "(${CMAKE_MATCH_1})" "{${CMAKE_MATCH_1}}" line ${line}) + # if(line MATCHES "\\$\\((.+)\\)") + # set(MAKE_VARIABLE "${CMAKE_MATCH_1}") + # string(REPLACE "$(${MAKE_VARIABLE})" "${${MAKE_VARIABLE}}" line ${line}) # endif() + # message(STATUS "From: ${line}") + string(REGEX REPLACE "\\$\\(([^\\(\\)]+)\\)" "${CHIBIOS}" line ${line}) + # message(STATUS "To : ${line}") # if(line MATCHES "^include (.+)$") # set(MAKE_CHILD ${CMAKE_MATCH_1}) # message(STATUS "Reading ${MAKE_CHILD}") diff --git a/cmake/chibios/LLD/ADCv3.cmake b/cmake/chibios/LLD/ADCv3.cmake new file mode 100644 index 00000000000..8eabe28b4c8 --- /dev/null +++ b/cmake/chibios/LLD/ADCv3.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/ADCv3/hal_adc_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/ADCv3) \ No newline at end of file diff --git a/cmake/chibios/LLD/CANv1.cmake b/cmake/chibios/LLD/CANv1.cmake new file mode 100644 index 00000000000..cc4c38730ac --- /dev/null +++ b/cmake/chibios/LLD/CANv1.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/CANv1/hal_can_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/CANv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/DACv1.cmake b/cmake/chibios/LLD/DACv1.cmake new file mode 100644 index 00000000000..9e38b430957 --- /dev/null +++ b/cmake/chibios/LLD/DACv1.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/DACv1/hal_dac_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/DACv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/DMAv1.cmake b/cmake/chibios/LLD/DMAv1.cmake new file mode 100644 index 00000000000..cca7b3ef5fe --- /dev/null +++ b/cmake/chibios/LLD/DMAv1.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/DMAv1/stm32_dma.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/DMAv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/EXTIv1.cmake b/cmake/chibios/LLD/EXTIv1.cmake new file mode 100644 index 00000000000..f623222046a --- /dev/null +++ b/cmake/chibios/LLD/EXTIv1.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/EXTIv1/stm32_exti.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/EXTIv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/GPIOv2.cmake b/cmake/chibios/LLD/GPIOv2.cmake new file mode 100644 index 00000000000..9e01767fddf --- /dev/null +++ b/cmake/chibios/LLD/GPIOv2.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/GPIOv2/hal_pal_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/GPIOv2) \ No newline at end of file diff --git a/cmake/chibios/LLD/I2Cv2.cmake b/cmake/chibios/LLD/I2Cv2.cmake new file mode 100644 index 00000000000..19c8916981c --- /dev/null +++ b/cmake/chibios/LLD/I2Cv2.cmake @@ -0,0 +1,7 @@ +if(${USE_HAL_I2C_FALLBACK}) + target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/I2C/hal_i2c_lld.c) + target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/I2C) +else() + target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/I2Cv2/hal_i2c_lld.c) + target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/I2Cv2) +endif() \ No newline at end of file diff --git a/cmake/chibios/LLD/RTCv2.cmake b/cmake/chibios/LLD/RTCv2.cmake new file mode 100644 index 00000000000..e07111389a6 --- /dev/null +++ b/cmake/chibios/LLD/RTCv2.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/RTCv2/hal_rtc_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/RTCv2) \ No newline at end of file diff --git a/cmake/chibios/LLD/SPIv2.cmake b/cmake/chibios/LLD/SPIv2.cmake new file mode 100644 index 00000000000..ff34e2e4bb1 --- /dev/null +++ b/cmake/chibios/LLD/SPIv2.cmake @@ -0,0 +1,5 @@ +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/SPIv2/hal_i2s_lld.c + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/SPIv2/hal_spi_v2_lld.c +) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/SPIv2) \ No newline at end of file diff --git a/cmake/chibios/LLD/SYSTICKv1.cmake b/cmake/chibios/LLD/SYSTICKv1.cmake new file mode 100644 index 00000000000..dcdb4bb8c49 --- /dev/null +++ b/cmake/chibios/LLD/SYSTICKv1.cmake @@ -0,0 +1,2 @@ +target_sources(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/SYSTICKv1/hal_st_lld.c) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/SYSTICKv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/TIMv1.cmake b/cmake/chibios/LLD/TIMv1.cmake new file mode 100644 index 00000000000..7714c086201 --- /dev/null +++ b/cmake/chibios/LLD/TIMv1.cmake @@ -0,0 +1,6 @@ +target_sources(qmk PUBLIC +${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/TIMv1/hal_gpt_lld.c +${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/TIMv1/hal_icu_lld.c +${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/TIMv1/hal_pwm_lld.c +) +target_include_directories(qmk PUBLIC ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/TIMv1) \ No newline at end of file diff --git a/cmake/chibios/LLD/USARTv2.cmake b/cmake/chibios/LLD/USARTv2.cmake new file mode 100644 index 00000000000..aa01d68c6c0 --- /dev/null +++ b/cmake/chibios/LLD/USARTv2.cmake @@ -0,0 +1,9 @@ +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USARTv2/hal_serial_lld.c + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USARTv2/hal_sio_lld.c + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USARTv2/hal_uart_lld.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USART + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USARTv2 +) \ No newline at end of file diff --git a/cmake/chibios/LLD/USBv1.cmake b/cmake/chibios/LLD/USBv1.cmake new file mode 100644 index 00000000000..e92690993cc --- /dev/null +++ b/cmake/chibios/LLD/USBv1.cmake @@ -0,0 +1,6 @@ +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USBv1/hal_usb_lld.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/USBv1 +) \ No newline at end of file diff --git a/cmake/chibios/LLD/xWDGv1.cmake b/cmake/chibios/LLD/xWDGv1.cmake new file mode 100644 index 00000000000..6c5e40f9c0c --- /dev/null +++ b/cmake/chibios/LLD/xWDGv1.cmake @@ -0,0 +1,6 @@ +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/xWDGv1/hal_wdg_lld.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/${MCU_PORT_NAME}/LLD/xWDGv1 +) \ No newline at end of file diff --git a/cmake/chibios/ports/ARMv7-M.cmake b/cmake/chibios/ports/ARMv7-M.cmake new file mode 100644 index 00000000000..73662b453e2 --- /dev/null +++ b/cmake/chibios/ports/ARMv7-M.cmake @@ -0,0 +1,10 @@ +# os/common/ports/ARMv7/compilers/GCC/mk/port.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/common/ports/ARMv7-M/chcore.c + ${CHIBIOS}/os/common/ports/ARMv7-M/compilers/GCC/chcoreasm.S +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/common/portability/GCC + ${CHIBIOS}/os/common/ports/ARM-common + ${CHIBIOS}/os/common/ports/ARMv7-M +) \ No newline at end of file diff --git a/cmake/chibios/ports/STM32F3xx.cmake b/cmake/chibios/ports/STM32F3xx.cmake new file mode 100644 index 00000000000..5c410e3b587 --- /dev/null +++ b/cmake/chibios/ports/STM32F3xx.cmake @@ -0,0 +1,25 @@ +# os/hal/ports/STM32/STM32F3xx/platform.mk +target_sources(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/common/ARMCMx/nvic.c + ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx/stm32_isr.c + ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx/hal_lld.c + ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx/hal_efl_lld.c +) +target_include_directories(qmk PUBLIC + ${CHIBIOS}/os/hal/ports/common/ARMCMx + ${CHIBIOS}/os/hal/ports/STM32/STM32F3xx +) +include(chibios/LLD/ADCv3) +include(chibios/LLD/CANv1) +include(chibios/LLD/DACv1) +include(chibios/LLD/DMAv1) +include(chibios/LLD/EXTIv1) +include(chibios/LLD/GPIOv2) +include(chibios/LLD/I2Cv2) +include(chibios/LLD/RTCv2) +include(chibios/LLD/SPIv2) +include(chibios/LLD/SYSTICKv1) +include(chibios/LLD/TIMv1) +include(chibios/LLD/USARTv2) +include(chibios/LLD/USBv1) +include(chibios/LLD/xWDGv1) \ No newline at end of file diff --git a/platforms/chibios/CMakeLists.txt b/platforms/chibios/CMakeLists.txt index 4c0b47402f0..e68502d773a 100644 --- a/platforms/chibios/CMakeLists.txt +++ b/platforms/chibios/CMakeLists.txt @@ -1,4 +1,4 @@ -find_package(chibios REQUIRED) +find_package(Chibios REQUIRED) target_link_options(qmk PUBLIC -mcpu=${QMK_MCU} @@ -30,8 +30,12 @@ else() ) endif() -# add_library(platforms_chibios) +target_sources(qmk PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/syscall-fallbacks.c + ${CMAKE_CURRENT_SOURCE_DIR}/wait.c + ${CMAKE_CURRENT_SOURCE_DIR}/synchronization_util.c +) + target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/boards/common/configs) -target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}/configs) -# target_link_libraries(platforms_chibios ${QMK_TARGET}) \ No newline at end of file +target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}/configs) \ No newline at end of file diff --git a/quantum/CMakeLists.txt b/quantum/CMakeLists.txt index e5b5d683bfb..e00ff015b99 100644 --- a/quantum/CMakeLists.txt +++ b/quantum/CMakeLists.txt @@ -33,7 +33,3 @@ target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/bootmagic) # target_link_libraries(quantum platforms_${QMK_PLATFORM}) # target_link_libraries(quantum tmk_core_protocol) # target_link_libraries(quantum tmk_core_protocol_${QMK_PROTOCOL}) - -# if no printf -target_sources(qmk PUBLIC ${CMAKE_SOURCE_DIR}/lib/printf/src/printf/printf.c) -target_include_directories(qmk PUBLIC ${CMAKE_SOURCE_DIR}/lib/printf/src/printf) \ No newline at end of file diff --git a/tmk_core/protocol/chibios/CMakeLists.txt b/tmk_core/protocol/chibios/CMakeLists.txt index ab80a632d47..eca59286074 100644 --- a/tmk_core/protocol/chibios/CMakeLists.txt +++ b/tmk_core/protocol/chibios/CMakeLists.txt @@ -12,7 +12,11 @@ target_sources(qmk PUBLIC usb_util.c ) -find_package(chibios REQUIRED) +find_package(Chibios REQUIRED) target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lufa_utils) \ No newline at end of file +target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lufa_utils) + +# if no printf +target_sources(qmk PUBLIC ${CMAKE_SOURCE_DIR}/lib/printf/src/printf/printf.c) +target_include_directories(qmk PUBLIC ${CMAKE_SOURCE_DIR}/lib/printf/src/printf) \ No newline at end of file diff --git a/tmk_core/protocol/lufa/CMakeLists.txt b/tmk_core/protocol/lufa/CMakeLists.txt index 690e5a0abb4..84012a7bc65 100644 --- a/tmk_core/protocol/lufa/CMakeLists.txt +++ b/tmk_core/protocol/lufa/CMakeLists.txt @@ -19,7 +19,7 @@ target_sources(qmk PUBLIC usb_util.c ) -find_package(lufa REQUIRED) +find_package(Lufa REQUIRED) # target_compile_definitions(lufa PUBLIC ${COMPILE_DEFINITIONS}) target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})