EE247 Programming for Embedded Applications


Catalog description

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.

Syllabus, Laboratory Exercises, Tutorial Documents 2020

  • Syllabus
  • An Introduction to C (from EGR140) (2.3MB)
  • Use of Processor Init (we won't)
  • An introductory exercise using a microcontroller (from EGR222, lab 7) (.94MB)
  • An example showing how a simple program is implemented on the microcontroller
  • Lab Exercise No. 0
  • Lab Project No. 1 out of date
  • Lab Project No. 2 out of date
  • Comments on Project 2 (follow-up to the exercise)
  • Terminal SH8 get started (originally for EE342)
  • EE247 Process Timing Demo
  • On Multitasking (Looking forward toward Lab 3)
  • EE247 notes on Buffered Print what would have been in-class exercise
  • EE247 Flags and Semaphores This is useful for Project 3!
  • Lab Project No. 3 For Spring 2020
  • Lab Project No. 4 Proposals document
  • MC9S08SH8 Microcontroller Manual (1.6MB)
  • Remarks

    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.