ECE 49595 - Software for Embedded Systems (Now runs as ECE 40862)

Lecture Hours: 3 Credits: 3

Counts as:
EE Elective

Experimental Course Offered: Spring 2011, Fall 2012, Fall 2013, Fall 2015

ECE 36200

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.

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):