Embedded and Real Time Systems

Course Description

Students will gain an appreciation of Embedded & Real-Time Systems through learning how to characterize hardware and software. This will involve being introduced to a specific hardware platform, exploring real-time requirements, computation limits, analysis of different scheduling algorithms, and the configuration of memory. In addition, students will be introduced to some harder subjects in Embedded & Real-Time Systems including power management, reliability, safety-critical systems and finally simulation. Upon completion of the program, students will have a firm understanding of real world issues and characterization methods and techniques for Embedded & Real-Time Systems.

Topics Covered

Prerequisites The course assumes the student understands Computer Science concepts including the C language and fundamental computer architecture.  Course Materials
Hardware Components:Raspberry Pi 3Power Supply for Raspberry Pi 3SD CardHDMI cable Other standard hardware required for setup:Ethernet cableHDMI MonitorUSB KeyboardRouter - Wi-Fi

Recommended Book

Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux, 1st Edition 

Grading:

Assignment 1: Configurations of the platform: 10%

Assignment 2: Assessment of the platform: 30%

Assignment 3: Proof of Concept Project: 40%

Presentation: Platform Characterization: 20%

Schedule

The overarching aim is to provide the students with a set of useful problem-solving tools found in the Embedded Systems Industry as well as revisit the scientific method as it pertains to Embedded.Each lesson will comprise an interactive portion where the students will be encourage to provide questions especially around Embedded Systems and characterization.

The following eight lessons will be covered over 10 class sessions.

Lesson 1: Introduction & Characterization

Introduce hardware-software characterization. Explain how that characterization is used to define the requirements of a final Embedded & Real-Time System.   

Given a requirement the students should be able to provide the correct hardware-software configuration. This lesson will introduce Embedded & Real-time, basic system design, exceptions and handling exceptions (including interrupts), and the type of kernel/executives required for a specific solution. Later part of the lesson will further introduce the concept Real-Time and the different methods to determine whether a problem can be schedulable through Rate Monotonic (RMS) and Earliest Deadline First scheduling (EDF). 

Lesson 2: Fundamentals

Fundamentals lesson will explain two important areas in Embedded, namely the boot/initialization process and the constraints on development tools and environments for Embedded & Real-Time systems.

Students will be introduced to a hardware boot flow for a generic hardware platform. This will involve going through the order and the specific pieces of hardware that are required to be initialized before an Operating System/Executive is functioning.  On the software side students will be re-introduced to compilers, debugger and introduced to hardware-assist debugging/trace for Embedded & Real-Time development.  

Lesson 3: Memory

Provide an overview of the use of caches and introduce the different forms of memory management with-respect-to Embedded & Real-Time Systems. Covering simple microcontrollers to the more advanced multicore systems.

Students will be introduced to the complexities of memory systems. After these two lectures they will have a basic understanding of caches and in particular how different cache policy effect the overall performance of a system. Intertwined is the need to understand the different memory management techniques - linear memory, protected memory and full virtual memory. Students will have a good understanding on the tradeoffs of using different memory management methods. 

Lesson 4: Power Management

Introduce the complexity of power management at the hardware level. Power management is particularly important for Internet-of-Things, Mobile devices as well as dormant tethered devices. 

Students will be introduced to power management as a subject and how power management covers everything from tethered to untethered devices. Explain the difference between power and energy efficiency equations and why frequency is fundamentally important. Introduce mobile phone power demands, different techniques used to save power consumption and finally some battery characteristics.

Lesson 5: Critical Systems I: Reliability

Introduce reliability for Embedded & Real-Time Systems and explain the difficulties hardware aging incurs.

Student will be introduced to reliability as a subject and the interesting area of why technology fails. The lesson will include describing Occam’s razor, hardware aging and the fundamental reliability equations. Explain different methods of recovery once a deadlock has occurred. Student will be aware of different embedded designs that can help in reliability such as, voting, watchdog timers, and basic reset. 

Lesson 6: Critical System II: Safety-Critical

Introduce the aspects of safety-critical for Embedded & Real-Time Systems.

Students will be introduced to Safety-Critical and the consequences of failure. This includes having a comprehensive understanding of the philosophy behind safety-critical and the consequences of bypassing the philosophy. Understand the meaning of the important terms and the different methods to design a safety-critical system. The students will be introduced to one safety-critical standard DO-178B, as well as the MISRA C standard for safety-critical C writing style.

Lesson 7: Simulation

Introduce the aspects of Simulation for Embedded & Real-Time Systems and how simulation can be used as an important tool for design and development.

Introduce and explore the concept of simulation. Including the differences between simulation and emulation of systems. Be able to define cycle accurate, cycle approximate and instruction level modeling. Define the advantages and scope of simulation and hence discuss the problems that simulation introduces. 

Lesson 8: Course Work – Hardware Characterization

Characterize and use a hardware platform for Embedded & Real-Time Development.

Take a development platform initialize the board, characterize/explore its features and create your own project (and present your project findings). This includes setting up a boot image, initializing the Wi-Fi and installing telnet/SSH/Samba. Measuring interrupt latency, memory performance, code performance, communication requirements and potentially the ability to connect sensors and interrupts.