EE247. Programming for Embedded Applications
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 or similar) is a prerequisite for EE342.
The next offering of this course is expected to be Spring 2018. I won't be teaching it; Mr. Mike Morrow will. His syllabus and materials will be different from mine. He has my full confidence, and I believe it will be a very worthwhile course, though definitely different. I will still leave this material here, however, for reference. (He will be using the D2L system for distributing materials.)
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 CS "C and Unix" course is also usually acceptable as alternative along with CS 126 Computer Science 2, but those courses do not specifically address the embedded environment which is important in EE342.