html5-img
1 / 44

nesC Programming

nesC Programming. KETI / Ubiquitous Computing Center Jeonghoon Kang budge@keti.re.kr. SN Overview. Sensor Network: Bridge between the internet and the physical world IEEE 802.15.4 (TinyOS, IPv6, ZigBee, SP100, etc). Network Embedded System C. Main.exe. App.c. TinyOS / nesC.

tangia
Télécharger la présentation

nesC Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 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. 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. • 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. • 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). • 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. • From www.wikipedia.org

  6. TinyOS Kernel

  7. 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. 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. 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. File type • Components • Configuration • Module • Interface

  11. Configuration (ex. Blink.nc)

  12. 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. 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. Configuration • Ex. • Top-level configuration

  15. Configuration (ex. Blink.nc)

  16. 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. Module • Ex. • Module • Interface • Command • Event

  18. Module (ex. BlinkM.nc)

  19. Module (ex. BlinkM.nc)

  20. Module (ex. BlinkM.nc)

  21. 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. Interface (ex. Timer.nc)

  23. Interface (ex. StdControl.nc)

  24. Interface • Ex.

  25. Configuration • Ex. • General configuration

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

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

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

  29. Top Configuration Test Main StdControl TestM Leds LedsC

  30. Configuration (Test.nc)

  31. Configuration (Main.nc)

  32. Module (MainM.nc)

  33. Module (TestM.nc)

  34. Module (LedsC.nc)

  35. Module (LedsC.nc)

  36. Module (LedsC.nc)

  37. Module (LedsC.nc)

  38. Module (LedsC.nc)

  39. Interface (Leds.nc)

  40. Interface (Leds.nc)

  41. Interface (Leds.nc)

  42. 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. 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. 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

More Related