Linux distro’s voor desktops en servers zijn er in overvloed. Real-time distro’s zijn echter een heel ander verhaal. We bekijken een bijzondere vis in de Linux-vijver: FreeRTOS.

 

 Real-time distro’s worden gebruikt in bijvoorbeeld Internet of Things-devices of in apparatuur die metingen verrichten of apparaten aansturen. Eigenlijk op alle plekken waar vertragingen door het besturingssysteem niet acceptabel zijn. Een zeer veel gebruikte distro is FreeRTOS. Maar het is geen alledaagse distro en je vindt hem dan ook niet terug op bijvoorbeeld distrowatch.


Strakke regie
FreeRTOS is een product van RealTime Engineers LTD dat al sinds 2003 op de markt is. Het is een product, omdat het bedrijf de eigenaar en de enige ontwikkelaar is. Ook draagt het bedrijf zorg voor doorontwikkeling, onderhoud en distributie. FreeRTOS wordt ‘moderated open source’ genoemd. Dat klinkt closed source, maar FreeRTOS is wel degelijk gratis en open source. Volgens de maker heeft RTOS een marktaandeel van 27%, onder Android en zelf-ontwikkelde oplossingen. De strakke regie lijkt op die van een commercieel bedrijf en wellicht dat daardoor FreeRTOS het zo goed doet in de markt.

 Ports
FreeRTOS heeft geen ISO om te downloaden, omdat het bedoeld is als embedded OS voor devices. FreeRTOS download je dus alleen als source code. Welbeschouwd is FreeRTOS een kernel, die geoptimaliseerd is voor task-scheduling en geen distro. FreeRTOS kan draaien op microcontrollers: System-on-Chips met ROM (of Flash), RAM en een processor erop. Met FreeRTOS alleen doe je weinig, er moeten allerlei componenten aan toegevoegd worden om er een bruikbaar OS van te maken: in veel devices is bijvoorbeeld in elk geval een TCP/IP-stack nodig. FreeRTOS is overigens niet beperkt tot devices. Als je zou willen, kun je er een volwaardig OS mee bouwen inclusief GUI. FreeRTOS is bedoeld voor de middenklasse 32-bit architecturen tot en met 8-bit controllers aan de andere kant van het processorspectrum. Dat dit kan functioneren, komt omdat er slechts 5Kb tot 12Kb aan ROM/Flash geheugen nodig is en 250 bytes (!) RAM-geheugen.


Download
De download is 214MB omvang. Dat is enorm voor een zo compacte kerneldistributie, zou je denken. De reden hiervoor is dat RealTime Engineers alle ports en zogenaamde demo’s hieraan heeft toegevoegd. Ports zijn de aangepaste sources voor specifieke controllers en processors. In totaal zijn er meer dan 35 van deze ports in de download inbegrepen. Verder zijn er verschillende demo’s aan de download toegevoegd. Demo’s zijn kant en klare demonstratieprojecten van elke port. Ze zijn dusdanig geconfigureerd dat ze zonder foutmeldingen compileren op of voor de betreffende single board computer of prototyping board.

 

Plus-collectie
De download bevat tevens FreeRTOS+. Dat zijn FreeRTOS-varianten waaraan componenten zijn toegevoegd. Ook hier zijn weer sources en demo’s te vinden. Een voorbeeld is FreeRTOS-Plus-CLI waaraan CLI-toegang is toegevoegd of FreeRTOS-Plus-FAT-SL waar een real-time aware FAT-filesysteem is toegevoegd. Maar niet de gehele Plus-collectie zit in de download. Er zijn Plus-varianten die bovendien niet gratis noch open source zijn. Zo is bijvoorbeeld FreeRTOS-Plus-IoT gewoon een commercieel product om in een IoT-wereld peer-2-peer te kunnen communiceren zonder TCP/IP.

Licensering
De populariteit van deze OS zorgt voor een wat ingewikkelde licentie constructie. Hoe zit het nou met de copyright van een populaire kernel als FreeRTOS? Is het gratis of niet? En welke onderdelen zijn wel gratis, maar geen open source? De ingewikkeldheid komt vooral doordat er allerlei bijzondere microcontrollers ondersteund worden, die natuurlijk zelf niet open source zijn en die closed source (en binaire) toevoegingen gebruiken. Bekende fabrikanten die FreeRTOS steunen of die microcontrollers hebben waar het op draait, zijn bijvoorbeeld NXP, Infineon Texas Instruments, Freescale en meer. FreeRTOS valt onder een gemodificeerde GPL. Als je FreeRTOS commercieel gebruikt, moet je een link naar de website in je product opnemen (freertos.org). Aanpassingen in FreeRTOS dienen ook als open source beschikbaar te worden gesteld.

 Fabrikanten mogen echter zelf ontwikkelde applicaties meeleveren die niet als open source ter beschikking hoeven te worden gesteld, ook niet als ze het OS via de API aanroepen. Enkele Plus-varianten van FreeRTOS hebben een dual-licentiebeleid. Je mag ze gratis gebruiken en aanpassen mits je conform GPL2 handelt. Wil je dat niet, dan mag je het product ook kopen en ben je gevrijwaard van open source-licentieperikelen en neemt Realtime Engineers deze verantwoordelijkheid op zich. De eerder genoemde FreeRTOS-Plus-Cli is een dergelijk product. Wil je dat kopen, dan heeft FreeRTOS een webshop waar het voor 48 dollar aangeboden wordt. Sommige Plus-varianten, zoals FreeRTOS-Plus-FAT SL, zijn ook gratis voor commercieel gebruik als je een specifieke controller hebt. Werk je echter met een andere controller of SoC, dan geldt alsnog het genoemde dual-license concept.

 OPENRTOS
Om het hele licentie gebeuren nog wat ingewikkelder te maken, bestaat er ook nog een OPENRTOS. De naam suggereert dat dit open source is, maar het is een closed source licentie van FreeRTOS. Met andere woorden: het is de code van FreeRTOS, maar zonder de verplichting ook maar iets bekend te maken over wat je ermee doet en eraan wil veranderen. OPENRTOS wordt door de aanbieder WITTENSTEIN high integrity systems ondersteund en biedt hier zelfs opleidingen voor aan. Tot slot bestaat ook SAFERTOS nog als commerciële versie van FreeRTOS als gecertificeerd product.

 

 

 Embedded in… waarin eigenlijk?

Als je ziet voor hoeveel single-board computers FreeRTOS geport is, moeten er toch vele honderden of misschien wel duizenden type devices zijn die hier gebruik van maken? Maar devices die gebruik maken van FreeRTOS zijn nauwelijks te vinden, misschien gebruiken ze allemaal de closed source versie en lopen ze er niet mee te koop. Pebble smartwatches zijn bekende voorbeelden van devices die gebruik maken van FreeRTOS. De fabrikant heeft er wat bugs uitgehaald en er een application sandbox (net als op iOS van Apple) en een GUI (en meer) aan toegevoegd, zodat het Pebble OS geschikt is voor de smartwatches. De Philips Hue gateway draait eveneens FreeRTOS. Voor degenen die Hue niet kennen, het is een domotica-oplossing waarbij allerlei LED-lampen via een App en de cloud aangestuurd en geprogrammeerd kunnen worden. Aan FreeRTOS op Hue is door Philips onder andere lwIP toegevoegd, dat is een minimalistische open source IP-stack van de Swedish Institute of Computer Science die onder de BSD-licentie valt en OpenSSL die een eigen open source licentie heeft (gebaseerd op BSD).

Raspberry Pi
Er bestaat helaas geen Raspberry Pi port van FreeRTOS. Alleen via een oude link (https://github.com/jameswalmsley/RaspberryPi-FreeRTOS) vinden we sourcecode die james Walmsley ooit heeft gebruikt. De Raspberry Pi is natuurlijk meer een thuisapparaatje dan een IoT-apparaatje, maar met de komst van Windows 10 voor de Raspberry Pi ontstaat als tegenpool misschien de behoefte aan een goede en actuele port van FreeRTOS. Er is wel een library voor FreeRTOS voor de Arduino ontwikkeld (https://github.com/greiman/FreeRTOS-Arduino) en Duinos is een op FreeRTOS gebaseerd besturingsssyteem voor de Arduino (https://code.google.com/p/duinos).

 

 Wie port FreeRTOS naar de Raspberry Pi? We zullen het nieuws blijven volgen.