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.
|