Pro překlad zdrojových kódů je nutné nainstalovat avr-gcc verze 3.4.3, se staršími verzemi není zaručeno, že překlad bude fungovat.
| Tool | Linux |
| avr-binutils | avr-binutils-2.15tinyos-3.i386.rpm |
| avr-gcc | avr-gcc-3.4.3-1.i386.rpm |
| avr-libc | avr-libc-1.2.3-1.i386.rpm |
| avarice | avarice-2.4-1.i386.rpm |
| insight (avr-gdb) | avr-insight-6.3-1.i386.rpm |
| Tool | Linux | Command |
| NesC | nesc-1.2.4-1.i386.rpm | rpm -Uvh |
| tinyos-tools | tinyos-tools-1.2.1-3.i386.rpm | rpm -ivh --force (1.x tree)rpm -Uvh (no 1.x tree) |
| TinyOS | tinyos-2.0.0beta1-3.noarch.rpm |
TOSROOT=/opt/tinyos-2.x TOSDIR=$TOSROOT/tos CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:. MAKERULES=$TOSROOT/support/make/Makerules
Jazyk nesC obsahuje rozhraní pro komunikaci mezi komponentami. Komunikace probíhá pomocí příkazů a událostí.
/opt/tinyos-2.x/tos/platforms/mica/PlatformLedsC.nc
Vývojová deska mica2 má LED diody vyvedeny na portu A, v našem případě je použit port D.
includes hardware;
configuration PlatformLedsC
{
provides interface GeneralIO as Led0;
provides interface GeneralIO as Led1;
provides interface GeneralIO as Led2;
uses interface Init;
}
implementation
{
components HplAtm128GeneralIOC as IO;
components PlatformP;
Init = PlatformP.LedsInit;
Led0 = IO.PortD0;
Led1 = IO.PortD1;
Led2 = IO.PortD2;
}
BlinkC.nc
Následující zdrojový kód obsahuje modul BlinkC, který používá rozhraní Timer, v <závorkách> definovaná přesnost (datový typ) čítání, dále Leds – ovládání LEDek na vývojové desce a rozhraní Boot, které inicializuje komponenty po nabootování TinyOS.
includes Timer;
module BlinkC
{
uses interface Timer<TMilli> as Timer0;
uses interface Leds;
uses interface Boot;
}
Následuje implementace modulu BlinkC. Po bootu se inicializuje časovač příkazem startPeriodic, který nastaví periodu 1000 ms. Po uběhnutí periody nastane událost fired, která zavolá příkaz led0Toggle() rozhraní Leds.
implementation
{
event void Boot.booted()
{
call Timer0.startPeriodic( 1000 );
}
event void Timer0.fired()
{
call Leds.led0Toggle();
}
}
BlinkAppC.nc
V tomto souboru je realizováno propojení komponent MainC, BlinkC, LedsC
configuration BlinkAppC
{
}
implementation
{
components MainC, BlinkC, LedsC;
components new TimerMilliC() as Timer0;
BlinkC -> MainC.Boot;
BlinkC.Timer0 -> Timer0;
BlinkC.Leds -> LedsC;
}
Překlad zrojového kódu se provádí příkazem make <platforma>, našem případě make mica2. Soubor Makefile obsahuje direktivu COMPONENT=BlinkAppC s definicí souboru s konfigurací, o zbytek se stará univerzální skript
.Nahrání binárního kódu jsem prováděli pomocí:
uisp -dlpt=/dev/ttyS0 -dasa2