CMU 14-642 Embedded

Logo

CMU 14-642 Introduction to Embedded Systems

Introduction to Embedded Systems

14-642 is a graduate-level embedded systems course offered by the Information Networking Institute at Carnegie Mellon University.

Course Description

This practical, hands-on course introduces students to the basic building-blocks and the underlying scientific principles of embedded systems. The course covers both the hardware and software aspects of embedded processor architectures, along with operating system fundamentals, such as virtual memory, concurrency, task scheduling and synchronization. Through a series of laboratory projects involving state-of-the-art processors, students will learn to understand implementation details and to write assembly-language and C programs that implement core embedded OS functionality, and that control/debug features such as timers, interrupts, serial communications, flash memory, device drivers and other components used in typical embedded applications. Relevant topics, such as optimization, profiling, digital signal processing, feedback control, real-time operating systems and embedded middleware, will also be discussed.

Learning Objectives

In taking and completing this course, students will:

Lab Assignments

Labs are the primary component of the 14-642 course and the basis for the majority of the course learning objectives. Labs can be done individually or with a partner, using starter code templates made available by the course staff via GitHub.

The course includes a total of 21 lab exercises of widely varying difficulty and follow the narrative of an instructor-provided textbook, starting from a clean-slate and ending with an embedded kernel capable of supporting multi-threaded, real-time user applications. A listing of the focus of each lab exercise is included here.

After these lab tasks are completed, students have the opportunity to design their own interactive embedded system, potenially introducing additional hardware and peripheral device support, further expanding the system call interface, designing and profiling multiple user-space tasks, and integrating the hardware and software capabilities with a fully functional application.

Code Management, Testing, & Evaluation

This course uses GitHub to initialize and maintain students’ code repositories for the labs. Early lab exercises include pre-built executables for testing interfaces and basic functionality, but much of the more advanced functionality must be evaluated via demonstration and manual testing by the course staff, along with manual grading of all documentation components.

Questions and Contact

Please direct questions about the 14-642 course to Patrick Tague.