CENG 452

Building Software for Embedded Systems

Design and implementation of software for programmable embedded systems; software tools such as compilers, schedulers, code generators, and system-level design tools; data-flow and control models of computation and software synthesis for uniprocessor and multiprocessor architectures; synchronous/reactive languages and their mathematical properties; implementation of signal processing, communication and control algorithms using variety of technologies such as digital signal processors, microcontrollers, FPGAs, ASICs and real-time operating systems; real-time kernel design; software implemented fault-tolerance techniques.

Course Objectives

To give students the knowledge of latest technologies on software development for various types of embedded systems.

Recommended or Required Reading

Berger, Arnold. Embedded systems design:an introduction to processes tools and tecniques. San Francisco;Lawrence, Kan: CMP Books, c2002. ,Adamski, Marian Andrzej. Design of Embedded Control Systems, Boston, MA : Springer Science+Business Media, Inc., 2005. ,Tebbs, David. Real time systems: management and design, McGraw-Hill    London    1977.

Learning Outcomes:

1. Have knowledge on the requirements of embedded software development

2. Have knowledge on various standards and tools

3. Be able to analyze and design common algorithms used in various embedded systems

4. Be able to use the knowledge of software verification, validation and test on a real project

Topics
Introduction to Embedded Software Design
Compilers, Code Generators, System-Level Design Tools
Data-flow and Control Models of Computation
Software Synthesis for Uniprocessor and Multiprocessor Systems
Synchronous/Reactive Programming Languages
Overview of Real-Time Operating Systems
Summary (Examination)
Real-Time Scheduling Techniques
Various Algorithms in Digital Signal Processing, Communication and Control
Implementation of Algorithms on Microcontrollers, DSPs, FPGAs and ASICs
Software Development Tools
Testing, Design for Reuse
Software-Implemented Fault-Tolerance Techniques
Term Project

Grading

Midterm: 30%

Presentation: 30%

Final: 40%