title | layout |
---|---|
Embedded Builds with PlatformIO |
en |
PlatformIO is a cross-platform code-builder and library manager for embedded development with no external dependencies. Using PlatformIO you can test your code on multiple platforms, frameworks and boards:
-
Platforms - pre-built different development platforms for the most popular host OS (Mac OS X, 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 PlatformIO packages using Travis CI container-based infrastructure
sudo: false
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
{: data-file=".travis.yml"}
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
{: data-file=".travis.yml"}
There are two options for testing projects with external dependencies:
- using the PlatformIO Library Manager
- installing dependencies manually
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
{: data-file=".travis.yml"}
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
{: data-file=".travis.yml"}
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
{: data-file=".travis.yml"}
More details available at build flags/options.
You can configure multiple build environments using a platformio.ini Project Configuration file, and specifying a --project-conf instead of --board
.
script:
- platformio ci --project-conf=/path/to/platformio.ini
{: data-file=".travis.yml"}