Nano-RK

Nano-RK
Utvecklare Carnegie Mellon University
Skrivet i C
Arbetstillstånd Avvecklad
Källmodell Öppen källa
Initial release december 2005 ; 17 år sedan ( 2005-12 )
Slutlig utgåva Revision 427 / 12 februari 2008 ; för 15 år sedan ( 2008-02-12 )
Marknadsföringsmål Trådlösa sensornätverk
Tillgänglig i engelsk
Plattformar Atmel FireFly, MicaZ motes, MSP430
Typ av kärna Operativsystem i realtid

Standardanvändargränssnitt _
Kommandoradsgränssnitt
Licens GPL eller kommersiell

Nano-RK är ett trådlöst sensornätverk i realtid (RTOS) från Carnegie Mellon University , designat för att köras på mikrokontroller för användning i sensornätverk. Nano-RK stöder en helt förebyggande schemaläggare med fast prioritet med finkorniga timingprimitiver för att stödja uppgiftsuppsättningar i realtid . "Nano" innebär att RTOS är liten, använder 2 KB slumpmässigt minne (RAM) och använder 18 KB flashminne , medan RK är en förkortning för resurskärna . En resurskärna ger reservationer för hur ofta systemresurser kan användas. Till exempel kan en uppgift bara tillåtas att exekvera 10 ms var 150:e ms (CPU-reservation), eller en nod kan bara tillåtas sända 10 nätverkspaket per minut (nätverksreservation). Dessa reservationer bildar en virtuell energibudget för att säkerställa att en nod uppfyller sin designade batterilivslängd och för att förhindra att en misslyckad nod genererar överdriven nätverkstrafik. Nano-RK är programvara med öppen källkod , skriven i C och körs på den Atmel -baserade FireFly-sensornätverksplattformen, MicaZ-motes och MSP430 -processorn.

Avvägningar uppstår när en RTOS används i sensornätverk.

Fördelar

NanoRK drar fördel av prioritetsbaserad förebyggande schemaläggning för att hjälpa till att respektera realtidsfaktorn att vara deterministisk och på så sätt säkerställa uppgiftens aktualitet och synkronisering. På grund av egenskapen med begränsad batterikraft på den trådlösa noden, tillhandahåller Nano-RK central processing unit (CPU), nätverk och sensoreffektivitet genom användning av virtuella energireservationer, vilket märker detta system som en resurskärna. Dessa energireservationer kan tvinga fram energi- och kommunikationsbudgetar för att minimera den negativa påverkan på nodens operativa livslängd från oavsiktliga fel eller skadligt beteende från andra noder inom nätverket. Den stöder vidarebefordran av paket, routing och andra nätverksschemaläggningsprotokoll med hjälp av en lätt trådlös nätverksstack. Jämfört med andra nuvarande sensoroperativsystem ger Nano-RK rik funktionalitet och schemaläggning i tid med en liten storlek för sin inbäddade resurskärna (RK).

Funktioner

Statisk konfiguration – Nano-RK använder en statisk design-tidsmetod för kontroll av energianvändning och tillåter inte dynamisk uppgiftsskapande, vilket kräver att applikationsutvecklare ställer in både uppgifts- och reservationskvoter/-prioriteringar i en statisk testbäddsdesign. Denna design gör det möjligt att skapa en energibudget för varje uppgift för att upprätthålla applikationskrav och energieffektivitet under hela systemets livstid. Med en statisk konfigurationsmetod fördefinieras och verifieras alla körtidskonfigurationer och effektkraven av konstruktören innan systemet distribueras och exekveras i den verkliga världen. Detta tillvägagångssätt hjälper också till att garantera stabiliteten och egenskaperna av liten storlek jämfört med traditionella RTOS.

Watchdog Timer-stöd – Watchdog är en mjukvarutimer som utlöser en systemåterställningsåtgärd om systemet hänger på avgörande fel under en längre tid. Watchdog-mekanismen kan föra tillbaka systemet från det icke-svarande tillståndet till normal drift genom att vänta tills timern går av och därefter starta om enheten. I Nano-RK kopplas watchdog-timern direkt till processorns återställningssignal REBOOT ON ERROR. Som standard är det aktiverat när systemet startar och återställs varje gång schemaläggaren körs. Om systemet inte svarar inom den fördefinierade tidsperioden kommer systemet att starta om och köra initialiseringsinstruktionssekvensen för att förhoppningsvis återta kontrollen.

Djupt viloläge – Av energieffektivitetsskäl, om det inte finns några kvalificerade uppgifter att köra, kan systemet stängas av och ges möjlighet att gå in i djupt viloläge. När systemet är i detta läge kan endast djupsömntimern väcka systemet med en fördefinierad latensperiod. Efter att ha vaknat från viloläge ställs nästa kontextväxlingstid in för att garantera att CPU vaknar i tid. Om en sensornod inte vill utföra djup sömn, presenteras den också för valet att gå in i ett tillstånd med låg energianvändning medan den fortfarande hanterar dess kringutrustning.

Klar kö

Nano-RK har implementerat en dubbellänkad lista med färdiga könoder inom en array med fast storlek, kallad redo-kön, som beställer alla färdiga uppgifter i fallande ordning efter vilken av uppgiftens prioriteringar som är högre. Eftersom antalet uppgifter som körs inom Nano-RK-implementeringen är statiskt konfigurerade i en testbädd före driftsättning, är storleken på färdigkön också fixerad till detta antal uppgifter som kan vara redo att köras. En array med fast längd som heter nrk readyQ finns i filen nrk defs.h tillsammans med två pekare för att referera till de två viktigaste cellerna i denna array. Den fria nodpekaren (fri nod) och huvudnodpekaren (huvudnod) pekar på nästa cell i arrayen som ska tilldelas respektive den aktuella uppgiften med högsta prioritet redo att köras.

Schemaläggare

Kärnan i Nano-RK är en statisk förebyggande realtidsschemaläggare som är prioritetsbaserad och energieffektiv. För prioritetsbaserad förebyggande schemaläggning väljer schemaläggaren alltid den högsta prioriterade uppgiften från redo-kön. För att spara energi, pollar inte uppgifter efter en resurs utan uppgifter kommer att blockeras på vissa händelser och kan låsas upp när händelserna inträffar. När det inte finns någon uppgift i redo-kön kan systemet stängas av för att spara energi. När systemet fungerar körs en och endast en uppgift (nuvarande uppgift), betecknad med nrk cur-uppgiften tcb, under en fördefinierad period. Så schemaläggarens viktigaste uppgift är att bestämma vilken uppgift som ska köras härnäst och hur länge nästa uppgift ska köras tills schemaläggaren triggas att köras igen.

externa länkar