360 likes | 400 Views
Kista, Sweden 26-27 March 2007. Welcome to the Contiki Hands-On Workshop 2007!. Practical issues. Coffee will be served just outside Lunches at level 2 in Electrum (this building): Electrum-restaurangen Dinner at Memory Hotel, close to Electrum
E N D
Kista, Sweden 26-27 March 2007 Welcome to theContiki Hands-On Workshop 2007!
Practical issues • Coffee will be served just outside • Lunches at level 2 in Electrum (this building): Electrum-restaurangen • Dinner at Memory Hotel, close to Electrum • Wireless LAN: your first name as username and password • Talk to me if there are problems
Goals of these two days • Share and discuss experiences with others • Work with Contiki, gain experience with new features • Get hands-on experience • Community building • See the people behind the names • Definition of a successful outcome: • More people involved in the Contiki project • New developers with CVS write access • Contiki used in research • Contiki used in products • Ideas from Contiki used in other projects/systems
Agenda, day 1 • 10:00 Welcome! • 10:45 Coffee • 11:00 Presentation: Programming Contiki • 12:00 Presentation: Using Cooja for development • 12:30 Introduction to the exercises • 12:45 Lunch • (13:15 Help with installation of tools) • 13:45 Hands-on session with coffee break at 15:00 • 16:45 Follow-up to exercises • 17:00 Poster and demo presentations • 19:00 Dinner
Agenda, day 2 • 10:00 Presentation: Using and extending Cooja for network simulations • 10:45 Coffee • 11:00 Presentation and hands-on: Porting Contiki • 12:30 Lunch • 13:30 Get involved in the future of Contiki • 14:30 The end
Contiki • Contiki – a dynamic operating system for networked embedded systems • Loadable modules, multiple network stacks, multiple threading models • Open source; 3-clause BSD licence • Small memory footprint • Designed for portability • 14 platforms, 5 CPUs in current CVS code • Many pioneering features
Contiki target systems • Small embedded processors • With networking • 98% of all microprocessors go into embedded systems • 50% of all processors are 8-bit • MSP430, AVR, ARM7, 6502, ...
Traditional systems:entire system a monolithic binary • Most embedded OSes statically linked at compile-time • Entire system is a monolithic binary • Predictable • But: difficult to change • Must re-upload entire system • Examples: uC/OS,TinyOS
Contiki: run-time loadable program modules • Core resident in memory • Programs know the core • The core do not know the programs • Individual programs can be loaded/unloaded • The first system in the sensor network community to do this Core
Dynamic loading in Contiki • Dynamic loading since inception but with static compile-time linking • Dynamic run-time linking since 2005 • De-facto standard ELF object code files • No custom conversion tools are needed • Just take the .o files produced by gcc, strip, load
Ports in the current CVS code minimal-net native netsim sky stepper-robot stk501 win32 apple2enh c64 cc2420dbk cooja esb ethernut gtk
Background: The Arena Project (2000)LTU, Telia, Ericsson, SICS • Hockey players with wireless sensors • Bluetooth sensors, camera on helmet • Spectators with direct access to sensor readings • TCP/IP used on the Bluetooth-equipped sensors • My lwIP stack • Luleå Hockey lost with 1-4...
Application UDP TCP ICMP IP Network Background: lwIP (2000) • lwIP – lightweight IP • Open source • ~40k code, ~40k RAM • Application driven, top-down design • Similar to Linux, BSD stacks • Suitable for “16-bit systems”
Application UDP TCP ICMP IP Network Background: uIP – the world’s smallest TCP/IP stack (2001) • uIP – micro IP • Open source • ~5k code, ~2k RAM • Smallest configuration ~3k code, ~128 bytes RAM • RFC compliant • Order of magnitude smaller than earlier stacks • Bottom-up design • Single-packet buffer • Event-driven API • MobiSys 2003 paper on lwIP and uIP
Today: lwIP and uIP • Very well-known in the embedded community • Used in products from 100+ companies • Top Google results for “TCP/IP stack”, “embedded TCP/IP”, etc. • Mentioned in several books on embedded networking • Articles on porting uIP in professional magazines • Recommended by leading professionals • Competence specifically required in job postings
A few of the users (that I know of) • Cisco Systems • Compendium Technologies • Cubic Corporation • Cyan Technology • eCosCentric • emWare Inc. • Engenium Tech • Ericsson AB • Gavitech AG ABB Acterna LLC All Set Marine Security Altera Corporation Amirix Systems Inc. Analog Devices Aurion Tech Axon Digital Design B.V. BMW Campbell Scientific • GE Security • GHI Electronics, LLC • Invector Embedded Tech. • Kreatel • LaBarge, Inc. • Micronet • Microtronix Fraunhofer Institute, Germany Odense University College of Engineering, Denmark Luleå University of Technology, Sweden MIT Media Lab, USA Stanford University, USA University of Alberta, Canada University of California, Los Angeles, USA University of Cambridge, UK • NASA • NBS Tech • Nu Horizons • Phytech Holding • PS2Reality • Pumpkin Inc • Qualstar Corporation. • Renesas Technology • Rowley Associates Ltd. • Shift Right Tech. • SYS TEC Electronic • Tangent Devices Ltd. • Volvo Technology • Wireless Device AB • Xilinx Inc.
Background: Pre-Contiki (2002) • Vanilla uIP only handles a single application • Needed an application framework on top of uIP • Small hobby project: • Possible to write a small web browser on top of uIP? • Needs a little bit of a GUI • Ended up with an architecture that allows for loadable modules
Contiki 1.0 (2003) • March 10, 2003 • Commodore 64 port • Extensive press coverage
The name “Contiki” • Originally thought to be the name of the web browser only • A pun on bombastic web browser names like Navigator, Explorer, Konqueror • The Kon-Tiki raft was built with ancient technology, yet was able to sail across the Pacific Ocean • Ancient Commodore 64 was the first available port… • Kon-Tiki Wikipedia article points to the Contiki Wikipedia article
Contiki for sensor networks (2003) • Loadable modules suitable for reprogramming over radio • Initial port to MSP430/ESB in a few hours • Optional multi-threading added • IP over sensor networks with uIP • Header compression • Contiki/IP-based surveillance network in 2004 together with SAAB Systems
Protothreads (2004) • Novel thread-like construct on top of the event-driven Contiki kernel • Very simple: 7 lines of C code • Simplifies programming of event-driven systems • Papers at REALWSN 2005, SenSys 2006
Dynamic linking (2005) • Loader extended with dynamic run-time linking of standard ELF files • Paper at SenSys 2006
Contiki for Tmote Sky (2005) • Ported to the Tmote Sky by Björn Grönvall for the RUNES project • The RUNES version of Contiki a little different • Integrated into the Contiki build system in March 2007
The Rime protocol stack (2007) • Designed for wireless sensor networks • Intended to make network programming simpler • Provides a range of communication services • From local area broadcast to reliable network flooding, and a lot of stuff in between • Strictly layered stack • Very thin layers, applications can connect at any layer • Low memory footprint, code size, overhead • Each layer between 114 and 598 bytes of compiled code, small headers
Pioneering, influential features of Contiki • Contiki: loadable modules (2004) • SOS: loadable modules (2005) • Contiki: both threads and events (2004) • TinyThread: both threads and events in TinyOS (2006) • Contiki: TCP/IP in sensor networks (2004) • Arch Rock: TCP/IP in sensor networks (2007)
Ports under development • ARM7 (Simon Berg) • AVR (Simon Barner) • MSB (Nicolas Tsiftes) • PIC18
Contiki 2.0 release (2007) • New features: Rime, Cooja • Ports for native, MSP430 • Main platforms: Tmote Sky, ESB, Cooja, netsim, native • To be released after the workshop
Contiki people here today • Adam Dunkels, SICS, main developer, project leader, sourceforge admin • Niclas Finne, SICS, developer, sourceforge co-admin • Joakim Eriksson, SICS, developer, MSPsim • Fredrik Österlind, SICS, Cooja • Björn Grönvall, SICS, Tmote Sky port • Thiemo Voigt, SICS, buoy sensor port • Zhitao He, SICS, SP for Contiki • Nicolas Tsiftes, SICS, code compression
Some Contiki people not here today • Oliver Schmidt, SAP Germany (win32 port, Apple 2 port, protothreads, sourceforgeco-admin) • Simon Barner, TU München, (AVR) • Simon Berg, Sweden, (ARM7)
Conclusions • Pioneering operating system for memory-constrained networked embedded systems • Originally based on uIP • Newly added Rime stack • Ported to several platforms • Version 2.0 to be released after the workshop
Now: coffee break • Coming up next: • 11:00 Programming Contiki • 12:00 Using Cooja • 12:30 Introduction to exercises • 12:45 Lunch • (13:15 Help with installation of tools) • 13:45 Hands-on programming session • 17:00 Demos, posters • 19:00 Dinner