There are no specific requirements needed to attend this course.
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
- 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
- Constructor
- Move Semantics – avoiding unnecessary deep copy
- struct in C++
- Package/Namespace
- Member Variables
- 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
- The C++ Memory Model
- 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
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