Embedded C++

Embedded programming is more intensive than other forms of programming because it must handle specific requirements:

  • High-performance requirements up to real-time requirements
  • Safety-critical systems
  • Reduced resources as memory and CPU power
  • More Tasks that should be accomplished in parallel

C++ has been a popular general purpose programming language for many years. Recent developments in microcontroller technology, increasing application complexity and enhancements made in later versions of the C++ standard mean that C++ is now replacing C as the preferred language for many embedded systems.
This course teaches the C++ programming language in the context of real-time and embedded systems, highlighting the resource and performance implications of using key C++ features and programming styles.
The course is suitable for anyone wishing to develop applications within an Embedded Linux environment. It provides practical experience of programming a modern embedded microcontroller using real-time development tools. 50% of the time is dedicated to hands-on exercises working with a real embedded system.
In the course you will learn:

  • The syntax and semantics of the C++ language
  • The principles of object-oriented modelling, embedded software programming and real-time programming
  • How to program an embedded microcontroller in C++
  • A practical introduction to real-time development tools
  • How to debug a C++ program on a target device
  • How to access memory-mapped peripherals using C++
  • How to write interrupt handlers in C++
  • An introduction to real-time operating systems and scheduling
  • Best practices for embedded programming

You should have previous programming knowledge. The course in snot suitable as a first course in computer programming.

Swedish or english.

Course length:
4 days.

1. What’s an Embedded System?
1.       Simple Definition
2.       Characteristics
3.       Why using C++?

2. Comparison with C
1.       C: A subset of C++ – almost
2.       Performance
3.       Added “Free” Functionality
4.       Why not using C++?

3. Classes
1.       Rvalue references and Move Semantics – avoiding unnecessary deep copy
2.       Package/Namespace

5. Polymorphism
1.       Virtual Function
2.       Virtual Destructor
3.       Implementation
4.       Runtime Type Information, RTTI
5.       Performance

6. Templates
1.       Function Template Class Template
2.       Variadic Templates
3.       Code Bloat
4.       Implementation Strategies
5.       Template versus Inheritance?

7. Error Handling
1.       Exception Handling
2.       Performance Issues
3.       Implementation

8. Inline Code
1.       When to Use?
2.       Strategies

10. Standard Library
1.       Standard Template Library, STL
2.       iostream Library
3.       STL Major Extensions due to Modern C++:
1.       Rvalue References – Move semantics
2.       Variadic Templates
3.       Concurrency

11. Memory Management
1.       The C++ Memory Model
1.       Standardized Word Widths – The stdint-types
2.       Strongly Typed Enumerations
3.       Atomic Types and their Operations
2.       constexpr
3.       std::byte
4.       Standard Library Allocator API
5.       Strategies
6.       Variables
7.       Placement new
8.       User Defined Memory Management

12. Interoperation between C and C++
1.       Name Mangling
2.       Static Initialization
3.       Dynamic Memory
4.       structContents
1.       POD – Plain Old Data type

13. Design Patterns
1.       RAII – Resource Acquisition Is Initialization
2.       Memory-mapped I/O
3.       Interrupt
4.       Initialization of Static Objects
Mer information
För mer information kontakta Åsa Detterfelt, 070-659 58 12, alternativt maila asa.detterfelt@mindroad.se.

Stockholm 19 - 22/2, 22 - 25/4,  17 - 20/6
Göteborg 29 - 1/21, 18 - 21/3, 20 - 23/5
Linköping 11 - 14/3

Anmälan och frågor:
Maila asa.detterfelt@mindroad.se för att anmäla dig, eller för eventuella frågor.