tinyos - department of computer sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · +...

58
TinyOS Hands-on Session

Upload: truongcong

Post on 08-Mar-2018

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

TinyOSHands-on Session

Page 2: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Goals1.Install TinyOS2.Layout of tinyos-2.x3.Write two applications

(A) DisseminationDemoClient(B) CollectionsDemoClient

2

Page 3: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Options• LiveCD

– XubunTOS– Customized Ubuntu 8.10 LiveCD

• Native– Linux

– .rpm packages– .deb packages

– Windows: Cygwin + .rpm packages– MacOS X

– stow– macports

3

Recommended

Today

Page 4: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Other Options• VMware

– Jetos– based on JeOS (Ubuntu Server 8.04)– optimized for ssh access– very small: 190MB compressed

– Lenny– based on Debian 5.0 “Lenny”– graphical interface using XFCE– bigger: 300MB compressed

– XubunTOS

4

Page 5: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Components• NesC: nesc_*.deb• Cross compiler

– binutils: msp430-binutils-tinyos_*.deb– gcc: msp430-gcc-tinyos_*.deb– libc: msp430-libc-tinyos_*.deb– gdb (optional)

• Deputy: deputy-tinyos_*.deb

5

Page 6: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Environment

6

export TOSROOT=$HOME/local/src/tinyos-2.xexport TOSDIR=$TOSROOT/tos

export MAKERULES=$TOSROOT/support/make/Makerules

export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.export PYTHONPATH=$TOSROOT/support/sdk/python

Page 7: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Architectures• AVR

– mica2, mica2dot– micaz– btnode– IRIS

• ARM– imote2

• MSP430– telosb, sky– shimmer– eyesIFX– tinynode– epic

• 8051– CC2430– CC1110/CC1111

7

Page 8: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

8

+ tinyos-2.x + apps + docs + support + tools + tos

Page 9: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

9

+ apps + Blink + Null + RadioCountToLeds + MultihopOscilloscope + tests + ... + ...+ docs+ support+ tools+ tos

Page 10: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

10

+ apps+ docs + html + pdf + txt + ...+ support+ tools+ tos

Page 11: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

11

+ apps+ docs+ support + make - Makerules + avr/ + msp/ + ... + sdk+ tools+ tos

Page 12: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

12

+ apps+ docs+ support + make + sdk + c + cpp + java + python+ tools+ tos

Page 13: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

13

+ support + sdk + c + blip + sf + cpp + sf + java - tinyos.jar + python + tinyos - tos.py

Page 14: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

14

+ apps+ docs+ support+ tools+ tos + chips + interfaces + lib + platforms + sensorboards + systems + types

Page 15: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

15

+ tos + chips + atm128 + msp430 + pxa27x + cc2420 + cc1000 + at45db + stm25p + sht11 + ...

Page 16: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

16

+ tos + chips + interfaces - Boot.nc - SplitControl.nc - StdControl.nc - ... + lib + platforms + sensorboards + systems + types

Page 17: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

17

+ tos + lib + net + printf + timer + tosthreads + serial - SerialActiveMessageC.nc - SerialAMSenderC.nc - SerialAMReceiverC.nc - ... + ...

Page 18: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

18

+ tos + lib + net + ctp + 4bitle + drip + Deluge + dip + blip + ...

Page 19: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

19

+ tos + systems - AMReceiverC.nc - AMSenderC.nc - MainC.nc - LedsC.nc - TimerMilliC.nc - ...

Page 20: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Layout

20

+ tos + chips + interfaces + lib + platforms + sensorboards + systems + types - TinyError.h - messssage.h - ...

Page 21: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Applications

DisseminationDemoCollectionDemo

Page 22: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemo

22

Page 23: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemo• DisseminationDemoClient

– start the radio– start Drip– when a new value is received print its contents

• DisseminationDemoServer– start the radio– start Drip– start a periodic timer– on each firing or the timer increment a counter and

disseminate it

23

Page 24: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemoClient

24

MainC ActiveMessageC DisseminationC DisseminatorC

DisseminationDemoClientC

Boot SplitControl StdControl DisseminationValue<nx_uint32_t>

Page 25: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemoClient

• Interfaces– Boot– StdControl– SplitControl– DisseminationValue<t>

• Components– MainC– ActiveMessageC– DisseminationC– DisseminatorC

25

Page 26: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/interfaces/Boot.nc

26

interface Boot { event void booted();}

Page 27: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/interfaces/StdControl.nc

27

interface StdControl{ command error_t start(); command error_t stop();}

Page 28: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/interfaces/SplitControl.nc

28

interface SplitControl{ command error_t start(); event void startDone(error_t error);

command error_t stop(); event void stopDone(error_t error);}

Page 29: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/lib/net/DisseminationValue.nc

29

interface DisseminationValue<t> { command const t* get(); command void set(const t*); event void changed();}

Page 30: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/system/MainC.nc

30

configuration MainC { provides interface Boot; uses interface Init as SoftwareInit;}

implementation { ...}

Page 31: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/platforms/telosa/ActiveMessageC.nc

31

configuration ActiveMessageC { provides { interface SplitControl; ... }}

implementation { ...}

Page 32: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/lib/net/drip/DisseminationC.nc

32

configuration DisseminationC { provides interface StdControl;}

implementation { ...}

Page 33: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/lib/net/drip/DisseminatorC.nc

33

generic configuration DisseminatorC(typedef t, uint16_t key) { provides interface DisseminationValue<t>; provides interface DisseminationUpdate<t>;}

implementation { ...}

Page 34: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Makefile

34

COMPONENT=DisseminationDemoClientAppC

CFLAGS += -I%T/lib/netCFLAGS += -I%T/lib/net/dripCFLAGS += -I%T/lib/printf

include $(MAKERULES)

Page 35: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Commands

35

$ make telosb

$ make telosb install,42

$ tos-dump.py serial@/dev/ttyUSB0:115200

Page 36: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Summary

36

tos/interfaces/Boot.nctos/interfaces/StdControl.nctos/interfaces/SplitControl.nc

tos/system/MainC.nctos/platforms/telosa/ActiveMessageC.nctos/lib/net/drip/DisseminationC.nctos/lib/net/drip/DisseminatorC.nc

Page 37: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemoClientAppC.nc

configuration DisseminationDemoClientAppC { }

implementation

{ components MainC;

components DisseminationC; components new DisseminatorC(nx_uint32_t, 2009); components DisseminationDemoClientC;

components ActiveMessageC;

DisseminationDemoClientC.Boot -> MainC; DisseminationDemoClientC.DisseminationStdControl -> DisseminationC; DisseminationDemoClientC.DisseminationValue -> DisseminatorC;

DisseminationDemoClientC.RadioSplitControl -> ActiveMessageC;}

37

Page 38: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemoClientC.nc

module DisseminationDemoClientC{ uses { interface Boot; interface DisseminationValue<nx_uint32_t>; interface StdControl as DisseminationStdControl; interface SplitControl as RadioSplitControl; }}

implementation{ nx_uint32_t counter;

event void Boot.booted() { call RadioSplitControl.start(); }

...

}

38

Page 39: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

DisseminationDemoClientC.nc

module DisseminationDemoClientC{ ...}

implementation{

...

event void RadioSplitControl.startDone(error_t error) { call DisseminationStdControl.start(); }

event void DisseminationValue.changed() { printf("R: %lu\n", *(call DisseminationValue.get())); printfflush(); }

event void RadioSplitControl.stopDone(error_t error) { }}

39

Page 41: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemo

41

Page 42: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemo• CollectionDemoClient

– start the radio– start CTP– start a periodic timer– on each firing or the timer increment a counter and

sent it over CTP• CollectionDemoServer

– start the radio– start CTP– when a new value is received print its contents

42

Page 43: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClient

43

MainC ActiveMessageC CollectionC CollectionSenderC

CollectionDemoClientC

Boot SplitControl StdControl Send

TimerMilliC

Timer<TMilli>

Page 44: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClient

• Interfaces– Boot– StdControl– SplitControl– Send– Timer<TMilli>

• Components– MainC– ActiveMessageC– CollectionC– CollectionSenderC– TimerMilliC

44

Page 45: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClient

• Interfaces– Boot– StdControl– SplitControl– Send– Timer<TMilli>

• Components– MainC– ActiveMessageC– CollectionC– CollectionSenderC– TimerMilliC

45

Page 46: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/interfaces/Send.nc

46

interface Send { command error_t send(message_t* msg, uint8_t len); event void sendDone(message_t* msg, error_t error); command uint8_t maxPayloadLength(); command void* getPayload(message_t* msg, uint8_t len);

command error_t cancel(message_t* msg);}

Page 47: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/lib/net/ctp/CollectionC.nc

47

configuration CollectionC { provides { interface StdControl; ... }}

implementation { ...}

Page 48: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/lib/net/ctp/CollectionSenderC.nc

48

generic configurationCollectionSenderC(collection_id_t collectid) { provides { interface Send; interface Packet; }}

implementation { ...}

Page 49: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

tos/system/TimerMilliC.nc

49

generic configuration TimerMilliC() { provides interface Timer<TMilli>;}

implementation { ...}

Page 50: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Makefile

50

COMPONENT=CollectionDemoClientAppC

CFLAGS += -I%T/lib/netCFLAGS += -I%T/lib/net/ctpCFLAGS += -I%T/lib/net/4bitleCFLAGS += -I%T/lib/printf

include $(MAKERULES)

Page 51: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

Summary

51

tos/interfaces/Boot.nctos/interfaces/StdControl.nctos/interfaces/SplitControl.nctos/interfaces/Send.nctos/lib/timer/Timer.nc

tos/system/MainC.nctos/system/TimerMilliC.nctos/platforms/telosa/ActiveMessageC.nctos/lib/net/ctp/CollectionC.nctos/lib/net/ctp/CollectionSenderC.nc

Page 52: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClientAppC.nc

configuration CollectionDemoClientAppC { }

implementation

{ components MainC;

components ActiveMessageC; components CollectionC; components new CollectionSenderC(16);

components new TimerMilliC() as Timer; components CollectionDemoClientC;

CollectionDemoClientC.Boot -> MainC; CollectionDemoClientC.RadioSplitControl -> ActiveMessageC;

CollectionDemoClientC.CollectionStdControl -> CollectionC; CollectionDemoClientC.Send -> CollectionSenderC;

CollectionDemoClientC.Timer -> Timer;}

52

Page 53: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClientC.nc

module CollectionDemoClientC{ uses { interface Boot; interface SplitControl as RadioSplitControl; interface StdControl as CollectionStdControl; interface Send; interface Timer<TMilli>; }}

implementation{ message_t smsg;

typedef nx_struct { nx_uint8_t string[8]; nx_uint16_t counter; } name_t; name_t *name;

...}

53

Page 54: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClientC.nc

module CollectionDemoClientC{ ...}

implementation{

...

event void Boot.booted() { name = call Send.getPayload(&smsg, sizeof(name_t)); strcpy((char*)name->string, "name"); name->counter = 0; call RadioSplitControl.start(); }

...

}

54

Page 55: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClientC.nc

module CollectionDemoClientC{ ...}

implementation{

...

event void RadioSplitControl.startDone(error_t error) { call CollectionStdControl.start(); call Timer.startPeriodic(1024); }

...

}

55

Page 56: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

CollectionDemoClientC.nc

module CollectionDemoClientC{ ...}

implementation{

...

event void Timer.fired() { error_t error; name->counter++; error = call Send.send(&smsg, sizeof(name_t)); printf("S: %d %d\n", name->counter, error); printfflush(); }

event void Send.sendDone(message_t* msg, error_t error) { } event void RadioSplitControl.stopDone(error_t error) { }}

56

Page 58: TinyOS - Department of Computer Sciencecs.jhu.edu/~razvanm/wsn/tos-tutorial-hands-on.pdf · + python + tinyos - tos.py. Layout 14 + apps + docs + support + tools + tos + chips + interfaces

The End.

58