Platform options


Type: Package Specification | Multiple: No

Specify a development platform that provides integration of vendor-specific boards (development kits, MCUs), high-level frameworks, and SDKs. See Package Specifications for details.

PlatformIO Registry allows you to explore supported development platforms, boards, frameworks, and toolchains.

For the advanced platform configuration, please check the Development Platforms documentation.

Example of using a Espressif 32 development platform:

; allow backwards-compatible new functionality and bug-fixes
platform = espressif32@^3.5.0

platform = espressif32@~3.5.0

platform = espressif32@3.5.0

platform = espressif32

platform =

platform =

platform =


Type: Package Specification | Multiple: Yes

Configure custom packages per a build environment. You can also override default packages by Development Platforms using the same name. See Package Specifications for details.

Check the PlatformIO Registry for the available toolchains, frameworks, SDKs, etc.


platform = atmelavr
platform_packages =
  ; use GCC AVR 5.0+

platform = espressif8266
platform_packages =
  ; use upstream Git version
  framework-arduinoespressif8266 @

platform = ststm32
platform_packages =
  ; latest openOCD from PlatformIO Package Registry

  ; source code of ST-Link
  tool-stlink-source @


Type: String | Multiple: Yes

Frameworks name.


Type: String (ID) | Multiple: No

PlatformIO has pre-configured settings for the most popular boards:

  • build configuration

  • upload configuration

  • debugging configuration

  • connectivity information, etc.

You can find a valid board ID in Boards catalog, Boards Explorer or pio boards command.


Type: String | Multiple: No

board_build.mcu is a microcontroller(MCU) type that is used by compiler to recognize MCU architecture. The correct type of board_build.mcu depends on platform library. For example, the list of board_build.mcu for “megaAVR Devices” is described here.

The full list of board_build.mcu for the popular embedded platforms you can find in Boards section of Development Platforms. See “Microcontroller” column.


Type: Number | Multiple: No

The option board_build.f_cpu is used to define MCU frequency (Hertz, Clock). A format of this option is C-like long integer value with L suffix. The 1 Hertz is equal to 1L, then 16 MHz (Mega Hertz) is equal to 16000000L.

The full list of board_build.f_cpu for the popular embedded platforms you can find in Boards section of Development Platforms. See “Frequency” column.


This option doesn’t make any changes to real clock settings on hardware. You should specify a board_build.f_cpu value if you have changed a target’s clock frequency so that the underlying software will be configured accordingly to match the change.


Type: String | Multiple: No

Path to the linker script to be used instead of the one defined by a framework. This is useful for specifying a modified linker script, for example, when an application requires a special memory section for a bootloader.

More options

You can override any board option declared in manifest file using the next format board_{OBJECT.PATH}, where {OBJECT.PATH} is an object path in JSON manifest. Please navigate to “boards” folder of PlatfomIO development platforms and open JSON file to list all available options.

For example, Manifest: Espressif ESP32 Dev Module:

; 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