Does your company use a real-time operating system (RTOS)? Does every member of your development team fully understand how this RTOS works? If not, can you be sure that your products will operate reliably?
Using a practical mixture of informal seminars and “hands on” training sessions, this 5-day course will help you to understand the ways in which RTOS features (and configuration settings) may have an impact on the behaviour of your embedded systems. The course considers issues such as conflicts over shared resources and explores practical solutions using “priority inheritance” and related protocols.
Certification issues (linked to ISO 26262 and DO-178b) are also considered.
Lessons learned from the module can be applied when using a wide range of commercial RTOS products in a wide range of application sectors.
[Module code: B2a]
You can attend this course:
After attending this course, participants should:
This course will be of particular benefit to engineers and engineering managers interested in the development of high-integrity automotive, medical, aerospace, industrial and related systems.
Most of coding examples (and some of the exercises) on this module involve the C programming language. We assume that all participants have had experience developing embedded systems using C.
Please note that this is not an introductory course. If have worked with embedded systems for less than 6-12 months, we recommend that you attend Module A1 before taking this course.
Please contact us for information about the next course date.
Places are available on this course at the “Taster” rate of £500 + VAT per place.
You can take this course and Module A1 for the combined fee of £1200 + VAT (Taster rate).
Conditions apply to all “Taster rate bookings. Please refer to our fees page for full information.
To book a place on this course, please contact us.
A place will then be reserved and you will be sent an invoice.
Your place on the course will be confirmed when payment is received.
Formal quotations can be provided on request.
Day 1: Real-Time Operating System Concepts
Introduction to the course. Classification of real-time systems; Overview of an RTOS kernel; Basic RTOS scheduling; Timing issues and the system tick; Handling generic events; Overview of inter-task communication methods; Stack usage; Heap usage. Impact of different task types; Putting the time in real-time; Event services for periodic tasks; Event services for aperiodic tasks; Scheduler considerations; Reducing power consumption.
Day 2: Semaphores, mutexes and related mechanisms
A brief history of semaphores; Basic semaphore synchronisation; Wait-and-Flush synchronisation; Rendezvous synchronisation; A hierarchy of synchronisation; Synchronisation in critical sections. Mutual exclusion by disabling interrupts; Semaphores for mutual exclusion; Problems with semaphores; Introducing the mutex; Incorrect signalling issues; Nesting and recursion issues; Task deletion issues.
Day 3: Liveness, Priority Inversion and Inter-Task Comms
Resource graphs; Liveness issues; Deadlock definition and examples; Circular wait; Deadlock prevention; Livelock definition; Starvation definition; Priority inversion by example; Priority inheritance protocol; Priority protect protocol; Priority ceiling protocol; Non pre-emption protocol; Summary of priority inversion workarounds; Priority inversion on Mars. Communication with shared memory; Working at a higher level of abstraction; Queued communication; Non-interlocked one-way communication; Interlocked one-way communication; Interlocked two-way communication; Generalising the client/server model; Direct message passing; Handling message-based priority inversion; Pipes.
Day 4: Memory Issues
Memory layout in a typical microcontroller; Locating data by source-code; Initialised local data; Typical stack usage in a function; Calculating stack size with a call graph; Impact of ISRs on stack usage; Complexity in RTOS call graphs; Unbounded stack usage problems; Measuring stack usage at run-time; Real worst-case stack usage. Dynamic memory allocation in safety-critical systems; Memory allocation history; Typical dynamic memory allocation in C; Fragmentation problems; Pool-based memory allocators; Blocking and non-blocking allocation; Problems with dynamic memory allocation; Partial solutions to the double-free problem; Solution to the re-entrancy problem.
Day 5: Detailed case study
Review. Detailed case study exploring all aspects of the course.
This course is taught through a carefully-planned combination of seminars and practical (laboratory) classes. Problems will be set during seminars and in laboratory sessions. Case studies will be used extensively in the laboratory sessions.
We can deliver this course on your site at any time.
For on-site courses:
Please contact us for further details.
On-site training options are only cost effective for class sizes of at least 10 people in most cases.