Presentation is loading. Please wait.

Presentation is loading. Please wait.

6LoWPAN: The Wireless Embedded Internet Companion Exercise Slides

Similar presentations


Presentation on theme: "6LoWPAN: The Wireless Embedded Internet Companion Exercise Slides"— Presentation transcript:

1 6LoWPAN: The Wireless Embedded Internet Companion Exercise Slides
Zach Shelby, Martti Huttunen This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. To view a copy of this license, visit or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA Figures on slides with book symbol from 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann, ISBN: , (c) 2009 John Wiley & Sons Ltd

2 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
The Book 6LoWPAN: The Wireless Embedded Internet by Zach Shelby, Carsten Bormann Length: 254 pages Publisher: John Wiley & Sons Companion web-site with blog, full companion course slides and exercises v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

3 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Outline Introduction Embedded Devices Operating Systems Embedded Development 6LoWPAN Implementation Issues Exercise Hardware Contiki & uIP Exercises v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

4 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Introduction v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

5 Embedded Meets Wireless
Microcontrollers are everywhere in embedded systems appliances, watches, toys, cameras, industrial control, mobile phones, sensors, cars, automation Microcontroller vs. microprocessor market 15 x more microcontroller units sold yearly (8 billion) 20 billion vs 43 billion USD market by 2009 Possibilities of wireless are endless chips to 150 million unit sales by 2009 Embedded systems have special characteristics Academic community very computer science and protocol driven, often ignoring Physical layer realities Embedded system operation Real-time capabilities v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

6 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Embedded Devices v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

7 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Device Architecture Microcontroller and program code Power supply Power management Renewable energy? Memory (RAM, FLASH) Sensors Actuators Communication Input/output Part of a larger system? v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

8 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Microcontroller Main processing units of embedded devices Special purpose and highly integrated Integrated RAM, ROM, I/O, peripherals Extremely good power to performance ratio Cheap, typically USD Executes programs including embedded system control, measurement & communications Usually time-critical requiring guarantees Real-time performance a common requirement Pre-emptive scheduled tasks Queues and semaphores Higher powered ARM and Xscale processors are blurring the boundry between uC and CPU. They still integrate lots of peripherals, but tend to have an MMU and run almost full OS. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

9 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Example: MSP430 Texas Instruments mixed-signal uC 16-bit RISC ROM: 1-60 kB RAM: Up to 10 kB Analogue 12 bit ADC & DAC LCD driver Digital USART x 2 DMA controller Timers v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

10 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Example: Atmel AVR Atmel AVR family 8-bit RISC RAM: Up to 4 kB ROM: Up to 128 kB Analogue ADC PWM Digital USARTs Timers v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

11 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Memory Random access memory (RAM) Included on-board in microcontrollers Often the most valuable resource Read-only memory (ROM) Usually actually implemented with NOR flash memory Flash Eraseable programmable memory Can be read/written in blocks Slow during the write process Consumes power of course! External memory External memory supported by some microcontrollers Serial flash always supported Flash memory of NOR and NAND type. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

12 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Common Bus Interfaces Digital and analogue I/O Accessed by port and pin number (e.g. P1.3) Some pins are also connected to interrupts UART Asynchronous serial bus After level translation it is an RS232 bus Usually kbps up to 1 mbps SPI (serial peripheral interface) Synchronous serial bus Reliable with speeds of several Mbps I2C (inter-integrated circuit) bus 2-wire bus with data and clock Parallel bus Implemented with X-bit width X-bit address and clock signals Last slide on uC issues. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

13 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Communications Embedded devices are autonomous but most often part of a larger system Thus communications interfaces are very important in the embedded world Wired interfaces Serial: RS232, RS485 LAN: Ethernet Industrial: Modbus, Profibus, Lontalk, CAN Wireless interfaces Low-power: IEEE (ZigBee, ISA100, Wireless HART) WLAN: WiFi WAN: GPRS, WiMax v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

14 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Transceivers Modern embedded communications chips are transceivers: they combine half-duplex transmission and reception. Transceivers integrate varying functionality, from a bare analogue interface to the whole digital baseband and key MAC functions. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

15 Important Characteristics
Level of digital integration Power consumption and efficiency Transition speeds and consumption Levels of sleep Carrier frequency and data rate Modulation Error coding capabilities Noise figure and receiver sensitivity Received signal strength indicator (RSSI) Support for upper layers Data and control interface characteristics v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

16 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Example: RFM TR1000 Proprietary radio at 916 MHz OOK and ASK modulation 30 kbps (OOK) or kbps (ASK) operation Signal strength indicator Provides bit interface Not included: Synchronization Framing Encoding Decoding v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

17 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Example: CC2420 IEEE compliant radio 2.4 GHz band using DSSS at 250 kbps Integrated voltage regulator Integrated digital baseband and MAC functions Clear channel assessment Energy detection (RSSI) Synchronization Framing Encryption/authentication Retransmission (CSMA) v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

18 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Example: CC2430 System-on-a-chip solution Integrated 8051 microcontroller 32 MHz Clock Speed ADC, DAC, IOs, 2 UARTs etc. 8 kB of RAM, up to 128 kB of ROM Integrated IEEE radio, like the CC2420 Power consumption mA higher than the CC2420, coming from the 8051 microcontroller Saves cost, only about 1 EUR more expensive than the CC2420 Internal DMA makes radio and UART performance better than with a uC + CC2420 solution v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

19 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Power Consumption Radio power consumption critical to consider Power output level Limited savings effect Optimal power difficult Must be considered globally Transition times Each transition costs Power equal to RX mode Should be accounted for v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

20 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Power Consumption A simple approximation for power consumption: = Time that takes to go from sleep state to awake state = Transmitter setup time, i.e. time it takes for the transmitter to be ready = Time in the Tx state = Receiver setup time, i.e. time it takes for the receiver to be ready = Time in the Rx state = Time in the idle state = Time in the sleep state = Average number of times per frame that the transmitter is used = Average number of times per frame that the receiver is used = Duration of the time frame = Power used in the Tx state = Power used in the Rx state = Power used in the idle state = Power used in the sleep state = Average power used by the transceiver v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

21 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Sensors & Actuators Sensors measure real-world phenomena and convert them to electrical form Analogue sensors require an ADC Digital sensors use e.g. I2C or SPI interfaces Human interface can also be a sensor (button) IEEE 1451 standard becoming important Defines standard interfaces and auto-configuration Also some protocol specifications Actuators convert an electrical signal to some action Analogue and digital interfaces both common A motor servo is a good example v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

22 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Operating Systems v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

23 Real-time Operating Systems
Library vs. operating system Operating system manages all resources Embedded systems have pre-defined tasks Designed to optimize size, cost, efficiency etc. Real-time Real-time OS provides tools to meet deadlines Pre-emptive, queues, semaphores Concurrency Execution flows (tasks) able to run simultaneously Threads and processes Sockets and APIs v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

24 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Real-time Issues Wireless embedded systems usually are real-time Watch, robot, building sensor, control node A RTOS only facilitates real-time system creation Still requires correct software development RTOS is not necessarily high performance Can meet general system deadlines (soft real-time) or deterministically (hard real-time) Deadlines can be met using Specialized pre-emptive scheduling algorithms Proper inter-task design & communication Semaphores and queues to avoid racing v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

25 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Real-time Issues v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

26 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Concurrency Concurrency occurs when two or more execution flows run simultaneously It introduces many problems such as Race conditions from shared resources Deadlock and starvation OS needs to coordinate between tasks Data exchange, memory, execution, resources There are two main techniques Process based CPU time split between execution tasks Embedded systems typically use lighter threads Event based v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

27 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Concurrency Process based Event based v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

28 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
OS Examples Example embedded operating systems Contiki ( FreeRTOS ( TinyOS ( and thousands of others... For higher powered MCUs (e.g. ARMs) VX Works Microcontroller Linux (Android, Maemo etc.) Windows CE Symbian v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

29 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Embedded Development v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

30 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Embedded Development Objects Binary Compiler Linker Programmer Sources v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

31 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Embedded Development Software resides in system non-volatile memory External or internal flash/eeprom/prom memories Modern microcontrollers are capable of writing the internal flash memory run-time and often do not have an external memory bus Development is done outside the system Cross-compilers are used to create binary files Cross-compiler creates binary files for a different architecture than it is running on Various commercial and free compilers available System is programmed by uploading the binary In-system programming tools or external flashers v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 31

32 Cross-compiler Environments
Integrated development environments (IDEs)‏ Commercial compilers are usually of this type Usually dependent on a specific OS (Windows)‏ Integrate a text editor, compiler tools and project management along with C library System programmer tool usually tightly integrated Also open-source IDEs available Open-source IDEs usually employ “plugin” architecture General-purpose extensible environments Include scripting tools for running any command line tools: compilers, linkers, external editors and programmers Example: Eclipse (implemented in Java) v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 32

33 Cross-compiler Environments
Command line utilities Separate compiler/linker, editor and project management tools, architecture-dependent C library Project management: make make is an automated software building tool Based on target-dependency-operation style blocks Allows use of project templates and separate platform build rules by using “include files” Most common way of managing open-source software projects automake and autoconf tools extend functionality to platform-independent software development v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 33

34 Cross-compiler Environments
Command line compilers most common is gcc: available for a multitude of microcontroller and -processor architectures sdcc: Small Device C Compiler: PICs, 8051's etc. single-architecture compilers System programming tools usually specific to a single microcontroller family vary greatly in their ease of use and interface type most require some sort of programming cable or a programmer device to upload software dependent on the microcontroller programming algorithm standard buses (SPI, UART, JTAG) vs. proprietary buses v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 34

35 Cross-compiler Environments
Command-line tools vs. (commercial) IDEs IDEs are easily accessible: single installer, single GUI Commercial IDEs vary greatly in usability, standards compliance and are (usually) tied to a single architecture -> bad portability Most commercial IDEs don't really support templates Programmer must go through various dialogs to create a new project Often project files can not just be copied (contain directory paths and such) and may be binary format Command line tools have a steeper learning curve Once learned, applicable to most architectures Higher flexibility and ease of duplicating projects v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 35

36 Cross-compiler Issues
Portability Header files may not follow standard naming Hardware-specific header files might not be automatically selected Most commercial IDEs use different names for each different hardware model -> difficulties in portability gcc e.g. uses internal macros for model selection -> easier portability via environment variables, no header changes Hardware register access and interrupt handlers Interrupt handler declaration is compiler-dependent Declaration format is not standardized Can be worked around via macros (in most cases)‏ Some compilers (and C libraries) require I/O macros gcc ports implement direct register access modes v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 36

37 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Open-source Tools Various text editors available: nedit, emacs, vi ... Project build system: make Compilers/linkers: binutils & gcc, sdcc binutils: as, ld, objcopy, size etc. gcc: c compiler; uses binutils to create binary files Standard C libraries Provide necessary development headers and object files for linking and memory mapping msp430-libc for MSP430, avr-libc for AVR Programmers AVR: uisp, avrdude MSP430: msp430-bsl, msp430-jtag CC2430: nano_programmer IDE: Eclipse v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 37

38 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
SDCC Compiler Simple Device C Compiler Specialized in 8051, PIC, HC08 etc. microcontrollers Has CC2430 and CC2510 support sdcc application handles both compilation and linking Uses make build environment Compatible with Eclipse Support for banking (needed in 8051 with 64k+ ROM) Thanks to Peter Kuhar for banking support v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

39 6LoWPAN Implementation Issues
v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

40 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Chip Models How to integrate 6LoPWAN into an embedded device? Challenges: Lack of standard interfaces (no USB or PCMCIA) No standard operating systems (if any!) Power consumption limitations Price limitations Models for integrating 6LoWPAN include SoC, two-chip or network processor System-on-a-chip model Everything on one chip + Maximum integration + Minimum price and size - Longer, more difficult development - Little if any portability v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

41 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Chip Models Two-chip solution Separate radio transceiver + Free choice of uC + More portability - More expensive - App integration with stack Network processor solution Network stack on the radio + Application independent of the stack + Easy integration v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

42 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki uIPv6 Popular embedded OS for small microcontrollers MSP430, AVR, PIC, 8051 etc. Standard C-based Portable applications Lightweight protothreads uIPv6 Stack Full IPv6 support RFC lowpan-hc UDP, TCP, ICMPv6 Great for research v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

43 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
NanoStack 2.0 Sensinode’s commercial 6LoWPAN stack Network processor model NAP interface over UART Optimized for SoC radios TI CC2430, CC2530 TI CC1110 Portable IPv6/6LoWPAN stack UDP, ICMPv6 RFC4944, 6lowpan-hc 6lowpan-nd NanoMesh IP routing v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

44 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Router Integration Edge Routers interconnect the IPv6 world and 6LoWPAN An ER needs to implement: 6LoWPAN interface(s) 6LoWPAN adaptation Simple 6LoWPAN-ND A full IPv6 protocol stack Other typical features include: IPv4 support and tunneling Application proxy techniques Extended LoWPAN support A firewall Management v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

45 Example Exercise Hardware
v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

46 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Exercise Hardware NanoRouter USB 2.4GHz Serial USB device NanoStack 2.0 High-power amplifier NanoSensor 2.4GHz Demo sensor node Rechargeable batteries 3-axis accelerometer Light sensor D-connector for external sensors Support for either NanoStack or Contiki v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

47 NanoSensor D-connector
Standard 9-pin D-connector for sensor expansion D-connector pin-out: 1 = 3.3V in/out 2 = Digital I/O or programmer connection 3 = Analog switch control. 1=external I/O in use 4 = Reset 5 = Ground 6 = A/D (Digital I/O). P0_0 7 = Digital I/O (P2_1) or programming connection 8 = UART out (from RC module) 9 = UART in (to RC module) v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

48 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

49 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
What is Contiki? Contiki is an open-source operating system/protocol stack for embedded systems Highly portable and reasonably compact Protocol stack configuration customizable Originally created by Adam Dunkels, developer of the uIP stack v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

50 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki processes Contiki core is event-driven Interrupts and HW drivers generate events Events are dispatched to event handlers by the Contiki core Event handlers must return control to core as soon as possible Co-operative multitasking Basic processes are implemented using protothreads Easier to create sequential operations An abstraction to avoid complex state-machine programming In more complex applications, the amount of states may be huge v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

51 Contiki execution models
Contiki offers multiple execution models Protothreads: thread-like event handlers Allow thread-like structures without the requirement of additional stacks Limits process structure: no switch/case structures allowed May not use local variables Multi-threading model available For more powerful systems Allows structured application design v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

52 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki processes Contiki core is event-driven Interrupts and HW drivers generate events Events are dispatched to event handlers by the Contiki core Event handlers must return control to core as soon as possible Co-operative multitasking Basic processes are implemented using protothreads Easier to create sequential operations An abstraction to avoid complex state-machine programming In more complex applications, the amount of states may be huge v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

53 Contiki processes: An example
/* Declare the process */ PROCESS(hello_world_process, “Hello world”); /* Make the process start when the module is loaded */ AUTOSTART_PROCESSES(&hello_world_process); /* Define the process code */ PROCESS_THREAD(hello_world_process, ev, data) { PROCESS_BEGIN(); /* Must always come first */ printf(“Hello, world!\n”); /* Initialization code goes here */ while(1) { /* Loop for ever */ PROCESS_WAIT_EVENT(); /* Wait for something to happen */ } PROCESS_END(); /* Must always come last */ v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

54 Contiki processes: Notes
A process may not use switch-case constructs A limitation of the protothread model Complex state structures and switches should be subroutines A process may not declare local variables Variables will lose their values at any event waiting call All variables required by the main process must be static Effects on application design The main process thread should only contain sequences between event waits All operations should be done in subroutines v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

55 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki events process_post(&process, eventno, evdata); Process will be invoked later process_post_synch(&process, evno, evdata); Process will be invoked now Must not be called from an interrupt (device driver) process_poll(&process); Sends a PROCESS_EVENT_POLL event to the process Can be called from an interrupt Using events PROCESS_THREAD(rf_test_process, ev, data) { while(1) { PROCESS_WAIT_EVENT(); if (ev == EVENT_PRINT) printf(“%s”, data); } v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

56 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki timers Contiki has two main timer types; etimer and rtimer Etimer: generates timed events Declarations: static struct etimer et; In main process: while(1) { etimer_set(&et, CLOCK_SECOND); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); etimer_reset(&et); } Rtimer: uses callback function Callback executed after specified time rtimer_set(&rt, time, 0 , &callback_function, void *argument); v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

57 Contiki Protocol Stacks
Contiki has 2 different protocol stacks: uIP and Rime uIP provides a full TCP/IP stack For interfaces that allow protocol overhead Ethernet devices Serial line IP Includes IPv4 and IPv6/6LoWPAN support Rime provides compressed header support Application may use MAC layer only Protocol stacks may be interconnected uIP data can be transmitted over Rime and vice versa v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

58 The Rime protocol stack
Separate modules for protocol parsing and state machines Rime contains the protocol operation modules Chameleon contains protocol parsing modules Rime startup: an example Configure Rime to use sicslowmac over cc2430 rf Startup is done in platform main function: platform/sensinode/contiki-sensinode-main.c rime_init(sicslowmac_init(&cc2430_rf_driver)); set_rime_addr(); //this function reads MAC from flash and places //it to Rime address v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

59 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Rime: Receiving Setting up Rime receiving: broadcast Set up a callback function Declarations: static struct broadcast_conn bc; static const struct broadcast_callbacks broadcast_callbacks = {recv_bc}; The callback definition: static void recv_bc(struct broadcast_conn *c, rimeaddr_t *from); In main process: broadcast_open(&bc, 128, &broadcast_callbacks); Unicast receive in a similar manner v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

60 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Rime: Sending Sending broadcast data using Rime Declarations: static struct broadcast_conn bc; In main process: packetbuf_copyfrom("Hello everyone", 14); broadcast_send(&bc); Sending unicast data using Rime static struct unicast_conn uc; In your function: rimeaddr_t *addr; addr.u8[0] = first_address_byte; addr.u8[1] = second_address_byte; packetbuf_copyfrom("Hello you", 9); unicast_send(&uc, &addr); v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

61 Creating Contiki Ports
First step: see if your cpu already has code If yes, configure your platform to use it If not, see other cpu directories for implementation models Second step: see if your hardware is close to other platforms If yes, copy code from example platform and modify If not, see other platforms for minimal model Create a test application Start with LEDs in platform/myplatform/contiki-myplatform-main.c Use for loops to make sure that your compiler works Continue by adding printf's to see if your UART works First real application Create an etimer for your test process: flash LEDs, print info Try different timeouts to see if your clocks are correct Add more drivers and try them out v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

62 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Exercises v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

63 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki Basics Create your own Contiki “Hello World” application using /examples/sensinode as an example. Compile and run it on the CC2430 target platform Create two parallel Contiki processes, each controlling a different LED v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

64 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki Advanced Use an etimer to set a timer event for your own process after a certain period (for example to flash a LED). Make two processes, and use process events between them. Make a Contiki application to read the NanoSensor accelerometer and light sensors using the ADC on the CC2430. Convert the values using the sensor data sheets and print them out periodically. Make Contiki sensor libraries for the NanoSensor buttons and sensors (using code from above) and use them to print events. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann

65 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann
Contiki uIP Make an application which uses uIP protosockets, and spawns protothreads to handle both UDP and TCP sockets. Make a client application and a server application which communicate between each other over UDP. Design a publish/subscribe protocol implementation over UDP/6LoWPAN using the MQTT-S specification (simplified). Implement Publisher, Subscriber and Broker applications. Use MQTT-S to publish and subscribe to NanoSensor buttons and sensor values. v 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann


Download ppt "6LoWPAN: The Wireless Embedded Internet Companion Exercise Slides"

Similar presentations


Ads by Google