Lecture notes*

Lecture 1: Introduction
    Readings:
    --[1] Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach. (Chapter 1), Available for download here: http://LeeSeshia.org
    --[2] Wayne H. Wolf, Hardware-software co-design of embedded systems, Proceedings of the IEEE, 1994.
    --[3] M. Timmerman, Embedded Systems Defined, 2007.
Lecture 2: C Programming
    --Part 1: Variables, Structures 1, Instructions (for, break, switch)
    --Part 2: Bitwise operators, Functions, Pointers 1
    --Part 3: Pointers 2, relation between pointers and arrays, operations on pointers
    --Part 4: Structures 2, access to structure members, structure inside structure
    Readings:
    --[1] C Tutorial, http://www.cprogramming.com/tutorial/c-tutorial.html
Lecture 2: Data flow graphs, Call graphs, Flowcharts, Algorithmic State Machine (ASM) charts
    Readings:
    -- Optional: Jonathan W. Valvano, Embedded Systems: Real-Time Interfacing to ARM Cortex Microcontrollers, Volume 2, 2012 (Ch. 1).
Lecture 3: Intro to ARM Cortex-M3 processor and LPC1768 microcontroller, (Notes 1)
    Readings:
    --[1] Joseph Jiu, The Definitive guide to the ARM Cortex-M3, 2007 (Chapters 1..4)
    --[2] ARM Architecture Reference Manual, (Look for ARMv7-M, Known as the ARM_ARM document, Requires free registration to download PDF 1020 pages, browse it only)
    --[3] Cortex-M3 processor Technical Reference Manual (browse it all)
    --[4] LPC17xx microcontroller User Manual (Chapters 1,2)
   Additional:
    --[5] Shiam Sadavisan, An Introduction to the ARM Cortex-M3 Processor, 2006 (browse it all)
    --[6] P. Knaggs and S. Welsh, ARM Assembly Language Programming, 2006 (if interested in studying more Assembly programming)
Lecture 4: Interrupts 1, Interrupts 2, (Notes on INT0)
    Readings:
    --[1] Joseph Jiu, The Definitive guide to the ARM Cortex-M3, 2007 (Chapters 5..9; Appendices C,D)
    --[2] LPC17xx microcontroller User Manual (Chapters 6,23)
Lecture 5: Memory revisited
    Readings:
    --[1] Joseph Jiu, The Definitive guide to the ARM Cortex-M3, 2007 (Chapter 5)
    --[2] LPC17xx microcontroller User Manual (Chapter 2)
Lecture 6: Serial communication buses: UART, CAN, I2C, SPI
    Readings: See last slide of the PPT presentation.
Lecture 7: DAC and ADC
    Readings:
    --[1] Optional: Sergio Franco, Design with Operational Amplifiers and Analog Integrated Circuits, McGraw Hill, 3rd edition, 2003 (Ch. 12).
    --[2] Optional: Jonathan W. Valvano, Embedded Systems: Introduction to Arm Cortex-M3 Microcontrollers, 2012 (Ch. 10).
Lecture 8: WiFi, BlueTooth
Lecture 8 supplemental: SPI and SD cards
    Readings:
    --[1] LPC17xx microcontroller user manual (Focus on Chapters 14,15,16,18).
    --[2] Optional: Jonathan W. Valvano, Embedded Systems: Introduction to Arm Cortex-M3 Microcontrollers, 2012 (Ch. 8).
Lecture 9: RTOS 1 (process/task, thread, OS, RTOS)
Lecture 10RTOS 2 (task scheduling, task communication)
Lecture 11
: RTOS 3 (mutexes vs. semaphores)
    Readings:
    --[1] James K. Peckol, Embedded Systems, A Contemporary Design Tool, John Wiley & Sons, Inc., 2007. (Ch. 11,12)
    --[2] Jonathan W. Valvano, Real-Time Operating Systems for ARM Cortex-M Microcontrollers, 2012.  (Ch. 3,4)
    --[3] Class Notes of EE472 Univ. of Washington (Chapter 5)
    --[4] Ivan Cibrario Bertolotti, Real-Time Embedded Operating Systems: Standards and Perspectives, 2006.
Lecture 12: Ethernet
    Readings:
    --[1] Lab#10, references therein, and the pdf files included in lab10_files archive.
Lecture 13: Introduction to FPGAs
Lecture 14: UML Statecharts

*In creating many of the lecture notes here, I got inspiration from some of the teaching materials and lecture notes graciously shared by many professors/researchers from different universities/organizations. As an open-source supporter, hereby, I acknowledge them all and extend my many thanks to all of them for publicly sharing their course materials!
http://homes.soic.indiana.edu/geobrown/c335 (lab manual) // Jeff Brown, Indiana
http://abstract.cs.washington.edu/~shwetak/classes/ee472/ // Shwetak N. Patel, Univ. of Washington
http://kastner.ucsd.edu/ryan/courses // R. Kastner, UCSD
http://www1.cs.columbia.edu/~sedwards/classes/2012/4840/index.html // S.A. Edwards, Columbia
http://users.ece.utexas.edu/~valvano/ // Jonathan W. Valvano, UTexas
http://users.ece.utexas.edu/~valvano/EE319KSp13.html // Jonathan W. Valvano, UTexas
http://users.ece.utexas.edu/~valvano/EE345M/ // Jonathan W. Valvano, UTexas
http://users.ece.utexas.edu/~gerstl/ee319k_s13/resources.html // Andreas Gerstlauer, UTexas
http://users.ece.utexas.edu/~gerstl/ee382v_f11/schedule.html // Andreas Gerstlauer, UTexas
https://ece.uwaterloo.ca/~yqhuang/labs/ece254/document.html // Irene Huang, Univ. of Waterloo
http://www.eecs.umich.edu/eecs/courses/eecs373/refs.html // Mark Brehob, UMich
http://wiesel.ece.utah.edu/redmine/projects/ece5780-s12/wiki#Books-on-Embedded-Systems // Thomas Schmid, Utah
http://ecee.colorado.edu/~mcclurel/index.html // Linden McClur, Boulder
http://www.cecs.uci.edu/~gajski/eecs222/index.html // D. Gajski
http://cseweb.ucsd.edu/classes/wi12/cse237A-a/index.html // T. Rosing, UCSD
http://chess.eecs.berkeley.edu/design/index.html // A. Sangiovanni-Vincentelli
http://chess.eecs.berkeley.edu/eecs149/overview.html // Edward A. Lee and Sanjit A. Seshia
http://www.engr.colostate.edu/~sudeep/teaching/cs_ece_561.htm // Sudeep Pasricha, Colorado State
http://esd.cs.ucr.edu/index.html // Frank Vahid and Tony Givargis
http://ls12-www.cs.tu-dortmund.de/daes/daes/mitarbeiter/prof-dr-peter-marwedel/embedded-system-text-book/slides/slides-2010.html // P. Marwedel, Dortmund
http://ls12-www.cs.tu-dortmund.de/daes/en/lehre/english-courses/ss11-cyber-physical-system-fundamentals.html // P. Marwedel, Dortmund
http://www2.hh.se/staff/tola/cooperating_embedded_systems // Tony Larsson, Halmstad University
http://ecee.colorado.edu/~ecen5623 // Sam Siewert, Boulder
http://web.eecs.umich.edu/~jfr/embeddedctrls/index.html // Jim Freudenberg, UMich
ARM Teaching Resources, Guest Lectures/Workshops, Research Papers