Debugging Real-Time Software
Duration: 2 days
Number of participants: recommended optimum 15, maximum 25
The primary goal of this course is to give the participant the skills necessary to identify and correct defects in software for real-time computer systems developed with or without an RTOS. This is a very practical, results-oriented course that will provide knowledge and skills that can be applied immediately. This course examines the activities involved in discovering and correcting errors, flaws, faults and failures in real-time and embedded systems software.
The class begins with a presentation of the main steps and guidelines for identifying and remedying situations in which real-time and embedded software is not working correctly. This is followed by a survey of the wide range of categories of bugs from which such software can suffer. The class then quickly focuses in on a detailed discussion of the “top 5” kinds of bugs that can be “project killers” or “product killers”, including stack overflows, race conditions, deadlocks, timing problems, and re-entrancy conditions. Emphasis is placed on multitasking and timing behaviours, rather than on general data processing issues.
The class continues with an examination of debugging tools that are helpful in real-time software development, such as low-level monitors, and high-level RTOS-aware system debuggers. ‘Liveness’ issues including deadly embrace, lockout, memory starvation and CPU starvation are discussed in depth. As are the particular sorts of bugs that tend to create problems in multi-tasking software when using real-time operating systems. Emphasis then focuses on the unique sorts of bugs that plague Interrupt Service Routines (ISRs), such as interrupt overflow.
This course is not a general course about software debugging, but rather it is highly focused on the debugging of embedded, time-constrained, resource-constrained multitasking software that may run under the control of a modern real-time operating system (RTOS).
This course is intended for practicing real-time and embedded systems software designers, software developers, project managers and quality engineers who have responsibility for planning, implementing and debugging the software for real-time and embedded computer systems.
Course participants are expected to have practical knowledge of coding for real-time and embedded systems, plus some familiarity with at least one RTOS. This knowledge can also be gained by attending one of our prerequisite introductory courses “Introduction to Embedded Systems and Software” or “Introduction to Real-Time Operating Systems”.
Additional knowledge useful for attendees of this course can be obtained at the prerequisite foundation course “Testing of Embedded Software”. Both courses can be combined in a 3-day format named “Embedded Software Testing and Debugging Masterclass”.
The course is based on lectures, discussions, example debugging scenarios, classroom exercises.