C++ for Embedded Systems

Start date: 14 October 2024

Duration: 4 Days, 14 to 17 Oct

Location: 4 days, 9am to 5pm each day

Certificate: N/A

Cost: Members € 400, Non-Members €600

Course code: N/A

Programme overview

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. Labs are performed on BeagleBone Black boards.

Learning outcomes

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

Who is the course for?

The course is suitable for anyone wishing to develop C++-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.

Schedule

  1. What’s an Embedded System?
  2. Comparison with C
  3. Classes
    1. Rvalue references and Move Semantics – avoiding unnecessary deep copy
    2. Package/Namespace
  4. Polymorphism
    1. Virtual Function
    2. Virtual Destructor
    3. Runtime Type Information, RTTI
    4. Performance
  5. Templates
    1. Function Template Class Template
    2. Variadic Templates
    3. Code Bloat
    4. Template versus Inheritance?
  6. Error Handling
    1. Exception Handling
    2. Performance Issues
  7. Inline Code
  8. Standard Library
    1. Standard Template Library, STL
    2. iostream Library
    3. STL Major Extensions due to Modern C++:
    4. Rvalue References – Move semantics
    5. Variadic Templates
    6. Concurrency
  9. Memory Management
    1. The C++ Memory Model
    2. Standardized Word Widths – The stdint-types
    3. Strongly Typed Enumerations
    4. Atomic Types and their Operations
    5. constexpr
    6. std::byte
    7. Standard Library Allocator API
    8. Variables
    9. Placement new
    10. User Defined Memory Management
  1. Interoperation between C and C++
  2. Design Patterns
    1. RAII – Resource Acquisition Is Initialization
    2. Memory-mapped I/O
    3. Interrupt
    4. Initialization of Static Objects

Trainer Profile

Mr. George Ekström is a software developer with excellent skills in analysis, design and programming. Expert knowledge in C/C++/C# and significant experience from other programming languages. George has held more than 20 C and C++ courses in the last 3 years.

A skilled educator and course author with long experience of training software engineering professionals in programming, agile techniques and methodologies.

Contact training@midasireland.ie for full details