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 here for a record of what’s actually going on.

Linux Introduction

  • Get familiar with the commandline

    This is what you will be using a lot during Embedded Linux development.

    We will be using a 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

  • 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

  • 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