Experience Embedded

Professional Training, Consulting and Project Support

Embedded C++: Object-Oriented Programming for Microcontrollers with C++/EC++ and UML - Live Online Training

Master the challenges in software development for hard real-time systems: Modern embedded systems with complex microcontroller and processor architectures incorporate more and more software that has to be planned and implemented faster than ever. In many cases, requirements need to be met which are subject to standards and safety-critical aspects. Real-time capability, reusability, adjustability to changing basic conditions and readability are key factors in software.

  • Content
     
  • Objectives
     
  • Participants
     
  • Requirements
     

The EC++ workshop shows you how an object-oriented approach helps you develop higher-quality software in an embedded environment in a shorter time.

You get a compact overview of the entire development process of embedded real-time systems - software analysis, software design, software implementation and unit test - as a basis for you to implement projects with EC++.

You know how to design of software systems by using UML and implementation in the programming language C++.

You thus have the required knowledge base for meeting specific software quality requirements for embedded systems, e.g. regarding runtime and code efficiency.

Programming guidelines, such as the MISRA-C++ standard, moreover help you avoid programming errors at an early stage.

You can use state of the art object-oriented techniques to develop high-quality, complex software systems and, at the same time, save time and money.

The EC++ training addresses programmers, software developers, software designers and software architects who use C++ for embedded software applications based on object-oriented concepts.

A very good knowledge of C-programming is required; basic microcontroller knowledge of advantage.

Introduction: Object Oriented Programming Basics

  • Class and object
  • Attribute, operation, method
  • Encapsulation
  • Relation between classes
  • Benefits of the object-oriented approach using a hardware driver as an example

Object-oriented Programming in C

  • Classes, attributes, operations and objects
  • Encapsulation in C
  • Association, aggregation, composition and inheritance
  • Practical tips with proven implementation approaches

Introduction: The Programming Language C++ (EC++)

  • Migration from object-oriented C-programming to C++/EC++
  • Classes, attributes, operations and objects
  • Encapsulation in C
  • Constructors, destructor, overload
  • Modifier for data, operations and objects
  • Memory management for objects
  • Object initialization
  • Namespaces
  • Templates
  • C++ new style casts
  • Further C++ specific mechanisms and constructs
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Comparison with C
  • Enhancing quality features like maintainability and reusability
  • Identifying risks and avoiding pitfalls
  • Practical exercise: Implementing, instantiating and testing a class

Relations between Classes / Programming Classes in C++

  • Association
  • Aggregation
  • Composition
  • Inheritance
  • Selecting the suitable relation in your design
  • Implementation variants in C++
  • Implementation approaches in C
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Implementing the relations association, inheritance and composition in the application and when using the builder pattern

Virtual Methods and Interfaces in C++

  • Dynamic (late) binding
  • Strictly virtual functions/ operations
  • Polymorphism
  • From the abstract class to the interface class
  • Software architecture with interfaces
  • Benefit, advantages and disadvantages of interface classes
  • Implementation with C++
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Programming an interface class with strictly virtual functions, implementing and accessing this class

C++ for Embedded Applications

  • Using C++ in embedded software development
  • History
  • Recommendations, rules and standards
  • C++ compiler basics

C++ Class Libraries

  • Statistical versus dynamic class libraries
  • Generation and inclusion of class libraries
  • Advantages and disadvantages of using class libraries in embedded software
  • Demonstration of an example

State Machines in C++

  • Basic implementation approaches
  • Introduction: Table-based state machine processing
  • Demonstration of an example

Hardware Drivers and Interrupts in C++

  • Typical embedded SW architectures and their modeling (layer model, interfaces)
  • Object-oriented callback structures
  • Hardware drivers with peripheral register access object-oriented in C++
  • Interrupt concepts and interrupt service routines object-oriented in C++
  • Programming of state machines
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Applying an object-oriented timer driver along with a timer interrupt in your exercise application

Overview: Embedded Software Test

  • Software implementation and test
  • Test process
  • Checklist for testing object oriented software

Basic Notations with UML (Unified Modeling Language)

  • Modeling classes, objects and relations with UML
  • Use case, sequence, activity and state diagrams
  • Demonstration of the exercise in the UML model, with a focus on diagrams

From Project Planning to Implementation

  • Software development process
  • Quality of embedded software systems
  • Efficient modeling of an embedded application with UML
  • Demonstration of the exercise in the UML model, with a focus on model generation and setup

Practical Exercises in the Workshop

  • You will use the Arm Keil MDK (microcontroller development kit) along with real hardware, based on an Arm Cortex®-M3 microcontroller throughout the exercise (watch application).

MicroConsult PLUS:

  • We will provide you with a download link for your exercises and the solutions developed by MicroConsult from this workshop.
  • You get all examples for C and C++ in electronic format and can easily adjust them to your development environment.
  • You moreover get a tool and software component overview for developing embedded software.
  • You get helpful notation overviews for UML and SysML.

The training price includes:
Lunch, drinks, training documentation and your training certificate.


ALL INCLUSIVE!

Related trainings

Embedded C Training: Programming Methods and Tools for Embedded Applications
Training code: E-EMB-C

UML Training: UML Basics and Introduction to Model-Based Software Development
Training code: E-UML-G

Coaching: Embedded and Real-Time Programming
Training code: CE-EMB-PRG


Related trainings

FACE-TO-FACE TRAINING

Price *Duration
2.475,00 €4 days
Training code: LE-EC++
* Price per attendee, in Euro plus VAT
> Registration form download (PDF)> Training details as PDF

Face-To-Face - English

Duration
4.5 days  

Live Online - German

Date Duration
22.03. – 25.03.2021 4 days  
14.06. – 17.06.2021 4 days  
06.09. – 09.09.2021 4 days  
08.11. – 11.11.2021 4 days  

Face-To-Face - German

Date Duration
22.03. – 26.03.2021 4.5 days  
14.06. – 18.06.2021 4.5 days  
06.09. – 10.09.2021 4.5 days  
08.11. – 12.11.2021 4.5 days  
17.01. – 21.01.2022 4.5 days  
28.03. – 01.04.2022 4.5 days  

Onsite Training

Our customized workshops integrate your specific project tasks in our training content and accommodate your requirements on content, time, location, duration, technical environment and knowledge transfer methodology.

Please contact us for further information or an individual quotation.

> Training details as PDF

Coaching

Our coaching services offer a major advantage: our specialists introduce their expertise and experience directly in your solution process, thus contributing to the success of your projects.

Coaching: Embedded and Real-Time Programming

Embedded C++: Object-Oriented Programming for Microcontrollers with C++/EC++ and UML - Live Online Training

Content

Introduction: Object Oriented Programming Basics

  • Class and object
  • Attribute, operation, method
  • Encapsulation
  • Relation between classes
  • Benefits of the object-oriented approach using a hardware driver as an example

Object-oriented Programming in C

  • Classes, attributes, operations and objects
  • Encapsulation in C
  • Association, aggregation, composition and inheritance
  • Practical tips with proven implementation approaches

Introduction: The Programming Language C++ (EC++)

  • Migration from object-oriented C-programming to C++/EC++
  • Classes, attributes, operations and objects
  • Encapsulation in C
  • Constructors, destructor, overload
  • Modifier for data, operations and objects
  • Memory management for objects
  • Object initialization
  • Namespaces
  • Templates
  • C++ new style casts
  • Further C++ specific mechanisms and constructs
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Comparison with C
  • Enhancing quality features like maintainability and reusability
  • Identifying risks and avoiding pitfalls
  • Practical exercise: Implementing, instantiating and testing a class

Relations between Classes / Programming Classes in C++

  • Association
  • Aggregation
  • Composition
  • Inheritance
  • Selecting the suitable relation in your design
  • Implementation variants in C++
  • Implementation approaches in C
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Implementing the relations association, inheritance and composition in the application and when using the builder pattern

Virtual Methods and Interfaces in C++

  • Dynamic (late) binding
  • Strictly virtual functions/ operations
  • Polymorphism
  • From the abstract class to the interface class
  • Software architecture with interfaces
  • Benefit, advantages and disadvantages of interface classes
  • Implementation with C++
  • Assembler analysis of C++ constructs
  • Memory and runtime oriented assessment and optimization
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Programming an interface class with strictly virtual functions, implementing and accessing this class

C++ for Embedded Applications

  • Using C++ in embedded software development
  • History
  • Recommendations, rules and standards
  • C++ compiler basics

C++ Class Libraries

  • Statistical versus dynamic class libraries
  • Generation and inclusion of class libraries
  • Advantages and disadvantages of using class libraries in embedded software
  • Demonstration of an example

State Machines in C++

  • Basic implementation approaches
  • Introduction: Table-based state machine processing
  • Demonstration of an example

Hardware Drivers and Interrupts in C++

  • Typical embedded SW architectures and their modeling (layer model, interfaces)
  • Object-oriented callback structures
  • Hardware drivers with peripheral register access object-oriented in C++
  • Interrupt concepts and interrupt service routines object-oriented in C++
  • Programming of state machines
  • Enhancing quality features like maintainability and reusability
  • Practical exercise: Applying an object-oriented timer driver along with a timer interrupt in your exercise application

Overview: Embedded Software Test

  • Software implementation and test
  • Test process
  • Checklist for testing object oriented software

Basic Notations with UML (Unified Modeling Language)

  • Modeling classes, objects and relations with UML
  • Use case, sequence, activity and state diagrams
  • Demonstration of the exercise in the UML model, with a focus on diagrams

From Project Planning to Implementation

  • Software development process
  • Quality of embedded software systems
  • Efficient modeling of an embedded application with UML
  • Demonstration of the exercise in the UML model, with a focus on model generation and setup

Practical Exercises in the Workshop

  • You will use the Arm Keil MDK (microcontroller development kit) along with real hardware, based on an Arm Cortex®-M3 microcontroller throughout the exercise (watch application).

MicroConsult PLUS:

  • We will provide you with a download link for your exercises and the solutions developed by MicroConsult from this workshop.
  • You get all examples for C and C++ in electronic format and can easily adjust them to your development environment.
  • You moreover get a tool and software component overview for developing embedded software.
  • You get helpful notation overviews for UML and SysML.