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