14-642: Introduction to Embedded Systems

14-642: Introduction to Embedded Systems

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 procesor 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.

Evaluation & Grading:
Students will be individually evaluated on all course deliverables. Contributions to the final grade will be 80% for labs and 20% for quizzes/exams.

Prerequisites:
14-513 or equivalent.
Contact the instructor directly with questions about prerequisites.

Optional Textbooks:
Joseph Yiu, The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors (available as eBook).
Other textbooks can be suggested as background reading on request.

Deliverables:
Labs: The lab assignments will progress from the raw essentials to bring up an embedded device to designing a customized IoT device. Labs are intended to be done with a partner. Collaboration with partners is obviously strongly encouraged, but discussion across teams must be limited to high-level lab details.
  • Lab 1 (Due: ~week 4): development of a bootloader and other components, plus assembly optimization
  • Lab 2 (Due: ~week 6): implementation of interfaces, MMIO, and a sensor-driven application
  • Lab 3 (Due: ~week 9): implementation of interrupt-based functionality, user-space programs, and system calls
  • Lab 4 (Due: ~week 12): implementation of context switching and task management, rate-monotonic scheduling, isolation, and synchronization
  • Lab 5 (Due: ~week 14): design an automated control system that builds on the components of other labs, potentially some sort of IoT application

Quizzes: Multiple quizzes / exams will take place during the semester and dates will be available here and on Canvas. Please contact the instructor as soon as possible if special arrangements or accommodations are needed.