Back to Courses

CSCE 313 - Embedded Systems Programming

Department Course Description

Embedded microprocessor and micro-controller systems are the data analysis and processing technology "backbone" of many industries—automotive, military and aerospace, manufacturing and production, transportation, and consumer electronics—to name a few.  The millions of lines of embedded software code drives many of the critical systems that makes our global economy work as it does.  (Remember the Y2K “scare” a few years back?  Experts were mostly worried about the impact of the date rollover problem on the execution of the embedded systems more than any other factor.)  Embedded systems are where "the rubber meets the road", so to speak, in that we are concerned about the level where the higher layers of systems and application software integrate with the underlying hardware on which the software executes--through the Instruction Set Architecture (ISA) layer.  In addition, at this level, we need to concern ourselves with the interfacing and integration of disparate systems and devices which would come under the control of the embedded system.

Many millions of lines of code used in embedded systems are written in low-level assembler languages, and in direct machine code sequences, supported by the microprocessor or micro-controller used in the specific systems--in addition to code written in high-level languages such as C/C++.  We will take one popular and well-known processor, the Motorola® 68000 and its descendants, and explore its Instruction Set Architecture (ISA) model and hardware architecture, so that we can write efficient and correct programs that exploit the capabilities of this processor “workhorse” to specific programming tasks we have in mind.

313—Embedded Systems Laboratory. (3) (Prereq: CSCE 211, 212) design and implementation of microprocessor based systems; assembly language programming. This is the Link to Department Syllabus.

 

Course Content Materials

Course Syllabus & Text

Course Lecture Notes & Resources

Homework Assignments

 

Course Pages Content Change History

I will post stuff of importance to the class here.  Please check this once or twice a week, as I will tend to post relevant information about any changes to class or assignment schedules here first. 

Date of Change Nature of Change Discussion of Change
1/9/04 Created new web page structure for Spring 04 course. The course is being modified according to a new syllabus developed in conjunction with the CS&E Undergraduate Committee.
     

 

The Importance of This Course for Computer Engineering

A key aspect of computer engineering design is the use of an iterative enhancement style of design method, allowing us to explore the space of possible program solutions to an embedded systems programming problems.  Many of the problems require interfacing to external circuits and systems, while also responding to a wide range of events, in real time, generated by these devices and systems.  Many of these millions of lines of low-level assembler code are written using haphazard methods.  But the truth is that computer engineering methods--specifically those associated with software engineering--are essential for constructing robust, correct and efficient programming solutions to embedded systems problems.  We will take the Motorola® 68000 and explore its Instruction Set Architecture (ISA) model so as to apply good software analysis, construction and program behavior verification methods to the programs that we construct.

Back to Courses