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

Lec1.ppt
WS_01.doc
Introduction, microcontroller, binary, digital logic, Ohm's Law
TM4C123, Flowcharts, Design Cycle
embedded systems, Thumb-2
 
Lec2.ppt
WS_02.doc
NOTGate-asm.zip
Rand100_4F120asm.zip
 
Data flow graphs, call graphs, numbers
Debugging, design of a microcontroller-based NOT gate
Fixed-point, condition codes, errors, dropout, overflow, truncation, roundoff
 
Lec3.ppt
WS_03.doc
 
Assembly syntax
Functions, logic operations
Parallel I/O
Switches and LED interfaces
 
Lec4.ppt
WS_04.doc
NOTGate-C.zip
Primes.zip
 
I/O Abstraction, software design, branches
Carry and overflow bits
 
Lec5.ppt
WS_05.doc
ParamPassingASM.zip
ParameterPassing_4F120.zip 
FunctionalDebugging.zip
 
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
 
Lec6.ppt
WS_06.doc
 
SysTick, and review for Exam1
 
Lec7.ppt
WS_07.doc
 
PLL, Array access, Abstraction, finite state machines, linked structures, introduction to I/O synchronization
 
Lec8.ppt
WS_08.doc
ModularProgramming.zip
 
I/O synchronization, Thread synchronization, fundamentals of interrupts, Periodic interrupts with SysTick, DAC, sound generation. Modular programming in C
 
Lec9.ppt
WS_09.doc
LocalVariablesASM.zip
 
Local variables, LCD interface, blind cycle, fixed-point
 
Lec10.ppt
WS_10.doc
 
ADC fundamentals, Nyquist Theorem
ADC Programming
 
Lec11.ppt
WS_11.doc
 
Fixed-point, Data acquisition system, Lab 8
 
Lec12.ppt
WS_12.doc
 
FIFO Queues
UART
 
Lec13.ppt
WS_13.doc
Lec13_UART.zip
2-D array, structures, Timer2A periodic interrupt, Kentec display, sounds
Project illustrating the use of struct
Lec14.ppt
 
Floating Point
Security
 
Lec15.ppt
 
Review
 

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