Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
6LoWPAN: The Wireless Embedded Internet Companion Exercise Slides Zach Shelby, Martti Huttunen This work is licensed under the Creative Commons Attribution-NoncommercialShare Alike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ 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: 978-0-470-74799-5, (c) 2009 John Wiley & Sons Ltd The Book 6LoWPAN: The Wireless Embedded Internet by Zach Shelby, Carsten Bormann Length: 254 pages Publisher: John Wiley & Sons http://www.6lowpan.net Companion web-site with blog, full companion course slides and exercises v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 2 Outline • • • • • • • • v4.3.2010 Introduction Embedded Devices Operating Systems Embedded Development 6LoWPAN Implementation Issues Exercise Hardware Contiki & uIP Exercises 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 3 Introduction v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 4 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 – 802.15.4 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 5 Embedded Devices v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 6 Device Architecture • Microcontroller and program code • Power supply – Power management – Renewable energy? • • • • • • v4.3.2010 Memory (RAM, FLASH) Sensors Actuators Communication Input/output Part of a larger system? 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 7 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 0.25 - 10.00 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 8 Example: MSP430 • Texas Instruments mixedsignal 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 9 Example: Atmel AVR QuickTime™ and a TIFF (Uncompressed) decompressor are needed to see this picture. • • • • • Atmel AVR family 8-bit RISC RAM: Up to 4 kB ROM: Up to 128 kB Analogue – ADC – PWM • Digital – USARTs – Timers v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 10 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 11 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 12 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 802.15.4 (ZigBee, ISA100, Wireless HART) – WLAN: WiFi – WAN: GPRS, WiMax v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 13 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. v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 14 Important Characteristics • Level of digital integration • Power consumption and efficiency – Transition speeds and consumption – Levels of sleep • • • • • • • v4.3.2010 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 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 15 Example: RFM TR1000 • • • • • • Proprietary radio at 916 MHz OOK and ASK modulation 30 kbps (OOK) or 115.2 kbps (ASK) operation Signal strength indicator Sleep Provides bit interface 0.7 uA Not included: – – – – v4.3.2010 Tx Rx 12 mA 3.8 mA Synchronization Framing Encoding Decoding 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 16 Example: CC2420 • • • • IEEE 802.15.4 compliant radio 2.4 GHz band using DSSS at 250 kbps Integrated voltage regulator Integrated digital baseband and MAC functions – – – – – – v4.3.2010 Clear channel assessment Energy detection (RSSI) Synchronization Framing Encryption/authentication Retransmission (CSMA) Sleep Idle Tx Rx 20 uA 426 uA 8.5 – 17.4 mA 18.8 mA 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 17 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 802.15.4 radio, like the CC2420 • Power consumption 10-12 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 18 Power Consumption • Radio power consumption critical to consider • Power output level – Limited savings effect – Optimal power difficult – Must be considered globally Output Power (mW) 0.003 0.032 0.100 0.200 0.316 0.501 0.794 1.000 Power Used (mW) 15.30 17.82 20.16 22.50 25.02 27.36 29.70 31.32 • Transition times – Each transition costs – Power equal to RX mode – Should be accounted for v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 19 Power Consumption A simple approximation for power consumption: 1 Pavg PRxTwk up PRx ( N TxTTx up N RxTRx up ) PTxTTx PRxTRx PidleTidle PsleepTsleep TF Twk up = TTx up = T = Tx TRx up = TRx Tidle Tsleep N Tx N Rx TF PTx PRx Pidle Psleep Pavg v4.3.2010 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 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 20 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 21 Operating Systems v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 22 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 23 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 24 Real-time Issues Task1 Task2 Task3 Unlock resource A Lock resource A Task1 T1 T2 TN Task2 Task1 Task3 Task2 Task3 T1 v4.3.2010 T2 Try access resource A time TN 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 25 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 26 Concurrency • Process based • Event based v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 27 OS Examples • Example embedded operating systems – – – – Contiki (www.sics.se/~adam/contiki) FreeRTOS (www.freertos.org) TinyOS (www.tinyos.org) and thousands of others... • For higher powered MCUs (e.g. ARMs) – – – – v4.3.2010 VX Works Microcontroller Linux (Android, Maemo etc.) Windows CE Symbian 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 28 Embedded Development v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 29 Embedded Development Objects Sources v4.3.2010 Compiler Binary Linker Programmer 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 30 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 31 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) v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 32 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 platformindependent software development v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 33 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 34 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 35 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 36 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 37 SDCC Compiler • Simple Device C Compiler • http://www.sdcc.org • 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 38 6LoWPAN Implementation Issues v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 39 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 40 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 + Free choice of uC + Application independent of the stack + Easy integration - More expensive v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 41 Contiki uIPv6 • Popular embedded OS for small microcontrollers – MSP430, AVR, PIC, 8051 etc. • • • • • http://www.sics.se/contiki Standard C-based Portable applications Lightweight protothreads uIPv6 Stack – Full IPv6 support – RFC4944 + 6lowpan-hc – UDP, TCP, ICMPv6 • Great for research v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 42 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 – – – – v4.3.2010 UDP, ICMPv6 RFC4944, 6lowpan-hc 6lowpan-nd NanoMesh IP routing 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 43 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: – – – – – v4.3.2010 IPv4 support and tunneling Application proxy techniques Extended LoWPAN support A firewall Management 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 44 Example Exercise Hardware v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 45 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 46 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) v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 47 Contiki v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 48 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 • http://www.sics.se/contiki v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 49 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 50 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 51 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 52 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 */ } v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 53 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 54 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); } } v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 55 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); v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 56 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 57 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 58 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); • v4.3.2010 Unicast receive in a similar manner 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 59 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 Declarations: 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); v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 60 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 • v4.3.2010 Add more drivers and try them out 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 61 Exercises v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 62 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 v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 63 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. v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 64 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. v4.3.2010 6LoWPAN: The Wireless Embedded Internet, Shelby & Bormann 65