Embedded Systems - Dan Saks teaches "Crafting Embedded Systems in C++
Prerequisite: This tutorial is for programmers with at least some experience programming in C++. In particular, it assumes you are already familiar (but by no means an expert) with: the C part of C++ classes, access control, and member functions constructors and destructors friend functions function name and operator overloading inline functions new- and delete-expressions-reference types static members The seminar assumes only slight familiarity with: the const and volatile qualifiers converting constructors and conversion operators namespaces single inheritance virtual functions templates Attendees should also have some experience writing C or C++ that directly controls hardware, and so should be familiar with hardware concepts such as device registers and memory mapping.
Course Description: This seminar explains how to use C++ to write efficient and maintainable embedded programs. More specifically, it shows how to leverage C++ classes and templates to write readable, yet efficient, abstractions that represent and manipulate hardware. Although the seminar focuses primarily on techniques that employ only standard features of C++, of necessity it covers a few aspects that require non-standard features. Most of the constructs that C++ provides for controlling devices — pointers, bitwise operators and bitfields, and the const and volatile qualifiers — are also features of C. Although C++ doesn’t add any more features specifically for controlling devices, classes can be very helpful in hiding messy hardware details behind cleaner interfaces, templates and inheritance can capture commonality and promote reuse, and overloading and userdefined type conversions can support friendlier user interfaces. This seminar presents C++ programming techniques employing enumeration and class types, the const and volatile qualifiers, nested constants and types, function and operator overloading, user-defined conversions, inheritance, templates, and language linkage. It demonstrates these techniques in programs running on real hardware. It also takes you “under the hood” to see how compilers and linkers implement C++ language features, giving you the insight you need to avoid many performance pitfalls.