Jste zde

Velký přehled operačních systémů pro embedded zařízení

Embeded zařízení již nejsou jednoduchá zařízení. Komunikace s uživatelem pomocí dotykové obrazovky nebo zpracování dat ze senzorů si vyžádá dostatečný výkon pro sofistikované algoritmy. Operačních systémů existuje mnoho a každý je vhodný pro jinou situaci.

Operační systémy pro embeded zařízení často vychází z plnohodnotných operačních systémů. Jsou optimalizovány kvůli omezení velikosti paměti a výkonu. Jejich největším úkolem bývá zpracování a přenos dat přes internet. Řídicí systémy v automobilech, semaforech, inteligentních televizích, bankomatech, prodejních terminálech, digitální navigační systémy GPS, inteligentní měřiče a mnoho dalších. Tam všude je použit operační systém.

Dnes existuje mnoho vestavěných operačních systémů od otevřených po uzavřené. Každý má své výhody, ale i své úskalí. Vždy je nutné udělat kompromis a pro danou aplikaci zvolit vhodný operační systém.  

Jaké parametry vzít v potaz při výběru vhodného operačního systému?

  • Režijní náklady: Protože embeded zařízení mají omezenou paměť, očekáváme, že operační systém bude mít malé požadavky na paměť, spotřebu a výkon. Režijní náklady OS by měly být minimální.
  • Přenositelnost: Operační systém by měl být nezávislý na použitém hardwaru. Obvykle je OS standardně přenášen na různé hardwarové platformy a rozhraní pomocí podpory BSP, například pomocí volání POSIX.
  • Modularita: Operační systém by měl mít pevné jádro a všechny další funkce by měly být přidány ve formě doplňků. Uživatel si pak může daný operační systém přizpůsobit dané aplikaci, a tím zredukovat velikost, kterou operační systém v embeded zařízení zabírá.
  • Konektivita: Operační systém by měl podporovat různé protokoly připojení, například Ethernet, Wi-Fi, BLE, IEEE 802.15.4 a další.
  • Škálovatelnost: Operační systém by měl být škálovatelný pro jakýkoli typ zařízení. To znamená, že vývojáři a integrátoři budou znát pouze jeden operační systém pro uzly i brány.
  • Spolehlivost: Tato vlastnost je nezbytná nejen pro kritické systémy. Zařízení jsou často na odlehlých místech a musejí pracovat roky bez selhání. Spolehlivost také znamená, že OS by měl splňovat příslušné certifikáty pro určité aplikace. Například zdravotnictví.
  • Bezpečnost: Operační systém má doplňky, které přinášejí zabezpečení zařízení pomocí bezpečného spouštění, podpory SSL a ovladačů pro šifrování.

Jaké certifikace můžeme vyžadovat po operačním sytému?

  • DO-178B pro systémy avioniky
  • IEC 61508 pro průmyslové řídicí systémy
  • ISO 62304 pro zdravotnické zařízení
  • SIL3 / SIL4 IEC pro dopravu a jaderné systémy

 

Operační systém RIOT

Tento operační systém je poměrně hodně rozšířen. Jedná se o bezplatný operační systém s otevřeným zdrojovým kódem, na kterém se podílí firmy, akademická veřejnost a nadšenci. RIOT podporuje většinu nízkoenergetických mikrokontrolérů(32bitové, 16bitové i 8bitové architektury). RIOT si klade za cíl implementovat všechny relevantní otevřené standardy podporující internet věcí. Klade důraz na konektivitu, bezpečnost, odolnost a soukromí. To znamená, že jej můžete dále distribuovat nebo upravovat. Programování je v jazyku C nebo C++. Podporuje standardní nástroje jako jsou gcc, gdb nebo valgrid.

Software je vyvinut komunitou RIOT a je k dispozici za podmínek GNU Lesser General Public License zveřejněné Free Software Foundation, verze 2.1 (LGPLv2.1).

Podporované architektury:

AVR, ARM7, Cortex-M0, Cortex-M0 +, Cortex-M3, Cortex-M4, Cortex-M7, ESP8266, MIPS32, MSP430, PIC32, x86.

Desky a moduly

Airfy Beacon, Arduino Due, Arduino Mega 2560, Arduino Zero, Atmel samr21-Xplained Pro, f4vi, mbed NXP LPC1768, Micro :: bit, Nordic nrf51822 (DevKit), Nordic nrf52840 (DevKit), Nucleo desky (téměř všechny) a mnoho dalších.

Více informací na https://www.riot-os.org

Mongoose OS - rámec pro vývoj firmwaru IoT

Mongoose OS je framework pro vývoj firmwaru internetu věcí dostupný pod licencí Apache License verze 2.0. Podporuje nízkoenergetické mikrokontroléry, jako jsou: ESP32, ESP8266, TI CC3200, STM32. Jeho cílem je být úplným řešením pro vývoj a správu připojených zařízení.

Podpora MCU

STMicro: STM32 F4, L4, F7; TI: CC3200, CC3220; Espressif: ESP32, ESP8266

Cloudové integrace

AWS IoT, Google IoT, Microsoft Azure, IBM Watson a podpora MQTT / REST

K dispozici je Dashboard mdash, kde získáte plnou správu svých připojených zařízeních. mdash poskytuje mnoho funkcí, jako je aktualizace firmwaru OTA, stav webového rozhraní online / offline a metadata (verze firmwaru, doba provozu atd.). K dispozici je také mobilní aplikace pro iOS i Android.

Více informací na https://mongoose-os.com

Contiki OS: Open Source OS pro IoT

Contiki je operační systém s otevřeným zdrojovým kódem. Contiki je výkonný nástroj pro vytváření komplexních bezdrátových systémů. Contiki podporuje plně standardní IPv6 a IPv4 a nejnovější bezdrátové standardy: 6lowpan, RPL, CoAP.

Contiki poskytuje multitasking a má vestavěný Internet Protocol Suite (TCP / IP stack) a přesto potřebuje pouze asi 10 kilobajtů RAM paměti a 30 kilobajtů paměti ROM. Celý systém, včetně grafického uživatelského rozhraní, potřebuje asi 30 kilobajtů paměti RAM. Aplikace Contiki jsou psány ve standardním jazyku C a se simulátorem Cooja mohou být sítě Contiki emulovány před vypálením do hardware. Instant Contiki poskytuje celé vývojové prostředí. Contiki lze bez omezení používat v komerčních i nekomerčních systémech.

Podporované MCU

TI CC2538, nRF52832, RL78, TI MSP30x, Atmel AVR, Freescale MC1322x, Atmel Atmega 128 RFA1, Microchip pic32mx795f512l, TI CC2530 a další

Více informací na https://github.com/contiki-ng/contiki-ng/wiki

Windows 10 IoT

Windows IoT, dříve Windows Embedded je rodina operačních systémů od společnosti Microsoft navržená pro použití ve vestavěných systémech. Společnost Microsoft má v současnosti různé podskupiny operačních systémů pro vestavěná zařízení, která cílí na široký trh, od malých zařízení až po zařízení prodejních míst jako jsou kiosky.

Společnost Microsoft spolupracuje s NXP. Verzi Preview systému Windows 10 IoT Core je na procesorech NXP i.MX 6 a i.MX 7. Produktové portfolio i.MX je jednou z vůbec nejoblíbenějších řad procesorů pro IoT. Windows 10 IoT Core využívá jedinečnou vlastnost procesorů NXP i.MX 6 a i.MX 7, kterou je možnost povolit důvěryhodné vstupy a výstupy. Je tak zajištěno, že škodlivé aplikace nebo neautorizované strany nemůžou nijak manipulovat s fyzickým ovládáním zařízení, a to ani v případě, že se jim podaří proniknout do softwaru operačního systému.

Několik předních dodavatelů hardwaru představilo zařízení postavená na procesoru i.MX 6 a systému Windows 10 IoT Core. Jedná se jak o moduly SOM, tak o jednodeskové počítače, což rozšiřuje možnosti výrobců, kteří mají zájem budovat produkty postavené na NXP, Windows 10 IoT Core a Azure.

 

Podporovaný prototypové desky

AAEON Up Squared, DragonBoard 410c, Keith & Koep i-PAN M7 CoverLens, Keith & Koep i-PAN T7 CoverLens, MinnowBoard Turbot, NXP i.MX 6, NXP i.MX 7, NXP i.MX 8M/8M Mini, Raspberry Pi 2 a Raspberry Pi 3B

Více informací na https://developer.microsoft.com/cs-cz/windows/iot

Azure RTOS

Druhým prostředím, kde Microsoft podporuje embedded zařízení, je Azure. Zde je vývojářům k dispozici Azure RTOS a další bloky, jako Azure IoT device SDK for C, IoT Plug and Play, IoT Central a IoT Hub. Azure RTOS existuje paralelně s Windows IoT a bude tomu tak nadále. Má to své důvody. Zatímco Windows IoT se zaměřuje primárně na vývoj uživatelského rozhraní věcí, Azure RTOS řeší zejména samotný chod zařízení. Z toho plynou také hardwarové limity.
Azure RTOS je poměrně novou značkou Microsoftu, přesto jde o známé a rozšířené vývojové prostředí. Důvodem je rebranding. Pod značku Azure se začlenil ThreadX, systém, který od roku 1997 úspěšně vyvíjela a prodávala americká firma Express Logic, podepsaná také pod dále zmíněným Nucleus RTOS . Tu v dubnu 2019 koupil Microsoft a celý ThreadX začlenil do prostředí Azure, které tak získalo velký potenciál pro embedded aplikace. Seznam podporovaných platforem (https://en.wikipedia.org/wiki/ThreadX)  je v tomto případě poměrně dlouhý.  
https://azure.microsoft.com

Android Things

Android Things umožňuje vytvářet inteligentní zařízení pro širokou škálu spotřebitelských, maloobchodních a průmyslových aplikací. Jedná se o operační systém vydaný společností Google pro IoT a vestavěná zařízení. Je založen na Androidu, který používá linuxové jádro. Má proto podporu pro multitasking a virtuální paměť.

AndroidThings používá stejné spodní vrstvy zásobníku jako Android. Byla přidána knihovna pro podporu IoT. Tato knihovna poskytuje nízkoúrovňový přístup k hardwaru (GPIO, PWM, I2C, SPI, UART atd.), Což u Androidu není možné. Systémové aplikace typické pro telefony Android nejsou nainstalovány.

Android Things vs Android

Více informací na https://developer.android.com/things/

ARM Mbed OS

Mbed OS je operační systém s otevřeným zdrojovým kódem pro platformy využívající mikrokonřadiče Arm navržené speciálně pro IoT zařízení. Mbed OS poskytuje abstrakční vrstvu pro mikrokontroléry a vývojáři se mohou soustředit na psaní aplikací. Mají přitom velmi dobrý základ konektivity bezpečnosti i hardwarové kompatibility.

Mbed OS používá hardwarovou abstrakční vrstvu (HAL) k podpoře nejběžnějších částí mikrokontroléru, jako jsou časovače. Tento základ usnadňuje psaní, protože Mbed OS zahrnuje potřebné knihovny a podporu ovladačů pro standardní periferie MCU, jako jsou I2C, sériové a SPI. Mbed OS má jádro RTOS, takže podporuje deterministické, vícevláknové provádění softwaru v reálném čase. RTOS využívá vlákna, semafory, mutexy a další funkce.

Více informací na https://vyvoj.hw.cz/mbed-operacni-system-pro-iot-zarizeni-usity-na-miru.mikrokontroleru-arm.html

Amazon FreeRTOS

Amazon FreeRTOS je operační systém mikrokontroléru IoT, který zjednodušuje vývoj, zabezpečení, nasazení a údržbu edge zařízení na bázi mikrokontroléru. Amazon FreeRTOS rozšiřuje jádro FreeRTOS knihovnami, které umožňují místní a cloudové připojení, zabezpečení bezdrátové aktualizace.

Historicky byl „FreeRTOS“ používán jako zkratka pro jádro „FreeRTOS Kernel“. Jádro FreeRTOS vždy poskytovalo a stále poskytuje plánovač v reálném čase a sadu primitivní komunikace mezi úkoly. Amazon FreeRTOS poskytuje open source knihovny zabezpečení a připojení, které jsou navrženy pro práci s tímto jádrem. Jsou dodávány plně integrované se stejným jádrem FreeRTOS, které je k dispozici na webu www.FreeRTOS.org

Amazon FreeRTOS nemění jádro FreeRTOS, ale rozšiřuje o další funkce. Podívejte se také na časté otázky ohledně Amazon FreeRTOS vs FreeRTOS? Amazon Web Services (AWS) také poskytují konzolu pro online správu online připojených zařízení.

Více informací na https://aws.amazon.com/freertos/ a https://freertos.org/index.html

Ubuntu Core

Ubuntu Core je minimalistické ztvárnění Ubuntu, který je optimalizován k nasazení na vestavěná a IoT zařízení, cloudu a další. Nová verze Ubuntu Core vychází z Ubuntu 18.04 LTS a podporována bude 10 let.

Další verzí ubuntu je Snappy Ubuntu Core, která je nejmenší podoba distribuce Ubuntu, jež si vystačí s pouhými 40 MB operační paměti (celkově – tedy i pro aplikace – by jí mělo být k dispozici aspoň 128 MB). Snappy Ubuntu Core je v podstatě velmi ořezanou verzí klasického Ubuntu. Aplikace snappy apps jsou oddělené na kontejnerové bázi, distribuují se odděleně od systému, každá má své vlastní místo v adresářovém stromě.

Ubuntu je rozšířen mezi uživateli raspberry a také se používá s rodinou procesorů Artik od Samsungu.

       

Projekt Zephyr

Linux Foundation spustil projekt Zephyr, který má za cíl vybudovat nejlepší malý škálovatelný operační systém v reálném čase (RTOS) optimalizovaný pro embeded zařízení napříč různými architekturami. Vytvořit neutrální projekt, ve kterém dodavatelé procesorů a mikrokontrolérů mohou přispět technologií ke snížení nákladů a urychlení času vývoje.

Je ideální pro vytváření jednoduchých senzorových sítí, nositelné zařízení až po modemy a malé bezdrátové brány IoT. Zephyr OS je modulární a podporuje více architektur. Vývojáři mohou snadno Zephyr projekt přizpůsobit tak, aby vyhovoval jejich potřebám.

Jádro Zephyr je odvozeno od komerčního VxWorks Microkernel Profile. Microkernel Profile se vyvinul v průběhu 20 let z technologie DSP RTOS známé jako Virtuoso. RTOS se používá v několika komerčních aplikacích včetně satelitů, vojenského velení a řízení komunikace, radaru a zpracování obrazu. Nejnovějším příkladem úspěchu technologie je úspěšné přistání Philae na kometě Churyumov - Gerasimenko a doprovodná Rosetta Orbiter.

Seznam podporovaných desek naleznete na stránce https://docs.zephyrproject.org/latest/boards/index.html

Více informací na https://zephyrproject.org

Nucleus RTOS

Nucleus RTOS je operační systém od divize Embedded Software společnosti Mentor Graphics. Podporuje 32 a 64 bitové Embeded platformy. Nucleus RTOS byl poprvé uveden na trh již v roce 1993. Nejnovější verze Nucleus RTOS je v3.x, která obsahuje funkce, jako je správa napájení, procesní model, 64bitová podpora, bezpečnostní certifikace a podpora multi-jádrových SOC.

Nucleus RTOS je nasazen ve více než 3 miliardách zařízení a poskytuje vysoce škálovatelné řešení. Spolehlivost byla ověřena v leteckých, průmyslových a lékařských aplikacích. Vývojáři mohou plně využívat multi-jádrové řešení napříč spektrem mikrokontrolérů a mikroprocesorových SoC pomocí konfigurace SMP a AMP.

Společnost Honeywell si vybrala systém Nucleus Real Time OS pro systém varování před přiblížením k zemi v aplikaci pro letecký průmysl.  Operační systém Nucleus poskytl společnosti Garmin úplný zdrojový kód a flexibilní obchodní model, který potřebovali k vývoji systému Avionics Navigator CNX80. Společnost ZOLL si vybrala Nucleus k vytvoření svého automatizovaného externího defibrilátoru AED Plus. Tyto příklady svědčí o jeho spolehlivosti.

Seznam podporovaného hardware je k dispozici na https://www.mentor.com/embedded-software/nucleus/processor-support

Více informací na https://www.mentor.com/embedded-software/nucleus/

NuttX

NuttX byl poprvé vydán v roce 2007 na základě povolení BSD. NuttX je POSIX RTOS. Pro programování není nutné se učit nové API. Můžete napsat aplikaci v operačním systému podporující POSIX, jako je Linux nebo MacOS, ověřit ji a poté ji zkompilovat tak, aby fungovala na NuttX.

Pokud nechcete vytvářet aplikace od nuly, můžete uchopit některé malé Linuxové knihovny a provést drobné úpravy, aby pracovaly na NuttXu. NuttX je operační systém v reálném čase (RTOS) s důrazem na dodržování norem. Primární standardy v NuttX jsou Posix a ANSI.

NuttX má také mnoho subsystémů, které se podobají subsystémům v Linuxu. Například Virtual File System (VFS), Memory Technology Device (MTD), Audio subsystém, USB systém s podporou USB Composite a mnoho dalších.  Základní verzi NuttX lze spustit na mikrokontrolérech s méně než 32 kB Flash a méně než 8 kB RAM.

Samozřejmě, pokud firmware má obsahovat další funkce - USB, Ethernet / WiFi s IPv6, CAN atd. - pak je lepší použít mikrokontrolér s více než 64 kB Flash a 32 kB RAM.

Seznam podporovaného hardware naleznete na http://www.nuttx.org/Documentation/NuttX.html#platforms

Více informací na https://nuttx.org

TinyOS

Začalo to jako spolupráce mezi Kalifornskou univerzitou, Berkeley, Intel Research a Crossbow Technology. Byla vydána jako bezplatný open-source software na základě licence BSD a od té doby se rozrostla na mezinárodní konsorcium, TinyOS Alliance.

TinyOS je integrovaný operační systém a platforma pro bezdrátové senzorové sítě (WSN), osobní sítě, automatizace budov a inteligentní měřiče. Je psán v programovacím jazyce nesC, jako soubor spolupracujících úkolů a procesů. nesC je rozšíření programovacího jazyka C. TinyOS je operační systém řízený událostmi určený pro uzly senzorových sítí, které mají velmi omezené zdroje (např. 8 kB bytů programové paměti, 512 bytů RAM)

Více informací na http://www.tinyos.net

Apache Mynewt

Je operační systém s bohatou sadou knihoven, které mají usnadnit vytváření prototypů, rozmístění a správu 32bitových zařízení. Jméno Mynewt znamená velmi malé. Jádro má velikost pouze 6 KB. Jedná se o bezplatný a open-source software distribuovaný Apache Software Foundation se zdrojovým kódem distribuovaným v rámci Apache License 2.0. Je dodáván s plnou implementací Bluetooth low energy 4.2 stackem. Velikost image pro Nordic nRF51822 Bluetooth SoC je přibližně 76 KB bez bootloaderu.

Více informací na https://mynewt.apache.org

Huawei LiteOS 

Jedná se o operační systém s otevřeným zdrojovým kódem pro inteligentní terminály IoT. Podporuje ARM (M0 / 3/4/7, A7 / 17/53, ARM9 / 11), X86, RISC-V, mikrokontroléry různých architektur, postupuje podle BSD 3. Velikost jádra je do 10 KB a spotřebovává velmi málo energie - může běžet na AA baterii až pět let!  Huawei LiteOS umožňující terminálům IoT rychlý přístup k síti. Usnadní vývoj inteligentního hardwaru. Tím se zrychluje realizace propojení všech věcí.

Více informací na https://www.huawei.com/minisite/liteos/en/

Micrium od Silicon labs

µC / OS má plnou podporu funkcí pro TCP / IP, USB, sběrnice CAN a Modbus. Zahrnuje robustní systém souborů a grafické uživatelské rozhraní. Software Micrium zahrnuje komplexní dokumentaci, plný zdrojový kód, výkonné funkce pro ladění a podporu pro širokou škálu architektur CPU. Software Micrium nabízí bezprecedentní snadné použití, malou paměťovou stopu a vysokou energetickou účinnost. A to vše s plnou sadou protokolů. Inženýři na celém světě, kteří vyrábějí průmyslové ovládací prvky, zdravotnická zařízení a letecké systémy, vědí, že se mohou při vytváření výjimečných produktů spolehnout na software Micrium.

Více informací na https://www.micrium.com

 

Hodnocení článku: 

Komentáře

Zdravím,

hezký článek s výčtem OS.
Chybí mi tam rozdělení OS podle možnosti použití na různé hardwarové platformy. Např. Ubuntu CORE s požadavkem na 128 MB RAM nepustím na mikrokontroleru s vnitřní statickou RAM cca 64 kB - 512 kB, kterou mají dnešní ARM Cortexy.

 

Na Contiki, resp. původní kód od Adama Dunkelse navazuje i Nut/OS.

 

Zephyr jsme zkoušeli na MK64FN1M0VLQ12, ale neběhá správně TCP stack, už na ARPech. Řeší se to na githubu.
Podobně tam chybí podpora pro streamy či ioctl na net socketech.
Najde se někdo, kdo by s tím chtěl pomoci?

 

Amazon FreeRTOS je třeba součástí balíku MCU Expresso či Cube MX, kde si naklikám jaké drivery a middleware chci použít a vygeneruji si SDKčko se zdrojáky. Výhodou je komfortní debugování.