Saturday 26 July 2014

Developing & Delivering KnowHow

Home > Training > C++ for Embedded Developers

C++ for Embedded Developers

Length: 5 days

view dates and locations

This course is delivered in co-operation with Doulos' training partner Feabhas, who specialise in training courses for real-time embedded developers.

Course Description

This course introduces the C++ language for use on realtime and embedded applications. The first part of the course focuses on the language itself, highlighting areas of concern for real-time and embedded development. The latter part covers the application of C++ to real-time systems including interrupt handling and concurrency issues. If a C++ course does not cover these fundamental issues you may find you still have a lot to learn after the training.

Attendees perform hands on embedded programming, on target hardware, during course practicals. Approximately 50% of the course is given over to practical work.


A 5 day course covering C++ in general on the first three days and real-time issues on the last two. Fifty percent of the course is spent on practical work.

Course Objectives

• To provide an understanding of the essentials of the C++ programming language.
• To give you practical experience of writing C++ for realtime & embedded systems.
• To give you the confidence to apply these new concepts to your next real-time project.

Delegates will learn

• The core C++ syntax and semantics
• How to access hardware in the language
• How to program interrupt handlers in C++
• About memory and performance issues associated with C++
• How real-time operating systems affect the use of the language


• A working knowledge of C

Who Should Attend

The course is designed for real-time engineers who are embarking on a project using C++ for the first time. It is also targeted at developers currently reluctant to move to C++ from C as they believe it poses too great an overhead. This course will clearly demonstrate both the strengths and weaknesses of C++ versus C.

Course Materials

• Delegate Handbook

Related Courses

• Real-Time Systems Design with UML 2.0
• Advanced C++ Programming
• C for Real-Time Developers
• Fundamentals of Real-Time Operating Systems

Course Workshop

The course makes use of target hardware during the embedded programming practical exercises. The target board is an ARM7-based microcontroller (NXP LPC2129) connected to an application board. Programming the target microcontroller to control the application board gives attendees a real-sense of embedded application development.

Course Outline

Introduction to real-time systems
- What is a real-time and embedded computer system
- The need for a rigorous development procedure
From C to C++
- Non object-oriented C++ enhancements to basic C
- Conveniences of C++ over and above C
Introduction to Object Oriented (OO)

- Key characteristics of OO development
- OO techniques and the real-time software development process
Introduction to Classes
- Classes & class instances
- Methods
- Constructors & destructors
More on Classes
- Inlining member functions
- const member functions
- static class members and functions
- arrays of classes
- implementing object relationships
- Building class hierarchies
- Dynamic binding for class methods, virtual functions
- Polymorphism
Multiple inheritance (MI)
- MI and interfaces
Functions and Operators
- Class defined conversions
- Overloading and function selection
- Friend functions
- Overloading operators
- Dynamic memory allocation revisited
Exception Handling
- What are exceptions?
- Throwing an exception
- The try block
- Catching an exception
- Rethrowing exceptions
- Catch all handlers
- Exception specifications
- Introduce parameterised types and functions
- Function templates
- Class templates
The Standard Library
- Introducing the Standard Template Library
Software Structuring
- Structuring large scale software systems
- Separate implementation from interface header files
- Dealing with name conflicts
- Linking with other languages
Embedded C++
- A summary of Embedded C++
- Embedded C++ features
Real-Time Specifics
- Low level facilities of C++ including:
   - Accessing hardware
   - Manipulating information at the bit level
   - Synchronising I/O with CPU via
   - Polling
   - Interrupts
Interrupt Programming
- Interrupt Service Routines in C++
   - functional approach
   - class approach
Target Specific Considerations:
- Data types;
- Language features affecting portability;
- Non-standard C++ language features;
- Assembly language interfacing;
- Designing ROMable objects.
- Concurrency;
- Scheduling strategies;
- Sharing resources in multi-tasking systems;
- Synchronizing tasks;
- Transferring data between tasks.

This course is available now for team-based training at or near to your location. To find out more:

Complete an on-line form and a Doulos representative will get back to you »
Call Doulos to discuss your requirements »
Back to top
Privacy Policy Site Map Contact Us