Platform options


Type: String | Multiple: No

Development Platforms name.

PlatformIO allows one to use specific version of platform using Semantic Versioning (X.Y.Z=MAJOR.MINOR.PATCH) or VCS (Git, Mercurial and Subversion).

Version specifications can take any of the following forms:

  • 1.2.3: an exact version number. Use only this exact version

  • ^1.2.3: any compatible version (exact version for 1.x.x versions)

  • ~1.2.3: any version with the same major and minor versions, and an equal or greater patch version

  • >1.2.3: any version greater than 1.2.3. >=, <, and <= are also possible

  • >0.1.0,!=0.2.0,<0.3.0: any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

Other forms are the same as for the pio platform install command.


platform = atmelavr

platform = atmelavr@1.2.3

platform = atmelavr@^1.2.3

platform = atmelavr@~1.2.3

platform =

platform =

platform =


Type: String | Multiple: Yes

Configure custom packages per a build environment. You can also override default packages by Development Platforms using the same name. Packages will be installed in packages_dir.


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. You can overclock a board by specifying a board_build.f_cpu value other than the default.


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