+ +
- -
Online Training
 
Calendar  Details
Operating Systems
 
Calendar  Details
Programming
Calendar  Details
Processors
 
Calendar  Details
Communications
 
 
 
Calendar  Details
+ +
> >
- -

Last News

Securing an Embedded Linux with System Workbench

Asymmetric Multi-Programming with System Workbench for Linux

Creating an STM32MP1 Linux platform with System Workbench for Linux

Creating an IMX8 Linux platform with System Workbench for Linux

 
ac6 >> ac6-training >> Online Training >> Langages >> Embedded C++ Programming Download Catalog Download as PDF Write us Printable version

oL3 Embedded C++ Programming

formateur
Objectives
  • Master the C++ language
  • Use C++ Template (generic code) in Embedded Systems
  • Master the C++ Advanced aspects such as polymorphism, single and multiple inheritances.
  • Learn to redefine the C++ operators for dynamic memory allocation in embedded applications
  • Manage C++ exceptions for Secure Embedded applications
  • Use C++ objects to handle serial transmission / reception of character strings
  • Discover the modern C++ features
Labs are conducted QEMU ARM-based board
Prerequisite
Course environment
  • Theoretical course
    • PDF course material (in English)
    • Course dispensed using the Teams video-conferencing system
    • The trainer to answer trainees’ questions during the training and provide technical and pedagogical assistance through the Teams video-conferencing system
  • Practical activities
    • Practical activities represent from 40% to 50% of course duration
    • One Online Linux PC per trainee for the practical activities
    • The trainer has access to trainees’ Online PCs for technical and pedagogical assistance.
    • Eclipse environment and GCC compiler
  • Downloadable preconfigured virtual machine for post-course practical activities.
Duration
  • Total: 24 hours
  • 4 sessions, 6 hours each (excluding break time)
  • From 40% to 50% of training time is devoted to practical activities
  • Some Labs may be completed between sessions and are checked by the trainer on the next session

First Session
Introduction to C++ for industrial systems
  • Introduction to object oriented programming
  • History and definition
  • Overview on C++98/C++03/C++11/C++14/ C++17
  • Modern C++ objectives
  • The C+ layer: switch from C to C++
  • Embedded C++
  • How to write optimized embedded code
Exercise:  Understand function mangling
Exercise:  Function inlining
Exercise:  Volatile variable handling
C++ and embedded systems
  • Object Oriented Programming in C++
    • Encapsulation
    • Classes and objects
    • Attributes and member functions
    • Object construction and destruction
    • Construction parameters
    • Copy constructor
    • Object composition and container
    • Scope qualifier operator
Exercise:  Declaring classes and methods
Exercise:  Working with default, copy and parameterized constructors
Exercise:  Understand the differences between composition and aggregation
Second Session
Operator Overloading
  • Optimizing parameter object passing
  • Overloading operators by member functions
  • Overloading operators by friend functions
  • Memory management operators overloading
Exercise:  The assignment operator
Exercise:  overloading operators
Simple Inheritance
  • Specialization by addition and substitution
  • Derivation and access rules
  • Construction during inheritance
  • Inheritance polymorphism
  • Virtual methods
Exercise:  Understand inheritance
Persistent and flashable objects
  • Constant and partially constant objects
  • Persistent objects
  • Flashable objects
Exercise:  Creating constant, mutable, persistent and ROMable objects
Enhancing security with exceptions
  • Launching, capturing and handling exceptions
  • Retriggering exception
  • Exceptions specifications
  • Handling unexpected exception
  • Exception objects of the C++ standard library
Exercise:  Handle errors using exceptions
Exercise:  Unexpected exceptions management
Third Session
C++ advanced techniques
  • Member pointers
  • Generic objects and templates
    • Classes and generic functions
    • Templates overloading
    • Specializing templates
    • STL (Standard Template Library)
    • Templates in embedded systems
  • Polymorphic objects
  • Virtual objects and abstract classes
  • Specializing objects by simple inheritance
    • Building derivate objects
    • Access control rules for inherited objects
    • Specializing objects by multiple inheritance
    • Conflicts resolution by scope operator
    • Virtual inheritance
Exercise:  Generic classes and functions
Exercise:  Understand virtual methods by subclassing a generic Device class
Exercise:  Understand multiple inheritance and virtual bases
Fourth Session
Introduction to modern C++
  • Overview
  • Storage class specifiers
  • Uniform initialization
  • C++ Named Requirements
  • Automatic type deduction
    • The auto keyword
    • The auto keyword as a return type from a function
    • Using auto for declaring function signatures
    • Automatic constant references
    • Forwarding references
    • Advantages of using auto in embedded systems
Exercise:  Using auto to declare variables
Keywords
  • Enum class
  • override and final
  • Inline variables
  • nullptr
  • static_assert
  • noexcept
  • constexpr and if constexpr
  • decltype
  • Defaulted and deleted functions
    • Implementing a thread-safe singleton
Exercise:  Using modern C++ keywords
Exercise:  Create a singleton using modern C++
New functionalities
  • Structured binding
  • Range-based for loops
  • Nested namespaces and namespace aliases
  • Alignment
    • Alignas
    • Alignof
  • Move semantics and r-value references
    • Copy-constructing and Move-constructing
    • r-value references
    • Perfect forwarding
Exercise:  Using the new for loop syntax
Exercise:  Using std::tuple
Exercise:  Move semantics performance advantages on embedded systems