Learning Materials

This page contains links to materials that can be used to teach an introductory class on embedded systems. These materials include lecture slides, lab manual, YouTube videos from the MOOC, and interactive web pages. PowerPoint lectures written by Professors Ramesh Yerraballi, Andreas Gerstlauer, Bill Bard, Nina Telang, Vijay Janapa Reddi, and Jonathan Valvano. There are 15 lectures, corresponding to approximately one powerpoint file per week. For each of the lectures there is a corresponding worksheet that can be used as a follow up to gauge students' understanding of that week's lecture.

Lecture slides

Introduction, microcontroller, binary, digital logic, Ohm's Law
TM4C123, Flowcharts, Design Cycle
embedded systems, Thumb-2
Data flow graphs, call graphs, numbers
Debugging, design of a microcontroller-based NOT gate
Fixed-point, condition codes, errors, dropout, overflow, truncation, roundoff
Assembly syntax
Functions, logic operations
Parallel I/O
Switches and LED interfaces
I/O Abstraction, software design, branches
Carry and overflow bits
Functions, ARM Architecture Procedure Call Standard (AAPCS), parameter passing, call by value, call by reference, arrays, indexing, functional debugging. Code for parameter passing examples from the slides, book and more. Parameter passing example (in C). Functional debugging code from slides
SysTick, and review for Exam1
PLL, Array access, Abstraction, finite state machines, linked structures, introduction to I/O synchronization
I/O synchronization, Thread synchronization, fundamentals of interrupts, Periodic interrupts with SysTick, DAC, sound generation. Modular programming in C
Local variables, LCD interface, blind cycle, fixed-point
ADC fundamentals, Nyquist Theorem
ADC Programming
Fixed-point, Data acquisition system, Lab 8
FIFO Queues
2-D array, structures, Timer2A periodic interrupt, Kentec display, sounds
Project illustrating the use of struct
Floating Point

Lab Manual

There are two lab manuals available for use with this book. The MOOC lab manual describes the labs we used for the edX UT.6.01x online class that we presented Spring 2014. Each lab has two parts, developing the software in the simulator, and then building the hardware. There are interactive and automatic graders for each lab for both simulation and real board. These graders can be found step 2 on the Software Downloads page. The following list maps the twelve labs to the corresponding book chapters:

Lab 2. Hello LaunchPadChapters 1, 2
Lab 5. Functions in CChapters 1, 2, 5
Lab 6. Branching, functions, and time delaysChapters 3 and 4
Lab 7. Design and DevelopmentChapters 2 and 5
Lab 8. Switch and LED InterfaceChapters 2 and 4
Lab 9. Functional DebuggingChapter 6
Lab 10. Traffic Light ControllerChapters 6 and 8
Lab 11. UART Serial InterfaceChapters 7 and 8
Lab 12. Square wave Tuning ForkChapters 8 and 9
Lab 13. Digital PianoChapters 9 and 10
Lab 14. Measurement of DistanceChapters 8, 9 and 10
Lab 15. Systems-Level Approach to Embedded Systems Chapters 1 - 11

The other lab manual is the one we use here at the University of Texas to teach our introduction to embedded systems lab. This lab differs from the MOOC lab four ways. First, students are graded by designing, testing, and then showing their system to a teaching assistant or instructor. Second, the first five labs are in assembly, and the last five labs are in C. Third, this manual includes a communications lab, where the students connect two LaunchPads together. Fourth, this manual defines labs with color graphics LCD modules such as the Kentec EB-LM4F120-L35 or ST7735. There are automatic simulation graders for the first six labs.

Lab 1. Digital Logic ImplementationChapters 1, 2, 3, 4
Lab 2. For-loops, while-loopsChapters 3 and 4
Lab 3. Switch and LED InterfaceChapters 2 and 4
Lab 4. Functional DebuggingChapter 6
Lab 5. Traffic Light ControllerChapters 6 and 8
Lab 6. Digital PianoChapters 9 and 10
Lab 7. LCD Device DriverChapter 7
Lab 8. Measurement of DistanceChapters 8, 9 and 10
Lab 9. Measurement of DistanceChapter 11
Lab 10. Systems-Level Approach to Embedded Systems  Chapters 1 - 11

Teaching Videos

Professors Yerraballi and Valvano produced about 170 YouTube videos for the edX UT.6.01x online class. The videos are grouped into 15 YouTube playlists that correspond in number with the MOOC labs. The following is a list of links to the YouTube playlists:

1. Introduction to Class
2. Fundamental ConceptsChapters 1
3. ElectronicsChapters 1, 2
4. Digital LogicChapters 1, 2
5. Introduction to CChapters 1, 2, 5
6. Microcontroller PortsChapters 3 and 4
7. Design and DevelopmentChapters 2 and 5
8. Switch and LED Interface Chapters 2 and 4
9. Functional DebuggingChapter 6
10. Finite State MachinesChapters 6 and 8
11. UART Serial InterfaceChapters 7 and 8
12. InterruptsChapters 8 and 9
13. DAC and SoundChapters 9 and 10
14. ADC and Data Acquisition  Chapters 8, 9 and 10
15. Systems-Level Design Chapters 1 - 11

Interactive web pages

As part of the edX online class, we made some interactive web pages to illustrate fundamental concepts.

2. Fundamental Concepts Number conversions
5. Introduction to C Flowcharts, C vs assembly
6. Microcontroller Ports Input/output, direction register
7. Design and Development Successive refinement, if-then, loops
10. Finite State Machines Vending machine and stepper motor
11. UART Serial Interface Blind, busy-wait, interrupt, serial port
12. Interrupts Mail box, context switch
13. DAC and Sound Sampling rate, precision, how a DAC works
14. ADC and Data Acquisition    How an ADC works, Nyquist Theorem