This training introduces C++ as the logical evolution of C for object-oriented embedded system development. By demonstrating how C++ naturally extends C, the course provides an in-depth look at the underlying implementation of C++. This perspective is particularly valuable for understanding how to effectively apply C++ in resource-constrained embedded environments. With the recent major revisions to the C++ standard, known as C++11 and the upcoming C++14, this course focuses on features that are especially beneficial for embedded development, such as high-performance memory management, concurrency in multicore environments, and low-level, hardware-adjacent programming.
GOAL/BENEFITS
The primary objective of this class is to enable you to use C++ correctly and effectively.
- Present C++ as an object-oriented alternative within the context of embedded systems
- Highlight the similarities and differences between C and C++
- Understand various memory management strategies, with a focus on move semantics introduced in C++11
- Examine the underlying mechanics to see how different C++ paradigms translate into machine code
- Utilize templates to create type-safe, high-level abstractions for bare-metal, hardware-adjacent programming, including memory-mapped I/O and interrupts, particularly using the variadic templates introduced in C++11
- Introduce useful design patterns specifically applicable to embedded contexts
- Include practical exercises to reinforce key concepts
AUDIENCE/PARTICIPANTS
This training is designed for C++ programmers who wish to begin applying C++ in embedded system environments.
PREVIOUS KNOWLEDGE
The course assumes basic proficiency in C++ programming, equivalent to our "C++ – Level 1" and "C++ Level 2 – Introducing C++11" trainings.
PRACTICAL EXERCISES
Throughout the training, you will practice the presented concepts through a series of exercises. We will utilize the open and free integrated development environment provided by Eclipse.
Read more...