Platform options

platform

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.

Examples:

[env:the_latest_version]
platform = atmelavr

[env:exact_version]
platform = atmelavr@1.2.3

[env:specific_major_version]
platform = atmelavr@^1.2.3

[env:specific_major_and_minor_version]
platform = atmelavr@~1.2.3

[env:development_verion_by_git]
platform = https://github.com/platformio/platform-ststm32.git

[env:custom_git_branch]
platform = https://github.com/platformio/platform-espressif8266.git#feature/stage

[env:specific_git_commit]
platform = https://github.com/platformio/platform-espressif8266.git#921855a9c530082efddb5d48b44c3f4be0e2dfa2

platform_packages

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.

Examples:

[env:override_default_toolchain]
platform = atmelavr
platform_packages =
  ; use GCC AVR 5.0+
  toolchain-gccarmnoneeabi@>1.50000.0

[env:override_framework]
platform = espressif8266
platform_packages =
  ; use upstream Git version
  framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git

[env:external_package]
platform = ststm32
platform_packages =
  ; latest openOCD from PlatformIO Package Registry
  tool-openocd

  ; source code of ST-Link
  tool-stlink-source @ https://github.com/texane/stlink.git

framework

Type: String | Multiple: Yes

Frameworks name.

board

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.

board_build.mcu

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.

board_build.f_cpu

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.

Note

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.

board_build.ldscript

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:

[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