5-day course: Using an RTOS in reliable embedded systems

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]


Course options

University of Leicester

You can attend this course:


Course objectives

After attending this course, participants should:

  • Understand the core features of popular real-time operating systems (RTOSs)
  • Understand how to maximise the reliability of a design based on a standard RTOS
  • Understand when it may be more appropriate to avoid a solution based on a conventional RTOS in high-integrity systems
  • Understand how to migrate designs between “RTOS based” and “RTOS free” solutions when required.

Who should attend?

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.


Pre-requisites for this course

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.


When will this course be delivered next?

Please contact us for information about the next course date.


Price

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.


Booking instructions

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.


Course contents

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.


Methodology

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.


Interested in on-site training?

We can deliver this course on your site at any time.

For on-site courses:

  • Training duration can be anything from 1 to 10 days.
  • Course content can be adapted to meet your precise requirements.
  • Training can be delivered anywhere in the world.
  • Combinations of training and consultancy activities can be provided.

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.