A NesC programozási nyelv

NesC programok szimulációja

NesC programok szimulációja

TOSSIM

Egy nesC-ben írt TinyOS programot többféle eszközre is telepíteni tudunk (a fordítás során meg kell adnunk ennek az eszköznek az osztályát). Azonban előfordulhat, hogy nem tudunk elérni ilyen eszközöket. Ekkor azt tehetjük, hogy a pc-re fordítjuk le a programunkat. A kapott futtatható állományt TOSSIM-nak nevezik (TinyOS Simulator). Ez egy egyszerű „konzol alkalmazás” lesz. Alapjában véve úgy működik, mintha egy valós eszközön lenne, csak a működéséről az outputra folyamatosan kiírja az információkat. Nagy előnye, hogy futásidőben tudjuk meghatározni, hogy milyen információkat írjon ki az outputra. A következőkben STARTDIR-nek fogjuk a C:\tinyos\cygwin\opt\tinyos-1.x\ könyvtárat [Windowsra installálva a TinyOS-t], azaz a TinyOS könyvtárát. Ehhez viszonyítva (azaz ezen belül) fogjuk megnevezni a többi szóbakerülő könyvtárat. A TOSSIM-ot a CntToLedsAndRfm alkalmazáson keresztül mutatjuk be. Ezt a STARTDIR/apps/CntToLedsAndRfm könyvtárban találjuk meg. Ez az alkalmazás annyit csinál hogy 4Hz –es sebességgel elküld egy bájtot, az égőit (led) pedig az elküldött bájt utolsó három bitje szerint állítja be. A TOSSIM létrehozásához lépjünk be a STARTDIR/apps/CntToLedsAndRfm könyvtárba, majd adjuk ki a make pc parancsot. Ez a parancs létrehozza a STARTDIR/apps/CntToLedsAndRfm/build/pc/main.exe futtatható állományt , ami maga a TOSSIM. A build/pc/main.exe –help paranccsal segítséget kaphatunk a parancssori használathoz. A TOSSIM –nak paraméterként csak azt kell megadnunk, hogy hány csomóponttal (node, azaz a virtuális eszközök száma.) fusson a szimuláció. Futtassuk a build/pc/main.exe 1 parancsot. Alapértelmezett esetben a TOSSIM minden információt kiír az outputra. Így az ember számára feldolgozhatatlan információt kapunk. A DBG környezeti változó beállításával azonban ki tudjuk választani, hogy mely információkra vagyunk kíváncsiak. Állítsuk be a DBG-t úgy, hogy csak a LED és az AM (active message) csomagokat írja ki. Ezt az export DBG=am,led paranccsal tehetjük meg. Most futtassuk újra a build/pc/main.exe 1 parancsot. A kapott outputot [persze csak egy kis ideig futott a tesztelés, aztán Ctrl-C-vel leállítottam]:
Az első néhány sor: 0: LEDS: Red off. 0: LEDS: Yellow off. 0: LEDS: Green off. 0: LEDS: Red on. 0: LEDS: Green off. 0: LEDS: Yellow off. 0: Sending message: ffff, 4 ff ff 04 7d 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0: LEDS: Red off. 0: LEDS: Green on. 0: LEDS: Yellow off. 0: Sending message: ffff, 4 ff ff 04 7d 08 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dd 40 00 00 00 00 80 bb 00 00 0: LEDS: Red on. 0: LEDS: Green on. 0: LEDS: Yellow off. 0: Sending message: ffff, 4 ff ff 04 7d 08 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a8 88 00 00 00 00 2a 67 00 00 ...

Az elküldött üzenet hatodik bájtja (ezek ki vannak emelve) tartalmazza a valódi üzenetet. Ezek hexadecimális számokként vannak kiírva az outputra. Látható, hogy ezeknek a bájtoknak az utolsó három bitjét határozzák meg az égők (Yellow, Green, Red) sorrendben, azaz a Red az utolsó bit. A sorok elején található „0: „ azt jelöli, hogy az outputra írt üzenet a 0 csomóponttól származik. Ha a build/pc/main.exe 2 parancsot futtatjuk, akkor már megjelenik egy 1-es csomópont is. A különböző DBG módokról szintén a build/pc/main.exe –help paranccsal kaphatunk információkat.

TinyViz: a TOSSIM felhasználói felülete

Ez egy Java alkalmazás, amely a TOSSIM által szolgáltatott adatokat vizualizálja. Ha a rendszerünk (azaz a TinyOS) újonnan volt telepítve, akkor ezt az alkalmazást még le kell fordítani. Ehhez egyszerűen lépjünk a STARTDIR/tools/java/net/tinyos/sim könyvtárba, majd hajtsuk végre a make parancsot. Ez létrehozza a tinyviz.jar java fájlt, amit az ugyanebben a könyvtárban található tinyviz szripttel futtatni tudunk. Érdemes beállítani ehhez a könyvtárhoz az elérési utat: PATH=$PATH:/opt/tinyos-1.x/tools/java/net/tinyos/sim

A TinyViz –t a TestTinyViz alkalmazással mutatjuk be, amely a STARTDIR/apps/TestTinyViz könyvtárban taláható. Fordítsuk le a TOSSIM-et a már megismert módon:make pc. Ezután állítsuk be a DBG-t: export DBG=usr1 Majd adjuk ki a tinyviz -run build/pc/main.exe 30 parancsot.
A plugins menűből válogathatjuk ki, hogy milyen plugin-ok legyenek aktívak. Ezek a pluginok egymástól teljesen függetlenül futnak. Mi is tudunk ilyet készíteni. Feladatuk az, hogy egy-egy adatcsomagot vizualizálnak A TinyViz ablak jobb oldalán láthatjuk a pluginok füleit. Csak azokba tudunk beletekinteni, amelyek éppen aktívak. Ekkor az ezekhez tartozó fülek kijelölődnek.

Nézzünk meg néhány fontosabb plugin-t: A skálázási faktorral egyszerűen csak valahányszorosára tudjuk állítani a csomópontok közötti távolságokat. Állítsuk át, majd klikkeljünk az update gombra. Ezután egy ideig várnunk kell, majd elindul a szimuláció az új távolságokkal.

Amit klikkelgetéssel be tudunk állítani a TinyViz-ben azt egyszerűen meg tudjuk adni egy szkriptben is.
Ilyen szkript például a TestTinyViz könytárában található sample.autorun szkript:
# This is a sample TinyViz autorun file. To use it, run # tinyviz -autorun sample.autorun # Set the layout layout gridrandom # Enable some plugins plugin DebugMsgPlugin plugin RadioLinkPlugin plugin RadioModelPlugin # Total number of simulated seconds to run numsec 10 # Name of the executable file executable build/pc/main.exe # DBG messages to include dbg usr1 # The radio model and scaling factor to use radiomodel disc100 radioscaling 5 # Number of motes nummotes 20 # Command to run before starting precmd echo "This is a command that will run before the simulation" # File to log all DBG messages to logfile logfile-20.txt # The blank line above indicates that we are starting another simulation # This time run with a different number of motes nummotes 30 logfile logfile-30.txt

Ez a fájl kétféle szimulációt definiál: az egyet 20 csomóponttal, egy másikat 30-al. Mindkettő debug üzenetei külön logfájlba archiválódnak.
Futtatás: tinyviz -autorun sample.autorun
Hibák

Sajnos a TinyViz nem tökéletes. Nem mindig működik úgy, ahogyan logikus lenne. Volt, hogy a tinyviz -run build/pc/main.exe 30 parancsot nem megfelelően hajtotta végre, egyszerűen a csomópontok leálltak. Úgy viszont hajlandó volt végrehajtani, hogy: DBG= tinyviz -run build/pc/main.exe 30. Ez számomra kicsit érthetetlen. A tinyviz -autorun sample.autorun parancsnál is gondok akadtak. Itt azt írta ki, hogy nem tudja felvenni a kapcsolatot a csomópontokkal, mivel nem találja a cygwin1.ddl-t. Megnéztem az útvonalban és elérhető volt onnan. Aztán újratelepítettem az egész TinyOS-t, de nem segített. Nem tudom, mi lehet a hiba. 3-4 óra keresgélés után feladtam. Valószínűleg én ronthattam el valamit. A legfurcsább, hogy az első telepítés után minden tökéletesen működött.