Education (depraced!) > Effective C++ in an Embedded Environment
Effective C++ in an Embedded EnvironmentDate: 18 May 2011 | Posted by: bubbagump |
![]() Presentation Materials: Effective C++ in an Embedded Environment Detailed topic outline * Overview of "Embedded C++." * C++ under the hood: o The efficiency philosophy behind C++ o Detailed examination of virtual function implementation under single and multiple inheritance o Overview of how all other language features are implemented o Causes of code bloat and how to address them o The crucial role of inlining * Three approaches to interface-based programming: o Virtual functions and runtime polymorphism o Separate compilation and link-time polymorphism o Templates and compile-time polymorphism * Applying C++ in Embedded Systems: o Rules for what can and cannot be ROMed o Memory management: + Issues: speed, fragmentation, leaks, exhaustion + Static allocation + Dynamic allocation: # Writing custom versions of new and delete # LIFO allocation # Pool allocation # Block allocation # Other options: regions and variable-sized allocators o Modeling memory-mapped IO (MMIO): + Putting objects at specific addresses: # Placement new # reinterpret_cast # Compiler extensions + Modeling MMIO registers directly vs. indirectly # Creating shadow registers + Preventing common usage errors + Generalizing via templates o Implementing callbacks for C APIs (e.g., ISRs): + C++ functions C APIs can call + Linkage and exception issues + Approaches and their pros/cons: # Using virtual functions # Using std::tr1::function objects o Overview of TR1 and Boost o Interesting template applications: + Generating cost-free type-safe wrappers for void*-based code + Performing compile-time dimensional unit compatibility analysis + Expressing binary literals + Specifying finite state machines (FSMs) * Considerations for safety-critical and real-time systems * Sources for Additional Information NO MIRRORS See full article |