This course examines the activities of high-level design of real-time and embedded systems software that's to be developed using a real-time operating system (RTOS).
The class begins with a quick examination of some fundamental issues in real-time multitasking embedded application software design and development, and briefly reviews several modern techniques for real-time and embedded software requirements specification. It then quickly focuses on how to structure a software system that must execute within strict deadline and resource limits. Emphasis is placed on multitasking and timing behaviors, rather than object orientation.
The class continues with a detailed examination of a broad spectrum of intertask communication and synchronization options including mutexes of several varieties. 'Liveness' issues such as deadly embrace, lockout, memory starvation
and CPU starvation will be discussed in detail. Students will learn how to correctly configure queue lengths, and examine design dangers such as interrupt overflow and memory starvation. The next major subject area of the class
is the evaluation of timing performance and quality of a real-time or embedded software design.
This course is not a general course about software design theory, but rather it is highly focused on the design of deeply-embedded, time-constrained, resource-constrained multitasking software that will run under the control of a
modern RTOS.