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.

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