Course Code: embedd8526
Duration: 21 hours
Prerequisites:

There are no specific requirements needed to attend this course.

Overview:

This training intends to introduce C++ as the common extension of C when applying object-oriented embedded system development. Since C++ encloses C, this training takes us from C to C++ in a natural way, and looks under the hood of how C++ is implemented. This is especially valuable to comprehend when applying C++ in an embedded resource limited environment.  The C++ standard has recently been undergoing a major revision, a.k.a. as C++11, and a new one is on its way, C++14. This course addresses subjects brought in with these revisions that are especially useful like high performance memory management, concurrency making use of a multicore environment, and bare-metal close to the hardware programming.

GOAL/BENEFITS

The major objective of this class is that you shall be able to use C++ in a “correct way”.

  • Introduce C++ as an object oriented language alternative in an embedded system context
  • Show the similarities ‑ and differences ‑ with the C language
  • Comprehend different memory management strategies – especially the move semantics introduced with C++11
  • Look under the hood and understand what different paradigms in C++ leads to in machine code
  • Use templates to achieve type safe high order abstractions for bare-metal close to the hardware programming – memory mapped I/O as well as interrupts – especially the variadic templates introduced with C++11
  • Provide some useful design patterns especially applicable in an embedded context
  • A few exercises in order to practice some concepts

AUDIENCE/PARTICIPANTS

This training is aimed C++- programmers who intend to start using C++ in an embedded system context.

PREVIOUS KNOWLEDGE

The course requires basic knowledge in C++ programming, corresponding to our trainings ”C++ – Level 1” and ”C++ Level 2 – Introducing C++11”.

PRACTICAL EXERCISES

During the training you will practice the presented concepts in a number of exercises. We will use the open and free integrated development environment from Eclipse

Course Outline:
  • What’s an Embedded System?
    • Simple Definition
    • Some Milestones
    • Characteristics
    • Why using C++?
  • Comparison with C
    • C: A subset of C++ – almost
    • Performance
    • Added “Free” Functionality
    • Why not using C++?
  • Classes
    • Member Variables
      • Instance variables
      • Class variables
    • Member Functions
      • Instance functions
      • Class functions
    • Implicit Methods
      • Constructor
        • Initialization
        • Delegation
      • Destructor
      • Copy assignment operator
    • Move Semantics – avoiding unnecessary deep copy
    • struct in C++
    • Package/Namespace
  • Inheritance
    • Introduction
    • Realization
    • Performance
    • Multiple Inheritance
    • Virtual Inheritance
  • Polymorphism
    • Introduction
    • Virtual Function
    • Virtual Destructor
    • Implementation
    • Runtime Type Information, RTTI
    • Performance
  • Templates
    • Introduction
    • Function Template
    • Class Template
      • Variadic Templates
    • Code Bloat
    • Implementation Strategies
    • Template Meta Programming
    • Template versus Inheritance?
  • Error Handling
    • Exception Handling
    • Performance Issues
    • Implementation
  • Inline Code
    • When to Use?
    • Strategies
  • Start-up
    • System Start-up
    • The C Part
    • The C++ Part
  • Standard Library
    • Standard Template Library, STL
    • iostream Library
    • Major extensions made on STL due to C++11:
      • Move semantics
      • Variadic Templates
      • Concurrency
  • Memory Management
    • The C++ Memory Model
      • The stdint-types
      • Atomic types and their operations
    • Strategies
    • Variables
    • Placement new
    • User Defined Memory Management
  • Interoperation between C and C++
    • Name Mangling
    • Static Initialization
    • Dynamic Memory
    • struct Contents
      • POD – Plain Old Data type
  • Design Patterns
    • RAII – Resource Acquisition Is Initialization
    • Memory-mapped I/O
    • Interrupt
    • Initialization of Static Objects
Sites Published:

United Arab Emirates - Using C++ in Embedded Systems - Applying C++11/C++14

Qatar - Using C++ in Embedded Systems - Applying C++11/C++14

Egypt - Using C++ in Embedded Systems - Applying C++11/C++14

Saudi Arabia - Using C++ in Embedded Systems - Applying C++11/C++14

South Africa - Using C++ in Embedded Systems - Applying C++11/C++14

Brasil - Using C++ in Embedded Systems - Applying C++11/C++14

Canada - Using C++ in Embedded Systems - Applying C++11/C++14

中国 - Using C++ in Embedded Systems - Applying C++11/C++14

香港 - Using C++ in Embedded Systems - Applying C++11/C++14

澳門 - Using C++ in Embedded Systems - Applying C++11/C++14

台灣 - Using C++ in Embedded Systems - Applying C++11/C++14

USA - Using C++ in Embedded Systems - Applying C++11/C++14

Österreich - Using C++ in Embedded Systems - Applying C++11/C++14

Schweiz - Using C++ in Embedded Systems - Applying C++11/C++14

Deutschland - Using C++ in Embedded Systems - Applying C++11/C++14

Czech Republic - Using C++ in Embedded Systems - Applying C++11/C++14

Denmark - Using C++ in Embedded Systems - Applying C++11/C++14

Estonia - Using C++ in Embedded Systems - Applying C++11/C++14

Finland - Using C++ in Embedded Systems - Applying C++11/C++14

Greece - Using C++ in Embedded Systems - Applying C++11/C++14

Magyarország - Using C++ in Embedded Systems - Applying C++11/C++14

Ireland - Using C++ in Embedded Systems - Applying C++11/C++14

Luxembourg - Using C++ in Embedded Systems - Applying C++11/C++14

Latvia - Using C++ in Embedded Systems - Applying C++11/C++14

España - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Italia - Using C++ in Embedded Systems - Applying C++11/C++14

Lithuania - Using C++ in Embedded Systems - Applying C++11/C++14

Nederland - Using C++ in Embedded Systems - Applying C++11/C++14

Norway - Using C++ in Embedded Systems - Applying C++11/C++14

Portugal - Using C++ in Embedded Systems - Applying C++11/C++14

România - Using C++ in Embedded Systems - Applying C++11/C++14

Sverige - Using C++ in Embedded Systems - Applying C++11/C++14

Türkiye - Using C++ in Embedded Systems - Applying C++11/C++14

Malta - Using C++ in Embedded Systems - Applying C++11/C++14

Belgique - Using C++ in Embedded Systems - Applying C++11/C++14

France - Using C++ in Embedded Systems - Applying C++11/C++14

日本 - Using C++ in Embedded Systems - Applying C++11/C++14

Australia - Using C++ in Embedded Systems - Applying C++11/C++14

Malaysia - Using C++ in Embedded Systems - Applying C++11/C++14

New Zealand - Using C++ in Embedded Systems - Applying C++11/C++14

Philippines - Using C++ in Embedded Systems - Applying C++11/C++14

Singapore - Using C++ in Embedded Systems - Applying C++11/C++14

Thailand - Using C++ in Embedded Systems - Applying C++11/C++14

Vietnam - Using C++ in Embedded Systems - Applying C++11/C++14

India - Using C++ in Embedded Systems - Applying C++11/C++14

Argentina - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Chile - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Costa Rica - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Ecuador - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Guatemala - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Colombia - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

México - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Panama - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Peru - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Uruguay - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Venezuela - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Polska - Using C++ in Embedded Systems - Applying C++11/C++14

United Kingdom - Using C++ in Embedded Systems - Applying C++11/C++14

South Korea - Using C++ in Embedded Systems - Applying C++11/C++14

Pakistan - Using C++ in Embedded Systems - Applying C++11/C++14

Sri Lanka - Using C++ in Embedded Systems - Applying C++11/C++14

Bulgaria - Using C++ in Embedded Systems - Applying C++11/C++14

Bolivia - Uso de C ++ en sistemas integrados: aplicación de C ++ 11 / C ++ 14

Indonesia - Using C++ in Embedded Systems - Applying C++11/C++14

Kazakhstan - Using C++ in Embedded Systems - Applying C++11/C++14

Moldova - Using C++ in Embedded Systems - Applying C++11/C++14

Morocco - Using C++ in Embedded Systems - Applying C++11/C++14

Tunisia - Using C++ in Embedded Systems - Applying C++11/C++14

Kuwait - Using C++ in Embedded Systems - Applying C++11/C++14

Oman - Using C++ in Embedded Systems - Applying C++11/C++14

Slovakia - Using C++ in Embedded Systems - Applying C++11/C++14

Kenya - Using C++ in Embedded Systems - Applying C++11/C++14

Nigeria - Using C++ in Embedded Systems - Applying C++11/C++14

Botswana - Using C++ in Embedded Systems - Applying C++11/C++14

Slovenia - Using C++ in Embedded Systems - Applying C++11/C++14

Croatia - Using C++ in Embedded Systems - Applying C++11/C++14

Serbia - Using C++ in Embedded Systems - Applying C++11/C++14

Bhutan - Using C++ in Embedded Systems - Applying C++11/C++14

Nepal - Using C++ in Embedded Systems - Applying C++11/C++14

Uzbekistan - Using C++ in Embedded Systems - Applying C++11/C++14