Skriv ut

Ett nytt realtids­operativ­system såg dagens ljus i slutet av januari. Det heter PX5 RTOS och kan enklast beskrivas som en implementation av IEEE Posix pthreads API (”pthreads”), en standardiserad programmerings­modell för fler­trådade ­Linux­app­li­ka­tioner, ovanpå en hård real­tids­kärna med svars­­tider på eller till och med under mikro­sekund­nivå.

Hjärnan bakom PX5 heter Bill Lamie och han har ett långt förflutet i inbyggnadsbranschen. Redan 1996 lanserade han operativsystemet ThreadX som han sålde till Microsoft 2019 – det ingår numera i Microsofts IoT-arkitektur och marknadsförs som Azure RTOS ThreadX. 

I somras lämnade Bill Lamie Microsoft och började enligt egen utsago utforska marknaden igen. Det han såg, berättar han i en intervju i Embedded Computing Design, var ”Linux överallt” och i synnerhet alltså applikationer byggda med pthreads – som inget realtidsoperativsystem hade direkt stöd för.

Därur föddes idén till PX5, som bland annat är tänkt att underlätta för utvecklare som är vana vid inbyggnads-Linux att skriva kod för hårda realtidssystem. Med tanke på att inbyggnads-Linux, fortfarande enligt Bill Lamies siffror, har ungefär 70 procent av marknaden för inbyggda system finns det en stor marknad att bearbeta.

Så vad kan man då säga om PX5 RTOS? 

Till att börja med att PX5 har lagt till några egna funktioner utöver pthreads-standarden, funktioner som behövs för realtidsstöd och minneshantering bland annat. I skrivande stund, tre veckor efter lanseringen, är det delvis ett projekt under uppbyggnad: support för processorer utöver Arm Cortex är begränsad, och certifiering enligt ISO 26262 (för fordon), IEC 62304 (medicinsk utrustning) med flera säkerhetsstandarder är planerade under 2023.

Det ska vara enkelt för utvecklare att komma igång, det räcker att inkludera två källkodsfiler. PX5 ser automatiskt till att applikationens main-funktion konverteras till systemets första tråd. En minimal PX5-konfiguration kan enligt dokumentationen köras i så lite som 1 kB flashminne, även om 10 kB anges som en ”normal” förbrukning, och 1 kB RAM. Operativsystemskoden är kompatibel med MISRA-standarden, med ett fåtal noterade undantag.

Man behöver en licens för att få tillgång till den kompletta källkoden och använda operativsystemet – det är alltså inte fråga om öppen källkod – men man betalar ingen runtime-licens, det vill säga inget ”per enhet”. Licensvarianterna som erbjuds är engångsköp och prenumeration.

PX5 RTOS innehåller dessutom en patentsökt funktion kallad PDV (Pointer/Data Verification). PDV ska fungera som skydd mot en typ av fel där arbetsminnet skrivs över genom exempelvis en buffert som flödar över eller en angripare som skjuter in egen kod i systemet. Med PDV aktivt (det är inaktivt som standard) beräknar och lagrar PX5 en kontrollsumma för varje variabel som ska skyddas, det kan till exempel vara adressen till en funktion eller till ett dataobjekt. Med hjälp av kontrollsumman kan PX5 sedan validera returadressen från en funktion innan funktionen returnerar, för att ta ett exempel, och slå larm om returadressen har manipulerats.

PDV-skyddet av standard­objekt och -funktioner hanteras internt i operativsystemet men funktionen är även tillgänglig för applikationsutvecklare som vill utsträcka skyddet till egna data. Allt sköts i kod och kräver ingen särskild hjälp från den underliggande processorn, men om det finns hårdvarustöd för slumptalsgenerering kan PDV dra nytta av det.

Två svenska inbyggnadsföre­tag fanns med på listan med PX5:s partner-företag redan vid lanseringen. Såväl IAR:s kompilatorer som Percepios spårningsverktyg Tracealyzer kommer att lägga till stöd för PX5 i kommande versioner.

Bill Lamie
är pekarnas beskyddare

Den patentsökta skyddsfunktionen Program/Data Verification (PDV) är inbyggd i PX5 RTOS.
Som standard är den inaktiv men kan med hjälp av konfigurationsparametrar aktiveras för fem kategorier av operativsystemdata:
• Funktionspekare som används i PX5
• Globala operativsystemdata
• Interna PX5-objekt (trådar, köer, och så vidare)
• Returadresser för interna PX5-funktioner
• Metadata som används för minneshanteringen
Utöver detta finns det också ett särskilt API som utvecklare kan använda för att skydda applikationsdata.