muele-marlin/ini/stm32f4.ini
2022-05-07 15:58:30 -05:00

603 lines
21 KiB
INI

#
# Marlin Firmware
# PlatformIO Configuration File
#
#################################
#
# STM32F4 Architecture
#
# Naming Example: STM32F401RGT6
#
# F : Foundation (sometimes High Performance F2/F4)
# 4 : Cortex M4 core (0:M0, 1-2:M3, 3-4:M4, 7:M7)
# 01 : Line/Features
# R : 64 or 66 pins (T:36, C:48 or 49, M:81, V:100, Z:144, I:176)
# G : 1024KB Flash-memory (B:128KB, C:256KB, D:384KB, E:512KB)
# T : LQFP package
# 6 : -40...85°C (7: ...105°C)
#
#################################
#
# ARMED (STM32)
#
[env:ARMED]
extends = common_stm32
board = armed_v1
build_flags = ${common_stm32.build_flags}
-O2 -ffreestanding -fsigned-char -fno-move-loop-invariants -fno-strict-aliasing
#
# STM32F401VE
# 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html
#
[env:STM32F401VE_STEVAL]
extends = stm32_variant
board = marlin_STEVAL_STM32F401VE
build_flags = ${stm32_variant.build_flags}
-DSTM32F401xE -DDISABLE_GENERIC_SERIALUSB
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
#
# STM32F401RC
#
[env:FYSETC_CHEETAH_V20]
extends = stm32_variant
board = marlin_FYSETC_CHEETAH_V20
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags} -DSTM32F401xC
upload_command = dfu-util -a 0 -s 0x08008000:leave -D "$SOURCE"
#
# FLYF407ZG
#
[env:FLYF407ZG]
extends = stm32_variant
board = marlin_STM32F407ZGT6
board_build.variant = MARLIN_FLY_F407ZG
board_build.offset = 0x8000
upload_protocol = dfu
#
# FYSETC S6 (STM32F446RET6 ARM Cortex-M4)
#
[env:FYSETC_S6]
extends = stm32_variant
board = marlin_fysetc_s6
board_build.offset = 0x10000
board_upload.offset_address = 0x08010000
build_flags = ${stm32_variant.build_flags} -DHAL_PCD_MODULE_ENABLED
debug_tool = stlink
upload_protocol = dfu
upload_command = dfu-util -a 0 -s 0x08010000:leave -D "$SOURCE"
#
# FYSETC S6 new bootloader
#
[env:FYSETC_S6_8000]
extends = env:FYSETC_S6
board = marlin_fysetc_s6
board_build.offset = 0x8000
board_upload.offset_address = 0x08008000
upload_command = dfu-util -a 0 -s 0x08008000:leave -D "$SOURCE"
#
# STM32F407VET6 with RAMPS-like shield
# 'Black' STM32F407VET6 board - https://wiki.stm32duino.com/index.php?title=STM32F407
# Shield - https://github.com/jmz52/Hardware
#
[env:STM32F407VE_black]
extends = stm32_variant
board = marlin_blackSTM32F407VET6
build_flags = ${stm32_variant.build_flags}
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
#
# STM32F407VET6 Index Mobo Rev 03
#
[env:Index_Mobo_Rev03]
extends = stm32_variant
board = marlin_index_mobo_rev03
build_flags = ${stm32_variant.build_flags}
-DARDUINO_BLACK_F407VE
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
extra_scripts = ${stm32_variant.extra_scripts}
#
# Anet ET4-MB_V1.x/ET4P-MB_V1.x (STM32F407VGT6 ARM Cortex-M4)
# For use with with davidtgbe's OpenBLT bootloader https://github.com/davidtgbe/openblt/releases
# Comment out board_build.offset = 0x10000 if you don't plan to use OpenBLT/flashing directly to 0x08000000.
#
[env:Anet_ET4_OpenBLT]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_F4x7Vx
board_build.encrypt = firmware.srec
board_build.offset = 0x10000
board_upload.offset_address = 0x08010000
build_flags = ${stm32_variant.build_flags}
-DHAL_SD_MODULE_ENABLED -DHAL_SRAM_MODULE_ENABLED
build_unflags = ${stm32_variant.build_unflags}
-DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483
extra_scripts = ${stm32_variant.extra_scripts}
buildroot/share/PlatformIO/scripts/openblt.py
debug_tool = jlink
upload_protocol = jlink
#
# BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4)
#
[env:BIGTREE_SKR_PRO]
extends = stm32_variant
board = marlin_BigTree_SKR_Pro
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags} -DSTM32F407_5ZX
debug_tool = stlink
upload_protocol = stlink
#
# BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_SKR_PRO_usb_flash_drive]
extends = env:BIGTREE_SKR_PRO
platform_packages = ${stm_flash_drive.platform_packages}
build_flags = ${stm_flash_drive.build_flags} -DSTM32F407_5ZX
build_unflags = ${env:BIGTREE_SKR_PRO.build_unflags} -DUSBCON -DUSBD_USE_CDC
#
# BigTreeTech E3 RRF (STM32F407VGT6 ARM Cortex-M4)
#
[env:BIGTREE_E3_RRF]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_BIGTREE_E3_RRF
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags}
-DSTM32F407_5VX
-DMF_RX_BUFFER_SIZE=255
-DMF_TX_BUFFER_SIZE=255
#
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4)
#
[env:BIGTREE_GTR_V1_0]
extends = stm32_variant
board = marlin_BigTree_GTR_v1
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags} -DSTM32F407IX
#
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_GTR_V1_0_usb_flash_drive]
extends = env:BIGTREE_GTR_V1_0
platform_packages = ${stm_flash_drive.platform_packages}
build_flags = ${stm_flash_drive.build_flags} -DSTM32F407IX
build_unflags = ${env:BIGTREE_GTR_V1_0.build_unflags} -DUSBCON -DUSBD_USE_CDC
#
# BigTreeTech BTT002 V1.0 (STM32F407VGT6 ARM Cortex-M4)
#
[env:BIGTREE_BTT002]
extends = stm32_variant
board = marlin_BigTree_BTT002
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags}
-DSTM32F407_5VX
-DHAVE_HWSERIAL2
-DHAVE_HWSERIAL3
-DPIN_SERIAL2_RX=PD_6
-DPIN_SERIAL2_TX=PD_5
#
# BigTreeTech BTT002 V1.x with 512k of flash (STM32F407VET6 ARM Cortex-M4)
#
[env:BIGTREE_BTT002_VET6]
extends = env:BIGTREE_BTT002
board = marlin_BigTree_BTT002_VET6
#
# BigTreeTech SKR V2.0 (STM32F407VGT6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_SKR_2]
extends = stm32_variant
platform_packages = ${stm_flash_drive.platform_packages}
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}
-DUSE_USBHOST_HS -DUSE_USB_HS_IN_FS
-DUSBD_IRQ_PRIO=5 -DUSBD_IRQ_SUBPRIO=6
-DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED
-DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8
upload_protocol = stlink
#
# BigTreeTech SKR V2.0 (STM32F407VGT6 ARM Cortex-M4) with USB Media Share Support
#
[env:BIGTREE_SKR_2_USB]
extends = env:BIGTREE_SKR_2
build_flags = ${env:BIGTREE_SKR_2.build_flags} -DUSBD_USE_CDC_MSC
build_unflags = ${env:BIGTREE_SKR_2.build_unflags} -DUSBD_USE_CDC
[env:BIGTREE_SKR_2_USB_debug]
extends = env:BIGTREE_SKR_2_USB
build_flags = ${env:BIGTREE_SKR_2_USB.build_flags} -O0
build_unflags = ${env:BIGTREE_SKR_2_USB.build_unflags} -Os -NDEBUG
#
# Bigtreetech SKR V2.0 F429 (STM32F429VGT6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_SKR_2_F429]
extends = stm32_variant
platform_packages = ${stm_flash_drive.platform_packages}
board = marlin_STM32F429VGT6
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0x8000
board_upload.offset_address = 0x08008000
build_flags = ${stm_flash_drive.build_flags}
-DUSE_USBHOST_HS -DUSE_USB_HS_IN_FS
-DUSBD_IRQ_PRIO=5 -DUSBD_IRQ_SUBPRIO=6
-DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED
-DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8
upload_protocol = stlink
#
# BigTreeTech SKR V2.0 F429 (STM32F429VGT6 ARM Cortex-M4) with USB Media Share Support
#
[env:BIGTREE_SKR_2_F429_USB]
extends = env:BIGTREE_SKR_2_F429
build_flags = ${env:BIGTREE_SKR_2_F429.build_flags} -DUSBD_USE_CDC_MSC
build_unflags = ${env:BIGTREE_SKR_2_F429.build_unflags} -DUSBD_USE_CDC
[env:BIGTREE_SKR_2_F429_USB_debug]
extends = env:BIGTREE_SKR_2_F429_USB
build_flags = ${env:BIGTREE_SKR_2_F429_USB.build_flags} -O0
build_unflags = ${env:BIGTREE_SKR_2_F429_USB.build_unflags} -Os -NDEBUG
#
# BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4)
#
[env:BIGTREE_OCTOPUS_V1]
extends = stm32_variant
board = marlin_BigTree_Octopus_v1
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags}
-DSTM32F446_5VX -DUSE_USB_HS_IN_FS
#
# BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_OCTOPUS_V1_USB]
extends = env:BIGTREE_OCTOPUS_V1
platform_packages = ${stm_flash_drive.platform_packages}
build_unflags = -DUSBD_USE_CDC
build_flags = ${stm_flash_drive.build_flags}
-DSTM32F446_5VX -DUSE_USB_HS_IN_FS
-DUSE_USBHOST_HS -DUSBD_IRQ_PRIO=5
-DUSBD_IRQ_SUBPRIO=6
-DUSBD_USE_CDC_MSC
#
# BigTreeTech Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4)
#
[env:BIGTREE_OCTOPUS_PRO_V1_F429]
extends = stm32_variant
board = marlin_BigTree_Octopus_Pro_v1_F429
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags}
-DUSE_USB_HS_IN_FS
#
# BigTreeTech Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4) with USB Flash Drive Support
#
[env:BIGTREE_OCTOPUS_PRO_V1_F429_USB]
extends = env:BIGTREE_OCTOPUS_PRO_V1_F429
platform_packages = ${stm_flash_drive.platform_packages}
build_unflags = -DUSBD_USE_CDC
build_flags = ${stm_flash_drive.build_flags}
-DSTM32F446_5VX -DUSE_USB_HS_IN_FS
-DUSE_USBHOST_HS -DUSBD_IRQ_PRIO=5
-DUSBD_IRQ_SUBPRIO=6
-DUSBD_USE_CDC_MSC
#
# Lerdge base
#
[lerdge_common]
extends = stm32_variant
board = marlin_STM32F407ZGT6
board_build.variant = MARLIN_LERDGE
board_build.offset = 0x10000
build_flags = ${stm32_variant.build_flags}
-DSTM32F4 -DSTM32F4xx -DTARGET_STM32F4
-DDISABLE_GENERIC_SERIALUSB -DARDUINO_ARCH_STM32 -DLERDGE_TFT35
build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483
extra_scripts = ${common_stm32.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
buildroot/share/PlatformIO/scripts/lerdge.py
#
# Lerdge X (STM32F407VE)
#
[env:LERDGEX]
extends = lerdge_common
board_build.encrypt = Lerdge_X_firmware_force.bin
#
# Lerdge X with USB Flash Drive Support
#
[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}
#
# Lerdge S (STM32F407ZG)
#
[env:LERDGES]
extends = lerdge_common
board_build.encrypt = Lerdge_firmware_force.bin
#
# Lerdge S with USB Flash Drive Support
#
[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}
#
# Lerdge K (STM32F407ZG)
#
[env:LERDGEK]
extends = lerdge_common
board_build.encrypt = Lerdge_K_firmware_force.bin
build_flags = ${lerdge_common.build_flags} -DLERDGEK
#
# Lerdge K with USB Flash Drive Support
#
[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}
#
# RUMBA32
#
[env:rumba32]
extends = stm32_variant
board = rumba32_f446ve
board_build.variant = MARLIN_F446VE
board_build.offset = 0x0000
build_flags = ${stm32_variant.build_flags}
-Os -DHAL_PCD_MODULE_ENABLED
-DDISABLE_GENERIC_SERIALUSB
-DHAL_UART_MODULE_ENABLED
-DTIMER_SERIAL=TIM9
monitor_speed = 500000
upload_protocol = dfu
#
# MKS Robin Pro V2
#
[env:mks_robin_pro2]
extends = stm32_variant
platform_packages = ${stm_flash_drive.platform_packages}
board = genericSTM32F407VET6
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0x0000
board_upload.offset_address = 0x08000000
build_flags = ${stm_flash_drive.build_flags}
build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC
debug_tool = jlink
upload_protocol = jlink
#
# This I2C1(PB6:I2C1_SCL PB7:I2C1_SDA) is used by Robin Nano V3
#
[stm32f4_I2C1]
build_flags = -DPIN_WIRE_SCL=PB6 -DPIN_WIRE_SDA=PB7
#
# MKS Robin Nano V3
#
[env:mks_robin_nano_v3]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0xC000
board_upload.offset_address = 0x0800C000
board_build.rename = Robin_nano_v3.bin
build_flags = ${stm32_variant.build_flags} ${stm32f4_I2C1.build_flags}
-DHAL_PCD_MODULE_ENABLED
debug_tool = jlink
upload_protocol = jlink
#
# MKS Robin Nano V3 with USB Flash Drive Support
# Currently, using a STM32duino fork, until USB Host get merged
#
[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}
-DUSE_USBHOST_HS
-DUSBD_IRQ_PRIO=5
-DUSBD_IRQ_SUBPRIO=6
-DUSE_USB_HS_IN_FS
#
# MKS Robin Nano V3 with USB Flash Drive Support and Shared Media
# Currently, using a STM32duino fork, until USB Host and USB Device MSC get merged
#
[env:mks_robin_nano_v3_usb_flash_drive_msc]
extends = env:mks_robin_nano_v3_usb_flash_drive
build_flags = ${env:mks_robin_nano_v3_usb_flash_drive.build_flags}
-DUSBD_USE_CDC_MSC
build_unflags = -DUSBD_USE_CDC
#
# MKS Robin Nano V3_1
#
[env:mks_robin_nano_v3_1]
extends = env:mks_robin_nano_v3
board = marlin_STM32F407VET6_CCM
#
# MKS Robin Nano V3.1 with USB Flash Drive Support
# Currently, using a STM32duino fork, until USB Host get merged
#
[env:mks_robin_nano_v3_1_usb_flash_drive]
extends = env:mks_robin_nano_v3_usb_flash_drive
board = marlin_STM32F407VET6_CCM
#
# MKS Robin Nano V3.1 with USB Flash Drive Support and Shared Media
# Currently, using a STM32duino fork, until USB Host and USB Device MSC get merged
#
[env:mks_robin_nano_v3_1_usb_flash_drive_msc]
extends = env:mks_robin_nano_v3_usb_flash_drive_msc
board = marlin_STM32F407VET6_CCM
#
# MKS Eagle
# 5 TMC2209 uart mode on board
#
[env:mks_eagle]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0xC000
board_upload.offset_address = 0x0800C000
board_build.rename = mks_eagle.bin
build_flags = ${stm32_variant.build_flags} ${stm32f4_I2C1.build_flags}
-DHAL_PCD_MODULE_ENABLED
-DSTM32_FLASH_SIZE=512
debug_tool = jlink
upload_protocol = jlink
#
# MKS Eagle with USB Flash Drive Support
# Currently, using a STM32duino fork, until USB Host get merged
#
[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}
-DUSE_USBHOST_HS
-DUSBD_IRQ_PRIO=5
-DUSBD_IRQ_SUBPRIO=6
-DUSE_USB_HS_IN_FS
#
# MKS Eagle with USB Flash Drive Support and Shared Media
# Currently, using a STM32duino fork, until USB Host and USB Device MSC get merged
#
[env:mks_eagle_usb_flash_drive_msc]
extends = env:mks_eagle_usb_flash_drive
build_flags = ${env:mks_eagle_usb_flash_drive.build_flags}
-DUSBD_USE_CDC_MSC
build_unflags = -DUSBD_USE_CDC
#
# This I2C1(PB8:I2C1_SCL PB9:I2C1_SDA) is used by MKS Monster8
#
[stm32f4_I2C1_CAN]
build_flags = -DPIN_WIRE_SCL=PB8 -DPIN_WIRE_SDA=PB9
#
# MKS Monster8
#
[env:mks_monster8]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0xC000
board_upload.offset_address = 0x0800C000
board_build.rename = mks_monster8.bin
build_flags = ${stm32_variant.build_flags} ${stm32f4_I2C1_CAN.build_flags}
-DHAL_PCD_MODULE_ENABLED -DTIMER_SERIAL=TIM4
-DSTM32_FLASH_SIZE=512
debug_tool = jlink
upload_protocol = jlink
#
# MKS Monster8 with USB Flash Drive Support
# Currently, using a STM32duino fork, until USB Host get merged
#
[env:mks_monster8_usb_flash_drive]
extends = env:mks_monster8
platform_packages = ${stm_flash_drive.platform_packages}
build_flags = ${stm_flash_drive.build_flags} ${stm32f4_I2C1_CAN.build_flags}
-DUSE_USBHOST_HS
-DUSBD_IRQ_PRIO=5
-DUSBD_IRQ_SUBPRIO=6
-DUSE_USB_HS_IN_FS
#
# MKS Monster8 with USB Flash Drive Support and Shared Media
# Currently, using a STM32duino fork, until USB Host and USB Device MSC get merged
#
[env:mks_monster8_usb_flash_drive_msc]
extends = env:mks_monster8_usb_flash_drive
build_flags = ${env:mks_monster8_usb_flash_drive.build_flags}
-DUSBD_USE_CDC_MSC
build_unflags = -DUSBD_USE_CDC
#
# TH3D EZBoard v2.0 (STM32F405RGT6 ARM Cortex-M4)
#
[env:TH3D_EZBoard_V2]
extends = stm32_variant
board = genericSTM32F405RG
board_build.variant = MARLIN_TH3D_EZBOARD_V2
board_build.encrypt = firmware.bin
board_build.offset = 0xC000
board_upload.offset_address = 0x0800C000
build_flags = ${stm32_variant.build_flags} -DHSE_VALUE=12000000U -O0
debug_tool = stlink
upload_protocol = stlink
extra_scripts = ${stm32_variant.extra_scripts}
buildroot/share/PlatformIO/scripts/openblt.py
#
# BOARD_MKS_ROBIN_NANO_V1_3_F4
# - MKS Robin Nano V1.3 (STM32F407VET6) 5 Pololu Plug
# - MKS Robin Nano-S V1.3 (STM32F407VET6) 4 TMC2225 + 1 Pololu Plug
#
[env:mks_robin_nano_v1_3_f4]
extends = stm32_variant
board = marlin_STM32F407VGT6_CCM
board_build.variant = MARLIN_F4x7Vx
board_build.offset = 0x8000
board_upload.offset_address = 0x08008000
board_build.rename = Robin_nano35.bin
build_flags = ${stm32_variant.build_flags}
-DMCU_STM32F407VE -DSS_TIMER=4 -DENABLE_HWSERIAL3
-DSTM32_FLASH_SIZE=512
-DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2
-DHAL_SD_MODULE_ENABLED
-DHAL_SRAM_MODULE_ENABLED
build_unflags = ${stm32_variant.build_unflags}
-DUSBCON -DUSBD_USE_CDC
debug_tool = jlink
upload_protocol = jlink
#
# Artillery Ruby
#
[env:Artillery_Ruby]
extends = common_stm32
board = marlin_Artillery_Ruby
build_flags = ${common_stm32.build_flags}
-DSTM32F401xC -DTARGET_STM32F4 -DDISABLE_GENERIC_SERIALUSB -DARDUINO_ARCH_STM32
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
-DUSB_PRODUCT=\"Artillery_3D_Printer\"
-DFLASH_DATA_SECTOR=1U -DFLASH_BASE_ADDRESS=0x08004000
extra_scripts = ${common_stm32.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py