|
At 10:00 on the 15th of February 2007 I will defend my PhD thesis entitled Programming Memory-Constrained Networked Embedded Systems. The thesis is on three aspects of embedded programming that are very relevant to Contiki: TCP/IP for tiny embedded systems and the uIP embedded TCP/IP stack, protothreads, and Contiki and the run-time ELF module loader. All of this is currently present in the Contiki codebase.
Opponent is Dr. Kay Römer from the Institute for Pervasive Computing at ETH Zurich.
The defense will take place between 10:00 and 12:30 (end time is approximate) in the conference rooms "Filen" 2 & 3 on level 3 in Electrum, Kista, Sweden (map). Everyone are invited to attend! Look to your right for how you find it by foot (Flash required).
The thesis is based on the following five papers:
| [A] |
Adam Dunkels. Full TCP/IP for 8 Bit Architectures. In Proceedings of the First ACM/Usenix International Conference on Mobile Systems, Applications and Services (MobiSys 2003), San Francisco, May 2003.
[ bib | .pdf | Abstract ] |
| [B] |
Adam Dunkels, Björn Grönvall, and Thiemo Voigt. Contiki - a lightweight and flexible operating system for tiny networked sensors. In Proceedings of the First IEEE Workshop on Embedded Networked Sensors (Emnets-I), Tampa, Florida, USA, November 2004.
[ bib | .pdf | Abstract ] |
| [C] |
Adam Dunkels, Oliver Schmidt, and Thiemo Voigt. Using Protothreads for Sensor Node Programming. In Proceedings of the REALWSN'05 Workshop on Real-World Wireless Sensor Networks, Stockholm, Sweden, June 2005.
[ bib | .pdf ] |
| [D] |
Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. In Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys 2006), Boulder, Colorado, USA, November 2006.
[ bib | .pdf | Abstract ] |
| [E] |
Adam Dunkels, Niclas Finne, Joakim Eriksson, and Thiemo Voigt. Run-time dynamic linking for reprogramming wireless sensor networks. In Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys 2006), Boulder, Colorado, USA, November 2006.
[ bib | .pdf | Abstract ] |
The music on the video by Neil Baldwin, arranged by Romeo Knight.
Abstract
Ten years after the Internet revolution are we standing on the brink of another revolution: networked embedded systems that connect the physical world with the computers, enabling new applications ranging from environmental monitoring and wildlife tracking to improvements in health care and medicine.
Only 2% of all microprocessors that are sold today are used in PCs; the remaining 98% of all microprocessors are used in embedded systems. The microprocessors used in embedded systems have much smaller amounts of memory than PC computers. An embedded system may have as little has a few hundred bytes of memory, which is thousands of millions times less than the memory in a modern PC. The memory constraints make programming embedded systems a challenge.
This thesis focus on three topics pertaining to programming memory-constrained networked embedded systems: the use of the TCP/IP protocol suite even in memory-constrained networked embedded systems; simplifying event-driven programming of memory-constrained systems; and dynamic loading of program modules in an operating system for memory-constrained devices. I show that the TCP/IP protocol stack can, contrary to previous belief, be used in memory-constrained embedded systems but that a small implementation has a lower network throughput. I present a novel programming mechanism called protothreads that is intended to replace state machine-based event-driven programs. Protothreads provide a conditional blocked wait mechanism on top of event-driven systems with a much smaller memory overhead than full multithreading; each protothread requires only two bytes of memory. I show that protothreads significantly reduce the complexity of event-driven programming for memory-constrained systems. Of seven state machine-based programs rewritten with protothreads, almost all explicit states and state transitions could be removed. Protothreads also reduced the number of lines of code with 31% on the average. The execution time overhead of protothreads is on the order of a few processor cycles which is small enough to make protothreads usable even in time-critical programs. Finally, I show that dynamic linking of native code in standard ELF object code format is doable and feasible for wireless sensor networks by implementing a dynamic loading and linking mechanism for my Contiki operating system. I measure and quantify the energy consumption of the dynamic linker and compare the energy consumption of native code with that of virtual machine code for two virtual machines, including the Java virtual machine. The results show that the energy overhead of dynamic linking of ELF files mainly is due to the ELF file format and not due to the dynamic linking mechanism as such. The results also suggest that combinations of native code and virtual machine code are more energy efficient than pure native code or pure virtual machine code.
The impact of the research in this thesis has been and continues to be large. The software I have developed as part of this thesis, lwIP, uIP, protothreads, and Contiki, is currently used by hundreds of companies in embedded devices in such diverse systems as car engines, oil boring equipment, satellites, and container security systems. The software is also used both in academic research projects and in university project courses on embedded systems throughout the world. Articles have been written, by others, in professional embedded software developer magazines about the software developed as part of this thesis. The papers in this thesis are used as required reading in advanced university courses on networked embedded systems and wireless sensor networks.
|