This documentation site is open source. The README in our Git repository explains how to contribute.

Embedded Builds with PlatformIO

PlatformIO is a cross-platform code-builder and library manager for embedded development with no external dependencies. Using PlatformIO you can compile your code on multiple platforms, frameworks and boards. Unit testing requires a monthly subscription.

Platforms - pre-built different development platforms for the most popular host OS (macOS, Windows, Linux 32/64bit, Linux ARMv6+). Each of them includes compiler, debugger, uploader, etc: Atmel AVR Espressif Teensy ST STM32 Full list at PlatformIO

Frameworks - pre-configured build scripts for the popular embedded frameworks: Arduino libOpenCM3 mbed Full list at PlatformIO

Embedded - pre-defined compilation profiles for a variety of embedded boards.

Full list at PlatformIO

Please read the official PlatformIO & Travis CI documentation before using PlatformIO.

PlatformIO is written in Python and is recommended to be run within a Travis CI Python isolated environment:

language : python python : - " 2.7" cache : directories : - " ~/.platformio" env : - PLATFORMIO_CI_SRC=path/to/test/file.c - PLATFORMIO_CI_SRC=examples/file.ino - PLATFORMIO_CI_SRC=path/to/test/directory install : - pip install -U platformio script : - platformio ci --board=TYPE_1 --board=TYPE_2 --board=TYPE_N

Testing Libraries #

If the project you are testing is a library, please use the --lib="." option for the platformio ci command

script : - platformio ci --lib="." --board=TYPE_1 --board=TYPE_2 --board=TYPE_N

Managing dependencies #

There are two options for testing projects with external dependencies:

using the PlatformIO Library Manager

installing dependencies manually

PlatformIO Library Manager #

For the dependencies available in the PlatformIO Library Registry:

install : - pip install -U platformio # Libraries from PlatformIO Library Registry: # http://platformio.org/#!/lib/show/1/OneWire - platformio lib install 1

Installing dependencies manually #

For the dependencies not available in the PlatformIO Library Registry:

install : - pip install -U platformio # download library to the temporary directory - wget https://github.com/PaulStoffregen/OneWire/archive/master.zip -O /tmp/onewire_source.zip - unzip /tmp/onewire_source.zip -d /tmp/ script : - platformio ci --lib="/tmp/OneWire-master" --board=TYPE_1 --board=TYPE_2 --board=TYPE_N

Custom Build Flags #

To specify custom build flags using the PLATFORMIO_BUILD_FLAGS environment:

env : - PLATFORMIO_CI_SRC=path/to/test/file.c PLATFORMIO_BUILD_FLAGS="-D SPECIFIC_MACROS_PER_TEST_ENV -I/extra/inc" - PLATFORMIO_CI_SRC=examples/file.ino - PLATFORMIO_CI_SRC=path/to/test/directory install : - pip install -U platformio - export PLATFORMIO_BUILD_FLAGS=-D GLOBAL_MACROS_FOR_ALL_TEST_ENV

More details available at build flags/options.

Advanced configuration #

You can configure multiple build environments using a platformio.ini Project Configuration file, and specifying a –project-conf instead of --board .