嵌入式


platformio

<p>[TOC]</p> <h3>安装vscode插件后手动安装platformio</h3> <pre><code>pip install platformio</code></pre> <h3>stm32</h3> <p><a href="https://docs.platformio.org/en/latest/tutorials/ststm32/stm32cube_debugging_unit_testing.html#tutorial-stm32cube-debugging-unit-testing">https://docs.platformio.org/en/latest/tutorials/ststm32/stm32cube_debugging_unit_testing.html#tutorial-stm32cube-debugging-unit-testing</a></p> <p><a href="https://docs.platformio.org/en/latest/plus/debug-tools/stlink.html#debugging-tool-stlink">https://docs.platformio.org/en/latest/plus/debug-tools/stlink.html#debugging-tool-stlink</a></p> <p><a href="https://docs.platformio.org/en/latest/plus/debug-tools/jlink.html">https://docs.platformio.org/en/latest/plus/debug-tools/jlink.html</a></p> <h3>zephyr框架集成</h3> <p><a href="https://docs.platformio.org/en/latest/frameworks/zephyr.html">https://docs.platformio.org/en/latest/frameworks/zephyr.html</a></p> <h3>platformio构建大概的过程</h3> <ol> <li>platformio run会读取项目下的platformio.ini构建-e指定的环境,若未指定构建默认环境。默认环境通过如下设置 <pre><code>[platformio] default_envs = xxx ; 或多个默认环境 default_envs = xxx, yyy</code></pre></li> </ol> <p>然后EnvironmentProcessor.process-&gt;PlatformFactory.newPlatform('ststm32'),它从ststm32平台下<code>platform.py</code>获取平台类对象,然后使用平台类创建实例<code>platform_cls('platform.json').run</code>进行构建,使用的构建脚本是<code>ststm32/builder/main.py</code></p> <h3>自定义boards</h3> <p>在项目目录下boards目录下放入board描述文件<code>自定义板子.json</code></p> <h3>platformio</h3> <p><a href="https://docs.platformio.org/en/latest/projectconf/section_env.html">https://docs.platformio.org/en/latest/projectconf/section_env.html</a></p> <p><code>lib_deps</code>依赖下载放在<code>.pio/libdeps</code>目录下</p> <pre><code>[platformio] default_envs = nodemcuv2 ; You MUST inject these options into [env:] section ; using ${common_env_data.***} (see below) [common_env_data] build_flags = -D VERSION=1.2.3 -D DEBUG=1 lib_deps_builtin = SPI Wire lib_deps_external = ArduinoJson@~5.6,!=5.4 https://github.com/gioblu/PJON.git#v2.0 IRremoteESP8266=https://github.com/markszabo/IRremoteESP8266/archive/master.zip [env:nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2 ; Build options build_flags = ${common_env_data.build_flags} -DSSID_NAME=HELLO -DSSID_PASWORD=WORLD ; Library options lib_deps = ${common_env_data.lib_deps_builtin} ${common_env_data.lib_deps_external} https://github.com/me-no-dev/ESPAsyncTCP.git PubSubClient@2.6 OneWire ; Serial Monitor options monitor_speed = 115200 monitor_flags = --encoding hexlify ; Unit Testing options test_ignore = test_desktop [env:bluepill_f103c8] platform = ststm32 framework = arduino board = bluepill_f103c8 ; Build options build_flags = ${common_env_data.build_flags} ; Library options lib_deps = ${common_env_data.lib_deps_external} ; Debug options debug_tool = custom debug_server = JLinkGDBServer -singlerun -if SWD -select USB -port 2331 -device STM32F103C8 ; Unit Testing options test_ignore = test_desktop</code></pre> <pre><code># # Marlin Firmware # PlatformIO Configuration File # # For detailed documentation with EXAMPLES: # # http://docs.platformio.org/en/latest/projectconf.html # # Automatic targets - enable auto-uploading # targets = upload # # By default platformio build will abort after 5 errors. # Remove '-fmax-errors=5' from build_flags below to see all. # [platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards default_envs = megaatmega2560 [common] default_src_filter = +&lt;src/*&gt; -&lt;src/config&gt; -&lt;src/HAL&gt; +&lt;src/HAL/shared&gt; extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-all-constants lib_deps = U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip LiquidCrystal@1.3.4 TMCStepper@&gt;=0.5.2,&lt;1.0.0 Adafruit NeoPixel@1.2.5 Adafruit_MAX31865=https://github.com/adafruit/Adafruit_MAX31865/archive/master.zip LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/dev.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip SailfishRGB_LED=https://github.com/mikeshub/SailfishRGB_LED/archive/master.zip SlowSoftI2CMaster=https://github.com/mikeshub/SlowSoftI2CMaster/archive/master.zip # Globally defined properties # inherited by all environments [env] framework = arduino build_flags = ${common.build_flags} lib_deps = ${common.lib_deps} ################################# # # # Unique Core Architectures # # # # Add a new "env" below if no # # entry has values suitable to # # build for a given board. # # # ################################# # # ATmega2560 # [env:megaatmega2560] platform = atmelavr board = megaatmega2560 board_build.f_cpu = 16000000L lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # ATmega1280 # [env:megaatmega1280] platform = atmelavr board = megaatmega1280 board_build.f_cpu = 16000000L lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # RAMBo # [env:rambo] platform = atmelavr board = reprap_rambo board_build.f_cpu = 16000000L lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # FYSETC F6 V1.3 # [env:FYSETC_F6_13] platform = atmelavr board = fysetc_f6_13 board_build.f_cpu = 16000000L lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # Sanguinololu (ATmega644p) # [env:sanguino_atmega644p] platform = atmelavr board = sanguino_atmega644p lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # Sanguinololu (ATmega1284p) # [env:sanguino_atmega1284p] platform = atmelavr board = sanguino_atmega1284p lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # Melzi and clones (ATmega1284p) # [env:melzi] platform = atmelavr board = sanguino_atmega1284p lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 build_flags = ${common.build_flags} lib_ignore = TMCStepper upload_speed = 57600 # # Melzi and clones (Optiboot bootloader) # [env:melzi_optiboot] platform = atmelavr board = sanguino_atmega1284p lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 build_flags = ${common.build_flags} lib_ignore = TMCStepper upload_speed = 115200 # # AT90USB1286 boards using CDC bootloader # - BRAINWAVE # - BRAINWAVE_PRO # - SAV_MKI # - TEENSYLU # [env:at90usb1286_cdc] platform = teensy board = at90usb1286 lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # AT90USB1286 boards using DFU bootloader # - PrintrBoard # - PrintrBoard Rev.F # - ? 5DPRINT ? # [env:at90usb1286_dfu] platform = teensy board = at90usb1286 lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_AVR&gt; monitor_speed = 250000 # # Due (Atmel SAM3X8E ARM Cortex-M3) # # - RAMPS4DUE # - RADDS # [env:DUE] platform = atmelsam board = due src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_DUE&gt; monitor_speed = 250000 [env:DUE_USB] platform = atmelsam board = dueUSB src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_DUE&gt; monitor_speed = 250000 [env:DUE_debug] # Used when WATCHDOG_RESET_MANUAL is enabled platform = atmelsam board = due src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_DUE&gt; monitor_speed = 250000 build_flags = ${common.build_flags} -funwind-tables -mpoke-function-name # # NXP LPC176x ARM Cortex-M3 # [env:LPC1768] platform = https://github.com/p3p/pio-nxplpc-arduino-lpc176x/archive/0.1.2.zip board = nxp_lpc1768 build_flags = -DU8G_HAL_LINKS -IMarlin/src/HAL/HAL_LPC1768/include -IMarlin/src/HAL/HAL_LPC1768/u8g ${common.build_flags} # debug options for backtrace # -funwind-tables # -mpoke-function-name lib_ldf_mode = off lib_compat_mode = strict extra_scripts = Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_LPC1768&gt; monitor_speed = 250000 lib_deps = Servo LiquidCrystal U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip TMCStepper@&gt;=0.6.1,&lt;1.0.0 Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip [env:LPC1769] platform = https://github.com/p3p/pio-nxplpc-arduino-lpc176x/archive/0.1.2.zip board = nxp_lpc1769 build_flags = -DU8G_HAL_LINKS -IMarlin/src/HAL/HAL_LPC1768/include -IMarlin/src/HAL/HAL_LPC1768/u8g ${common.build_flags} # debug options for backtrace # -funwind-tables # -mpoke-function-name lib_ldf_mode = off lib_compat_mode = strict extra_scripts = Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_LPC1768&gt; monitor_speed = 250000 lib_deps = Servo LiquidCrystal U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip TMCStepper@&gt;=0.6.1,&lt;1.0.0 Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip # # STM32F103RC # [env:STM32F103RC] platform = ststm32 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 # # STM32F103RC_fysetc # [env:STM32F103RC_fysetc] platform = ststm32 board = genericSTM32F103RC #board_build.core = maple platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DDEBUG_LEVEL=0 -DHAVE_SW_SERIAL build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI lib_ldf_mode = chain debug_tool = stlink upload_protocol = serial monitor_speed = 250000 # # BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3) # # STM32F103RC_bigtree ............. RCT6 with 256K # STM32F103RC_bigtree_USB ......... RCT6 with 256K (USB mass storage) # STM32F103RC_bigtree_512K ........ RCT6 with 512K # STM32F103RC_bigtree_512K_USB .... RCT6 with 512K (USB mass storage) # [env:STM32F103RC_bigtree] platform = ststm32 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_bigtree_USB] platform = ststm32 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DUSE_USB_COMPOSITE build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_bigtree_512K] platform = ststm32 board = genericSTM32F103RC board_upload.maximum_size=524288 platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_FLASH_SIZE=512 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_bigtree_512K_USB] platform = ststm32 board = genericSTM32F103RC board_upload.maximum_size=524288 platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_FLASH_SIZE=512 -DUSE_USB_COMPOSITE build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 # # STM32F103RE # [env:STM32F103RE] platform = ststm32 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 # # STM32F103RE_bigtree ............. RET6 # STM32F103RE_bigtree_USB ......... RET6 (USB mass storage) # [env:STM32F103RE_bigtree] platform = ststm32 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RE_SKR_E3_DIP.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI debug_tool = stlink upload_protocol = stlink monitor_speed = 115200 [env:STM32F103RE_bigtree_USB] platform = ststm32 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DUSE_USB_COMPOSITE build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RE_SKR_E3_DIP.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip lib_ignore = Adafruit NeoPixel, SPI debug_tool = stlink upload_protocol = stlink monitor_speed = 115200 # # STM32F4 with STM32GENERIC # [env:STM32F4] platform = ststm32 board = disco_f407vg build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F4 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED lib_ignore = Adafruit NeoPixel, TMCStepper src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32_F4_F7&gt; -&lt;src/HAL/HAL_STM32_F4_F7/STM32F7&gt; monitor_speed = 250000 # # STM32F7 with STM32GENERIC # [env:STM32F7] platform = ststm32 board = remram_v1 build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F7 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED lib_ignore = Adafruit NeoPixel, TMCStepper src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32_F4_F7&gt; -&lt;src/HAL/HAL_STM32_F4_F7/STM32F4&gt; monitor_speed = 250000 # # ARMED (STM32) # [env:ARMED] platform = ststm32 board = armed_v1 build_flags = ${common.build_flags} -DUSBCON -DUSBD_VID=0x0483 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="ARMED_V1"' -DUSBD_USE_CDC -O2 -ffreestanding -fsigned-char -fno-move-loop-invariants -fno-strict-aliasing -std=gnu11 -std=gnu++11 -IMarlin/src/HAL/HAL_STM32 lib_ignore = Adafruit NeoPixel, SoftwareSerial src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 250000 # # Longer 3D board in Alfawise U20 (STM32F103VET6) # [env:STM32F103VE_longer] platform = ststm32 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -USERIAL_USB -DSTM32F1xx -DU20 -DTS_V12 build_unflags = -std=gnu++11 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6 extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, LiquidTWI2, SPI monitor_speed = 250000 # # MKS Robin (STM32F103ZET6) # [env:mks_robin] platform = ststm32 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 250000 # # MKS Robin Pro (STM32F103ZET6) # [env:mks_robin_pro] platform = ststm32 board = genericSTM32F103ZE extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_pro.py build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} lib_ignore = Adafruit NeoPixel, SPI, TMCStepper # # MKS Robin Lite/Lite2 (STM32F103RCT6) # [env:mks_robin_lite] platform = ststm32 board = genericSTM32F103RC build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_lite.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 250000 # # MKS ROBIN LITE3 (STM32F103RCT6) # [env:mks_robin_lite3] platform = ststm32 board = genericSTM32F103RC extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_lite3.py build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_deps = ${common.lib_deps} lib_ignore = Adafruit NeoPixel, SPI # # MKS Robin Mini (STM32F103VET6) # [env:mks_robin_mini] platform = ststm32 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_mini.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 250000 # # MKS Robin Nano (STM32F103VET6) # [env:mks_robin_nano] platform = ststm32 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_nano.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 250000 # # JGAurora A5S A1 (STM32F103ZET6) # [env:jgaurora_a5s_a1] platform = ststm32 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 250000 # # Malyan M200 (STM32F103CB) # [env:STM32F103CB_malyan] platform = ststm32 board = malyanM200 build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__ src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel, LiquidCrystal, LiquidTWI2, TMCStepper, U8glib-HAL, SPI # # Chitu boards like Tronxy X5s (STM32F103ZET6) # [env:chitu_f103] platform = ststm32 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY build_unflags = -std=gnu++11 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG= -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6 extra_scripts = buildroot/share/PlatformIO/scripts/chitu_crypt.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32F1&gt; lib_ignore = Adafruit NeoPixel monitor_speed = 250000 # # FLYF407ZG # [env:FLYF407ZG] platform = ststm32 board = FLYF407ZG platform_packages = framework-arduinoststm32@&gt;=3.10700.191028 build_flags = ${common.build_flags} -DSTM32F4 -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407ZG\" -DTARGET_STM32F4 -DVECT_TAB_OFFSET=0x8000 -IMarlin/src/HAL/HAL_STM32 build_unflags = -std=gnu++11 extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py lib_ignore = Adafruit NeoPixel, TMCStepper, SailfishLCD, SailfishRGB_LED, SlowSoftI2CMaster, SoftwareSerial src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 250000 # # FYSETC S6 (STM32F446VET6 ARM Cortex-M4) # [env:FYSETC_S6] platform = ststm32 board = fysetc_s6 platform_packages = tool-stm32duino build_flags = ${common.build_flags} -DTARGET_STM32F4 -std=gnu++14 -DVECT_TAB_OFFSET=0x10000 -DUSBCON -DUSBD_USE_CDC -DHAL_PCD_MODULE_ENABLED -DUSBD_VID=0x0483 '-DUSB_PRODUCT="FYSETC_S6"' build_unflags = -std=gnu++11 extra_scripts = buildroot/share/PlatformIO/scripts/fysetc_STM32S6.py src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; lib_ignore = Arduino-L6470 debug_tool = stlink #upload_protocol = stlink upload_protocol = serial monitor_speed = 250000 # # STM32F407VET6 with RAMPS-like shield # 'Black' STM32F407VET6 board - http://wiki.stm32duino.com/index.php?title=STM32F407 # Shield - https://github.com/jmz52/Hardware # [env:STM32F407VE_black] platform = ststm32 board = blackSTM32F407VET6 platform_packages = framework-arduinoststm32@&gt;=3.10700.191028 build_flags = ${common.build_flags} -DTARGET_STM32F4 -DARDUINO_BLACK_F407VE -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"BLACK_F407VE\" -IMarlin/src/HAL/HAL_STM32 build_unflags = -std=gnu++11 extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py lib_ignore = Adafruit NeoPixel, TMCStepper, SailfishLCD, SailfishRGB_LED, SlowSoftI2CMaster, SoftwareSerial src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 250000 # # BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4) # [env:BIGTREE_SKR_PRO] platform = ststm32 board = BigTree_SKR_Pro platform_packages = framework-arduinoststm32@&gt;=3.10700.191028 build_flags = ${common.build_flags} -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407ZG\" -DTARGET_STM32F4 -DSTM32F407_5ZX -DVECT_TAB_OFFSET=0x8000 -DHAVE_HWSERIAL6 -IMarlin/src/HAL/HAL_STM32 build_unflags = -std=gnu++11 extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py lib_deps = U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip LiquidCrystal TMCStepper@&gt;=0.5.2,&lt;1.0.0 Adafruit NeoPixel LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/dev.zip lib_ignore = SoftwareSerial, SoftwareSerialM src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 250000 # # BigTreeTech BTT002 (STM32F407VET6 ARM Cortex-M4) # [env:BIGTREE_BTT002] platform = ststm32@5.6.0 board = BigTree_Btt002 platform_packages = framework-arduinoststm32@&gt;=3.10700.191028 build_flags = ${common.build_flags} -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407VE\" -DTARGET_STM32F4 -DSTM32F407_5VX -DVECT_TAB_OFFSET=0x8000 -DHAVE_HWSERIAL2 -DHAVE_HWSERIAL3 -DPIN_SERIAL2_RX=PD_6 -DPIN_SERIAL2_TX=PD_5 build_unflags = -std=gnu++11 extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py lib_ignore = Adafruit NeoPixel, SailfishLCD, SailfishRGB_LED, SlowSoftI2CMaster src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 250000 # # Teensy 3.1 / 3.2 (ARM Cortex-M4) # [env:teensy31] platform = teensy board = teensy31 lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip lib_ignore = Adafruit NeoPixel src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_TEENSY31_32&gt; monitor_speed = 250000 # # Teensy 3.5 / 3.6 (ARM Cortex-M4) # [env:teensy35] platform = teensy board = teensy35 lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip lib_ignore = Adafruit NeoPixel src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_TEENSY35_36&gt; monitor_speed = 250000 # # Espressif ESP32 # [env:esp32] platform = espressif32 board = esp32dev build_flags = ${common.build_flags} -DCORE_DEBUG_LEVEL=0 lib_deps = ${common.lib_deps} AsyncTCP=https://github.com/me-no-dev/AsyncTCP/archive/master.zip ESPAsyncWebServer=https://github.com/me-no-dev/ESPAsyncWebServer/archive/master.zip lib_ignore = LiquidCrystal, LiquidTWI2, SailfishLCD, SailfishRGB_LED src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_ESP32&gt; upload_speed = 115200 monitor_speed = 250000 #upload_port = marlinesp.local #board_build.flash_mode = qio # # Native # No supported Arduino libraries, base Marlin only # [env:linux_native] platform = native framework = build_flags = -D__PLAT_LINUX__ -std=gnu++17 -ggdb -g -lrt -lpthread -D__MARLIN_FIRMWARE__ -Wno-expansion-to-defined src_build_flags = -Wall -IMarlin/src/HAL/HAL_LINUX/include build_unflags = -Wall lib_ldf_mode = off lib_deps = extra_scripts = src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_LINUX&gt; # # Adafruit Grand Central M4 (Atmel SAMD51P20A ARM Cortex-M4) # [env:SAMD51_grandcentral_m4] platform = atmelsam board = adafruit_grandcentral_m4 build_flags = ${common.build_flags} -std=gnu++17 extra_scripts = ${common.extra_scripts} build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_SAMD51&gt; debug_tool = jlink # # RUMBA32 # [env:rumba32_f446ve] platform = ststm32 board = rumba32_f446ve build_flags = ${common.build_flags} -DSTM32F4xx -DARDUINO_RUMBA32_F446VE -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"RUMBA32_F446VE\"" -DSTM32F446xx -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"RUMBA32_F446VE\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED -Os lib_ignore = Adafruit NeoPixel src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; monitor_speed = 500000 upload_protocol = dfu # # MKS RUMBA32(add TMC2208/2209 UART interface and AUX-1) # [env:mks_rumba32] platform = ststm32 board = rumba32_f446ve build_flags = ${common.build_flags} -DSTM32F4xx -DARDUINO_RUMBA32_F446VE -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"RUMBA32_F446VE\"" -DSTM32F446xx -DUSBCON -DUSBD_VID=0x8000 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"RUMBA32_F446VE\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED -Os lib_ignore = Adafruit NeoPixel src_filter = ${common.default_src_filter} +&lt;src/HAL/HAL_STM32&gt; +&lt;src/HAL/HAL_STM32_F4_F7&gt; -&lt;src/HAL/HAL_STM32_F4_F7/STM32F7&gt; monitor_speed = 250000 upload_protocol = dfu # # Just print the dependency tree # [env:include_tree] platform = atmelavr board = megaatmega2560 build_flags = -c -H -std=gnu++11 -Wall -Os -D__MARLIN_FIRMWARE__ lib_deps = ${common.lib_deps} TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip src_filter = +&lt;src/Marlin.cpp&gt;</code></pre> <pre><code>[env] framework = arduino board = esp32dev board_build.partitions = min_spiffs.csv upload_speed = ${common.upload_speed} platform = ${common.platform_espressif32} lib_deps = ${common.lib_deps_all} build_flags = ${common.build_flags_all} upload_protocol = ${common.upload_protocol} extra_scripts = ${common.extra_scripts} monitor_speed = ${common.monitor_speed} [env:ota] upload_protocol = custom [env:usb] upload_protocol = esptool [env:dev] upload_protocol = esptool build_type = debug platform = https://github.com/platformio/platform-espressif32.git#develop platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git</code></pre> <ul> <li>build 指定构建输出的目录</li> </ul> <p><a href="https://docs.platformio.org/en/latest/projectconf/section_platformio.html#projectconf-section-platformio">https://docs.platformio.org/en/latest/projectconf/section_platformio.html#projectconf-section-platformio</a></p> <h3>自定义ldscript</h3> <pre><code>[env:custom_board_options] ; Custom CPU Frequency board_build.f_cpu = 160000000L ; Custom FLASH Frequency board_build.f_flash = 80000000L ; Custom FLASH Mode board_build.flash_mode = qio ; Custom linker script board_build.ldscript = /path/to/ldscript.ld ; Custom maximum program size board_upload.maximum_size = 1310720</code></pre> <h3>board_xxx</h3> <p>它可以修改board的默认的构建环境(如board是LowCostRTK则在LowCostRTK.json中是它的默认构建环境),使用board_xxx可以修改<code>LowCostRTK.json</code>中xxx的值。如</p> <pre><code>; change microcontroller,这是修改json中build.mcu的值 board_build.mcu = stm32f469nih6 ; change MCU frequency,这是修改json中build.f_cpu值 board_build.f_cpu = 180000000L</code></pre> <h3>stlink upload</h3> <p><code>platform/ststm32/builder/main.py</code></p> <pre><code>elif upload_protocol in debug_tools: openocd_args = [ "-d%d" % (2 if int(ARGUMENTS.get("PIOVERBOSE", 0)) else 1) ] openocd_args.extend( debug_tools.get(upload_protocol).get("server").get("arguments", [])) openocd_args.extend([ "-c", "program {$SOURCE} %s verify reset; shutdown;" % board.get("upload.offset_address", "") ]) openocd_args = [ f.replace("$PACKAGE_DIR", platform.get_package_dir("tool-openocd") or "") for f in openocd_args ] env.Replace( UPLOADER="openocd", UPLOADERFLAGS=openocd_args, UPLOADCMD="$UPLOADER $UPLOADERFLAGS") if not board.get("upload").get("offset_address"): upload_source = target_elf upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]</code></pre>

页面列表

ITEM_HTML