Difference between revisions of "LU-BST:TOSSIM"
(New page: == Pamācība, kā piedarbināt TOSSIM uz Ubuntu 10.4. == Autors: Kārlis Visendorfs. 2010-okt-7 Ja programmas kompilējas priekš motēm, bet simulatoram ne: 1. Jānoskaidro kāda Pyt...) |
(→Pamācība, kā piedarbināt TOSSIM uz Ubuntu 10.4.) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 42: | Line 42: | ||
(Pagaidām TOSSIM atbalsta tikai micaz motes. Telosb neatbalsta.) |
(Pagaidām TOSSIM atbalsta tikai micaz motes. Telosb neatbalsta.) |
||
3. Parādās teksta blāķis un beigās iepriecinoša ziņa - |
3. Parādās teksta blāķis un beigās iepriecinoša ziņa - |
||
*** Successfully built micaz TOSSIM library. |
|||
4. Palaižam Python interpretatoru ar komandu: python |
4. Palaižam Python interpretatoru ar komandu: python |
||
Rezultātā iegūstam: |
Rezultātā iegūstam: |
||
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) |
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) |
||
[GCC 4.4.3] on linux2 |
[GCC 4.4.3] on linux2 |
||
Type "help", "copyright", "credits" or "license" for more information. |
Type "help", "copyright", "credits" or "license" for more information. |
||
>>> |
>>> |
||
Te tad arī rakstīsim to, ko gribēsim nodebugot. |
Te tad arī rakstīsim to, ko gribēsim nodebugot. |
||
5. Importējam TOSSIM: |
5. Importējam TOSSIM: |
||
from TOSSIM import * |
from TOSSIM import * |
||
6. Importēsim sistēmas print out un laikam arī citas fīčas: |
6. Importēsim sistēmas print out un laikam arī citas fīčas: |
||
import sys |
import sys |
||
7. Jāizveido mainīgais un tam jāpiešķir TOSSIM: |
7. Jāizveido mainīgais un tam jāpiešķir TOSSIM: |
||
t = Tossim([]) |
t = Tossim([]) |
||
8. Izveidosim moti un piekurbulēsim to |
8. Izveidosim moti un piekurbulēsim to |
||
m = t.getNode(32) |
m = t.getNode(32) |
||
m.bootAtTime(242119) |
m.bootAtTime(242119) |
||
9. Neliels stāsts par debug paziņojumiem - apskatot Blink programmu, var redzēt ka debug rindas ir šādā formā - |
9. Neliels stāsts par debug paziņojumiem - apskatot Blink programmu, var redzēt ka debug rindas ir šādā formā - |
||
dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string()); |
dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string()); |
||
BlinkC norāda kanālu, pa kuru attiecīgais debug paziņojums nāks ārā |
BlinkC norāda kanālu, pa kuru attiecīgais debug paziņojums nāks ārā |
||
Tad seko paziņojuma teksts un paziņojuma datu tips (laikam) |
Tad seko paziņojuma teksts un paziņojuma datu tips (laikam) |
||
Line 75: | Line 76: | ||
9.1. Pievienojam TOSSIM mainīgajam t kanālu ar mums interesējošo debug paziņojumu: |
9.1. Pievienojam TOSSIM mainīgajam t kanālu ar mums interesējošo debug paziņojumu: |
||
t.addChannel("BlinkC", sys.stdout); (te ar tiek pielietots pirms tam import sys ko veicām) |
t.addChannel("BlinkC", sys.stdout); (te ar tiek pielietots pirms tam import sys ko veicām) |
||
9.2. Viss ir jauki un varam sākt darbināt moti un skatīties, kā tekstuāli slēdzas lampiņas - to dara pasaucot TOSSIM mainīgajam nākamo eventu (notikumu). |
9.2. Viss ir jauki un varam sākt darbināt moti un skatīties, kā tekstuāli slēdzas lampiņas - to dara pasaucot TOSSIM mainīgajam nākamo eventu (notikumu). |
||
t.runNextEvent() |
t.runNextEvent() |
||
Te vajadzētu būt paziņojumam 1 vai true, noteikti. Vai būs debug paziņojums ir grūti spriest - varbūt vēl nav noticis tas events, kas iededz lampiņu. Līdz ar to sāk prasīties darbināt kādu ilgāku laiku posmu, ne tikai pa vienam eventam. Vajadzīgs cikls - vienkāršākā variantā: |
Te vajadzētu būt paziņojumam 1 vai true, noteikti. Vai būs debug paziņojums ir grūti spriest - varbūt vēl nav noticis tas events, kas iededz lampiņu. Līdz ar to sāk prasīties darbināt kādu ilgāku laiku posmu, ne tikai pa vienam eventam. Vajadzīgs cikls - vienkāršākā variantā: |
||
for i in range (0,10): |
for i in range (0,10): |
||
t.runNextEvent() |
|||
Obligāti ir jālieto atkāpe - tas Python nozīmē to pašu ko C++ - {}, pie tam, bez atkāpes nevar iztikt, citādāk skaļi bļauj un nevar saprast kādēļ (te ar parādas pirmā vajadzība zināt Python). Un beigās vēl viens enter vajadzīgs, lai viss tur aizietu, bet to jau sapratīsiet, gan paši. |
Obligāti ir jālieto atkāpe - tas Python nozīmē to pašu ko C++ - {}, pie tam, bez atkāpes nevar iztikt, citādāk skaļi bļauj un nevar saprast kādēļ (te ar parādas pirmā vajadzība zināt Python). Un beigās vēl viens enter vajadzīgs, lai viss tur aizietu, bet to jau sapratīsiet, gan paši. |
||
10. Pats svarīgākais - no Python interpretatora var iziet ar komandu: |
10. Pats svarīgākais - no Python interpretatora var iziet ar komandu: |
||
exit() |
|||
/*------------------------------------------------------------------------*\ |
|||
__________________________________ |
|||
Mošu tīklu un sarežģītākas lietas skatīt TinyOS Wiki lapā: http://docs.tinyos.net/index.php/TOSSIM |
Mošu tīklu un sarežģītākas lietas skatīt TinyOS Wiki lapā: http://docs.tinyos.net/index.php/TOSSIM |
||
Piezīme: man pašam kompilēt sanāca tikai Blink programmu. Citas īsti ne. |
Piezīme: man pašam kompilēt sanāca tikai Blink programmu. Citas īsti ne. |
||
/*------------------------------------------------------------------------*\ |
/*------------------------------------------------------------------------*\ |
||
Te ievietošu iepriekš aprakstītās komandrindiņas, lai vismaz import nav jāraksta katru reizi ar roku: |
Te ievietošu iepriekš aprakstītās komandrindiņas, lai vismaz import nav jāraksta katru reizi ar roku: |
||
(Komandrindā var ievietot ar peles labo pogu, ctr+c/+v nestrādā) |
(Komandrindā var ievietot ar peles labo pogu (vai copy = ctr+ins, paste = shift+ins), ctr+c/+v nestrādā) |
||
from TOSSIM import * |
from TOSSIM import * |
||
import sys |
import sys |
||
t = Tossim([]) |
t = Tossim([]) |
||
m = t.getNode(32) |
m = t.getNode(32) |
||
m.bootAtTime(242119) |
m.bootAtTime(242119) |
||
t.addChannel("BlinkC", sys.stdout); |
t.addChannel("BlinkC", sys.stdout); |
||
for i in range (0,10): |
for i in range (0,10): |
||
t.runNextEvent() |
Latest revision as of 09:52, 7 October 2010
Pamācība, kā piedarbināt TOSSIM uz Ubuntu 10.4.
Autors: Kārlis Visendorfs.
2010-okt-7
Ja programmas kompilējas priekš motēm, bet simulatoram ne:
1. Jānoskaidro kāda Python versija ir datora. Ieraksta konsolē:
python -V
(ar lielo V)
2. Jāuzliek python dev paka caur synaptic package manager, vēlams, kas atbilst Python versijai. Var ar likt all dev. Piemērs - python2.6-dev vai arī python-dev-all. Synaptic manager pieejams caur - sistēma->administrēšana->Synaptic pakešu pārvaldnieks. (Pieļauju, ka labāk likt all-dev, jo kaut kur forumos bija minēts, ka vajadzīgi arī kaut kādi library. Man sanāca uzliekot dev-ll un dev pakas)
3. Jāpievieno c++ kompilators un cits stuffs - no komandrindas:
sudo apt‐get install build‐essential
Piezīme (Ģirts Strazdiņš): iepriekšējos divus soļus var aizstāt ar komandu konsolē
sudo apt-get install python-dev-all build-essentials
4. Jāpasaka TOSSIM`am kādu Python mums ir. To var pateikt failā sim.extra ,kas atrodas
/opt/tinyos-2.1.1/support/make
(ceru, ka neesmu sajaucis slīpsvītras uz kuru pusi). Problēma - vajag root tiesības, lai failu drīkstētu labot => komandrinda.
cd /opt/tinyos-2.1.1/support/make sudo gedit sim.extra
Ar gedit tiek atvērt teksta fails, kurā jaizmaina (vai arī nav) rinda PYTHON_VERSION=2.4 -atrodas faila sākumā, nevajadzētu būt grūti atrast. Šeit ir jānomaina uz to versiju ko sākumā apskatījām ar komandu python -V . Piezīme - te ir jānorāda versija formā PYTHON_VERSION=x.x Man bija problēma, jo man bija versija 2.6.5, ko arī godīgi ierakstīju, bet tāpat nekompilējās - vajadzēja norādīt 2.6 un viss aizgāja.
Šim visam noderīgākā saite internetā : http://ubuntuforums.org/showthread.php?t=866248 -Otrajā postā viss tur izklāstīts.
Tagad vairāk par pašu TOSSIM: http://www.slideshare.net/gnawali/tinyos-21-tutorial-at-ipsn-2009 -Laba prezentācija, ar kuras palīdzību var nojaust TOSSIM jēgu. Par TOSSIM sākot no 47. slaida. Ideja par TOSSIM - tas nav parast debbugers, kāds varētu būt piemēram Java`i. Debug paziņojumi vienkārši neiznāk ārā to palaižot - ir jāraksta programma priekš tā. C++ daļu es vēl neesmu apskatījis, grūti komentēt. Tāpēc lietosim "vieglāko" variantu. Python interpretatoru. Bonus ziņa - ir jāapgūst Python pamati!
Programmas Blink debugošana. (Visu var atrast arī TinyOS Wiki lapā: http://docs.tinyos.net/index.php/TOSSIM#Running_TOSSIM_with_Python )
1. Aizejam uz Blink mapi, izmantojot komandrindu (ceru visi to māk).
2. Kompilējam programmu priekš simulatora ar komandu - make micaz sim (Pagaidām TOSSIM atbalsta tikai micaz motes. Telosb neatbalsta.)
3. Parādās teksta blāķis un beigās iepriecinoša ziņa -
*** Successfully built micaz TOSSIM library.
4. Palaižam Python interpretatoru ar komandu: python Rezultātā iegūstam:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Te tad arī rakstīsim to, ko gribēsim nodebugot.
5. Importējam TOSSIM:
from TOSSIM import *
6. Importēsim sistēmas print out un laikam arī citas fīčas:
import sys
7. Jāizveido mainīgais un tam jāpiešķir TOSSIM:
t = Tossim([])
8. Izveidosim moti un piekurbulēsim to
m = t.getNode(32) m.bootAtTime(242119)
9. Neliels stāsts par debug paziņojumiem - apskatot Blink programmu, var redzēt ka debug rindas ir šādā formā -
dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string());
BlinkC norāda kanālu, pa kuru attiecīgais debug paziņojums nāks ārā Tad seko paziņojuma teksts un paziņojuma datu tips (laikam)
Tātad, lai tiktu pie kaut kādas debug informācijas ir jāpieslēdzas attiecīgajam debug kanālam. Tas ir tāpēc, lai programmai (un visticamāk arī vairākām virtuālajām motēm) varētu būt vairāki debug paziņojumi, par dažādām tēmām - lai nebūtu viss viens milzīgs blāķis ar debug informāciju, ja ir vairākas motes.
9.1. Pievienojam TOSSIM mainīgajam t kanālu ar mums interesējošo debug paziņojumu:
t.addChannel("BlinkC", sys.stdout); (te ar tiek pielietots pirms tam import sys ko veicām)
9.2. Viss ir jauki un varam sākt darbināt moti un skatīties, kā tekstuāli slēdzas lampiņas - to dara pasaucot TOSSIM mainīgajam nākamo eventu (notikumu).
t.runNextEvent()
Te vajadzētu būt paziņojumam 1 vai true, noteikti. Vai būs debug paziņojums ir grūti spriest - varbūt vēl nav noticis tas events, kas iededz lampiņu. Līdz ar to sāk prasīties darbināt kādu ilgāku laiku posmu, ne tikai pa vienam eventam. Vajadzīgs cikls - vienkāršākā variantā:
for i in range (0,10): t.runNextEvent()
Obligāti ir jālieto atkāpe - tas Python nozīmē to pašu ko C++ - {}, pie tam, bez atkāpes nevar iztikt, citādāk skaļi bļauj un nevar saprast kādēļ (te ar parādas pirmā vajadzība zināt Python). Un beigās vēl viens enter vajadzīgs, lai viss tur aizietu, bet to jau sapratīsiet, gan paši.
10. Pats svarīgākais - no Python interpretatora var iziet ar komandu:
exit()
/*------------------------------------------------------------------------*\
Mošu tīklu un sarežģītākas lietas skatīt TinyOS Wiki lapā: http://docs.tinyos.net/index.php/TOSSIM
Piezīme: man pašam kompilēt sanāca tikai Blink programmu. Citas īsti ne.
/*------------------------------------------------------------------------*\
Te ievietošu iepriekš aprakstītās komandrindiņas, lai vismaz import nav jāraksta katru reizi ar roku: (Komandrindā var ievietot ar peles labo pogu (vai copy = ctr+ins, paste = shift+ins), ctr+c/+v nestrādā)
from TOSSIM import * import sys t = Tossim([]) m = t.getNode(32) m.bootAtTime(242119) t.addChannel("BlinkC", sys.stdout); for i in range (0,10): t.runNextEvent()