EECS 3100 - Embedded Systems Course Syllabus
Credits/Contact Hours
4 Credit Hours. 3 classroom contact hrs. and 2.5 lab contact hours per week  
Textbook
Embedded Systems: Introduction to ARM Cortex-M Microcontrollers by Jonathan W. Valvano;
Edition: 5th, Publisher: CreateSpace, ISBN: 9781477508992
Course Information
Microcontroller interfacing, assembly and C language programming for embedded systems,
input/output synchronization; analog to digital conversion, digital to analog conversion,
timers, interrupts and embedded system debugging techniques.
Prerequisites:
EECS 2110 - Computer Architecture and Organization,Ìý
EECS 3210 - Signals and Systems
EECS 3400 - Electronics 1
Required course
Specific Goals - StudentÌýLearning ObjectivesÌý(SLOs)
Upon completion of the course, the student will be able toÌý
- Evaluate and rank tradeoffs such as cost, power, and performance for different embedded systems applications; and describe architectural features of the target embedded system(s) (register structure, memory architecture, CPU features, and peripheral subsystems).Ìý
- Use an integrated development environment (IDE) to write, compile and/or assemble, execute, and debug a program (high-level or assembly language) for a target embedded system; describe the actions of compilation, assembly, linking in the program translation process; describe actions taken by compiler-generated code after system reset but before user application execution; and describe memory assignments made by a compiler for global variables, local variables, subroutine parameters and dynamically allocated storage.Ìý
- Explain the basic loop-forever structure of an embedded program; design simple programs for embedded system applications including some that include modular/hierarchical programming techniques such as subroutines and functions; describe the need for structured approaches in writing complex embedded applications; and demonstrate debugging techniques for simple embedded application programs.Ìý
- Create programs that perform a set of input/output operations on one more GPIOs using a polled approach; describe how interrupts are supported on the target embedded system(s); and create programs that perform a sequence of input/output operations on one or more GPIOs using an interrupt-driven approach.Ìý
- Discuss the concepts of full-duplex and half-duplex communication; contrast parallel I/O versus serial I/O tradeoffs in terms of throughput, wiring cost, and application; describe the data formatting, timing diagrams, and signaling levels used in an asynchronous or synchronous serial interface; and create programs that perform I/O to an external device or system that uses an asynchronous or synchronous serial interface such as SPI or I2C.Ìý
- Describe the basic features and operation of typical hardware timers used in embedded systems; create programs that perform periodic I/O triggered by hardware timer-generated interrupts; and create programs that measure waveform characteristics such as pulse width and frequency using hardware timersÌý
- Describe terms and properties relating to Analog-to-Digital Conversion (ADC) and Digital-to-Analog Conversion (DAC) such as sampling rate, reference voltage, conversion time, precision, range, and encoding method; implement voltage to binary and binary to voltage numerical conversions given range, encoding method, and reference voltage parameters; and use DAC and ADC architectural approaches such as resistor ladder, successive approximation, flash, and delta-sigma, and give tradeoffs such as conversion time and circuit complexity.Ìý
- Demonstrate and implement in hardware numerical conversion from a physical quantity such as pressure, temperature, and acceleration to voltage or current given an example sensor and its characteristic equation or graph; and from voltage or current to a physical quantity such as linear/angular movement, sound, and light given an example actuator and its characteristic equation or lookup-up table.Ìý
- Create programs that use one or more output devices for effecting physical control by an embedded system.Ìý
- Design and prototype circuitry that transforms voltage level/current drive from/to external sensors/actuators to that required/provided by a target CPU; and employ instrumentation choices for diagnosing/understanding hardware aspects of embedded systems behavior.Ìý
- Function effectively on a multidisciplinary team (as potentially composed of EE and CSE majors), with effectiveness being determined by instructor observation, peer ratings, and self-assessmentÌý
Topics
1. Introduction to Embedded Systems
2. Intel ×86 Architecture: Microprocessor internal architecture,Ìýand segmented memory
organization
3. Intel ×86 Hardware Specifications: Pins and signalÌýdescriptions and timing, bus
buffering and latching, read &Ìýwrite timing, and minimum/maximum mode operation
4. Intel ×86 Memory Interface: Memory devices,ÌýROM/SRAM/DRAM device, address decoding,
ROM/RAMÌýdecoding subsystem design, and odd/even memory banks
5. Intel ×86 Assembly Language Programming: addressingÌýmodes, decision making, looping
and control structures,Ìýprocedures and parameter passing, and stack operation
6. Intel ×86 Input/Output (I/O) Interface: Assembly I/OÌýinstructions, isolated I/O,
memory-mapped I/O, I/O portÌýaddress decoding, data transfer between ×88/×188/×86/×186Ìýand
I/O ports, byte-wide and word-wide I/O ports, bufferedÌýinput port, and latched output
port
7. Intel ×86 Interrupt Structure: Interrupt processing, interruptÌýservice routines,
interrupt controller devices, interruptÌýinterface expansion, and daisy-chained interrupt