PlatformIO ermöglicht es Programme/Firmware für verschiedene Plattformen zu erstellen und die entsprechenden Bibliotheken zu verwalten. Unterstützt wird zum Beispiel Arduino, Teensy oder mbed und die für diese Plattformen bereitgestellten Entwicklerboards wie zum Beispiel der Arduino Uno
Um PlatformIO zu verwenden müssen keine zusätzlichen IDEs oder Toolchains von Hand heruntergeladen und konfiguriert werden. Sie werden durch die Entwickler für verschiedene Systeme bereitgestellt und durch das Tool verwaltet.
Für den Betrieb wird momentan lediglich Python in Version 2.6 oder 2.7 benötigt. Am einfachsten gestaltet sich die Installation mit dem Tool pip
, welche wie folgt durchgeführt wird.
$ pip install platformio
$ pip install --egg scons
Nach der Installation kann eine Liste der unterstützten Plattformen und Boards abgefragt werden. Das folgende Beispiel zeigt dies beispielhaft mit einer stark verkürzten Liste.
$ platformio boards
*********************************************************************************************************************
If you like PlatformIO, please:
- follow us on Twitter to stay up-to-date on the latest project news > https://twitter.com/PlatformIO_Org
- give us a star on GitHub > https://github.com/platformio/platformio
- vote for the new features/issues on Bountysource > https://www.bountysource.com/teams/platformio/issues
*********************************************************************************************************************
Platform: atmelavr
---------------------------------------------------------------------------------------------------------------------
Type MCU Frequency Flash RAM Name
---------------------------------------------------------------------------------------------------------------------
flora8 atmega32u4 8Mhz 28Kb 2Kb Adafruit Flora
protrinket3ftdi atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (FTDI)
protrinket3 atmega328p 12Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (USB)
protrinket5ftdi atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 5V/16MHz (USB)
protrinket5 atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 5V/16MHz (USB)
[...]
Soll zum Beispiel ein neues Projekt für einen Arduino Uno erstellt werden, kann das wie in dem folgenden Beispiel geschehen. Zunächst sollte dafür ein neues Verzeichnis angelegt und anschließend hinein gewechselt werden. Der Name spielt dabei keine Rolle und sollte nur so gewählt werden, dass man das Projekt im Dateisystem leicht wiederfindet.
$ mkdir beispiel
$ cd beispiel
Anschließend kann das Projekt wie folgt mit einer initialen Konfiguration angelegt werden.
$ platformio init --board=uno
Would you like to enable firmware auto-uploading when project is successfully built using `platformio run` command?
Don't forget that you can upload firmware manually using `platformio run --target upload` command. [y/N]:
The current working directory /dein/verzeichnis/beispiel will be used for project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
The next files/directories will be created in /dein/verzeichnis/beispiel
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source code here
lib - Put here project specific or 3-rd party libraries
Do you want to continue? [y/N]: y
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)
Danach befindet sich im Projektverzeichnis die Datei platformio.ini
, welche die eigentliche Konfiguration enthält und sich schnell um weitere Plattformen erweitern lässt. Neben der Konfiguration sind auch die Ordner lib
und src
zu finden. In ersterem können weiter Bibliotheken abgelegt werden und im Zweiten befinden sich die eigentlichen Quelldateien. Als Quelldateien können zum Beispiel Dateien mit den Endungen cpp
oder c
zum Einsatz kommen. Es ist jedoch auch möglich die durch die Arduino IDE bekannten ino
-Dateien zu verwenden.
Das Projekt/die Firmware lässt sich mit einem einfachen Befehl erstellen. Ist das benötigte Framework und/oder die benötigten Tools noch nicht vorhanden, werden diese von PlatformIO automatisch heruntergeladen. Nachfolgend ist dieser Schritt an einem Beispiel dargestellt.
$ platformio run
[Thu Jul 23 20:59:27 2015] Processing uno (platform: atmelavr, board: uno, framework: arduino)
---------------------------------------------------------------------------------------------------------------------
The platform 'atmelavr' has not been installed yet. Would you like to install it now? [y/N]: y
Ist der Arduino Uno an den Computer angeschloss, kann die erstellte Firmware wie folgt übertragen werden.
$ platformio run --target upload
Fazit
Nach den ersten Tests hat PlatformIO einen positiven Eindruck hinterlassen. Es werden sehr viele Plattformen und Boards unterstützt und das erstellen der Grundkonfiguration erwies sich als sehr einfach. Auch der eigentliche Build-Prozess und das Überspielen der Firmware funktionierten ohne Probleme.
Auch das Installieren von Bibliotheken, was in diesem Artikel nicht vorgestellt wurde, war ohne Probleme möglich und vereinfachte die Arbeit.
Hoffentlich bleibt der positive Eindruck auch beim Einsatz in größeren Projekten bestehen.
Links
- Webseite: PlatformIO (englisch)
- Webseite: Arduino (englisch)