logo


slogan

4
About Us
Training
Calendar
Registration
Contact Us
10

 

Debugging Real-Time Software
 
   

Course Highlights:
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 behaviors, 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 special sorts of bugs that tend to create problems in Interrupt Service Routines ("ISRs").  Attendees learn how to evaluate configuration and capacity needs, as well as to examine design dangers such as interrupt overflow.  The class continues with techniques for quantitative evaluation of timing performance bugs in real-time software.

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").

Objective of the course
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.


Who Should Attend:
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 the prerequisite introductory courses "Introduction to Embedded Systems and Software" or "Introduction to Real-Time Operating Systems".]

Course Outline:

Introduction

What is a Bug ?
The Debugging "Cookbook"
9 Golden Guidelines for Debugging
A Taxonomy of Real-Time / Embedded Bugs
Exercise: Bugs when Porting to New Hardware

The "Top 5" Typical Real-Time Bugs

Stack Overflows
Race Conditions
Deadlocks
Timing Problems
Re-entrancy Conditions

Real-Time Debugging Tools

Where Traditional Debugging Techniques are Insufficient
The 3 Classes of Real-Time Software Debuggers
Logic Analyzers
Exercise: Bug in a Real-Time Controller

Bugs in Multi-tasking: The Mis-use of RTOS's

The Correctness Killers: Violations of Liveness
Ingredients for Deadlock and their Avoidance
Task Lockouts and Starvations
Task Decomposition and Communication Defects
Interrupt Service Routine Design Defects
RTOS Usage Defects
Exercise: Bug in Interrupt Handling

Real-Time Performance Bugs

Task Scheduling Timing Failures
Analysis of Individual Timing Scenarios
Periodic Tasks and Deadlines
Sporadic Tasks and Interrupt Handling Timing
Resource Sharing Delays
Exercise: Performance Calculations

C-Language Programming Bugs in Real-Time Software

C-Language Ambiguities
Coding Discipline for C-Language
C-Language Code Analysis and Tools
Static vs. Dynamic Code Analysis
Exercise: C-Language Shenanigans

(Optional:) Overview of Embedded Software Testing and Verification

Final Examination.


INSTRUCTOR:  Dr. David Kalinsky
Dr David Kalinsky has more than thirty years of experience in the design and construction of real-time and embedded computer systems software.  He is a popular lecturer and seminar leader on technologies for embedded software development, appearing before audiences of professional engineers in North America, Europe and Israel.  David regularly presents classes at the Embedded Systems Conferences on topics such as "Architectural Design of Device Drivers" and "Principles of High Availability Embedded Systems Design".

He has built and managed high-tech training programs on aspects of software engineering for the development of real-time and embedded systems for a number of Silicon Valley companies.  He has also been involved in the design of many embedded medical and aerospace systems.  In addition, he has in the past developed and taught training courses on a number of major real-time operating systems (RTOSs), including VRTX, pSOS, VxWorks, OSEK / VDX, Nucleus, OSE and others.  With his broad experience, he has trained thousands of embedded systems software engineers and architectural designers throughout the world.


Who We Are
We are a professional organisation providing training services to companies.  We offer a comprehensive range of training courses, workshops and seminars covering every aspects relating to engineering. 

We provide various training programs that meet the immediate and future needs of engineers. The training is organised through seminar style, hands-on workshop, project-based tutorial or a mixture to bring the maximum learning benefits to the enginners.
Our Trainers
We have a quality pool of leading authorities, worldwide experts and fully trained up professionals who are constantly striving to uncover the pitfalls and best practices of modern technology development.
     
All rights reserved by
Omniscient International
     About Us      Training       Calendar      Registration      Contact Us