EE247. Programming for Embedded Applications
Credits: 3
Microcontroller hardware structures. Basic software concepts such as constants, variables, control structures and subroutine calls, based on the 'C' language and as translated to machine language. Mapping of compiled software to the memory of a microcontroller. Embedded programming principles. Basic interactions with peripherals. Interrupts and their use. Debugging. Three hours of lecture and lab per week.
Pre-Requisites: EGR-140 or CS-125.
This programming course focuses on computing in the small: a microcontroller with very limited resources and no (or very limited) operating system. That means that the programmer is very close to the hardware, and actually manipulates individual signals. Yet, for all that, there is typically both hardware support (modules for timers, serial ports and more) as well as software support (monitors, terminal processes and interrupt service routines) that must all work with the hardware. In this course the student gains an appreciation for what computer hardware actually does, and how software is constrained by that reality. This course (or CS126, CS246 or similar) is a prerequisite for EE342.
The materials below for the 2020 offering include some documents from earlier offerings, which will be updated and added to as needed. The lab exercise descriptions are currently from earlier offerings and may be updated somewhat in the near future.
This course is normally offered in the fall semester, and is a tight fit for fourth semester students wanting to take it in order to get into EE342 the following fall. However, since that is the only time it is offered (in alternate years) someone wanting the Computer Engineering minor needs to find space, perhaps by forgoing a distribution course. The CS246 "C and Unix" course is also acceptable as alternative (as well CS 126 Computer Science 2) for EE342, but those courses do not specifically address the embedded environment which is helpful background for EE342.