mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-17 05:02:07 +00:00
storm commit, chibios exp
This commit is contained in:
parent
cfde338998
commit
a1cb005981
@ -101,5 +101,6 @@ add_subdirectory(tmk_core/protocol)
|
||||
|
||||
include(features/oled)
|
||||
include(features/backlight)
|
||||
include(features/eeprom)
|
||||
|
||||
endif()
|
||||
|
41
chibios_mcu.json
Normal file
41
chibios_mcu.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"MKL26Z64" : {
|
||||
"MCU" : "cortex-m0plus",
|
||||
"ARMV": 6,
|
||||
"MCU_FAMILY": "KINETIS",
|
||||
"MCU_SERIES": "KL2x",
|
||||
"MCU_LDSCRIPT": "MKL26Z64",
|
||||
"MCU_STARTUP": "kl2x",
|
||||
"BOARD": "PJRC_TEENSY_LC"
|
||||
},
|
||||
"MK20DX128" : {
|
||||
"MCU" : "cortex-m4",
|
||||
"ARMV": 7,
|
||||
"MCU_FAMILY": "KINETIS",
|
||||
"MCU_SERIES": "K20x",
|
||||
"MCU_LDSCRIPT": "MK20DX128",
|
||||
"MCU_STARTUP": "k20x5",
|
||||
"BOARD": "PJRC_TEENSY_3"
|
||||
},
|
||||
"MK20DX256" : {
|
||||
"MCU" : "cortex-m4",
|
||||
"ARMV": 7,
|
||||
"MCU_FAMILY": "KINETIS",
|
||||
"MCU_SERIES": "K20x",
|
||||
"MCU_LDSCRIPT": "MK20DX256",
|
||||
"MCU_STARTUP": "k20x7",
|
||||
"BOARD": "PJRC_TEENSY_3_1"
|
||||
},
|
||||
"STM32F303" : {
|
||||
"MCU" : "cortex-m4",
|
||||
"ARMV": 7,
|
||||
"MCU_FAMILY": "STM32",
|
||||
"MCU_SERIES": "STM32F3xx",
|
||||
"MCU_LDSCRIPT": "STM32F303xC",
|
||||
"MCU_STARTUP": "stm32f3xx",
|
||||
"BOARD": "GENERIC_STM32_F303XC",
|
||||
"USE_FPU": true,
|
||||
"UF2_FAMILY": "STM32F3",
|
||||
"STM32_BOOTLOADER_ADDRESS": "0x1FFFD800"
|
||||
}
|
||||
}
|
@ -0,0 +1,229 @@
|
||||
include(ParseMakefile)
|
||||
|
||||
set(MCU "cortex-m4")
|
||||
set(ARMV 7)
|
||||
set(MCU_FAMILY "STM32")
|
||||
set(MCU_SERIES "STM32F3xx")
|
||||
set(MCU_LDSCRIPT "STM32F303xC")
|
||||
set(MCU_STARTUP "stm32f3xx")
|
||||
set(BOARD "GENERIC_STM32_F303XC")
|
||||
set(USE_FPU TRUE)
|
||||
set(UF2_FAMILY "STM32F3")
|
||||
set(STM32_BOOTLOADER_ADDRESS 0x1FFFD800)
|
||||
|
||||
set(MCU_PORT_NAME ${MCU_FAMILY})
|
||||
set(MCU_ARCH ${MCU})
|
||||
set(CHIBIOS_PORT "ARMv${ARMV}-M")
|
||||
set(PLATFORM_NAME platform)
|
||||
|
||||
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()
|
||||
|
||||
target_include_directories(qmk PUBLIC
|
||||
${CHIBIOS}/os/common/ports/ARMv7-M
|
||||
${CHIBIOS}/os/hal/boards/ST_STM32F3_DISCOVERY
|
||||
)
|
||||
|
||||
# F3 HAL specific
|
||||
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
|
||||
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
|
||||
${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}
|
||||
)
|
44
cmake/ParseMakefile.cmake
Normal file
44
cmake/ParseMakefile.cmake
Normal file
@ -0,0 +1,44 @@
|
||||
# Simple CMake utility to read variables from MK files
|
||||
# - Gets contents from given file (name or path)
|
||||
# - Parses the assignment statements
|
||||
# - Makes the same assignments in the PARENT_SCOPE
|
||||
|
||||
if(POLICY CMP0007)
|
||||
cmake_policy(SET CMP0007 NEW)
|
||||
endif()
|
||||
|
||||
function(ParseMakefile MKFile)
|
||||
_ParseMakefile(${MKFile})
|
||||
endfunction()
|
||||
|
||||
macro(_ParseMakefile MKFile)
|
||||
file(READ "${MKFile}" FileContents)
|
||||
string(REPLACE "\\\n" "" FileContents ${FileContents})
|
||||
string(REPLACE "\n" ";" FileLines ${FileContents})
|
||||
list(REMOVE_ITEM FileLines "")
|
||||
foreach(line ${FileLines})
|
||||
# if(line MATCHES "$\\((.+)\\)")
|
||||
# string(REPLACE "(${CMAKE_MATCH_1})" "{${CMAKE_MATCH_1}}" line ${line})
|
||||
# endif()
|
||||
# if(line MATCHES "^include (.+)$")
|
||||
# set(MAKE_CHILD ${CMAKE_MATCH_1})
|
||||
# message(STATUS "Reading ${MAKE_CHILD}")
|
||||
# _ParseMakefile("${MAKE_CHILD}")
|
||||
# else()
|
||||
string(REPLACE "=" ";" line_split ${line})
|
||||
list(LENGTH line_split count)
|
||||
if (count LESS 2)
|
||||
message(STATUS "Skipping ${line}")
|
||||
continue()
|
||||
endif()
|
||||
list(GET line_split -1 value)
|
||||
string(STRIP ${value} value)
|
||||
separate_arguments(value)
|
||||
list(REMOVE_AT line_split -1)
|
||||
foreach(var_name ${line_split})
|
||||
string(STRIP ${var_name} var_name)
|
||||
set(${var_name} ${value} PARENT_SCOPE)
|
||||
endforeach()
|
||||
# endif()
|
||||
endforeach()
|
||||
endmacro()
|
54
cmake/features/eeprom.cmake
Normal file
54
cmake/features/eeprom.cmake
Normal file
@ -0,0 +1,54 @@
|
||||
set(EEPROM_DRIVER "vendor" CACHE STRING "EEPROM driver")
|
||||
set_property(CACHE EEPROM_DRIVER PROPERTY STRINGS vendor custom transient i2c spi wear_leveling legacy_stm32_flash)
|
||||
set(WEAR_LEVELING_DRIVER "none" CACHE STRING "EEPROM wear-leveling driver")
|
||||
set_property(CACHE WEAR_LEVELING_DRIVER PROPERTY STRINGS custom embedded_flash spi_flash rp2040_flash legacy)
|
||||
|
||||
if(${EEPROM_DRIVER} STREQUAL "wear_leveling")
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
EEPROM_DRIVER
|
||||
EEPROM_WEAR_LEVELING
|
||||
)
|
||||
target_sources(qmk PUBLIC
|
||||
drivers/eeprom/eeprom_driver.c
|
||||
drivers/eeprom/eeprom_wear_leveling.c
|
||||
)
|
||||
target_include_directories(qmk PUBLIC drivers/eeprom)
|
||||
elseif(${EEPROM_DRIVER} STREQUAL "vendor")
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
EEPROM_VENDOR
|
||||
)
|
||||
if(${QMK_PLATFORM} STREQUAL "chibios")
|
||||
if(${QMK_MCU} MATHCES "STM32F.*")
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
EEPROM_DRIVER
|
||||
EEPROM_WEAR_LEVELING
|
||||
)
|
||||
target_sources(qmk PUBLIC
|
||||
drivers/eeprom/eeprom_driver.c
|
||||
drivers/eeprom/eeprom_wear_leveling.c
|
||||
)
|
||||
set(WEAR_LEVELING_DRIVER "embedded_flash" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ${WEAR_LEVELING_DRIVER} STREQUAL "none")
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
WEAR_LEVELING_ENABLE
|
||||
WEAR_LEVELING_EMBEDDED_FLASH
|
||||
)
|
||||
target_include_directories(qmk PUBLIC
|
||||
platforms/${QMK_PLATFORM}/drivers/wear_leveling
|
||||
drivers/wear_leveling
|
||||
quantum/wear_leveling
|
||||
)
|
||||
target_sources(qmk PUBLIC wear_leveling.c)
|
||||
|
||||
if(NOT ${WEAR_LEVELING_DRIVER} STREQUAL "embedded_flash")
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
HAL_USE_EFL
|
||||
)
|
||||
target_sources(qmk PUBLIC wear_leveling_efl.c)
|
||||
# post config.h platforms/${QMK_PLATFORM}/drivers/wear_leveling/wear_leveling_efl_config.h
|
||||
endif()
|
||||
endif()
|
@ -68,23 +68,11 @@ add_compile_options(
|
||||
# $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
|
||||
)
|
||||
|
||||
add_compile_definitions(
|
||||
THUMB_PRESENT
|
||||
THUMB_NO_INTERWORKING
|
||||
PROTOCOL_CHIBIOS
|
||||
MCU_${MCU_FAMILY}
|
||||
PLATFORM_SUPPORTS_SYNCHRONIZATION
|
||||
PORT_IGNORE_GCC_VERSION_CHECK=1
|
||||
)
|
||||
|
||||
add_link_options(
|
||||
-Wl,--gc-sections
|
||||
-nostartfiles
|
||||
-Wl,--no-wchar-size-warning
|
||||
--specs=nano.specs
|
||||
-mthumb
|
||||
-mno-thumb-interwork
|
||||
-mno-unaligned-access
|
||||
)
|
||||
|
||||
if(${USE_FPU})
|
||||
|
@ -1,6 +1,37 @@
|
||||
add_link_options(
|
||||
find_package(chibios REQUIRED)
|
||||
|
||||
target_link_options(qmk PUBLIC
|
||||
-mcpu=${QMK_MCU}
|
||||
-mthumb
|
||||
-mno-thumb-interwork
|
||||
-mno-unaligned-access
|
||||
)
|
||||
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
MCU_${MCU_FAMILY}
|
||||
THUMB_PRESENT
|
||||
THUMB_NO_INTERWORKING
|
||||
PLATFORM_SUPPORTS_SYNCHRONIZATION
|
||||
PORT_IGNORE_GCC_VERSION_CHECK=1
|
||||
)
|
||||
|
||||
if(NOT ${USE_FPU})
|
||||
target_compile_options(qmk PUBLIC
|
||||
-mfloat-abi=hard
|
||||
-mfpu=fpv4-sp-d16
|
||||
-fsingle-precision-constant
|
||||
)
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
CORTEX_USE_FPU=TRUE
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
CORTEX_USE_FPU=FALSE
|
||||
)
|
||||
endif()
|
||||
|
||||
# add_library(platforms_chibios)
|
||||
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})
|
@ -35,5 +35,5 @@ target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/bootmagic)
|
||||
# target_link_libraries(quantum tmk_core_protocol_${QMK_PROTOCOL})
|
||||
|
||||
# if no printf
|
||||
# target_sources(quantum PRIVATE ${CMAKE_SOURCE_DIR}/lib/printf/src/printf/printf.c)
|
||||
# target_include_directories(quantum PUBLIC ${CMAKE_SOURCE_DIR}/lib/printf/src/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,10 +1,10 @@
|
||||
add_compile_definitions(
|
||||
target_compile_definitions(qmk PUBLIC
|
||||
PROTOCOL_CHIBIOS
|
||||
FIXED_CONTROL_ENDPOINT_SIZE=64
|
||||
FIXED_NUM_CONFIGURATIONS=1
|
||||
)
|
||||
|
||||
add_library(tmk_core_protocol_chibios
|
||||
target_sources(qmk PUBLIC
|
||||
usb_main.c
|
||||
chibios.c
|
||||
../usb_descriptor.c
|
||||
@ -12,10 +12,7 @@ add_library(tmk_core_protocol_chibios
|
||||
usb_util.c
|
||||
)
|
||||
|
||||
# find_package(lufa REQUIRED)
|
||||
find_package(chibios REQUIRED)
|
||||
|
||||
target_include_directories(tmk_core_protocol_chibios PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_include_directories(tmk_core_protocol_chibios PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lufa_utils)
|
||||
|
||||
# target_link_libraries(tmk_core_protocol_chibios PUBLIC lufa)
|
||||
target_link_libraries(tmk_core_protocol_chibios PUBLIC quantum)
|
||||
target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lufa_utils)
|
Loading…
Reference in New Issue
Block a user