ECE 40862 - Software for Embedded SystemsLecture Hours: 3 Credits: 3
Normally Offered: Each Fall
ECE 36200, CS 15900
Requisites by Topic:
Digital Logic Design, Basics of Microcontrollers, C Programming
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.
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
- An Embedded Software Primer, David E. Simon, Addison-Wesley Professional, 1999, ISBN No. 13: 978-0201615692.
- 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:
- an understanding of the embedded software design process and tools used. [None]
- an understanding of various software architectures for embedded systems. [1,2]
- an ability to apply advanced debugging techniques to embedded software. [1,6]
- an ability to analyze and implement real-time embedded applications. [1,2]
- an ability to design and implement distributed applications for networked embedded systems. [2,6]
|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|
Engineering Design Content:
Engineering Design Consideration(s):