Het juiste RTOS- en microcontrollerplatform kiezen voor het IoT

Door Jacob Beningo

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Het ontwikkelen van een Internet of Things (IoT)-apparaat kan lastiger zijn dan veel ontwikkelaars of bedrijven denken. Zodra een ingebed systeem op de cloud wordt aangesloten, wordt de timing van het systeem meteen veel complexer. Dit betekent dat ontwikkelaars een betere manier moeten vinden om te beheren welke softwarecode wanneer wordt uitgevoerd. De beste manier om de ontwikkeling van aangepaste planners of oplossingen op bare-metalniveau te vermijden is door de planning te laten beheren door een real-time besturingssysteem (RTOS).

Eén van de uitdagingen bij gebruik van een RTOS is dat veel ontwikkelaars starten vanuit een bare-metalomgeving zonder besturingssysteem (OS), wat de keuze van het juiste RTOS voor de betreffende toepassing kan bemoeilijken. Een snelle blik online maakt duidelijk dat er meer dan 100 RTOS'en verkrijgbaar zijn die ontwikkelaars kunnen gebruiken, uiteenlopend van open source- tot gecertificeerde commerciële exemplaren. Dus hoe kies je een RTOS, en hoe ga je ermee aan de slag?

In dit artikel leggen we uit hoe je kunt bepalen welk RTOS het beste is voor je toepassing, en kijken we vervolgens naar ontwikkelingsplatforms van STMicroelectronics en Renesas die je kunt gebruiken om te beginnen.

Dingen om rekeningen mee te houden bij het kiezen van een RTOS

Real-time besturingssystemen vormen de basis waarop ontwikkelaars hun toepassingscode bouwen. Selectie van het juiste RTOS is essentieel om te verzekeren dat de toepassing op een stevige, beproefde fundering wordt gezet. Vaak wordt een RTOS echter gekozen op basis van slechts één parameter: de kosten.

Hoewel kosten een belangrijke overweging vormen, zou het niet de enige moeten zijn. Een ontwikkelingsteam kan al snel tien keer de prijs van een commercieel RTOS uitgeven als er problemen optreden bij de implementatie van het gekozen RTOS of de vereiste ondersteuning ontbreekt, om nog maar te zwijgen over de verloren tijd. In het algemeen zijn er acht categorieën waar een ontwikkelingsteam naar moet kijken bij het kiezen van een RTOS voor hun toepassing. Dit zijn:

  • Juridische aansprakelijkheid en risico's
  • Prestaties
  • Functies
  • Kosten
  • Ecosysteem
  • Middleware
  • Leverancier van het RTOS
  • Technische voorkeuren

Binnen elke categorie kunnen er diverse criteria zijn die voor elk RTOS moeten worden beoordeeld. In de categorie juridische aansprakelijkheid en risico's kan bijvoorbeeld het volgende van belang zijn:

  • Aansprakelijkheid bij inbreuken op het RTOS
  • Vrijwaring / schadevergoeding
  • Garantie
  • De noodzaak om het RTOS te laten beoordelen vanuit juridisch oogpunt

In de categorie Prestaties kan bijvoorbeeld het volgende van belang zijn:

  • Benodigde capaciteit van uitvoerbaar geheugen
  • Benodigde RAM-capaciteit
  • Hoogste graad van determinisme
  • Uitvoeringsefficiëntie

Het ontwikkelingsteam en het management kunnen elke hoofdcategorie bekijken om te bepalen volgens welke criteria de RTOS'en moeten worden beoordeeld. Nadat de criteria zijn vastgesteld, kunnen meerdere RTOS'en worden beoordeeld met behulp van een Kepner-Tregoe (KT)-matrix. Dit is een rationeel besluitvormingsmodel dat helpt bij het verzamelen, prioriteren en evalueren van informatie, waarbij de nadruk ligt op het beoordelen en inschalen van risico's. Het elimineert vooringenomenheid uit het besluitvormingsproces en helpt bij het maken van de best mogelijke keus. Laten we eens kijken hoe een KT-matrix kan worden gebruikt om een RTOS te selecteren.

Een KT-matrix gebruiken om een RTOS te selecteren

De KT-matrix voor RTOS-selectie kan worden opgezet zoals getoond in Afbeelding 1 en 2. Het idee is dat we voor elk van onze selectiecategorieën onze selectiecriteria bepalen en deze in één kolom plaatsen. We kunnen een gewicht toekennen aan elk criterium om aan te geven hoe belangrijk het is op een schaal van 1 tot 5, waarbij 5 van kritisch belang is (bijv. kosten) en 1 niet zo belangrijk (bijv. juridische aansprakelijkheid). Vervolgens kunnen kolommen worden gemaakt voor alle teamleden om te bepalen hoe belangrijk elk criterium is voor elk te beoordelen RTOS. Elk criterium wordt vervolgens gewogen en berekend, zodat een objectief, numeriek resultaat wordt verkregen. Het RTOS met de hoogste waarde is het RTOS dat het beste aan de criteria voldoet.

Afbeelding 1: De bovenste helft van de KT-matrix voor RTOS-selectie. Dit omvat de evaluatie van de juridische risico's, prestaties, functies en kosten van het RTOS. (Afbeelding: Beningo Embedded Group)

Afbeelding 2: De onderste helft van de KT-matrix voor RTOS-selectie, die de evaluaties van het ecosysteem, de middleware, leverancier en zakelijke aspecten omvat. (Afbeelding: Beningo Embedded Group)

In de in afbeelding 1 en 2 getoonde voorbeelden wordt een aanzienlijk aantal criteria beoordeeld. Ontwikkelingsteams zullen waarschijnlijk niet al deze aspecten willen beoordelen, maar het aantal criteria kan eenvoudig worden verkleind door het gewicht op 0 te zetten of de rij in de spreadsheet te verbergen.

Platformen waarop RTOS-ontwikkeling kan worden gestart

Eén gebied waarop een RTOS mogelijk moeilijk te beoordelen is de overeenstemming met de prestatie- en capaciteitsvereisten. In veel gevallen kan de ontwikkelaar dit alleen bepalen door het RTOS te gebruiken en aan een diepgaande evaluatie te onderwerpen. Er is echter een heel eenvoudige en voordelige manier om een RTOS te beoordelen en testen, namelijk met behulp van een bestaand ontwikkelingsplatform. Laten we eens kijken naar enkele platforms die het populaire, open source FreeRTOS en de ThreadX-besturingssystemen van Express Logic ondersteunen.

Het eerste platform dat we bekijken is het STM32Cube-platform van STMicroelectronics. Het STM32Cube-platform ondersteunt FreeRTOS als onderdeel van de STM32CubeMx- en STM32CubeIDE-ontwikkelingsomgevingen van STMicroelectronics. Met deze tools kunnen ontwikkelaars FreeRTOS inschakelen door simpelweg het vakje FreeRTOS aan te vinken en vervolgens een FreeRTOS-configuratietool te gebruiken om alle relevante waarden in te stellen. Dit stelt ontwikkelaars in staat om FreeRTOS razendsnel te implementeren en te beginnen met de beoordeling van de functies en prestaties van het systeem.

De toolchain van STMicroelectronics biedt een groot aantal verschillende ontwikkelingsborden. Eén van de meest beproefde en populairste ontwikkelingsborden van de afgelopen jaren is het STM32F429 Discovery-bord (STM32F429I-DISC1) (afbeelding 3).

De STM32F429 is een Arm® Cortex®-M4-processor met kloksnelheden tot 168 megahertz (MHz). De microcontroller ondersteunt 2 megabytes (Mbytes) flash en 256 kilobytes (Kbytes) SRAM, wat voldoende is voor een behoorlijk geavanceerde toepassing. Het ontwikkelingsbord biedt ook een LCD, uitbreidbare I/O en meerdere LED's.

Afbeelding 3: Het STM32F429I Discovery-bord is een voordelig ontwikkelingsbord dat is voorzien van een Arm Cortex-M4-processor en ruim voldoende verwerkingskracht biedt voor ontwikkelaars die een RTOS willen beoordelen. (Afbeelding: STMicroelectronics)

Voor ontwikkelaars die werken met RTOS-gebaseerde IoT Edge-apparaten die mogelijk ook machine learning moeten uitvoeren, is het STM32F7 Discovery-bord (STM32F746G-DISCO) een betere keuze (afbeelding 4). Het STM32F7 Discovery-bord is gebaseerd op een Arm Cortex-M7-processor met cache, draait met kloksnelheden tot 216 MHz en combineert 1 Mbyte flash met 340 Kbytes SRAM. Het ontwikkelingsbord biedt onder meer een 4,3 inch display met 480 x 272 pixels, ethernet, USB, een SD-sleuf en microfoon- en luidsprekeraansluiting.

Afbeelding 4: Het STM32F746G Discovery-bord is een voordelig ontwikkelingsbord met een Arm Cortex-M7-processor dat ontwikkelaars in staat stelt om naast een RTOS eventuele machine learning-inferenties te beoordelen die nodig kunnen zijn op hun IoT Edge-apparaat. (Afbeelding: STMicroelectronics)

Een laatste ontwikkelingsbord om te overwegen is het STM32L0 Nucleo-bord (NUCLEO-L073RZ) (Afbeelding 5). Het STM32L0 Nucleo-bord is gebaseerd op de Arm Cortex-M0+, die is ontworpen voor het laagst mogelijke energieverbruik en daardoor ideaal is voor batterijaangedreven IoT Edge-apparaten met een laag vermogen. De STM32L0-microcontroller heeft een kloksnelheid tot 24 MHz en combineert 192 Kbytes flash met 20 Kbytes SRAM. Dit ligt zeer dicht bij de minimumwaarden die gebruikers nodig hebben als ze een RTOS willen gebruiken. Het ontwikkelingsbord is zeer eenvoudig uitgevoerd, met slechts één gebruikersschakelaar en een LED.

Afbeelding 5: Het NUCLEO-L073RZ STM32L0-ontwikkelingsbord is gebaseerd op een Cortex-M0+ processor die is ontworpen voor hoge prestaties in apparaten met een laag vermogen. (Afbeelding: STMicroelectronics)

Het tweede platform dat we bekijken is het Renesas Synergy™-platform. Dit platform is uniek binnen de sector omdat het wordt geleverd met uitgebreide software van derde partijen en ontwikkelingstools van gevestigde leveranciers.

Als een ontwikkelaar bijvoorbeeld een ontwikkelingsbord van STMicroelectronics heeft en het ThreadX RTOS van Express Logic wil gebruiken met de Embedded Workbench-compiler en ontwikkelingsomgeving van IAR Systems, moet hij IAR benaderen voor de compiler en Express Logic voor het RTOS, en licenties aanschaffen voor het gebruik ervan. Als een ontwikkelaar alleen een microcontroller koopt die onderdeel is van het Renesas Synergy-platform, krijgt hij direct deze tools en het RTOS om mee te werken, plus andere middleware.

Voor ontwikkelaars die ThreadX willen testen op een high-end processor is het Renesas Synergy SK-S7G2-ontwikkelingsbord (YSSKS7G2E30) een uitstekende keus (Afbeelding 6). Het SK-S7G2-ontwikkelingsbord is gebaseerd op een Arm Cortex-M4-processor die draait met een kloksnelheid van 240 MHz en 3 Mbytes flash combineert met 640 Kbytes RAM. Dit ontwikkelingsbord is zeer compleet uitgerust met onder meer een LCD, een groot aantal LED's, I/O-uitbreiding, CAN, PMOD-uitbreiding en eenvoudig toegankelijke seriële poorten.

Afbeelding 6: Het Renesas Synergy SK-S7G2-ontwikkelingsbord wordt geleverd met commerciële ontwikkelingstools waaronder het ThreadX RTOS van Express Logic. (Afbeelding: Renesas)

Een alternatief ontwikkelingsbord dat kan worden gebruikt voor het testen van ThreadX is de Renesas Synergy TB-S5D5 (YSTBS5D5E10) (afbeelding 7). Het TB-S5D5-ontwikkelingsbord is een voordelig exemplaar dat is voorzien van een Arm Cortex-M4-processor met een kloksnelheid van 120 MHz, 1 Mbyte flash en 384 Kbytes SRAM. Het ontwikkelingsbord heeft een minimum aan functies om de kosten laag te houden. Het biedt onder meer een gebruikersknop, capacitive touch en een LED.

Afbeelding 7: Het Renesas Synergy TB-S5D5-ontwikkelingsbord biedt ontwikkelaars 1 Mbyte flash en 384 Kbytes SRAM voor het testen van ThreadX. (Afbeelding: Renesas)

Andere interessante opties voor ontwikkelaars, vooral degenen die geïnteresseerd zijn in IoT-toepassingen, zijn de Renesas Synergy AE-Cloud1 IoT-kit, YSAECLOUD1 (afbeelding 8 ), en de Renesas Synergy AE-Cloud2 Cellular IoT-kit, YSAECLOUD2 (afbeelding 9).

De Synergy Cloud1 IoT-kit biedt ontwikkelaars de mogelijkheid van cloudaansluiting via wifi, terwijl de Cloud2 Cellular-kit ook de mogelijkheid van aansluiting via een mobiel netwerk biedt. Beide ontwikkelingsborden zijn gebaseerd op de S5D9-processor en bieden on-board sensors en LED's die via de cloud kunnen worden aangestuurd en bewaakt. De kits worden geleverd met voorgeïnstalleerde software, inclusief ThreadX, die ontwikkelaars in staat stelt om een volledige connectiviteitsoplossing te testen met hun RTOS. (Dit kan ontwikkelaars helpen om de sectie Middleware van de eerder besproken KT-matrix te evalueren.)

Afbeelding 8: De Renesas Synergy AE-Cloud1 IoT-kit is een ontwikkelingsbord dat speciaal is ontwikkeld voor IoT-apparaten die op de cloud worden aangesloten via wifi. Het biedt de mogelijkheid om LED's aan te sturen en sensorwaarden te bewaken via een cloudprovider zoals Amazon Web Services (AWS) of Microsoft Azure. (Afbeelding: Renesas)

Afbeelding 9: De Renesas Synergy AE-Cloud2 Cellular IoT-kit is een ontwikkelingsbord dat is ontworpen voor IoT-apparaten die op de cloud worden aangesloten via wifi of een mobiel netwerk. Het biedt de mogelijkheid om LED's aan te sturen en sensorwaarden te bewaken via een cloudprovider zoals AWS of Azure. (Afbeelding: Renesas)

Belangrijke opmerking over platformen: let er bij het beoordelen van RTOS'en op dat je appels met appels vergelijkt. Als je bijvoorbeeld FreeRTOS beoordeelt op het STM32F429 Discovery-bord op 168 MHz, zorg dan dat je hetzelfde ontwikkelingsbord gebruikt of een exemplaar dat met dezelfde kloksnelheid draait bij het evalueren van je andere RTOS'en.

Tips en trucs voor het gebruik van een RTOS

Elk RTOS kent zijn eigen tips en trucs, maar er zijn enkele vuistregels die algemeen gelden voor RTOS'en:

  • Wijs taken en RTOS-objecten statisch toe. Dynamische taak- en objecttoewijzing vereist het gebruik van geheugentoewijzing (malloc()) die niet-deterministisch is en problemen met heap-fragmentatie kan veroorzaken, mogelijk met slechte prestaties of zelfs systeemcrashes tot gevolg.
  • Pas de standaard stackgrootte aan de behoeften van je toepassing aan. Veel RTOS'en gebruiken een standaard stackwaarde die te groot is voor de meeste taken, waardoor RAM wordt verspild. Configureer de standaard stackgrootte handmatig en let er daarbij op dat je de waarde voor elke taak afstemt op basis van de functie en behoeften.
  • Functies die vanuit een taak worden aangeroepen moeten inspringend zijn. Dit verzekert dat er bij aanroep van de functie vanuit meerdere taken geen corruptie van de gegevens van andere taken optreedt als de taak wordt onderbroken door een taak met een hogere prioriteit.
  • Gebruik geheugenblokpools als deze beschikbaar zijn. Een geheugenblokpool is een geheugenpool die zich deterministisch gedraagt en tijdens runtime kan worden gebruikt om geheugen dynamisch toe te wijzen. Dit is beter dan het gebruik van malloc(), maar de meeste open source besturingssystemen bieden deze geheugenbeheeroptie niet.
  • Minimaliseer het aantal taken dat in de toepassing wordt gebruikt. Met een RTOS bestaat de verleiding om veel taken te maken, maar onnodige taken kunnen het beschikbare geheugen dramatisch verkleinen vanwege het vereiste taakbesturingsblok en de daaraan gerelateerde afzonderlijke stackruimte.

Conclusie

De opkomst van het IoT resulteert in een toenemende complexiteit van de software in ingebedde systemen, en het gebruik van een RTOS is voor ontwikkelaars bijna een noodzaak geworden. Het kiezen van het juiste RTOS is echter niet zo eenvoudig. Omdat er aanzienlijke verschillen zijn tussen RTOS'en, kan veel tijd en energie worden verspild als het RTOS niet goed aansluit bij de doelen van de ontwikkelaar.

Ontwikkelaars moeten de keuze van hun RTOS proactief benaderen en zorgvuldig alle aspecten van het RTOS evalueren, inclusief factoren zoals de leverancier van het RTOS en de ondersteuning die beschikbaar is als er problemen optreden. Een effectieve benadering is om te beginnen met een KT-matrix om mogelijke RTOS-en te evalueren en vervolgens het gekozen RTOS te laten draaien op microcontrollerplatformen die het volledig ondersteunen. Op die manier kan worden verzekerd dat het RTOS de juiste keuze is voor de toepassing.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Achtergrondinformatie over deze auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is een embedded software consultant. Hij heeft meer dan 200 artikelen over embedded software ontwikkelingstechnieken gepubliceerd, is een veelgevraagde spreker en technische trainer en heeft drie universitaire graden, waaronder een Masters of Engineering bij de University of Michigan.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey