
Embedded computing applications far outnumber desktop computers, with billions of microcontrollers produced worldwide each year. Embedded systems vary tremendously, from the single 8-bit processor in a thermostat, to high performance processors in a digital camera, to dozens of networked processors in an automobile. Despite this diversity of applications, there are core technology and system-level skills needed by any embedded system designer that form the content of this course. The emphasis of this course will be at the system layer where hardware meets software, with plenty of hands-on experience at "bare metal" programming. Topics typically covered include embedded computing platforms (hardware, microcontroller instruction sets, software in both assembly language and C); interacting with the external world (analog I/O, serial ports, control); system-level engineering (design cycle, architectural patterns); real-time operation (timers, interrupts, concurrency); constraints and optimization (time, space, power, performance); and a survey of techniques important for building systems that work in the real world (debug, test, robust design, dependability). Weekly hands-on hardware and software experiences with a 16-bit microcontroller module will tie directly to lectures to reinforce core skills.
This course focuses heavily on learning by doing. Readings, lectures, and discussions serve to support the main concepts of the laboratory exercises while pre-lab quizzes, laboratory reports, and exams ensure that the concepts are well understood. Labs are performed in groups with each group consisting of at least one EE/CTE major and one Systems major. Each member of a group must participate in the labs, be present during demonstrations, and submit a separate written lab report with only code listings and circuit diagrams allowed to be shared.
Required Hardware
You
will be loaned a microcontroller board for the course based on the Freescale
MC9S12C128 processor and a prototype board (one per team). You must return these
boards at the end of the semester. The boards will be freely available to you if
you have any project in mind after the semester.
What are some reasons to take this course?
You want to understand what goes on "under the hood" when you run a program on a computer (for example, what kind of code C compilers generate and how to get better optimization)
You want to learn about the interface between hardware and software. For example, how all the various hardware peripherals work (e.g., counter/timers, serial ports) and how software reads sensors and drives actuators.
You want to have the right skills for developing "small-system" embedded products, which includes applications domains such as: automobiles, toys, home appliances, industrial equipment, and sub-$100 consumer electronics.
You want to be an embedded system engineer
Part III:
Connecting and Communicating with Embedded Systems (3 weeks)
a) Intra-chip communication with GPIO
b) Inter-chip communication with SPI. UART and I2C
c) External Interrupts
d) Wireless communication


Last updated on 02/02/09. Maintained by
Rahul Mangharam