Presentation is loading. Please wait.

Presentation is loading. Please wait.

@ nesC Programming KETI / Ubiquitous Computing Center Jeonghoon Kang

Similar presentations


Presentation on theme: "@ nesC Programming KETI / Ubiquitous Computing Center Jeonghoon Kang"— Presentation transcript:

1 @ nesC Programming KETI / Ubiquitous Computing Center Jeonghoon Kang budge@keti.re.kr

2 1 SN Overview Sensor Network: Bridge between the internet and the physical world IEEE 802.15.4 (TinyOS, IPv6, ZigBee, SP100, etc)

3 2 Network Embedded System C App.c Main.exe

4 3 TinyOS / nesC 2-Level Structure Command (Bottom direction) Non-time critical Long running operations Cannot preempt & can be preempted Background computation Events (Top direction) Time critical Small running operations Cannot be preempted Able to interrupt running Tasks

5 4 Preemption Pre-emption as used with respect to operating systems means the ability of the operating system to preempt or stop a currently scheduled task in favour of a higher priority task. The scheduling may be one of, but not limited to, process or I/O scheduling etc.operating systemsprocess or I/O scheduling Non-preemptability arises, for instance, when handling an interrupt. In this case, scheduling is avoided until the interrupt is handled. Making a scheduler preemptible has the advantage of better system responsiveness and scalability.interrupt scheduler The schedulers used in most modern operating systems, such as various flavours of Unix, can preempt user processes. This is called preemptive multitasking, and is in contrast to cooperative multitasking wherein a process "gives away" its time by utilizing kernel resources or by specifically calling a kernel routine to allow other processes time to run. Some operating systems' schedulers (including Linux as of the 2.6 series) have the ability to preempt a process while it is processing a system call as well (a preemptible kernel).Unixpreemptive multitaskingcooperative multitaskingLinux system call Linux, Unix, *BSD, Mac OS X, and Windows NT are all examples of operating systems that utilize preemptive multitasking; Netware, Windows for Workgroups, and Macintosh System 9 are all examples of cooperative multitasking operating systems.Mac OS XWindows NTNetware Windows for Workgroups From www.wikipedia.org

6 5 TinyOS Kernel

7 6 nesC Overview [nes-si:] Network Embedded System C Language Supports TinyOS Make applications for Network Embedded system No dynamic memory allocation Extension of C programming language Efficient code for micro-controllers Able to interact with old C code Many C Programmer C is little helpful for safe code & structuring applications

8 7 nesC Application Components + Interface *.nc Component: Module Configuration Static No dynamic memory No function pointers Programming ( ATmega128L ) In flash memory(128K, 40K, 60K) In SRAM(4K) In EEPROM(4K)

9 8 nesC Structure Module oooM.nc Code file Configuration ooo.nc/oooC.nc Wiring of components Define wiring of Modules Interfaces ooo.nc Contains only definition Commands/Events

10 9 File type Components Configuration Module Interface

11 10 Configuration (ex. Blink.nc)

12 11 Basic Concept Component Configuration Module Provides Uses Interface Command Event Task Post Keep in mind (Interface file defines Command / Event) Command is implemented on Providing Component Event is implemented on Using Component

13 12 Basic Concept: Configuration Syntax File name: Top-level configuration: ooo.nc (in each application) General configuration: oooC.nc Wire only 2 components together at a time Using with ‘  ’ and ‘=’

14 13 Configuration Ex. Top-level configuration

15 14 Configuration (ex. Blink.nc)

16 15 Basic Concept: Module Syntax Name File: oooM.nc Interface.command(or event) Command Implement in all the ‘provides’ interfaces Prefixed with ‘call’ Event Implement in all the ‘uses’ interfaces Prefixed with ‘signal’

17 16 Module Ex. Module Interface Command Event

18 17 Module (ex. BlinkM.nc)

19 18 Module (ex. BlinkM.nc)

20 19 Module (ex. BlinkM.nc)

21 20 Basic Concept: Interface File name: ooo.nc Bi-directional Provider & User No actual code or wiring Declare commands and events Provider Module: Implement all commands User Module: call command & Implement all events Parameterized Interfaces Ex.

22 21 Interface (ex. Timer.nc)

23 22 Interface (ex. StdControl.nc)

24 23 Interface Ex.

25 24 Configuration Ex. General configuration

26 25 Wiring Syntax Ex. End-point1  End-point2 End-point1  End-point2 End-point1=End-point2

27 26 Task Ex. Task can be posted in command, event and task task void taskname() {………} Post taskname();

28 27 Sample nesC Application (Kmote0) 전원 On  부팅  Led On Basic Application Component Main.nc, LedsC.nc Test.nc, TestM.nc Interface StdControl.nc, Leds.nc

29 28 Top Configuration Main TestM LedsC StdControl Leds Test

30 29 Configuration (Test.nc)

31 30 Configuration (Main.nc)

32 31 Module (MainM.nc)

33 32 Module (TestM.nc)

34 33 Module (LedsC.nc)

35 34 Module (LedsC.nc)

36 35 Module (LedsC.nc)

37 36 Module (LedsC.nc)

38 37 Module (LedsC.nc)

39 38 Interface (Leds.nc)

40 39 Interface (Leds.nc)

41 40 Interface (Leds.nc)

42 41 Compile Environment cd /opt/tinyos-1.x/apps/Blink make telosb make telosb install(or reinstall) Make telosb reinstall.1 bsl,/dev/ttyUSB0 1 : node ID bsl : fusing method Important Environment Variables (so tough for newbie) nesC make TOSDIR TOSROOT MAKERULES PATH Java CLASSPATH Check env | grep TOS

43 42 VMPlayer on Windows XP, Vista Easy set-up all the Development Environment for TinyOS-1.x / TinyOS-2.x All set previously on Windows Check for the VM image file : www.tinyosmall.co.kr http://www.tinyosmall.co.kr/shop/shopdetail.html?brandcode=016002000001&search =&sort=brandname

44 43 References The nesC Language: A Holistic Approach to Networked Embedded Systems nesC 1.1 Language Reference Manual http://nescc.sourceforge.net TinyOS Programming Manual http://www.tinyos.net/tinyos- 2.x/doc/pdf/tinyos-programming.pdf


Download ppt "@ nesC Programming KETI / Ubiquitous Computing Center Jeonghoon Kang"

Similar presentations


Ads by Google