Reference
Deep-dive reference material for the Linux in Embedded Systems course. These pages contain the full theory — mathematics, architecture diagrams, comparison tables, and design guidelines — that support the hands-on Tutorials.
For the week-by-week schedule, see the Semester Lab Track.
Reference Pages
How to Use
Tutorials explain concepts inline (5–15 lines) right where you need them. These Reference pages hold the deeper content — math, architecture diagrams, comparison tables — that is too long to inline or shared across many tutorials. Follow the links from tutorials when you want more depth.
| # | Topic | Summary | Key Tutorials |
|---|---|---|---|
| 1 | What Is Embedded Linux? | Linux under constraints — when to choose it, hardware requirements, the layered stack, history and emerging trends | SSH Login, Exploring Linux |
| 2 | How Linux Works | Processes, files, VFS, permissions, services, IPC, scheduling, MMU, scripting, and debugging | Exploring Linux, Processes and IPC, Threads and Synchronization, ELF and Program Execution |
| 3 | Graphics Stack in Embedded Linux | Framebuffer vs DRM/KMS vs full GUI — choosing the right graphics level, display interfaces, tearing | Framebuffer Basics, DRM/KMS Test, Single-App UI |
| 3b | Camera and Display Interfaces | MIPI D-PHY, CSI-2, DSI, HDMI, SPI — differential signaling, bandwidth math, ISP pipeline, EDID, protocol packets | Camera Pipeline, DSI Display, SPI Display |
| 3c | Qt Quick for Embedded Linux | QML + C++ architecture, property bindings, EGLFS platform plugin, build system, development workflow | Qt Dashboard, Qt App Launcher |
| 4 | Boot Flow and Architectures | Power-on to application — boot stages, MCU vs SoC vs PC, secure boot, timing and optimization | Boot Timing Lab, Buildroot |
| 5 | Device Tree and Drivers | How Linux discovers hardware — DT nodes, overlays, driver binding, kernel vs user space, interfaces | MCP9808 Driver, BMI160 SPI Driver, BUSE Driver |
| 6 | Real-Time Systems Design | PREEMPT_RT, latency budgets, schedulability analysis, control theory, and heterogeneous architectures | PREEMPT_RT Latency, Jitter Measurement, MCU RT Controller |
| 7 | Why Build Your Own Linux? | Buildroot vs Yocto — custom images for boot time, reliability, security, and the toolchain | Buildroot, Buildroot SDL2 Image |
| 8 | IoT, Networking, and Security | MQTT, CoAP, attack surfaces, CVE case studies, hardening, OTA updates, and regulatory compliance | Security Audit, Data Logger |
| 9 | Real-Time Graphics and Display Pipelines | VSync, page flipping, sensor-to-pixel latency, core partitioning, and DMA | Level Display SDL2, Display Apps, SPI DMA Optimization |
| 10 | Reliability, Updates, and Watchdogs | Read-only root, overlayfs, A/B updates, watchdogs, failure rate math, and power-loss testing | Data Logger, Buildroot |
| 11 | Industrial I/O (IIO) Subsystem | IIO architecture, channels, triggers, buffers, DMA integration, and userspace tools | BMI160 SPI Driver, IIO Buffered Capture, Custom IIO Driver |
| 12 | DMA Fundamentals | DMA engine, coherent vs streaming, scatter-gather, measuring DMA impact | SPI DMA Optimization, IIO Buffered Capture |
| 13 | Linux Input Subsystem | Event types, evdev, uinput virtual devices, multi-touch protocol, coordinate calibration, and input latency | Input Events, Display Apps, SPI Display, Doom on Pi |
| 14 | Software Architecture for Embedded Linux | Process patterns (monolithic, supervisor, pipeline), IPC selection, layered design, state machines, error handling, systemd service design, project structure | Data Logger, Qt App Launcher, Kiosk Service |
| 15 | Performance Profiling for Embedded Linux | Measure-profile-fix workflow, perf/strace/ftrace usage, common bottleneck patterns, optimization priority list, embedded-specific considerations | Jitter Measurement, Ball Detection, SPI DMA Optimization |
| 16 | Signal Processing for Embedded Systems | Sampling, FFT, filtering, cross-correlation, biquad filters, CPU vs DSP vs FPGA architecture decisions, fixed-point arithmetic, real-time budgets | Audio Visualizer, Audio Viz Challenges |
| 17 | ML and Signal Processing | When to use DSP vs classical ML vs deep learning, feature engineering for audio and vision, CNN deployment on Pi, quantization, parallel concepts across audio and image domains | Acoustic Keystroke, Ball Detection, Audio Visualizer |
| 18 | Serial Bus Interfaces: I2C, SPI, I2S | Protocol details, electrical characteristics, clock modes, Linux kernel subsystems, Device Tree configuration, debugging, and design tradeoffs for the three serial buses | MCP9808 Driver, BMI160 SPI, Audio Visualizer |
Capstone: IMU Level Display Track
The primary course project — a progressive track that builds an IMU-based leveling display, exercising SPI kernel driver development, custom image building, DRM/KMS graphics, real-time performance measurement, and boot optimization.
| Step | What | Reference | Tutorial |
|---|---|---|---|
| 1 | Write an SPI kernel driver for BMI160 | Device Tree and Drivers | BMI160 SPI Driver |
| 2 | Prototype level display in Python | Real-Time Graphics | Level Display Python |
| 3 | Build tear-free SDL2 display | Graphics Stack, Real-Time Graphics | Level Display SDL2 |
| 4 | Measure and optimize boot time | Boot Flow and Architectures | Boot Timing Lab |
| 5 | Build custom image with SDL2 + SPI | Building Custom Linux | Buildroot SDL2 |
| 6 | Measure jitter, compare standard vs RT | Real-Time Systems, Real-Time Graphics | Jitter Measurement |
| 7 | Optimize SPI with DMA and FIFO | Real-Time Graphics | SPI DMA Optimization |
Alternative Capstone: Quick Start Path
A lighter end-to-end project for self-study or shortened semesters:
| Step | What | Reference | Tutorial |
|---|---|---|---|
| 1 | Build a minimal Linux image | Building Custom Linux | Buildroot |
| 2 | Run a single fullscreen status UI | Graphics Stack | Single-App UI |
| 3 | Add resilient data logging | Reliability and Updates | Data Logger |
| 4 | Optional: headless camera processing | — | Camera Pipeline |