This training session aims to present C++ as the natural evolution of C for object-oriented embedded system development. Because C++ encompasses C, the course guides participants from C to C++ in a logical progression, revealing the internal mechanics of C++ implementation. Understanding these internals is crucial for effectively applying C++ in resource-constrained embedded environments. With the C++ standard undergoing significant updates, notably with the introduction of C++11 and the upcoming C++14, this course focuses on features from these revisions that are particularly beneficial for embedded developers. Key topics include high-performance memory management, concurrency in multicore environments, and low-level, hardware-proximity programming.
GOAL/BENEFITS
The primary objective of this class is to enable participants to use C++ in a "correct" and effective manner.
- Present C++ as an object-oriented alternative within the context of embedded systems.
- Highlight both 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 mechanisms to comprehend how different C++ paradigms translate into machine code.
- Utilize templates to create type-safe, high-level abstractions for bare-metal, hardware-close programming (such as memory-mapped I/O and interrupts), particularly leveraging variadic templates from C++11.
- Explore useful design patterns specifically applicable to embedded contexts.
- Participate in exercises to practice key concepts.
AUDIENCE/PARTICIPANTS
This training is designed for C++ programmers who wish to begin using C++ in embedded system projects.
PREVIOUS KNOWLEDGE
The course assumes basic knowledge of C++ programming, equivalent to our trainings "C++ – Level 1" and "C++ Level 2 – Introducing C++11".
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...