Using C++ in Embedded Systems - Applying C++11/C++14 Training Course

Course Code

Embedd8526

Duration

21 hours (usually 3 days including breaks)

Requirements

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

Testimonials

★★★★★
★★★★★

Related Categories

Related Courses

Course Discounts

Course Discounts Newsletter

We respect the privacy of your email address. We will not pass on or sell your address to others.
You can always change your preferences or unsubscribe completely.

Some of our clients

is growing fast!

We are looking for a good mixture of IT and soft skills in Denmark!

As a NobleProg Trainer you will be responsible for:

  • delivering training and consultancy Worldwide
  • preparing training materials
  • creating new courses outlines
  • delivering consultancy
  • quality management

At the moment we are focusing on the following areas:

  • Statistic, Forecasting, Big Data Analysis, Data Mining, Evolution Alogrithm, Natural Language Processing, Machine Learning (recommender system, neural networks .etc...)
  • SOA, BPM, BPMN
  • Hibernate/Spring, Scala, Spark, jBPM, Drools
  • R, Python
  • Mobile Development (iOS, Android)
  • LAMP, Drupal, Mediawiki, Symfony, MEAN, jQuery
  • You need to have patience and ability to explain to non-technical people

To apply, please create your trainer-profile by going to the link below:

Apply now!

This site in other countries/regions