This course is delivered in co-operation with Doulos' training partner Feabhas, who specialise in training courses for real-time embedded developers.
Since its standardization in 1998, the support and use of C++ as an embedded programming language has grown significantly. However, until recently most C++ cross compilers were actually “Embedded C++” (EC++) compilers or were typically inefficient in the more advanced areas of the language. To date, a high proportion of programmers using C++ for embedded development have either been unable or have chosen not to use certain features of C++ due to fear of bloated, slow code with poor performance.
This course addresses the “fear, uncertainty and doubt” of using full C++. Specifically the course deals with : performance and memory considerations of polymorphic functions, exceptions and templates. In addition, complete coverage of the Standard Library, including the STL, are covered, again with the specifics of performance and memory models.
• To provide an understanding of the advanced aspects of the C++ programming language.
• To give you practical experience of writing efficient C++ code for real-time & embedded systems.
• To understand the impact different compilers have on performance.
- Member functions
- Static functions
- Inheritance and V-Tables
- RTTI and type info.
- Why Embedded C++ was developed
- Embedded C++ features.
- Migrating from EC++ to full C++
- Accessing hardware
- Manipulating information at the bit level
- Device polling
- Different interrupt models
- Function model
- Name encoding
- Class model
- Device “has an” interrupt
- Memory overhead
Functions and Operators
- Class defined conversions
- Overloading and function selection
- Friend functions and classes
- Overloading operators
- Dynamic memory allocation revisited
- Copy constructors
- What are exceptions
- Throwing an exception
- The try block
- Catching an exception
- Rethrowing exceptions
- Catch all handlers
- Exception specifications
- Exceptions models and overheads
- Introduce parameterised types and functions:
- function templates
- class templates
- Performance implications
The Standard Library
- Introduction to the Standard Library.
- The STL
- Using the STL efficiently
- Consider how to structure large scale
- Separate implementation from interface
- Dealing with name conflicts
- Linking with other languages
Target Specific Considerations
- Portability Considerations
- Non-standard C++ language features
- Assembly Language Interfacing.
- Designing ROMable objects
- What patterns are and are not
- Patterns types