Architectural Design of Real-Time Software
Duration: 2 or 3 days
Number of participants: recommended optimum 15, maximum 25
The primary goal of this course is to give the participant the skills necessary to do high-level design of software for single-CPU real-time and embedded computer systems using a real-time operating system. This is a very practical, results-oriented course that will provide knowledge and skills that can be applied immediately.
For engineers more focused on distributed and multi-core multiprocessing software design, our course “Design of Distributed and Multi-Core Systems & Software” may be of more immediate interest. 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 behaviours, 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 are discussed in detail. Students learn how to correctly configure queue lengths, and examine design dangers such as excessive interrupt latency and interrupt overflow. The next major subject area of the class is the evaluation of timing performance and quality of a real-time or embedded software design. A large variety of application examples reinforce the concepts that are learned.
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.
This course is intended for practicing real-time and embedded systems software system architects, project managers and technical consultants who have responsibility for designing, structuring and implementing the software for real-time and embedded computer systems using an RTOS. This course focuses on design for single-CPU systems.
Course participants are expected to have thorough familiarity with at least one RTOS. This knowledge can be gained by attending one of the prerequisite introductory courses “Introduction to Embedded Systems and Software” or “Introduction to Real-Time Operating Systems”.
The course is based on lectures, discussions, design examples, exercises.