Start date: 24 March 2025
Duration: 4 Days, 24 to 27 Mar 2025
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
- What’s an Embedded System?
- Comparison with C
- Classes
- Rvalue references and Move Semantics – avoiding unnecessary deep copy
- Package/Namespace
- Polymorphism
- Virtual Function
- Virtual Destructor
- Runtime Type Information, RTTI
- Performance
- Templates
- Function Template Class Template
- Variadic Templates
- Code Bloat
- Template versus Inheritance?
- Error Handling
- Exception Handling
- Performance Issues
- Inline Code
- Standard Library
- Standard Template Library, STL
- iostream Library
- STL Major Extensions due to Modern C++:
- Rvalue References – Move semantics
- Variadic Templates
- Concurrency
- Memory Management
- The C++ Memory Model
- Standardized Word Widths – The stdint-types
- Strongly Typed Enumerations
- Atomic Types and their Operations
- constexpr
- std::byte
- Standard Library Allocator API
- Variables
- Placement new
- User Defined Memory Management
- Interoperation between C and C++
- Design Patterns
- RAII – Resource Acquisition Is Initialization
- Memory-mapped I/O
- Interrupt
- 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.
In 2024 this course was held twice on 14th – 17th Oct and on 18th – 21st Nov 2024.