Det är egentligen inget särskilt med Zephyr – bara ytterligare ett RTOS i mängden. Men genom att starta ett projekt kring det hoppas Linuxstuftelsen väcka intresse och samla utvecklarna.
LÄS ÄVEN DENNA TEXT |
Zephyr – för dig som hellre kör Linux |
När Intel och dess dotterbolag Windriver föreslog för Linxustiftelsen att adoptera dess operativsystem Zephyr, kunde det bocka av de grundläggande kraven:
• Det hade en bra öppenkodslicens, Apache 2.0, som är kompatibel med Linux
• Det hade ett litet fotavtryck – ner till 2 kbyte för ”Hello World” och ner till 8 kbyte för en mer realistisk tillämpning
• Det hade ett aktivt community. Eller, nja, här kan man kanske sätta ett litet frågetecken med tanke på att Zephyr bara hade existerat som öppen källkod i tre månader när det adopterades.
Hundratolv kort stöder Zephyr |
Av de första fyra korten med Zephyrstöd var tre stycken x86-kort. Idag domineras listan helt av Arm, som finns på 90 av korten. De har processorer från Atmel, NXP och Texas Instruments, liksom från Nordic Semicon ductor som flitigt ägnat sig åt att portera sina trådlösa kort till Zephyr. Du kan köra Zephyr på BBC:s skolkort Microbit, som använder en Nordicprocessor. Microbit har blivit en populär demoplattform. I listan finns även utveck lingskort för Arc, Xtensa och Nios II. Huvudsakligen i mjuka kärnor eller emulerade, för dig som tar fram en SoC eller ett FPGA-system. Om man räknar bort bort Quark-kortet Arduino 101 (som har en liten Arc-kärna om-bord och därför återfinns både under ”x86 och ”Arc”) är de återstående två Arc-korten Designwarekort från Synopsys med FPGA-emulerade Arckärnor. Två Altera FPGA-kort kör Zephyr på mjuka Nios II-cpu:er. Cadence Xtensakärnor kan köras simulerat, emulerat eller skarpt i Intel S1000-kort och Espressif ESP32-kort. Sist men inte minst finns i listan fyra stycken kort med Risc Vprocessorer. Ett av dem har en skarp processor: Sifives Hifive1. Här finns också ett kommande kort från Zedboard med en skarp Pulpino, ett kort från Microsemi med en mjuk Risc-V i en FPGA samt en QEMU-emulerad Risc-V. Några av korten kör både Linux och Zephyr i varsin krets: Minnowboard Max, Udoo Neo och UP Squared. |
Man kan faktiskt sätta ytterligare ett frågetecken efter ”aktivt community”. I likhet andra öppenkodsprojekt med företag i ryggen, får det kritik för att vara toppstyrt och kommunicera dåligt mot mindre företag och hobbyister.
Motsvarande kritik finns i Linuxvärlden, allteftersom det kommersialiserats. En viktig skillnad är dock att de högsta hönsen i Linux är företagsoberoende. De kan säga nej, medan Zephyrs representanter inte kan förväntas gå emot instruktioner från sina respektive företag.
• Operativsystemet skulle inte vara för starkt knutet till en viss arkitektur. Check. Tre av de fyra kort som stöddes från start var visserligen Intelkort, men idag finns en rik flora av Armkort. Också Arc, Xtensa, Risc-V och Nios II finns representerat.
• Det skulle stödja säkerhet. Här framhävs att Zephyrär statiskt konfigurerat – ingen ny kod kan laddas medan operativsystemet körs. Detta minskar den yta som måste försvaras mot angrepp. Om det finns skadlig kod i Zephyr så kan den bara ha stoppats dit vid kompileringen. Den statiska konfigureringen gör det som bonus enklare att ge Zephyr realtidsegenskaper.
• Operativsystemet skulle ha en rik funktionalitet. Det skulle vara ett stort steg upp från ”bare metal” – att köra system helt utan operativsystem. Zephyr bjuder på avbrottshantering och kan köra parallella program i trådar, som kan kommunicera med varandra. Det går att välja mellan olika regeluppsättningar för hur tiden ska fördelas mellan trådar med olika prioritet. Det finns dynamisk minne och det finns strömstyrning.
Det putsas fortfarande ordentligt på Zephyr. Och det är inte bara smärre ansiktslyftningar det handlar om, utan i flera fall omgörningar från grunden.
Detta kanske till och var något som lockade med Zephyr när det valdes – att det fanns grundläggande saker kvar att göra. Att det var ett renoveringsobjekt – en oslipad diamant som kunde skräddarsys från grunden för det relativt nya tillämpningsområdet IoT.
Denna artikel har tidigare publicerats i magasinet Elektroniktidningen. För dig som jobbar i den svenska elektronikbranschen är Elektroniktidningen gratis att prenumerera på – våra annonsörer betalar kostnaden. Här ansöker du om prenumeration (länk). |
Zephyr ska upprustas till en one-stop-shop för IoT. Om du vill bygga en IoTtillämpning ska du inte behöva söka efter komponenter på andra håll. ”Om du använder Zephyr ska du få all kommunikation du behöver på köpet, och vi lovar att hålla koden uppdaterad och trimmad” – det är budskapet. Du ska kunna fokusera på din app och låta Zephyr ta hand om resten.
Bluetooth Mesh är ett bra exempel. Det fick stöd i augusti i fjol bara en månad efter att standarden släpptes, genom Intels försorg
Windriver började slipa på Zephyr redan innan det adopterades. På biblioteksfronten genom att addera några av de grundläggande nätverksstackarna och ett kryptobibliotek kallat Tinycrypt. På kärnfronten genom att skapa en ren modell för komponenter. Den innebär att det går att ladda bara exakt de delar av operativsystemet som ett visst projekt behöver.
En grundläggande förändring som pågår är att stuva om Zephyrs nuvarande dubbla operativsystemskärnor till en enda.
Dina tillämpningar kan idag köras dels i en mikrokärna, och dels i den nanokärna där bland annat mikrokärnan körs. Att de två blir en – med bibehållna gränssnitt för bakåtkompatibilitet – tar bort några dubblade funktionaliteter och spar ett par kilobyte minne.
En annan fundamental lucka var avsaknaden av minnesskydd. Detta adderades så sent som i mars.
Att låta alla program dela på samma minne kan möjligen vara acceptabelt i välorganiserade avgränsade projekt. Men när komponenter, blandas från olika håll, som kommer att ske i Zephyr, är minnesskydd ett minimalt säkerhetskrav.
Dessutom är minnesskydd en ovärderlig buggfälla, särskilt med tanke på att tillämpningar i Zephyr typiskt skrivs i programspråket C, som är ett språk där det är lätt för programmeraren att välja ickerobusta lösningar och att göra misstag.
Fortfarande handlar det bara om ett enkelt minnesskydd som utnyttjar den typ av MPU som finns i exempelvis Cortex M. Men ett projekt för dynamiskt minnesskydd för MMU-utrustade processorer har också startat.
Firmwareupdatering under drift över Bluetooth LE var en annan funktionalitet som kom på plats i mars, liksom stöd för Precision Time Protocol som gör det möjligt för noder i ett system att arbeta tidssynkroniserat.
En kommande säkerhetsuppgradering, som ingen mindre USA:s spionorganisation NSA bidrar med, är ASLR (address space layout randomization) som innebär att objekt placeras ut på slumpmässigt valda adresser, för att en angripare inte ska kunna veta på förhand var i minnet målet för attacken befinner sig.
NSA har tidigare utvecklat verktyg som söker – och också har hittat – säkerhetshål och buggar i Zephyrs kärna.
Zephyr stöder idag bland annat Ipv4, IPv6, Bluetooth LE, Wifi, 802.15.4, NFC och 6lowpan. Google Thread fick stöd i mars.
Komponenter plockas från olika håll. Till exempel lånades den första versionen av TCP/IP-stacken från svensken Adam Dunkels öppna operativsystem Contiki.
Och, i Linux anda, i den utsträckning det är något du saknar så är det din klåda att klia och du är välkommen att bidra med din egen implementation.