Chapter
1

What is an Embedded System?

An introduction to embedded systems .Core characteristics of embedded systems, constraints, real-time operation, and hardware/software co-design.
2

Types and Classifications of Embedded Systems

A university-level guide to classifying embedded systems. Explore standalone, real-time, networked, and mobile systems with Raspberry Pi 5 examples.
3

Real-World Examples of Embedded Systems

An in-depth look at real-world embedded systems in consumer, automotive, industrial, and medical fields. Includes a practical Raspberry Pi 5 project.
4

An Introduction to Linux for Embedded Applications

A guide to the history of Linux and its use in embedded systems. Learn the fundamentals and compile your first kernel module on a Raspberry Pi 5.
5

Linux Kernel vs. Userspace in an Embedded Context

A guide to the Linux kernel vs. userspace architecture for embedded systems, using the Raspberry Pi 5 for practical C and Python examples.
6

Overview of Common Linux Distributions for Embedded Systems

A guide to embedded Linux distributions. Compare Debian, Yocto, Buildroot, OpenWrt, and Android for Raspberry Pi 5 development.
7

Advantages of Linux in Embedded Systems

Discover the key advantages of using Linux in embedded systems. Open source, customization, hardware support, and networking for the Raspberry Pi 5.
8

Challenges and Disadvantages of Linux in Embedded Systems

An analysis of the key challenges in embedded Linux development, covering resource requirements, real-time performance, system complexity, and GPL licensing.
9

Raspberry Pi 5 Hardware Overview: SoC and Memory

A closer look on the Raspberry Pi 5 hardware. Explore the BCM2712 SoC, Cortex-A76 CPU, VideoCore VII GPU, and LPDDR4X memory.
10

Raspberry Pi 5 Hardware Overview: Peripherals and I/O

A guide to the Raspberry Pi 5 hardware. Learn about GPIO, USB 3.0, PCIe, MIPI, and networking for embedded Linux development.
11

Raspberry Pi 5 Power Requirements and Management

A guide to Raspberry Pi 5 power requirements, including USB-C PD, the DA9091 PMIC, power measurement techniques, and Linux power management.
12

Setting Up Raspberry Pi 5: OS Installation (Raspberry Pi OS)

A guide to setting up the Raspberry Pi 5. Learn to install Raspberry Pi OS, write to a microSD card, and perform the first boot.
13

Initial Config of Raspberry Pi 5 & Remote Access (SSH)

Guide to the initial configuration of a Raspberry Pi 5, covering hostname, password, locale, Wi-Fi, and enabling secure remote access with SSH.
14

Linux Commands: File System Navigation (ls, cd, pwd)

Learn how to navigate with essential Linux navigation commands (ls, cd, pwd) for embedded systems development on the Raspberry Pi 5.
15

Linux Commands: File Manipulation (cp, mv, rm, mkdir)

Essential Linux file manipulation commands (cp, mv, rm, mkdir) for embedded systems development on the Raspberry Pi 5. Understand Linux filesystem hierarchy.
16

Linux Commands: Permissions (chmod, chown) and Links (ln)

A guide to Linux file permissions and links. Learn to use chmod, chown, and ln on a Raspberry Pi 5 for secure embedded systems development.
17

Linux Commands: Process Management (ps, top, kill)

Linux process management on the Raspberry Pi 5. Learn to use ps, top, and kill to monitor, analyze, and control embedded system processes.
18

Linux Commands: System Information (df, du, free, uname)

A guide to essential Linux commands (df, du, free, uname) for monitoring disk space, memory, and system info on embedded systems like the Raspberry Pi 5.
19

Shell Scripting Basics: Introduction and First Script

Fundamentals of shell scripting in embedded Linux, covering the shell, shebang, and file permissions with practical Raspberry Pi 5 examples.
20

Shell Scripting: Variables and User Input

A chapter on Embedded Linux shell scripting. Learn to use variables, command substitution, and read user input on the Raspberry Pi 5.
21

Shell Scripting: Control Flow (if, else, case)

Shell scripting control flow for embedded Linux. Learn to use if, else, and case statements on the Raspberry Pi 5 with practical examples.
22

Shell Scripting: Loops (for, while, until)

A complete guide to shell scripting loops (for, while, until) in embedded Linux using the Raspberry Pi 5. Learn iteration for automation.
23

Shell Scripting: Functions and Basic Automation

A high level guide to shell scripting functions in embedded Linux. Learn to define, call, and use functions for automation on a Raspberry Pi 5.
24

Advanced Shell Scripting: Regular Expressions (grep, sed)

A high level chapter on mastering grep and sed with regular expressions for embedded Linux development on the Raspberry Pi 5.
25

Advanced Shell Scripting: awk for Text Processing

A high level chapter on advanced awk scripting for embedded Linux. Learn to parse logs, process data, and generate reports on the Raspberry Pi 5.
26

Adv. Shell Scripting: Automating System Administration Tasks

Advanced shell scripting for embedded Linux on the Raspberry Pi 5. Learn to automate system administration with robust scripts and practice with examples.
27

C Programming Refresher: Pointers and Memory Addresses

A refresher chapter on C pointers for embedded systems. Learn memory addresses, dereferencing, and pointer arithmetic with practical Raspberry Pi 5 examples.
28

C Programming Refresher: Dynamic Memory Allocation in C

A professional guide to dynamic memory allocation in C for embedded Linux. Learn malloc, calloc, realloc, and free on the Raspberry Pi 5.
29

C for Embedded Systems: Structures, Unions, and Bitfields

A chapter on advanced C programming for embedded Linux, covering structures, unions, and bitfields with practical examples for the Raspberry Pi 5.
30

C Programming Refresher: Basic File I/O in C

A comprehensive chapter on C file I/O for embedded Linux. Learn fopen, fread, fwrite, and fprintf with practical Raspberry Pi 5 examples.
31

Python Programming for Embedded Systems: A Refresher

A guide to Python for embedded systems on the Raspberry Pi 5. Covers core syntax, GPIO control, data logging, and common troubleshooting.
32

Python Refresher: Functions, Modules, and Packages

A refresher chapter on structuring Python code for embedded systems using functions, modules, and packages on the Raspberry Pi 5.
33

Python Libraries for Embedded Systems: gpiod, smbus2, spidev

A high-level guide to embedded systems development on Raspberry Pi 5 using Python, covering gpiod, smbus2 for I2C, and spidev for SPI communication.
34

Dev. Environment: Native Compilation on RPi5 (GCC, Make)

Native C/C++ development on the Raspberry Pi 5 using GCC and Make. Learn the full build process, from compilation to hardware IO.
35

Dev. Environment: Native Debugging with GDB on RPi5

Native debugging of C/C++ applications on the Raspberry Pi 5 using the GNU Debugger (GDB), covering theory and hands-on examples.
36

Intro to Cross-Compilation: Why and How

Cross-compilation for the Raspberry Pi 5. Learn the concepts, benefits, and practical applications of cross-compilation in embedded Linux development.
37

Cross-Compilation Toolchains: Components and Types

Cross-compilation for embedded Linux. Learn about GCC, binutils, glibc, and musl, with practical examples for the Raspberry Pi 5.
38

Setting Up a Cross-Compilation Env. for RPi5 on a Host PC

Learn to set up a professional cross-compilation environment on a host PC for Raspberry Pi 5 development, toolchain configuration and C/C++ compilation.
39

Using VS Code for C/C++ Cross-Compilation

Configure VS Code for C/C++ cross-compilation, targeting the Raspberry Pi 5. Learn to set up IntelliSense, build tasks, and remote GDB debugging.
40

Using VS Code for Python Development with Remote RPi5 Access

Setting up a professional Python development environment for the Raspberry Pi 5 using VS Code Remote – SSH for remote coding, debugging, and hardware control.
41

Version Control with Git: Core Concepts

Learn and apply git fundamentals for embedded Linux developers using the Raspberry Pi 5. Covers repository, staging, and commits.
42

Git: Branching, Merging, and Handling Conflicts

Learn Git for embedded Linux. Learn branching, merging, conflict resolution, and rebasing with practical examples on the Raspberry Pi 5.
43

Git: Working with Remote Repositories (GitHub/GitLab)

Using Git with remote repositories like GitHub on a Raspberry Pi 5. Covers clone, push, pull, fetch, SSH keys, and troubleshooting.
44

Debugging Techniques: Overview and Common Strategies

Debugging embedded Linux systems with the Raspberry Pi 5. Covers printf, logging with journald, assertions, and remote GDB.
45

Remote Debugging C/C++ Apps on RPi5 w GDBServer & VS Code

Remote debugging C/C++ applications on a Raspberry Pi 5 using GDB, GDBServer, and Visual Studio Code for a professional embedded Linux workflow.
Chapter
1

Understanding the Linux Filesystem Hierarchy Standard (FHS)

Linux Filesystem Hierarchy Standard (FHS) for embedded systems. Learn the purpose of /bin, /etc, /dev, /usr, and /var for robust development on Raspberry Pi.
2

Special Filesystems: /proc, /sys, and devtmpfs

Learn Linux virtual filesystems. Learn to use /proc, /sys, and devtmpfs for system monitoring, hardware control, and device management on Raspberry Pi 5.
3

File I/O System Calls: open() and close()

Learn open() and close() file I/O system calls. This chapter covers file descriptors, flags, and C code examples for Raspberry Pi.
4

File I/O System Calls: read() and write()

Learn Linux file I/O with read() and write() system calls. This chapter covers file descriptors, error handling, and practical C examples for Raspberry Pi 5.
5

File I/O System Calls: lseek(), stat(), fstat(), lstat()

Learn file positioning with lseek() and metadata retrieval with stat(), fstat(), and lstat() in embedded Linux. Learn practical C examples on Raspberry Pi 5.
6

File I/O System Calls: fcntl() for File Control

Learn to control file descriptor properties in embedded Linux using the fcntl() system call. Master non-blocking I/O on the Raspberry Pi 5.
7

Buffered I/O (stdio library) vs. Unbuffered I/O (Sys. Calls)

Learn the critical differences between buffered stdio and unbuffered system call I/O in embedded Linux. Boost performance with C examples on Raspberry Pi 5.
8

Advanced File I/O: Scatter/Gather I/O (readv, writev)

Scatter/gather I/O with readv and writev in Linux. Learn to read/write multiple buffers in one call for high-performance embedded systems on Raspberry Pi 5.
9

Advanced File I/O: Memory-Mapped Files (mmap, munmap)

Learn advanced Linux file I/O with memory-mapped files. This guide covers mmap, munmap, and msync with C code examples for the Raspberry Pi 5.
10

Process Concepts: Process ID (PID), Parent PID (PPID), Process States

Linux process management concepts like PID, PPID, and process states. Learn processes on a Raspberry Pi with practical C and shell examples.
11

Creating Processes: The fork() System Call

Learn how the fork() system call creates new processes in Embedded Linux. Copy-on-Write (CoW), process memory, and practical C examples for Raspberry Pi.
12

Executing New Programs: The exec() Family of Functions

Learn program execution in Embedded Linux with the exec() family. This guide covers execl, execv, execve, and more with practical C examples on Raspberry Pi 5.
13

Process Termination: exit(), _exit(), and Exit Status

Learn process termination in Embedded Linux with the Raspberry Pi 5. Master exit(), _exit(), atexit(), and handling exit statuses for robust system programming.
14

Waiting for Child Processes: wait() and waitpid()

Learn to manage child processes in Embedded Linux with wait() and waitpid(). Process synchronization, handling zombies, and practical C examples.
15

Process Groups, Sessions, and Job Control

Master Embedded Linux process management. Learn about process groups, sessions, and job control with C examples and Raspberry Pi 5 tutorials.
16

Signal Handling: Introduction to Signals and Default Actions

Linux signal handling for embedded systems. Learn to manage SIGINT, SIGTERM, and SIGCHLD to build robust applications and prevent zombie processes.
17

Signal Handling: Catching Signals w signal() & sigaction()

Learn Linux applications signal handling. This chapter covers signal(), sigaction(), and signal masks with practical C examples for the Raspberry Pi 5.
18

Sending Signals: kill() and raise()

Learn to control processes in embedded Linux using C. Covers sending signals with kill() and raise(), process groups, and error handling on Raspberry Pi 5.
19

Intro to Threads: Processes vs. Threads

Comparison of processes and threads. Learn about shared resources, race conditions, and multithreading with pthreads on Raspberry Pi.
20

POSIX Threads (Pthreads): Creation and Termination

Develop multithreaded applications in C on Embedded Linux using the Pthreads API. This guide covers thread creation, termination, and data handling.
21

Thread Synchronization: The Need for Synchronization

Thread synchronization in embedded Linux. Learn about race conditions and deadlocks with practical C examples for the Raspberry Pi 5.
22

Pthreads: Mutexes for Protecting Critical Sections

Learn to write thread-safe embedded Linux applications using pthreads. This guide covers mutexes for protecting critical sections and preventing race conditions
23

Pthreads: Condition Variables for Signaling Between Threads

Implement robust inter-thread signaling in embedded Linux using Pthreads condition variables. This chapter covers pthread_cond_wait, signal, and broadcast.
24

Pthreads: Semaphores for Resource Counting & Synchronization

Learn to manage concurrent resource access in embedded Linux systems using POSIX semaphores. This guide covers sem_init, sem_wait, and sem_post.
25

Pthreads: Read-Write Locks for Optimizing Read-Heavy Access

Master Pthreads read-write locks for high-performance concurrent programming. Learn to use pthread_rwlock to optimize read-heavy applications on Embedded Linux.
26

Inter-Process Communication (IPC): Overview of Mechanisms

Linux Inter-Process Communication (IPC) on embedded systems. Compare pipes, shared memory, sockets, and message queues with practical C/Python examples.
27

IPC: Unnamed Pipes (pipe()) for Parent-Child Communication

IPC in Embedded Linux using unnamed pipes. Chapter covers the pipe() system call, parent-child data transfer, and creating shell pipelines on Raspberry Pi 5.
28

IPC: Named Pipes (FIFOs) for Com. bw Unrelated Processes

Learn to implement robust Inter-Process Communication (IPC) in Embedded Linux using named pipes (FIFOs). Chapter covers mkfifo(), blocking/non-blocking I/O.
29

IPC: System V Message Queues (msgget, msgsnd, msgrcv,msgctl)

Master System V message queues for robust inter-process communication (IPC). Learn to use msgget, msgsnd, msgrcv, and msgctl on the Raspberry Pi 5.
30

Inter-Process Communication: POSIX Message Queues

Master POSIX message queues for robust Inter-Process Communication (IPC) in embedded Linux. Learn to use mq_open, mq_send, and mq_receive on Raspberry Pi 5.
31

IPC: System V Shared Memory (shmget, shmat, shmdt, shmctl)

Learn to implement high-performance Inter-Process Communication (IPC) on Embedded Linux using System V shared memory, shmget, and shmat.
32

IPC: (shm_open, ftruncate, mmap, munmap, shm_unlink)

Learn to implement high-performance Inter-Process Communication (IPC) on embedded Linux systems using POSIX shared memory, mmap.
33

IPC: System V Semaphores for Shared Memory Synchronization

Prevent race conditions in embedded Linux systems using System V semaphores. This chapter covers semget, semop, and semctl for shared memory synchronization.
34

IPC: Unix Domain Sockets for Local Inter-Process Comm.

Learn to implement high-performance Inter-Process Communication (IPC) on Embedded Linux using Unix Domain Sockets, socketpair(), and file descriptor passing.
35

Memory Management in Linux: Virtual Memory & Paging Concepts

Explore Linux memory management concepts like virtual memory, paging, and the MMU. Learn to analyze and debug memory usage on embedded systems.
36

Process Address Space: Kernel Space vs. User Space Layout

Linux memory management by exploring the process address space. Learn about kernel vs. user space, text, data, BSS, heap, and stack segments.
37

Stack Memory Allocation and Management

Master stack memory in Embedded Linux. Learn about the function call stack, stack frames, and debugging stack overflows on the Raspberry Pi 5 with GDB.
Scroll to Top