PlatformIO – otevřený ekosystém pro vývoj IoT

IoT - ZařízeníVývoj software pro různé typy mikrokontrolérů s sebou nese nutnost instalovat, udržovat a provozovat několik vývojových prostředí. Typickým příkladem může být prvotní seznámení s platformou Atmel AVR a frameworkem Arduino. Po nějakém čase zjistíme, že nám náš oblíbený nástroj Arduino IDE přestává svými možnostmi vyhovovat a nainstalujeme Atmel Studio. K již instalovaným cca 350 MB dat zabírající Arduino IDE přibydou další bezmála 2 GB. Na trhu je ale řada dalších MCU, které chceme ve svých nových projektech používat. Pokud nás zaujmou čipy společnosti Silicon Laboratories, musíme si připravit 5,5 GB pro jejich vývojové nástroje Simplicity Studio. Dále zde máme Freescale (dnes pod NXP), STMicroelectronics, Espressif Systems, Texas Instruments apod.

Chceme-li vyvíjet pro větší portfolio produktů, budeme si muset připravit opravdu velký diskový prostor a nemálo času na správu veškerého programového vybavení.

Software dodávaný samotnými výrobci má ale bezesporu několik výhod. Tou první jsou optimalizované překladače pro konkrétní čipy, dále množství dokumentace a příkladů a následně také grafické nástroje pro rychlé nastavení vlastností jednotlivých dostupných rozhraní, počítání spotřeby nebo nastavení parametrů časovačů a čítačů. V poslední době je možné také přímo instalovat software třetích stran a komunitní knihovny a synchronizovat projekty se systémy pro správu verzí.

Pokud jsme ale konzervativnější a nevyžadujeme, či přímo nechceme, instalovat nadbytečnou dokumentaci a pro nás nepotřebné grafické nástroje, můžeme využít několik „ekosystémů“, které nám vše potřebné zprostředkují.

Jedním takovým je právě PlatformIO.

PlatformIO - Embedded DevelopmentPlatformIO je vývojový ekosystém kombinující IDE, tedy nástroj pro zápis zdrojového kódu, správce knihoven a nástroje pro překlad a nahrání výsledného projektu do MCU. V současnosti podporuje více než 200 vývojových desek (nebo přímo MCU), více než 15 platforem (Atmel AVR, Atmel SAM, Espressif, Freescale Kinetis, Nordic nRF51, NXP LPC, Silicon Labs EFM32, ST STM32, Teensy, TI MSP430, TI TIVA, …) a více než 10 frameworků (Arduino, CMSIS, WiringPi, libOpenCM3, Energia, SPL, mbed, …). Podporovaným programovacím jazykem je C/C++.

Pokud se podíváme na množství podporovaných vývojových platforem a frameworků, určitě nás napadne, o jak rozsáhlý projekt se jedná a na čem je postaven. Mezi velkou výhodu patří příjemná integrace příkazového řádku (CLI), který nikde neruší a lze jej bez problémů použít pro množství úkonů. PlatformIO je zjednodušeně „motor“, který běží pod vlastním IDE. Tím může být Arduino, Atom, CLion, Eclipse, Emacs, Energia, Qt Creator, Sublime Text, Vim nebo Visual Studio. Pokud ale nechceme integraci PlatformIO řešit, můžeme sáhnout po balíčku kombinující PlatformIO s „textovým“ editorem Atom.

PlatformIO vs. ArduinoIDE

PlatformIO vs. ArduinoIDE

V každém případě ale PlatformIO ve výchozím stavu neobsahuje vše potřebné pro vývoj aplikací, ale pouze jakési jádro. Důležité nástroje se automaticky stáhnou při prvotním založení příslušného projektu. To je také pochopitelné řešení, protože nebude diskový prostor zbytečně zabírat množství software, který nikdy nevyužijeme.

Instalace

PlatformIO lze provozovat jak pod operačním systémem Windows tak Linux nebo Mac OSX. Potřebný softwarový balíček pro náš operační systém pohodlně stáhneme z internetu. Následující popis se bude týkat operačního systému Windows.

Jak jsem již uvedl, výchozí instalace obsahuje textový editor Atom. Pokud ale používáme jiné IDE, stáhneme pouze vlastní CLI, které integrujeme do našeho IDE.

PlatformIO využívá ke svému běhu jazyk Python 2.7.x (ne 3.x), který je potřeba nainstalovat jako první. Při jeho instalaci je nutné na kartě Customize vybrat možnost „Add python.exe to Path“. To proto, aby bylo možné spouštět program python.exe odkudkoli. To vyzkoušíme jednoduše tak, že do příkazového řádku napíšeme příkaz python.exe. Pokud se nám zobrazí text podobný následujícímu, můžeme instalovat PlatformIO:

V případě, že systém zobrazí zprávu

zkusíme se ze systému odhlásit a znovu přihlásit.

Instalační balíček PlatformIO, společně s Atomem, v má v současné době cca 80 MB. Po instalaci zabere bez vývojových nástrojů pro příslušné platformy cca 400 MB. Instalace je jednoduchá, ale díky stahování aktualizací z internetu zabere delší čas. Průběh je takový, že po spuštění souboru platformio-atom-windows.exe je vše potřebné automaticky nainstalováno do uživatelova profilu. Pokud tedy preferujeme instalaci do vlastního umístění, nebudeme mít z této vlastnosti radost. Konkrétní instalační adresář je %LOCALAPPDATA%\atom%USERPROFILE%\.atom. Vývojové nástroje pro konkrétní platformy se, jak jsem zmínil, z internetu instalují až v době založení projektu a instalují se do adresáře %USERPROFILE%\.platformio. Jejich velikost je rozličná a dosahuje 100 MB až cca 600 MB na platformu.

Další možnosti instalace jsou popsány na stránkách projektu.

Balíčky editoru Atom

Jak bylo napsáno, PlatformIO je nadstavba IDE a spolu tvoří kompaktní celek. V textovém editoru Atom je tedy integrován jako příslušný balíček neboli softwarová součást. Tyto balíčky lze instalovat, povolovat, zakazovat a odinstalovat. To vše v nastavení editoru.

PlatformIO - BalíčkyPráce s PlatformIO

Pokud se podíváme na pracovní plochu Atomu, vidíme projektový strom, vlastní editovaný soubor, velká funkční tlačítka poskytující přístup k nejpoužívanějším funkcím a menu PlatformIO. Právě funkční tlačítka a speciální menu je to, co nám do Atomu viditelně přináší PlatformIO.

PlatformIO - Main screenJedná se o spartánský, nicméně funkční design. Nemusíme se tedy bát, že budeme nějakou funkci dlouze hledat. A co nám tedy PlatformIO přináší navíc? Zejména správce knihoven, systém pro překlad a nahrávání kódu do zařízení.

Možnosti produktu jsou díky existenci rozšíření opravdu rozsáhlé a není problém případné nedostatky díky otevřenosti reportovat nebo přímo odstranit a změny komunikovat s komunitou kolem Atomu a PlatformIO.

Při prvním spuštění PlatformIO budeme chtít jeho možnosti vyzkoušet. Zde máme na výběr založení nového projektu nebo jeho import např. z Arduino IDE.

Nový projekt

Založení projektu můžeme provést pomocí příkazu platformio init (viz Quick Start) nebo menu PlatformIO > „Initialize new Project or update existing…

PlatformIO - New project
Na zobrazeném dialogu vybereme jeden nebo několik vývojových desek a adresář, kde bude nový projekt vytvořen. Po kliknutí na tlačítko je vše automaticky provedeno. Pokud nejsou příslušné nástroje pro vybrané vývojové desky ještě nainstalovány, provede se i tento proces. O tom jsme informováni pouze tak, že se tlačítko Initialize změní na Initializing… Po doběhnutí operace dialog zmizí a zobrazí se malé informační okno informující o úspěchu nebo neúspěchu vytvoření nového projektu.PlatformIO - New project created

Import projektu z Arduino IDE

V případě, že chceme importovat projekt z Arduino IDE, použijeme menu PlatformIO > „Import Arduino IDE Project…

PlatformIO - Import Arduino IDEV případě Arduino IDE je import důležitý, protože Arduino IDE používá trochu pozměněný kód C/C++. Některé části kódu chybí a jsou přidávány až při překladu do binárního kódu. Proto také mají soubory obsahující zdrojový kód jiné koncovky než běžné .c a.cpp.

Chceme-li na importovaném projektu stále pracovat i pod Arduino IDE, zaškrtneme příslušnou volbu na dialogu.

V PlatformIO mohou být knihovny užívané v projektech přímo součásti stromové struktury projektu. Pokud ale chceme používat ty, které jsou používány v Arduino IDE, zatrhneme „Use Arduino IDE Library Manager“ a vybereme příslušnou složku.

Po odklepnutí tlačítka Import je projekt naimportován. Jako v případě nového projektu, při neexistenci potřebných nástrojů jsou tyto staženy z internetu.

Nastavení projektu

Každý projekt, jeho adresář, obsahuje soubor s definicí všech potřebných vlastností. Ten má název platformio.ini. Vyčerpávající popis možného obsahu je k dispozici na stránkách projektu.

Správa knihoven

Správa knihoven, tedy softwarových rozšíření jednotlivých projektů, je momentálně u PlatformIO řešeno z příkazového řádku.

PlatformIO - Library managerI zde máme kromě instalace a odinstalace možnost update.

Výpis knihoven projektu:

Instalace nové knihovny:

Instalace probíhá z komunitního repositáře umístěného na internetu. Každá knihovna má přiděleno číslo, kterým se identifikuje.

Na grafickém správci knihoven se momentálně pracuje.

Sestavení a upload projektu

Sestavení i upload je podobně jednoduchou záležitostí jako v ostatních prostředích. Pro obě operace jsou k dispozici příslušná tlačítka, položky menu i příkazy pro CLI.

Na rozdíl od Arduino IDE, kde je projekt sestavován v dočasném adresáři, zde nalezneme výsledné soubory v adresáři projektu .pioenvs. Pokud používáme systém správy verzí GIT, je tento adresář vylučován ze synchronizace.

Výsledný program v binárním kódu lze uploadovat přes sériový port, ISP, OTA, apod. Nejčastěji je ale využívána právě možnost poslat kód přes sériový port. Pro ty další je často nutné programovat jednoduché dávkové skripty.

Práce se sériovým portem

Sériovým portem nejsou osazovány osobní počítače již řadu let. Pro vývoj embedded aplikací je jeho používání absolutní nutnost. I PlatformIO obsahuje jeho podporu.

Update

Nové verze jsou kontrolovány automaticky a o jejich instalaci jsme informováni. Nemusíme se tedy bát, že náš software bude časem zastaralý.

Závěr

PlatformIO poskytuje ucelený ekosystém pro množství platforem. Velkou výhodou je otevřenost, komunita a stále se rozrůstající podpora. Naproti tomu nepřináší pokročilé možnosti vývoje, jako příslušné specializované nástroje přímo od konkrétních výrobců. Do budoucna se ale můžeme těšit na řadu dalších vylepšení a funkcí.

1 komentář u „PlatformIO – otevřený ekosystém pro vývoj IoT

  1. Pingback: PlatformIO – otevřený ekosystém pro vývoj IoT – IoT portál

Leave a Reply