operációs rendszer A TinyOS - Bevezető - [ Beágyazott Információs Rendszerek Tervezése ]

Hasonló dokumentumok
A TinyOS. operációs rendszer. (bevezető) Beágyazott Információs Rendszerek.

Beágyazott információs rendszerek 4. házi feladat

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Beágyazott információs rendszerek házi feladat

Broadcast alkalmazás készítése

Mote-mote rádiós kommunikáció

Labor 2 Mikrovezérlők

Concurrency in Swing

Hımérı alkalmazás készítése

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Programozási nyelvek (ADA)

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Konkurencia és energiakezelés integrálása eszközmeghajtókba. Vezeték nélküli szenzorhálózatok

Digitális technika VIMIAA01 9. hét

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Intelligens kamera alkalmazás fejlesztése

Eseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Giachetta Roberto

Házi feladatok Szenzorhálózatok és alkalmazásaik

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Dr. Schuster György október 14.

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Autóipari beágyazott rendszerek. Local Interconnection Network

Java I. A Java programozási nyelv

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

A szerzõrõl... xi Bevezetés... xiii

Bevezetés a párhuzamos programozási koncepciókba

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Operációs rendszerek. Bemutatkozás

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Már megismert fogalmak áttekintése

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Valós idejű gépi fordítás kiegészítő szolgáltatásként

Eseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Cserép Máté

Kommunikációs rendszerek teljesítőképesség-vizsgálata

15. Programok fordítása és végrehajtása

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

evosoft Hungary Kft.

Amibe még John McLane is belepirulna, avagy az ipari irányitási rendszerek biztonsági kérdései

Kommunikáció. 3. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Architektúra, megszakítási rendszerek

Készítette: Oláh István mestertanár

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Operációs rendszerek III.

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Interfészek. PPT 2007/2008 tavasz.

A Skype architektúrája. P2P hálózat Supernode ok, peer-ek, login server

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Végfelhasználói Applet kézikönyv

C++ programozási nyelv

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

Vezérlés, paraméter beállítás és állapotfigyelés korlátok nélkül data exchange

Szoftver karbantartási lépések ellenőrzése

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Vizuális, eseményvezérelt programozás XI.

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Komponens alapú programozás Bevezetés

Laborsegédlet 3. Labor

A modell-ellenőrzés gyakorlata UPPAAL

Python tanfolyam Python bevezető I. rész

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

S04-2 Elosztott alkalmazások készítése

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Az AVR programozás alapjai. Előadja: Both Tamás

Építsünk IP telefont!

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Mérési jegyzőkönyv. az ötödik méréshez

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Mértékegységek a számítástechnikában

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Oktatási segédlet 2014

Mikrorendszerek tervezése

Iman 3.0 szoftverdokumentáció

Mérési jegyzőkönyv. készítette Szabó Attila Mesterséges intelligencia alkalmazások gyakorlat, ELTE IK 2006/2007-2

Nagy bonyolultságú rendszerek fejlesztőeszközei

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Tartalomjegyzék. Előszó... 10

Silabs STK3700, Simplicity Studio laborgyakorlat

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

Mikrorendszerek tervezése

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Clang Static Analyzer belülről

UNIX: folyamatok kommunikációja

Átírás:

A TinyOS operációs rendszer [ Beágyazott Információs Rendszerek Tervezése ] - Bevezető - www.tinyos.net

ATinyOS vezeték nélküli szenzorhálózatokhoz kifejlesztett nyílt kódú (open source) ingyenes komponens alapú eseményvezérelt (event triggered) beágyazott operációs rendszer kapcsolódó programnyelv: NesC

A NesC programnyelv A C nyelv kiterjesztése A TinyOS koncepciójához és működéséhez igazított Szenzorhálózatokhoz jól illeszkedik Fordítás idejű konkurencia ellenőrzés

NesC alapelemek Komponensek (components): A NesC programok alap építőkövei A komponensek interfészeken keresztül való összehuzalozásával áll össze a rendszer Belső konkurencia: task 2 fajta komponens Modul Konfiguráció Statikus kapcsolat Teljes program-ellenőrzés fordítási időben Jobb kód generálás és analízis

NesC alapelemek A komponens szolgáltatást nyújt (provides) és használ (uses) Interfész A modulok implementálják őket A komponensek összehuzalozása az interfészeken keresztül történik Két irányú, a providert és ausert kapcsolja össze Aprovider parancsokat (commands) specifikál ( provides ) Auser eseményeket (events) specifikál ( uses )

Komponensek NesC alapelemek Interfészek Konfiguráció T Modul v. konfiguráció A C B D

NesC interfész interface <azonosító> deklarációs-lista interface Timer command result_t start(char type, uint32_t interval); command result_t stop(); event result_t fired(); Azonosító: különálló, globális névtérben, komponens és interfész típus deklarációs lista: függvény deklarációk (de nem definíciók), command és event tárolási osztály specifikációkkal.

NesC komponens definíció module <azonosító> <specifikáció> <implementáció> configuration <azonosító> <specifikáció> <implementáció> module A provides interface i1; interface i2; uses interface i3; interface i4; i1 i3 B A T i4 D C i2

NesC interfész példányok Interfészek elnevezése, példányosítása: interface i1; Egy i1 nevű i1 típusú interfész interface i1 as ix; Egy ix nevű i1 típusú interfész Akkor muszáj, ha több azonos nevű interfész van! Modul implementáció Az interfészeken szolgáltatott parancsok implementációja Az interfészeken kapott eseményekre adott reakciók implementációja Itt már függvények definíciói vannak

NesC parancsok és események A parancsok és az események iránya Eseményekre adott reakciók implementációja i user: uses interface i; parancsok események provider: provides interface i; Parancsok implementációja

NesC paraméterezett interfész Az interfészek paraméterezhetők: tömbösíthetők : interface SendMsg S[uint8_t id]; = 256 darab SendMsg típusú S névvel jelölt interfész Parancs és esemény deklaráció is lehet a specifikációban, nem szükséges interfész definícióban lennie

NesC paraméterezett interfész Egy példa: configuration GenericComm provides interface StdControl as Control; interface SendVarLenPacket; interface SendMsg[uint8_t id]; interface ReceiveMsg[uint8_t id]; uses event result_t senddone(); implementation...

NesC interfészek Az StdControl interface interface StdControl command result_t init(); command result_t start(); command result_t stop(); Felhasználás: init* (start stop)* Minden komponensnek meg kell hívnia az alkomponensei megfelelő függvényét a sajátjában!

NesC hivatkozás Hivatkozás parancsra/eseményre: <interfész-azonosító>.<azonosító> ahol azonosító valamely parancs v. esemény azonosítója Modul interfészre hasonlóan

NesC implementáció Implementáció: Modulban függvénydefiníciók (és egyéb C def.) Konfigurációban összeköttetés-leírás implementation fordítási-egység Modul esetében: implementation command result_t A.i1()... command result_t A.i2()... event result_t A.i3()... event result_t A.i4()... return SUCCESS; i1 i3 A T B D i4 C i2

NesC konfigurációk A konfigurációk komponensek egy összehuzalozott rendszerének helyettesítő -i T A C B D Újrafelhasználható komponens

NesC konfigurációk configuration myconf provides interface StdControl; uses interface apple; implementation components T, A, B, C, D; StdControl = T; T.i1 -> A.i1; T.i2 -> A.i2; A.i3 -> B.i3; A.i4 -> D.i4; D.i5 <- C.i5; apple = D;... StdControl i1 i2 A T i3 i4 B D apple C i5

NesC konfigurációk A komponens egyedek (is) átnevezhetők: configuration myconf provides interface StdControl; uses interface apple; configuration myconf provides interface StdControl; uses interface apple; implementation components T, A, B, C, D; StdControl = T; T.i1 -> A.i1; T.i2 -> A.i2; A.i3 -> B.i3;... implementation components T as Q, A, B, C, D; StdControl = Q; Q.i1 -> A.i1; Q.i2 -> A.i2; A.i3 -> B.i3;...

NesC taskok Taszk: függvényhívás késleltetett végrehajtással Taszk indítását kezdeményezik, majd az valamikor elindul és lefut Nincs végtelen ciklus és blokkoló utasítás Taszk indítását kezdeményezheti: másik taszk esemény (event) utasítás (command) Taszk nem szakíthat meg taskot Taszkot megszakíthat HW eseményt kezelő függvény Hosszabb végrehajtási idejű is lehet

NesC HW IT HW eseményt kezelő függvény: HW IT-hez rendelve Bármikor futhat Más kódot (taszkot vagy másik HW kezelőt) megszakíthat Rövid legyen

NesC task kezelés Task definíció task void taskname()... Task indítás... post taskname();... Taskok futása: FIFO

NesC konkurencia kezelés 1. Taszkok között nincs kiürítés. 2. HW eseményeket (IT) kezelő függvények viszont megszakítást okoznak! Szinkron kód (SC): A kódnak azon része (függvények, event-ek, command-ok, taszkok), amely csak taszkokból érhető el Aszinkron kód (AC): A kódnak azon része, amely elérhető legalább egy IT kezelőből Versenyhelyzet: SC SC SC AC AC AC

Kölcsönös kizárás Közös erőforrások védelme: Elérés csak szinkron kódból Atomikus utasítások használata Atomikus utasitások: atomic // védett szakasz... Késleltetik az interrupt végrehajtást: válaszidőt növelik, jittert okozhatnak command hivás és event küldés kerülendő (válaszidő a használt komponenstől függ) Aszinkron kód jelzése: async event... async command... A fordító figyelmeztet a potenciális versenyhelyzetre

Példaprogram Cél: LED-ek villogtatása Gyakoriságot óra vezérli Felhasznált modulok: Main LED-vezérlő (LedsC) Óra (SingleTimer) Villogtató (BlinkM) Main StdControl BlinkM Leds StdControl Timer LedsC SingleTimer

Példaprogram Blink.nc főprogram configuration Blink implementation components Main, BlinkM, SingleTimer, LedsC; Main.StdControl -> SingleTimer.StdControl; Main.StdControl -> BlinkM.StdControl; BlinkM.Timer -> SingleTimer.Timer; BlinkM.Leds -> LedsC; Main StdControl BlinkM StdControl Leds Timer LedsC SingleTimer

Példaprogram BlinkM.nc module BlinkM provides interface StdControl; uses interface Timer; interface Leds; implementation command result_t StdControl.init() call Leds.init(); return SUCCESS; command result_t StdControl.start() return call Timer.start(TIMER_REPEAT, 1000); command result_t StdControl.stop() return call Timer.stop(); event result_t Timer.fired() call Leds.redToggle(); return SUCCESS;

Példaprogram: interfészek StdControl interface StdControl command result_t init(); command result_t start(); command result_t stop(); Timer Leds interface Leds command result_t init(); command result_t redon(); command result_t redoff(); command result_t redtoggle();... command uint8_t get(); command result_t set(uint8_t value); interface Timer command result_t start(char type, uint32_t interval); command result_t stop(); event result_t fired();

Példaprogram SingleTimer.nc configuration SingleTimer provides interface Timer; provides interface StdControl; implementation components TimerC; Timer = TimerC.Timer[unique("Timer")]; StdControl = TimerC;

Fordítás és futtatás Támogatott platformok: avrmote mica, mica2, mica2dot, mica128 pc Fejlesztés menete: make platform:.ncc -> ncc compiler ->.exe -> avr-objcopy ->.srec make platform install:.srec -> platformfüggő letöltő

TOSSIM Kód változtatás nélkül futtatható PC-n Tetszőleges számú egyed (szimulált mote) létrehozható Minden mote ugyanazt a programot futtatja Fordítás: make pc Futtatás: build/pc/main.exe [options] 10 Kimenet: szöveges debug-üzenetek Kijelzett események köre változtatható A kódba debug-üzenetek külön is beépíthetők Rádió kapcsolati mátrix beállítható

TOSSIM példa Kód változtatás nélkül futtatható PC-n Tetszőleges számú egyed (szimulált mote) létrehozható Minden mote ugyanazt a programot futtatja Fordítás: make pc Futtatás: build/pc/main.exe [options] 10 Kimenet: szöveges debug-üzenetek Kijelzett események köre változtatható A kódba debug-üzenetek külön is beépíthetők Rádió kapcsolati mátrix beállítható

TOSSIM példa $ make pc Rádió üzenetek, LED-ek állapota $ export DBG=am,led $ build/pc/main.exe -rf=my-lossymatrix3.nss 3 3 mote $ export DBG=usr1 $ build/pc/main.exe -rf=my-lossymatrix6.nss 6 6 mote Veszteséges rádió modell