Looking at it from a higher perspective, the Contiki system is partitioned into two parts: the core and the loaded programs as shown in Fig. 2.Typically, the core consists of the Contiki kernel, the program loader, the most commonly used parts of the language run-time and support libraries, and a communication stack with device drivers for the communication hardware.