Introduction to Contiki Programming
Duration: 5 Days
Course Background
Contiki, which is named after Thor Heyerdahl's Kon-Tiki raft, is an open source operating system for networked, memory-constrained systems focusing on low-power wireless Internet of Things devices. It was created by Adam Dunkels in 2002 and has been further developed by the Contiki community. Contiki provides several network mechanisms including the uIP TCP/IP IPv4 stack and the uIPv6 stack,which provides IPv6 networking. The IPv6 stack was contributed by Cisco and ,also, contains the RPL routing protocol for low-power lossy IPv6 networks and the 6LoWPAN header compression and adaptation layer for IEEE 802.15.4 links. This course is a hands on practical application development with a substantial programming component.
Course Prerequisites and Target Audience
Attendees are assumed to be experienced embedded C programmers with some experience of embedded ethernet and wireless networking.
Course Outline
- Overview of the Internet of Things (IoT)
- The hype cycle and beyond
- Overview of wireless connectivity - WiFi, 3G, Bluetooth Smart/Bluetooth Low Energy, ZigBee
- Overview of hardware - microcontrollers, radio transceivers, Systems-on-a-Chip, RF modules
- Overview of 6lowPAN - a subset of IPv6
- IPv6 addresses
- Header compression
- RPL mesh routing
- Contiki Architecture and Development Tools
- Installing the Contiki development tools - Instant Contiki and gcc
- Understanding the Contiki build system
- Basics of compiling and running programs
- Advanced topics
- Multitasking - Protothreads and processes
- Timers
- The IPv4 network stack API
- The IPb6 stack
- Understanding the structure of the netstack - packetbuffers and the uIP buffer
- Working with the HTTP and CoAP application protocols
- Running programs in the Cooja simulator
- Running programs on physical hardware devices