Browse Source

some chibios experiments

Jack Humbert 3 years ago
parent
commit
cc22d67b32

+ 190 - 201
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)
+
+# platforms/chibios/platform.mk
 
-set(MCU_PORT_NAME ${MCU_FAMILY})
+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
-# )
-
-# F3 sources
-set(CHIBIOS_PORT_SRCS
-    # RT
-    chcore.c
-    chcoreasm.S
-)
-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
-    )
-
-    target_sources(qmk PUBLIC ${CHIBIOS_F3_SRC_FILE})
-endforeach()
+# port*.mk
+include(chibios/ports/${CHIBIOS_PORT})
 
-target_include_directories(qmk PUBLIC
-    ${CHIBIOS}/os/common/ports/ARMv7-M
-    ${CHIBIOS}/os/hal/boards/ST_STM32F3_DISCOVERY
+# 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
+)
+ParseMakefile(${STARTUP_MK})
+target_sources(qmk PUBLIC ${STARTUPSRC} ${STARTUPASM})
+target_include_directories(qmk PUBLIC ${STARTUPINC})
+
+# 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})
+
+# 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})
 
-# F3 HAL specific
+# 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
+)
+
+# 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
-)
-
-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
+)
+
+# os/hal/osal/rt-nil/osal.mk
+target_sources(qmk PUBLIC
+    ${CHIBIOS}/os/hal/osal/rt-nil/osal.c
+)
 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/hal/osal/rt-nil
+)
 
-    ${CHIBIOS}/os
+# 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
+)
+
+# 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/hal/ports/common/ARMCMx
-    ${CHIBIOS}/os/hal/include
-    ${CHIBIOS}/os/hal/osal/rt-nil
     ${CHIBIOS}/os/oslib/include
-    ${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}
+    ${CHIBIOS}/os/various
 )

+ 9 - 4
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}")

+ 2 - 0
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)

+ 2 - 0
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)

+ 2 - 0
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)

+ 2 - 0
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)

+ 2 - 0
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)

+ 2 - 0
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)

+ 7 - 0
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()

+ 2 - 0
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)

+ 5 - 0
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)

+ 2 - 0
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)

+ 6 - 0
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)

+ 9 - 0
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
+)

+ 6 - 0
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
+)

+ 6 - 0
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
+)

+ 10 - 0
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
+)

+ 25 - 0
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)

+ 8 - 4
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})
+target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}/configs)

+ 0 - 4
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)

+ 6 - 2
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)
+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)

+ 1 - 1
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})