Emner:
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 Operators
– 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.