ECE 40862 - Software for Embedded Systems

Lecture Hours: 3 Credits: 3

Counts as:
CMPE Selective
EE Elective

Normally Offered: Each Fall

ECE 36200, CS 15900

Requisites by Topic:
Digital Logic Design, Basics of Microcontrollers, C Programming

Catalog Description:
This course provides an introduction to software design for embedded computing systems. Major topics covered include the importance of time and timing in embedded systems, embedded software organization (FSM-based program design, polled loop systems, foreground- background systems, event driven architectures, multi-tasking, etc.), real-time scheduling and real-time operating systems, wired/wireless networked embedded systems, debugging techniques for embedded software, and advanced topics such as memory-safe programming, implementing reentrant functions, and minimizing code space, memory usage, and power consumption. The course features a series of integrated assignments using state-of-the-art embedded hardware platforms, embedded software design tools, and real-time operating systems that reinforce the concepts taught in the lectures.

Supplementary Information:
Activities 1. Get hands on with platform and simple exercise to understand the concept of cross compilation 2. Understanding polling vs. interrupts 3. Designing control loops: sense, compute, actuate 4. Event-driven SW architecture: TinyOS on MSP430F5438 evaluation board 5. Real-time scheduling in Linux on the Beagleboard embedded platform 6. Writing a simple distributed embedded application

Required Text(s):
  1. An Embedded Software Primer, David E. Simon, Addison-Wesley Professional, 1999, ISBN No. 13: 978-0201615692.
Recommended Text(s):
  1. Introduction to Embedded Systems, A Cyber-Physical Systems Approach, E.A. Lee and S.A. Seshia, 2011, ISBN No. 978-0-557-70857-4.

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated:
  1. an understanding of the embedded software design process and tools used. [None]
  2. an understanding of various software architectures for embedded systems. [1,2]
  3. an ability to apply advanced debugging techniques to embedded software. [1,6]
  4. an ability to analyze and implement real-time embedded applications. [1,2]
  5. an ability to design and implement distributed applications for networked embedded systems. [2,6]

Lecture Outline:

Week(s) Major Topics
1 Introduction to embedded systems and associated tool flow
2 Review of embedded hardware
1 Time and clocks in embedded systems
3 Software architectures for embedded systems
3 Real-time operating systems
2 Software for networked and distributed embedded systems
2 Debugging techniques for embedded software
1 Advanced topics

Engineering Design Content:

Establishment of Objectives and Criteria

Engineering Design Consideration(s):