Embedded Computing (STECE-2019)¶
- Graph
- Embedded Computing 1
- Embedded Computing 2
- C++
- Multithreading
- Linux
- Python
- C++: Building with CMake
- C++: Interfaces
- Linux Hardware Device Management
- EX: Temperature Sensors
- Git Introduction
- Introduction to Linux and Unix
- C++: OO Basics
- EX: Averaging Sensor
- C++: Unit Testing
- EX: LED Temperature Display
- GPIO
- Communication: Waiting for Something
- Avoiding Race Conditions: Semaphore/Mutex
- EX: Avoiding Race Condition
- EX: Race Conditions
- EX: Averaging Sensor (parallel)
- Python Basics
- EX: Averaging Sensor, Display
- EX: Temperature Sensors
- Simple Web Programming
- Sensors Web Pages
Overview¶
Knowledge Transferred¶
Knowledge from “Computer Science and Programming (1+2)” and “Embedded Systems” is picked up and unified.
Large scale software development, covering topics like
Test Driven Development
Object Oriented Design
Configuration Management
Linux (Operating System Concepts). Bare metal operating systems are intentionally simple - as a result, they are generally less powerful. Linux, being a general purpose OS, has a number of features every developer wants if the software becomes larger,
Address space separation through the concept of processes: an abstraction of a crucial piece of hardware, the Memory Management Unit (MMU).
A sophisticated yet simple permission system.
Natively supports a great variety of file systems and storage media.
Natively supports The Internet.
Natively supports optional realtime capabilities (on a per-process basis).
Depending on the underlying hardware platform, Linux offers support non-PC type hardware which is popular in the embedded world.
Python (Programming language alternatives). Embedded applications are historically written in C/C++ which is hard. It is often more appropriate to prototype functionality in a higher level language like Python, or even use that as final production language.
Course Setup¶
The Raspberry Pi is used as work environment and hardware platform.
It comes with a fully functional Linux distribution (based on Debian).
It supports hardware that is en vogue in embedded applications, like GPIO, I2C, SPI, serial, and others.
Details¶
See here for a complete overview of the course structure.
Embedded Computing 1¶
(Details)
Groundwork. To lay the groundwork for an instructive set of programming exercises, the following topics are covered up-front:
Exercises and Making. Above topics are consolidated by a set of programming exercises that involve relatively simple hardware makery. See here for the details.
Multithreading. Although this is not exactly beginner stuff, everybody does it (wrong). It makes sense to clarify the do’s and don’ts early on, and to consolidate the matter in another set of exercises.
Embedded Computing 2¶
(Details)
Python introduction. Introduce a new language.
Rewrite exercises. Based on what was accomplished in C++, in “Embedded Computing 1”, translate those exercises into an equivalent set written in Python (and see how simple this is).
Web programming. Using the Flask web framework, write a web application to visualize sensor data.
More advanced topics. Use Python libraries, for example
Network programming
Exchange documents using JSON and/or CSV/Excel
Database access
Linux Kernel Drivers maybe?