Embedded System Lecture Notes

Prof. Phil Koopman, Carnegie Mellon University

This is a unified listing my lecture materials on a variety of topics from my Carnege Mellon University courses, keynote lectures, and other talks I've given. Please see the copyright notice at the end of this page before e-mailing about use.

Selected keynote talks and webinars

18-642: Embedded Software Engineering

Code quality, safety, security. (Last update Fall 2017.)

  1. Course Introduction
  2. Software Development Processes
  3. Global Variables
  4. Spaghetti Code
  5. Unit Testing
  6. Modal Code/Statecharts
  7. Peer Reviews
  8. Code Style/Humans
  9. Code Style/Language
  10. Testing Quality
  11. Requirements
  12. System-Level Test
  13. SW Architecture
  14. Integration Testing
  15. Traceability
  16. SQA isn't testing
  17. Lifecycle CM
  18. Maintenance
  19. Process Key Metrics
  20. Safety+Security Overview
  21. Floating Point Pitfalls
  22. Dependability
  23. Stack Overflow
  24. Critical Systems
  25. Race Conditions
  26. Safety Plan Standards
  27. Data Integrity
  28. Safety Requirements
  29. Single Points of Failure
  30. SIL Isolation
  31. Redundancy Management
  32. Safety Architecture Patterns
  33. Date Time Management
  34. Security Plan
  35. Cryptography
  36. Security Threats
  37. Security Vulnerabilities
  38. Security Mitigation Validation
  39. Security Pitfalls

Live course site http://www.ece.cmu.edu/~ece642/ might have some more recent lectures.

18-348: Embedded System Engineering

Microcontroller hardware, software, I/O, coding techniques, with coverage of 9S12 microcontroller. (Last taught Spring 2016.)

  1. Course Intro Background
  2. Embedded Hardware
  3. Microcontroller Instruction Set - Part 1
  4. Microcontroller Instruction Set - Part 2
  5. Engineering Process Design Techniques
  6. Embedded Language Use
  7. Coding Tricks; Multiprecision Math; Reviews
  8. Memory and Memory Bus
  9. Economics, Code Optimization, and Fixed Point
  10. Debug Test
  11. Serial Ports
  12. Time; Timer/Counters; Watchdog Timers
  13. Interrupts
  14. Interrupt Cyclic Task Response Timing
  15. Preemptive Context Switching
  16. Concurrency
  17. Scheduling
  18. Digital to Analog, PWM
  19. Analog Inputs
  20. Other I/O
  21. Control
  22. RTOS Selection; Why Software Quality Matters
  23. System Resets, Robustness Power Management
  24. Checksums and CRCs
  25. Bluetooth CAN

18-649: Distributed Embedded Systems

Software process, distributed systems, embedded networks, critical systems. (Last taught Fall 2015.)

  1. Course Overview Introduction
  2. Elevators as a distributed embedded application
  3. Requirements and Methodical Engineering
  4. UML-Based Design Process
  5. End-to-end design example
  6. Distributed + Embedded Systems; Event Triggered vs. Time Triggered
  7. Reviews Software Process
  8. Embedded Software Testing
  9. Verification, Validation Certification
  10. Embedded System Engineering Economics
  11. Embedded Communication Protocols
  12. CAN Protocol
  13. CAN Performance
  14. End-To-End System Scheduling
  15. Embedded Internet Embedded Security
  16. Distributed Timekeeping
  17. Dependability/Reliability
  18. Critical Systems Software Safety
  19. Critical Systems Engineering
  20. Humans as a System Component
  21. FlexRay Protocol
  22. Ethics Societal Impact
  23. Time Triggered Protocol (TTP)

Additional reading list. (Note that "local" links are probably non-functional.)

18-548: Memory Hierarchy

Memory hiearchy from cache out to virtual memory. (Last taught Fall 1998.)

  1. Introduction & Overview
  2. Key Concepts
  3. Physical Memory Architecture
  4. Cache Organization & Access
  5. Virtual Memory Architecture
  6. Cache Data Organization
  7. Associativity
  8. Data Management Policies
  9. Memory Devices & Chip Area
  10. Multilevel Strategies
  11. System-Level Effects on Performance
  12. Tuning Software for Speed
  13. Main Memory Architecture
  14. Main Memory Performance
  15. Storage Systems
  16. Vector Architecture
  17. Vector Performance
  18. Buses
  19. Multiprocessor Coherence
  20. Fault Tolerance in the Memory Hierarchy

Copyright notice: These materials are copyrighted by Philip Koopman. Downloading and viewing materials for personal use is acceptable with no further permission. Use in academic settings is acceptable with no further permission provided attribution is made to me as author of the material. For-profit training use requires permission and a fee, except for small snippets (e.g., no more than one slide from a lecture) that fall under Fair Use copyright doctrine. Posting on public web sites, including slide sharing services, video services, and course note sites is strictly prohibited unless I, the author, personally do the upload myself. These are historical lecture slides and might not represent my current opinions on various topics due to newly available research and experience. Due to lack of time and resources I do not attempt to keep the technical content of historical lectures up to date, but pointing out any substantive errors for future correction on a time-available basis is appreciated. If you plan to make substantive use of this material in your teaching I'd be happy to hear about it, but non-profit teaching use does not require permission. In general I don't have time to respond to queries already handled by this copyright notice. For other queries please contact: koopman@cmu.edu