Plan for Summer 2021 ==================== `Embedded Computing 1 `__ (and 2) stands for "Embedded Device Development with Linux". We will see how embedded development is done for Linux, what Linux is, what tools exist, how hardware is accessed. Starting with C and C++ development, we will quickly move over to Python, a more comfortable and more powerful language. So much for the plan. See :doc:`here ` for a record of what's actually going on. .. contents:: :local: Linux Introduction ------------------ .. sidebar:: Slides * :download:`Linux Basics (PDF) ` * :download:`Linux Systems Programming (PDF) ` * **Get familiar with the commandline** This is what you will be using a lot during Embedded Linux development. We will be using a :doc:`cloud machine ` in the warm up lessons, and will move to the `Raspberry `__ once we start developing. * **Learn Linux system concepts** As a developer, you will have to be familiar with the system you are developing for. * Processes and address spaces * File system * Permissions * More C/C++ Development ----------------- .. sidebar:: Slides * :download:`C (PDF) ` * :download:`C++03 (PDF) ` * :download:`C++11 (PDF) ` * :download:`GNU Make (PDF) ` * :download:`CMake (PDF) ` * **Cross Development with C** Build on a Linux PC (in a Linux VM on a Windows PC, likely), run on device. * **C++ Introduction** * Why C++? * Basics: classes, constructors and destructors, object copy * Resource management: *smart pointers* * Container templates Python Development ------------------ .. sidebar:: Slides * :doc:`/trainings/material/soup/python/group` * **Language Introduction** * Basics: variables, data types, control flow (``if``, ``while``, ``for``) * Modularization: functions, modules, and packages * Excerpts from `The Python Standard Library `__ * **Hardware Access** * General purpose IO (GPIO) * I2C * OneWire * Maybe others