Presentation is loading. Please wait.

Presentation is loading. Please wait.

HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 TinyOS & NesC.

Similar presentations


Presentation on theme: "HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 TinyOS & NesC."— Presentation transcript:

1 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 TinyOS & NesC

2 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 2 TinyOS

3 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 3 TinyOS TinyOS (TOS) = OS image runable on atmega128 event-driven structure Single stack TinyOS Limitation –No Kernel –No Dynamic Memory Management –No use of virtual memeory Simple FIFO scheduler implemented in the Main Component

4 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 4 TinyOS Directory /opt/tinyos-1.x TinyOS folder

5 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 5 NesC

6 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 6 Component Model Language NesC charateristics –Component Model Language composes several blocked components into a executable module by wiring each component at compile time –The purpose of NesC is to generate small size code only for the targeted sensor application. –Syntax is similar to C but some differences NesC features type component developement easier than C - component wiring Code size very small – optimal for tiny embedded devices limitation No Dynamic Memory

7 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 7 NesC Terms. NesC terms Application A single program running on the sensor board Component Component – basic block of NesC; configuration & module Interface - Interface provided to connect to components. Each com,ponent can use multiple interfaces. By usinh the interface, “command” & “message” are handled. Wiring is connecting two components. Configuration – Declare a new component and built-in components and describing wiring methods (use or provide). Module – Implementing part using components

8 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 8 Component Component interface: –Function implementation –Function Call –Response handling by event triggers –Event triggering Component consists –Definition of Interface –Configuration –Module

9 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 9 Interface –Provided & used by component. –Interface is defined with command & event CommandEvent Command is an implementable function in module. It is called by ‘call' command. Event to use must be implemented in a upper component. It is useful when it passes information(event). It is called by ‘signal’ command.

10 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 10 Interface Example Description Example (Timer.nc) interface identifier { command result_t function_name prototype event result_t function_name prototype } interface Timer { command result_t start (char type, uint32_t interval); command result_t stop (); event result_t fired (); }

11 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 11 Command - Call Command –C’s function –Inner component call by command –Must be declared in interface Call by “Call” command –call Timer.stop()

12 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 12 Event - Signal Event –Call by “Signal” command signal Timer.fired();

13 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 13 Component – configuration Configuration File –Configuration describes components to provide and use components configuration identifier { *identifier : the name of component provides { interface interface_name1 } implementation { components identifierM, com1, com2... interface_name1 = identifierM.interface_name1 identifierM.interface_name2 -> com1.interface_name3 com1.interface_name3 <- identifierM.interface_name2 }

14 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 14 Wiring between Components Wiring:, = –Interface 1 = interface 2 Same interface –Interface1 ‐ > interface2 Used at interface1, implemented at interface2 –Interface1 interface1 (same) Once wired, “command, event & interface” are available.

15 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 15 Configuration Example Example (TimerC.nc) configuration TimerC { provides {... interface Timer; } implementation { components TimerM, ClockC,... ;... TimerM.Clock -> ClockC.Clock;... }

16 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 16 Component - module Module –Module examples (both are OK) module identifier { provides { interface a; interface b; } uses { interface x; interface y; } } implementation {... } module identifier { provides interface a; provides interface b; uses interface x; uses interface y; } implementation {... }

17 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 17 Module Example Example (TimerM.nc) module TimerM { provides { interface StdControl; interface Timer; } uses interface Clock; } implementation { command result_t Timer.start( … ) {... } command result_t Timer.stop() {... } event void Clock.tick() {... } }

18 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 18 Task & Event Scheduling –2-level scheduling (events and tasks) –single shared stack, used by events and function calls Task: –Preemptive for event –Function call –Signal 을 발생 –Non-Preemptive with other tasks Event – process for interrupt handling INTERRUPT(_output_compare2_)() { // Hardware Timer Event Handler TOS_SIGNAL_EVENT(CLOCK_FIRE_EVENT)(); // Software event … }

19 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 19 async,atomic async –The task runs asynchronously atomic –Global variable for handling race condition problem atomic { sharedvar = sharedvar+1; }

20 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 20 Tinyos Directory /opt/tinyos-1.x /apps /contrib /zigbex /tools /tos interfaces system flatform sensorboards lib types Driver and app. examples Java & make platform interfaces Hw related common components Components for platdorm Components for sensor board Lib. TinyOS’s MSG headers

21 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 21 NesC Programming

22 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 22 nesC Programming application: configuration comp1: module comp3 comp4 comp2: configuration Components: –Consists - module: C lang. -configuration: select and wire –interfaces -provides interface -uses interface

23 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 23 nesC Programming Types of Component: –configuration: connection with using components –module: implement “interface operation “ and “event handler “

24 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 24 nesC Programming Configuration’s wiring: Configuration examples: C1 C2 C3 C2 C3 configuration app { } implementation { components c1, c2, c3; c1 -> c2; c2.out -> c3.triangle; c3 <- c2.side; } component c2c3 { provides interface triangle t1; } implementation { components c2, c3; t1 -> c2.in; c2.out -> c3.triangle; c3 <- c2.side; }

25 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 25 nesC Programming Language modules: module C1 { uses interface triangle; } implementation {... } module C2 { provides interface triangle in; uses { interface triangle out; interface rectangle side; } } implementation {... } module C3 { provides interface triangle; provides interface rectangle; } implementation {... } C1 C2 C3

26 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 26 nesC Blink example blink.nc (configuration) configuration Blink { }implementation { components Main, BlinkM, TimerC, LedsC; Main.StdControl -> TimerC.StdControl; Main.StdControl -> BlinkM.StdControl; BlinkM.Timer -> TimerC.Timer[unique("Timer")]; BlinkM.Leds -> LedsC; }

27 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 27 nesC Blink example blinkM.nc (module) module BlinkM { provides { interface StdControl; } uses { interface Timer as Timer; interface Leds; } } implementation { command result_t StdControl.init() { call Leds.init(); return SUCCESS;} command result_t StdControl.start() { call Timer.start(TIMER_REPEAT, 1000); return SUCCESS; } command result_t StdControl.stop() { call Timer.stop(); return SUCCESS; } event result_t Timer.fired() { call Leds.redToggle(); return SUCCESS; }

28 HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 2015-10-25 28 BlinkM LedsC module BlinkM{ provides { interface StdControl; } uses { interface Timer as Timer; interface Leds; } }implementation { command result_t StdControl.init() { call Leds.init(); return SUCCESS; } command result_t StdControl.start() { call Timer.start(TIMER_REPEAT, 1000); return SUCCESS; } StdControl.stop() { call Timer.stop(); return SUCCESS; } event result_t Timer.fired() { call Leds.redToggle(); return SUCCESS; } } module LedsC { provides interface Leds; } implementation{ uint8_t ledsOn; enum { RED_BIT = 1, GREEN_BIT = 2, YELLOW_BIT = 4 }; async command result_t Leds.init() { … return SUCCESS; } async command result_t Leds.redOn() { … } async command result_t Leds.redOff() { … } async command result_t Leds.redToggle() { … } …. async command uint8_t Leds.get() { … } async command result_t Leds.set(uint8_t ledsNum) { … } }


Download ppt "HANBACK ELECTRONICS CO., LTD. 저자권 보호됨 TinyOS & NesC."

Similar presentations


Ads by Google