Home
Company Profile
Our Clients
Training
Courses
course list
roadmap
all dates
forthcoming
booking
Graduate
Training
Mentoring
Location
Links
Contact us
 sign up for Feabhas e-news

 


 C++ Training Courses
AC++-501
Advanced C++ for Embedded Systems

Length: 5 days
Cost: £2057 (public and on-site) - 10% discount given if a previous C++ course has been attended
Course description - see below or view PDF
Check course dates - click here
Booking information - click here
 Course Detail

Course Description:
Since its standardization in 1998, the support and use of C++ as an embedded programming language has grown significantly. However, until recently most C++ cross compilers were actually “Embedded C++” (EC++) compilers or were typically inefficient in the more advanced areas of the language. To date, a high proportion of programmers using C++ for embedded development have either been unable or have chosen not to use certain features of C++ due to fear of bloated, slow code with poor performance.

This course addresses the “fear, uncertainty and doubt” of using full C++. Specifically the course deals with : performance and memory considerations of polymorphic functions, exceptions and templates. In addition, complete coverage of the Standard Library, including the STL, are covered, again with the specifics of performance and memory models.

Overview:
A 5-day course which reviews C++ in the light of real-time systems, addresses the application of C++ in a real-time/embedded environment, and then focuses on the advanced parts of the language. Fifty percent of the course is spent on practical work and the course includes the use of target hardware.

Course Objectives:
• To provide an understanding of the advanced aspects of the C++ programming language.
• To give you practical experience of writing efficient C++ code for real-time & embedded systems.
• To understand the impact different compilers have on performance.

Delegates will learn:
• About memory and performance issues associated with C++
• How to access hardware, write device drivers, and program interrupt handlers in C++.
• The overheads of exceptions
• How templates work
• Different approaches to integrating Real-Time Operating Systems with C++.

Pre-requisites:
• Some experience of programming with C++.

Who Should Attend?
The course is designed for real-time engineers who either (a) have a working knowledge of C++ but are embarking on a real-time project using C++ for the first time, or (b) have being using EC++ to date and want to extend their knowledge of full C++ for embedded systems programming.

Duration:
Five days.

Course Materials:
Delegate Handbook.

Related Courses:
• OO-503 Real-Time Software Design with UML2.0
• C++-501 C++ for Embedded Developers
• RTOS-201 Fundamentals of Real-Time Operating Systems.

Course Workshop:
The course makes use of target hardware during the real-time practical exercises. The board targeted is the Hitachi 7045F Evaluation Board (SH2 micro-controller).

Course Outline:
Introduction
C++ Performance

- Member functions
- Static functions
- Inheritance and V-Tables
- RTTI and type info.
Embedded C++
- Why Embedded C++ was developed
- Embedded C++ features.
- Migrating from EC++ to full C++
Real-Time Specifics
- Accessing hardware
- Manipulating information at the bit level
Device Interaction
- Device polling
Interrupts
- Different interrupt models
- Function model
   - Name encoding
- Class model
   - Device “has an” interrupt
   - Memory overhead
Functions and Operators
- Class defined conversions
- Overloading and function selection
- Friend functions and classes
- Overloading operators
- Dynamic memory allocation revisited
- Assignment
- Copy constructors
Exception Handling
- What are exceptions
- Throwing an exception
- The try block
- Catching an exception
- Rethrowing exceptions
- Catch all handlers
- Exception specifications
- Exceptions models and overheads
Templates
- Introduce parameterised types and functions:
   - function templates
   - class templates
- Performance implications
The Standard Library
- Introduction to the Standard Library.
- The STL
- Using the STL efficiently
Software Structuring
- Consider how to structure large scale
software systems
- Separate implementation from interface
header files
- Dealing with name conflicts
- Linking with other languages
Target Specific Considerations
- Portability Considerations
- Non-standard C++ language features
- Assembly Language Interfacing.
- Designing ROMable objects
Design Patterns
- What patterns are and are not
- Patterns types
- architectural
- design
- idioms
- Pattern examples
Concurrency
- Concurrency
- Scheduling strategies
- Task-Is-Polymorphic
- Task-Runs-Polymorphic
- Sharing resources in multi-tasking systems
- Mutex objects
- Synchronizing tasks
- Transferring data between tasks
Course Summary

 telelogic website

Training Courses
C Training Courses
C++ Training Courses
Embedded Linux
Training Courses

Java Training Courses
Microsoft Embedded Training Courses
MISRA-C Training Courses
RTOS Training Courses
Software Engineering Training Courses
SNMP Training Courses
SysML Training Courses
TCP/IP Training Courses
Testing Training Courses
Microsoft Windows Device Driver Courses
UML Training Courses

Feabhas Codes
AC-401
AC++-501
AWDM-501
CE-501
C-501
C++-303
C++-501
C++-502
C++-503
EL-201
EL-202
EL-301
EL-503
EL-504
J-501
J-502
MC-101
MSDN-2530
MSDN-2535
MSDN-2540
MSDN-2545
MSDN-2540N
NDIS-501
OO-101
OO-301
OO-503
RB-201
RTOS-201
SE-401
SE-501
SNMP-301
T-401
TCP-401
WDF-501
WDM-501