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

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

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

Broadcast alkalmazás készítése

Labor 2 Mikrovezérlők

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

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

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

Concurrency in Swing

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

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

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

Digitális technika VIMIAA01 9. hét

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

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

Szenzorhálózatok I. Beágyazott információs rendszerek. Bevezetés. HW architektúrák. Alkalmazások március 30. Simon Gyula

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

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

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

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

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

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

Operációs rendszerek. Bemutatkozás

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

Az MSP430 mikrovezérlők digitális I/O programozása

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

Laborsegédlet 3. Labor

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

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Számítógépek felépítése, alapfogalmak

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

Dr. Schuster György október 14.

EUROFLEX-33 ESEMÉNY NYOMTATÓ. -felhasználói és telepítői leírás-

Konkurens TCP Szerver

Autóipari beágyazott rendszerek. Local Interconnection Network

Java I. A Java programozási nyelv

Intelligens kamera alkalmazás fejlesztése

Beágyazott rendszerek fejlesztése laboratórium DSP fejlesztési technológiák

Előadó: Nagy István (A65)

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Hardver leírás Klasszikus kontroller v.3.2.2

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

Már megismert fogalmak áttekintése

IDAXA-PiroSTOP HI1 Hurokkezelő 1 intelligens hurokhoz 2004/0177/063 Terméklap

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

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

MSP430 programozás Energia környezetben. Az I/O portok kezelése

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

Iman 3.0 szoftverdokumentáció

Bevezetés a számítástechnikába

Digitális technika (VIMIAA01) Laboratórium 9

Architektúra, megszakítási rendszerek

Programozás C++ -ban 2007/7

evosoft Hungary Kft.

Operációs rendszerek. Windows NT. A Windows NT

Matematikai és Informatikai Intézet. 4. Folyamatok

loop() Referencia:

FPGA áramkörök alkalmazásainak vizsgálata

Programozási nyelvek (ADA)

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

A ChipScope logikai analizátor

Podoski Péter és Zabb László

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

TI TMDSEVM6472 rövid bemutatása

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

Programozási segédlet DS89C450 Fejlesztőpanelhez

Intelligens épületfelügyeleti rendszer tervezése mikrokontrollerrel

Digitális technika (VIMIAA01) Laboratórium 9

Autóipari beágyazott rendszerek

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

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

Python tanfolyam Python bevezető I. rész

Nagy Gergely április 4.

RUBICON Serial IO kártya

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Az interrupt Benesóczky Zoltán 2004

Digitális technika (VIMIAA02) Laboratórium 4

MARKATOR -TERMÉKSKÁLA JELÖLŐRENDSZEREK MV5 ZE 100 ÉS 101

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

ARM Cortex magú mikrovezérlők

Silabs STK3700, Simplicity Studio laborgyakorlat

TxBlock-USB Érzékelőfejbe építhető hőmérséklet távadó

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

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?

Microblaze Micro Controller

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Digitális technika (VIMIAA02) Laboratórium 4

PIC16F877 KÍSÉRLETI PANEL

EMBERI AKTIVITÁS AKUSZTIKUS MONITOROZÁSA SZENZORHÁLÓZAT SEGÍTSÉGÉVEL

ISA szimulátor objektum-orientált modell (C++)

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

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

MARKATOR -TERMÉKSKÁLA JELÖLŐRENDSZEREK MV5 ZE 100 ÉS 101

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Digitális technika (VIMIAA02) Laboratórium 5.5

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

Az AVR ATmega128 mikrokontroller

Átírás:

A TinyOS operációs rendszer (bevezető) http://www.tinyos.net/ Beágyazott Információs Rendszerek 2004 Méréstechnika és Információs Rendszerek Tanszék

Ismétlés: Mica Proc Atmel ATmega128L (103L) csatlakozó Rádió µc Tápegység Flash 128kB programmemória (flash) 4kB EEPROM 4kB SRAM 32 általános I/O vonal 8 bemeneti-, 8 kimeneti vonal 32 általános célú regiszter RTC (real time counter) 4 timer/counter/pwm UART WDT (watchdog timer) SPI port 3 energiatakarékos üzemmód http://www.atmel.com 2004 BME MIT

TinyOS operációs rendszer 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 2004 BME MIT

NesC programnyelv Beágyazott rendszerekhez fejlesztették Szenzorhálózatokhoz különösen jól illeszkedik C-szerű szintaxis A TinyOS filozófiájához illeszkedik konkurencia-modell komponensek kezelése Fordítás-idejű konkurencia-ellenőrzés 2004 BME MIT

Komponensek Az applikáció összehuzalozott komponensekből épül fel A komponensekhez kétirányú interfészeken keresztül lehet kapcsolódni A komponens szolgáltatást nyújt (provides) és használ (uses) komponensek felhasznált interfészek szolgáltatott interfészek T A D B C interfészek

Komponensek típusai Modul (module): interfészek implementációi Interfészek tartalmaznak: parancs (command) esemény (event) command event Konfiguráció (configuration): huzalozás Hierarchikus Tartalmazhat: modulokat konfigurációkat

Komponensek: Modulok module <azonosító> <interfész definíció> <implementáció> module MyModule { provides uses implementation { command event

Komponensek: Modulok: interfész definíció Definiálja a használt és szolgáltatott interfészeket Implementálja a szolgáltatott command-okat a felhasznált eseményeket module A{ provides { interface Moo; interface Zoo; uses { interface Timer; interface Barbie; interface Boo; Moo B T A Timer Barbie Boo C Zoo D

Komponensek: Parancsok és események Parancsok és események iránya, implementációja komponens A Eseményekre adott reakciók implementációja i uses interface i; parancsok (command) események (event) i provides interface i; komponens B Parancsok implementációja

Komponensek: Modulok: implementáció Definiálja a használt és szolgáltatott interfészeket Implementálja a szolgáltatott command-okat a felhasznált eseményeket Moo B T A Timer Barbie Boo C Zoo D implementation { command result_t Moo.start() { command result_t Moo.stop() { command result_t Zoo.init() { command result_t Zoo.close() { event result_t Timer.fired() { ; event result_t Barbie.Cries() { ;

Komponensek: Konfigurációk A konfigurációk komponensek huzalozására (->) használatosak I. Top-level konfiguráció (applikáció) II. Újrafelhasználható komponens T Main T A A B C B C 2004 BME MIT

Komponensek:Konfigurációk: Top-level konfigurációk I. MyProgram StdControl Moo B Main T A Timer Barbie Boo C Zoo configuration MyProgram { implementation { components Main,T, A, B, C,; Main.StdControl -> T.StdControl; T.Moo -> A.Moo; T.Zoo -> A.Zoo; A.Timer -> B.Timer; A.Barbie -> C.Barbie; A.Boo -> C.Boo;

Komponensek:Konfigurációk: Top-level konfigurációk II. StdControl Moo B Main T A Timer Barbie Boo C Zoo Minden programnak tartalmaznia kell egy Main komponenst A Main komponens indul el reset után először Meghívja a StdControl interfész init utasítását Meghívja a StdControl interfész start utasítását Elindítja az ütemezőt A stop utasítás az erőforrások kímélését szolgálja (standby)

Komponensek:Konfigurációk: Újrafelhasználható komponensek StdControl MyComponent configuration MyComponent { provides interface StdControl; uses interface Foo; Moo T A Timer Barbie Boo B C Foo Zoo implementation { components T, A, B, C,; StdControl = T; T.Moo -> A.Moo; T.Zoo -> A.Zoo; A.Timer -> B.Timer; A.Barbie -> C.Barbie; A.Boo -> C.Boo; Foo = B;

Komponensek:Konfigurációk: Komponens egyedek Komponens egyedek átnevezhetők. Könnyebb a komponensek későbbi cseréje. components T = components T as T configuration MyComponent { provides interface StdControl; uses interface Foo; implementation { components T, A, B, C,; StdControl = T; T.Moo -> A.Moo; T.Zoo -> A.Zoo; A.Timer -> B.Timer; A.Barbie -> C.Barbie; A.Boo -> C.Boo; Foo = B; configuration MyComponent { provides interface StdControl; uses interface Foo; implementation { components T as Q, A, B, C,; StdControl = Q; Q.Moo -> A.Moo; Q.Zoo -> A.Zoo; A.Timer -> B.Timer; A.Barbie -> C.Barbie; A.Boo -> C.Boo; Foo = B;

Interfészek USED command event PROVIDED module A{ provides { interface Moo; interface Zoo; uses { interface Timer; interface Barbie; interface Boo; Timer Modul A Modul B Modul C interface Timer { command result_t start(char type, uint32_t interval); command result_t stop(); event result_t fired();

Interfészek: StdControl interface StdControl { command result_t init(); command result_t start(); command result_t stop(); A StdControl interfész felhasználása: init* (start stop)* Mély szemantikájú: minden komponensnek init, start, vagy stop hatására meg kell hívnia saját alkomponenseinek init, start, vagy stop utasitásait!

Interfész egyedek Interfészek elnevezése, példányosítása Modul B Modul A Control? Control Modul C Modul A Control as ContB Control as ContC Modul B Modul C Megjegyzés Rövid forma: interface Control as Control; =interface Control; típus név module A { uses { interface Control as ContB; interface Control as ContC; implementation { components A, B, C; A.ContB -> B.Control; A.ContC -> C.Control; 2004 BME MIT

Paraméterezett interfészek Modul definíció Modul A { provides { interface Boo[uint8_t id]; Konfiguráció 256 interfész egyedet definiál Egy egyedet felhasznál implementation { components A, B, ; B.Moo -> A.Boo[12];

Taszkok és HW eseményt kezelő függvények 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 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 2004 BME MIT

Taskok kezelése Taszkok deklarálása: task void taskname() { Task-Queue (FIFO): run Taszkok indításának kérése: { post taskname(); Task3 Task2 Task1 post Task4(); Task4 2004 BME MIT

Konkurencia modell 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: 1. Elérés csak szinkron kódból. 2. Atomikus utasítások használata. Atomikus utasitások: atomic { // védett szakasz Aszinkron kód jelzése: async event async command 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) Fordító figyelmeztet a potenciális versenyhelyzetre 2004 BME MIT

Kétfázisú műveletek Egyszerű taszk filozófia előnye: Nincsenek blokkolódó hívások Nem kell kontextus váltás Nem kellenek szinkronizációs primitívek Hátránya: Nincsenek blokkolódó hívások alkalmazás logikája bonyolultabbá válik kétfázisú (split-phase) műveletek kellenek 1. Kérés command 2. Válasz/eredmény event

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

Blink: Konfigurációs file Blink.nc configuration Blink { implementation { components Main, BlinkM, SingleTimer, LedsC; Main.StdControl -> SingleTimer.StdControl; Main.StdControl -> BlinkM.StdControl; BlinkM.Timer -> SingleTimer.Timer; BlinkM.Leds -> LedsC;

Blink: Modul file BlinkM.nc Szolgáltatott command-ok module BlinkM { provides { interface StdControl; uses { interface Timer; interface Leds; Felhasznált event-ek 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; 2004 BME MIT

Blink: Interfészek StdControl interface StdControl { command result_t init(); command result_t start(); command result_t stop(); interface Leds { 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); TIMER_REPEAT, TIMER_ONE_SHOT 1/1024 sec egységekben interface Timer { command result_t start(char type, uint32_t interval); command result_t stop(); event result_t fired(); Timer

Blink: SingleTimer configuration SingleTimer { provides interface Timer; provides interface StdControl; SingleTimer.nc implementation { components TimerC; Timer = TimerC.Timer[unique("Timer")]; StdControl = TimerC;

Fordítás Fordítás történhet különböző platformokra: avrmote mica mica2 mica2dot mica128 pc.ncc ncc compiler.exe avr-objcopy.srec make platform 2004 BME MIT

Futtatás Platformfüggő letöltő Platformfüggő letöltő.srec Platformfüggő letöltő make platform install 2004 BME MIT

TOSSIM szimulátor 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ó 10 példányban fut

TOSSIM példa $ make pc Rádió üzenetek, ledek állapota 3 mote $ export DBG=am,led $ build/pc/main.exe -rf=my-lossy-matrix3.nss 3 Veszteséges rádió modell Beépített debug-üzenetek 6 mote $ export DBG=usr1 $ build/pc/main.exe -rf=my-lossy-matrix6.nss 6