Introduction to


About this course: This course is intended for the Bachelor and Master’s students, who like practical programming and making IoTs applications! In this course we will talk about two components of a cyber physical system, namely hardware and operating systems. After completing this course, you will have the knowledge of both hardware components and operating systems. You are able to plan and use embedded operating systems in resource-constraint devices for Internet-of-Things (cyber physical system) applications. In addition, you can use Cooja simulation for designing and simulating wireless sensor network applications.

Course duration:  3 weeks

Created by:  BrilliantArms, India

Module 1
Introduction to Embedded Hardware
  1. Introduction to Embedded Systems
  2. Design characteristics and challenges
  3. Input/Output devices
  4. Build your own input/output system with the Arduino!
  5. Wire communication, ADC/DAC
  6. Build your own ADC using Arduino!
  7. Sensors, actuators, interrupts vs. polling
Module 2

Module 3

Overview of operating systems and embedded operating systems
In this week, we start with an overview of operating systems and embedded operating systems for IoT. Primary functionalities of embedded operating systems are discussed. We learn how operating systems work: how memory is managed, how tasks are scheduled, what interrupts are and how they are handled. After this, we deepen our learning with the popular kernels for general and embedded operating systems. Linux (monolithic) kernel, micro kernel and modular kernel are presented. In addition, several popular embedded operating systems for IoT are presented. Concretely, after attending this week, you will able to (1) explain why embedded systems often require an operating system (2) describe how an embedded operating system works such as how memory is managed, how tasks are scheduled and how interrupts are handled. (3) You will be able to differentiate between popular kernels for embedded operating systems. (4) Differentiate between popular embedded operating systems for IoT.
  1. Module 3 Lecture1: Embedded operating systems
  2. Linux kernel functions and advantages
  3. The microkernel
  4. In depth reading of the QNX microkernel
  5. The modular kernel
  6. Introduction to Contiki
  7. The case for using Contiki in sensor networks

Module 4

Contiki OS and Cooja simulation
In this week, we start to explore the Contiki Os in detail. First we discuss about the Contiki system and its kernel architecture. Furthermore, we explore how loadable programs are actually implemented in Contiki. Second, we go through services and libraries in Contiki to see how they are built and when they can be invoked. Third, we discuss communication in Contiki via details of uIp and Rime communication stacks in Contiki. Next, prototheads are discussed to describe how application code is processed in Contiki. Furthermore, APIs of multi-threading is discussed. Last but not least, the Cooja simulator – a simulator for wireless sensor networks based on Contiki is introduced. All steps of installing and applying Cooja for a wireless sensor network applications are presented in detailed via an example application. Concretely, after attending this week, you will able to (1) describe how Contiki system and its kernel architecture are built. (2) Distinguish Contiki services and libraries in terms of how they are built, when they are invoked and why they are used. (3) Describe how communication is implemented and supported in Contiki and what protocols Contiki can support. (4) Explore how application’s code is processed in Contiki and important functions of API for multithreading in Contiki (5) use Cooja for simulating wireless sensor networks applications.
  1. Contiki and Cooja simulation
  2. The Contiki system
  3. Contiki’s kernel architecture
  4. Contiki services and libraries
  5. Communication in Contiki I
  6. Communication in Contiki II
  7. Protothread, multithreading and code sizes
  8. Cooja simulation