From b7a1681d38cb30e5477e0560ef8cf29791b0286c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 May 2025 21:07:47 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Fix=20some=20build=5Fflags=20inh?= =?UTF-8?q?eritance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/variants/README.md | 23 +++++++++++++ ini/stm32-common.ini | 3 +- ini/stm32f4.ini | 32 +++++++++---------- 3 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 buildroot/share/PlatformIO/variants/README.md diff --git a/buildroot/share/PlatformIO/variants/README.md b/buildroot/share/PlatformIO/variants/README.md new file mode 100644 index 0000000000..ae64b1b439 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/README.md @@ -0,0 +1,23 @@ +# Marlin Custom Variants + +This `buildroot/share/PlatformIO/variants` folder contains Marlin custom variants for both generic and custom boards. + +Marlin specifies board variants in PlatformIO INI files in one of two ways: +- The `board_build.variant = VARIANT_MAME` field specifies the variant subfolder name directly. +- The `board = board_name` field names a custom board JSON file that contains a `build.variant` field. + +## Variant File Naming + +With the latest STM32 platform (17.x) the `variant.h` and `variant.cpp` files are required to have more unique names. If the variant is based on a generic board definition the name `variant_generic.h`/`.cpp` should be used. Otherwise, the capitalized name of the `board` should be used. + +### Examples + +| board | board file | variant | Variant Files | +|-------|------------|---------|---------------| +|`marlin_STM32F407VGT6_CCM`|`marlin_STM32F407VGT6_CCM.json`|`MARLIN_BTT_E3_RRF`|`variants/MARLIN_BTT_E3_RRF/variant.*`| +|`genericSTM32F103VE`|n/a|`MARLIN_F103Vx`|`variants/MARLIN_F103Vx/variant_generic.*`| +|`marlin_STM32F407ZE`|`marlin_STM32F407ZE.json`|`MARLIN_F407ZE`|`variants/MARLIN_F407ZE/variant_MARLIN_F407ZE.*`| + +# Marlin Custom Boards + +The `buildroot/share/PlatformIO/boards` folder contains Marlin's custom board definition JSON files. These files provide hardware IDs, board statistics, additional build flags, custom variant name, linker definition filename, remote debug options, upload devices, etc. diff --git a/ini/stm32-common.ini b/ini/stm32-common.ini index ec058d1087..12c07ef824 100644 --- a/ini/stm32-common.ini +++ b/ini/stm32-common.ini @@ -41,6 +41,5 @@ extra_scripts = ${common_stm32.extra_scripts} [stm_flash_drive] # Arduino_Core_STM32 uses usb-host-msc-cdc-msc-3 branch platform_packages = framework-arduinoststm32@https://github.com/rhapsodyv/Arduino_Core_STM32/archive/39f37d6d6a.zip -build_flags = ${common_stm32.build_flags} - -DHAL_PCD_MODULE_ENABLED -DHAL_HCD_MODULE_ENABLED +build_flags = -DHAL_PCD_MODULE_ENABLED -DHAL_HCD_MODULE_ENABLED -DUSBHOST -DUSBH_IRQ_PRIO=3 -DUSBH_IRQ_SUBPRIO=4 diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index c29e3180eb..f32734eee3 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -219,7 +219,7 @@ upload_protocol = stlink [env:BTT_SKR_PRO_usb_flash_drive] extends = env:BTT_SKR_PRO platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} -DSTM32F407_5ZX +build_flags = ${env:BTT_SKR_PRO.build_flags} ${stm_flash_drive.build_flags} -DSTM32F407_5ZX build_unflags = ${env:BTT_SKR_PRO.build_unflags} -DUSBCON -DUSBD_USE_CDC # @@ -266,7 +266,7 @@ build_flags = ${stm32_variant.build_flags} -DSTM32F407IX [env:BTT_GTR_V1_0_usb_flash_drive] extends = env:BTT_GTR_V1_0 platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} -DSTM32F407IX +build_flags = ${env:BTT_GTR_V1_0.build_flags} ${stm_flash_drive.build_flags} -DSTM32F407IX build_unflags = ${env:BTT_GTR_V1_0.build_unflags} -DUSBCON -DUSBD_USE_CDC # @@ -304,7 +304,7 @@ board = marlin_STM32F407VGT6_CCM board_build.variant = MARLIN_F4x7Vx board_build.offset = 0x8000 board_upload.offset_address = 0x08008000 -build_flags = ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} +build_flags = ${stm32_variant.build_flags} ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} -DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 upload_protocol = stlink @@ -362,7 +362,7 @@ build_flags = ${stm32_variant.build_flags} extends = env:STM32F446ZE_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC -build_flags = ${stm_flash_drive.build_flags} -DSTM32F446_5VX +build_flags = ${env:STM32F446ZE_btt.build_flags} ${stm_flash_drive.build_flags} -DSTM32F446_5VX ${USB_HS_IN_FS.build_flags} -DUSBD_USE_CDC_MSC # @@ -385,7 +385,7 @@ build_flags = ${stm32_variant.build_flags} extends = env:STM32F429ZG_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC -build_flags = ${stm_flash_drive.build_flags} +build_flags = ${env:STM32F429ZG_btt.build_flags} ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} -DUSBD_USE_CDC_MSC # @@ -406,7 +406,7 @@ build_flags = ${stm32_variant.build_flags} extends = env:STM32F407ZE_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC -build_flags = ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} -DUSBD_USE_CDC_MSC +build_flags = ${env:STM32F407ZE_btt.build_flags} ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} -DUSBD_USE_CDC_MSC # # Lerdge base @@ -438,7 +438,7 @@ board_build.crypt_lerdge = Lerdge_X_firmware_force.bin [env:LERDGEX_usb_flash_drive] extends = env:LERDGEX platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} ${lerdge_common.build_flags} +build_flags = ${env:LERDGEX.build_flags} ${stm_flash_drive.build_flags} # # Lerdge S (STM32F407ZG) @@ -453,7 +453,7 @@ board_build.crypt_lerdge = Lerdge_firmware_force.bin [env:LERDGES_usb_flash_drive] extends = env:LERDGES platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} ${lerdge_common.build_flags} +build_flags = ${env:LERDGES.build_flags} ${stm_flash_drive.build_flags} # # Lerdge K (STM32F407ZG) @@ -469,7 +469,7 @@ build_flags = ${lerdge_common.build_flags} -DLERDGEK [env:LERDGEK_usb_flash_drive] extends = env:LERDGEK platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} ${lerdge_common.build_flags} +build_flags = ${env:LERDGEK.build_flags} ${stm_flash_drive.build_flags} # # RUMBA32 @@ -512,7 +512,7 @@ board = genericSTM32F407VET6 board_build.variant = MARLIN_F4x7Vx board_build.offset = 0x0000 board_upload.offset_address = 0x08000000 -build_flags = ${stm_flash_drive.build_flags} +build_flags = ${stm32_variant.build_flags} ${stm_flash_drive.build_flags} build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC debug_tool = jlink upload_protocol = jlink @@ -544,7 +544,7 @@ upload_protocol = jlink [env:mks_robin_nano_v3_usb_flash_drive] extends = env:mks_robin_nano_v3 platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} ${stm32f4_I2C1.build_flags} ${USB_HS_IN_FS.build_flags} +build_flags = ${env:mks_robin_nano_v3.build_flags} ${stm_flash_drive.build_flags} ${stm32f4_I2C1.build_flags} ${USB_HS_IN_FS.build_flags} # # MKS Robin Nano V3 with USB Flash Drive Support and Shared Media @@ -600,7 +600,7 @@ upload_protocol = jlink [env:mks_eagle_usb_flash_drive] extends = env:mks_eagle platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm_flash_drive.build_flags} ${stm32f4_I2C1.build_flags} ${USB_HS_IN_FS.build_flags} +build_flags = ${env:mks_eagle.build_flags} ${stm_flash_drive.build_flags} ${stm32f4_I2C1.build_flags} ${USB_HS_IN_FS.build_flags} # # MKS Eagle with USB Flash Drive Support and Shared Media @@ -699,9 +699,9 @@ board_build.offset = 0xC000 board_upload.offset_address = 0x0800C000 board_build.rename = elegoo.bin platform_packages = ${stm_flash_drive.platform_packages} -build_flags = ${stm32_variant.build_flags} ${stm32f4_I2C1.build_flags} - ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} - -DHAL_PCD_MODULE_ENABLED -DHAL_SD_MODULE_ENABLED -DHAL_SRAM_MODULE_ENABLED +build_flags = ${stm32_variant.build_flags} ${stm_flash_drive.build_flags} + ${stm32f4_I2C1.build_flags} ${USB_HS_IN_FS.build_flags} + -DHAL_SD_MODULE_ENABLED -DHAL_SRAM_MODULE_ENABLED -DMCU_STM32F407VE -DSS_TIMER=4 -DENABLE_HWSERIAL3 -DSTM32_FLASH_SIZE=512 -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 @@ -997,6 +997,6 @@ board = marlin_STM32F407VGT6_CCM board_build.variant = MARLIN_F4x7Vx board_build.offset = 0x8000 board_upload.offset_address = 0x08008000 -build_flags = ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} +build_flags = ${stm32_variant.build_flags} ${stm_flash_drive.build_flags} ${USB_HS_IN_FS.build_flags} -DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8