
C++ for Embedded Developers
5 days
Télécharger le descriptif au format pdf
This course is delivered in co-operation with Doulos' training partner
Feabhas , who specialise in training courses for real-time embedded developers.
Course description
This course introduces the C++ language for use on realtime and embedded applications. The first part of the course focuses on the language itself,
highlighting areas of concern for real-time and embedded development. The latter part covers the application of C++ to real-time systems including interrupt
handling and concurrency issues. If a C++ course does not cover these fundamental issues you may find you still have a lot to learn after the training.
Attendees perform hands on embedded programming, on target hardware, during course practicals. Approximately 50% of the course is given over to practical work.
Overview
A 5 day course covering C++ in general on the first three days and real-time issues on the last two. Fifty percent of the course is spent on practical work.
Course Objectives
• To provide an understanding of the essentials of the C++ programming language.
• To give you practical experience of writing C++ for realtime & embedded systems.
• To give you practical experience of writing C++ for realtime & embedded systems.
Delegates will learn
• The core C++ syntax and semantics
• How to access hardware in the language
• How to program interrupt handlers in C++
• About memory and performance issues associated with C++
• How real-time operating systems affect the use of the language
Pre-requisites
• A working knowledge of C
Who should attend?
The course is designed for real-time engineers who are embarking on a project using C++ for the first time. It is also targeted at developers currently reluctant
to move to C++ from C as they believe it poses too great an overhead. This course will clearly demonstrate both the strengths and weaknesses of C++ versus C.
Materials
Delegate Handbook
Related courses
• Real-Time Systems Design with UML 2.0
• Advanced C++ Programming
• C for Real-Time Developers
• Fundamentals of Real-Time Operating Systems
Course workshop
The course makes use of target hardware during the embedded programming practical exercises. The target board is an ARM7-based microcontroller (NXP LPC2129)
connected to an application board. Programming the target microcontroller to control the application board gives attendees a real-sense of embedded application
development.
Course Outline
Introduction to Real-Time Systems
• What is a real-time and embedded computer system
• The need for a rigorous development procedure
From C to C++
• Non object-oriented C++ enhancements to basic C
• Conveniences of C++ over and above C
Introduction to Object Oriented (OO)
Principles
• Key characteristics of OO development
• OO techniques and the real-time software development process
Introduction to Classes
• Classes & class instances
• Methods
• Constructors & destructors
More on Classes
• Inlining member functions
• const member functions
• static class members and functions
• arrays of classes
• implementing object relationships
Inheritance
• Building class hierarchies
• Dynamic binding for class methods, virtual functions
• Polymorphism
Multiple inheritance (MI)
• MI and interfaces
Functions and Operatorss
• Class defined conversions
• Overloading and function selection
• Friend functions
• Overloading operators
• Dynamic memory allocation revisited
Exception Handling
• What are exceptions?
• Throwing an exception
• The try block
• Catching an exception
• Rethrowing exceptions
• Catch all handlers
• Exception specifications
Templates
• Introduce parameterised types and functions
• Function templates
• Class templates
The Standard Library
• Introducing the Standard Template Library
Software Structuring
• Structuring large scale software systems
• Separate implementation from interface header files
• Dealing with name conflicts
• Linking with other languages
Embedded C++
• A summary of Embedded C++
• Embedded C++ features
Real-Time Specifics
• Low level facilities of C++ including:
• Accessing hardware
• Manipulating information at the bit level
• Synchronising I/O with CPU via
• Polling
• Interrupts
Interrupt Programming
• Interrupt Service Routines in C++
• functional approach
• class approach
Target Specific Considerations:
• Data types;
• Language features affecting portability;
• Non-standard C++ language features;
• Assembly language interfacing;
• Designing ROMable objects.
Concurrency:
• Concurrency;
• Scheduling strategies;
• Sharing resources in multi-tasking systems;
• Synchronizing tasks;
• Transferring data between tasks.
Top of Page