Skip to content

Latest commit

 

History

History
150 lines (108 loc) · 4.63 KB

platformio.md

File metadata and controls

150 lines (108 loc) · 4.63 KB
title layout
Embedded Builds with PlatformIO
en

Overview

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

.travis.yml Settings

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"}

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

{: data-file=".travis.yml"}

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

{: data-file=".travis.yml"}

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

{: data-file=".travis.yml"}

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

{: data-file=".travis.yml"}

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.

script:
    - platformio ci --project-conf=/path/to/platformio.ini

{: data-file=".travis.yml"}

Examples