Embedded Linux Developer Guide
Master cross-compilation toolchains, bootloaders (U-Boot), and the Linux kernel — the core skills every embedded systems engineer needs.
Cross-Compilation & Toolchains
Build code for a target architecture from your host machine using the GNU toolchain and QEMU.
GNU Toolchain
gcc, binutils, glibc — how the toolchain is structured, naming conventions, and building a cross-toolchain from scratch.
Sysroot & Libraries
What a sysroot is, how to build one, staging directory layout, and dealing with library version mismatches on target.
Static vs Dynamic Linking
Comparing static and dynamic linking, shared library deployment on target, rpath, ldconfig, and LD_LIBRARY_PATH.
QEMU Emulation
QEMU system vs user mode, emulating ARM/RISC-V boards, networking setup, and running your cross-compiled binaries.
readelf / objdump / nm
Inspect ELF binaries, dump disassembly, list symbols, find undefined references, and diagnose linking problems.
Cross-Compiling with CMake
CMake toolchain files, CMAKE_SYSROOT, find_package for cross targets, and building Qt/C++ apps for embedded boards.
Bootloaders (U-Boot)
Understand system boot from power-on, master U-Boot configuration, Device Tree, and board porting.
Boot Sequence
ROM → SPL → U-Boot → Kernel: every stage explained, power-on reset, BootROM, and what happens before your code runs.
U-Boot Config & Build
Selecting a defconfig, menuconfig, cross-compiling U-Boot, understanding the output images (MLO, u-boot.bin, u-boot.img).
U-Boot Commands & Scripting
U-Boot shell, environment variables, memory commands, loading from MMC/NAND/TFTP, and bootscript automation.
Device Tree (DTS)
DTS syntax, phandles, overlays, binding documentation, dtc/fdtdump tools, and passing DTB from U-Boot to kernel.
Board Porting
Add a new board to U-Boot — Kconfig entry, board header, SPL/TPL, DDR initialization, and console UART setup.
TFTP & Network Boot
Configure TFTP server, U-Boot network settings, tftp/bootp commands, and booting kernel + rootfs over the network.
Linux Kernel
Configure, build, and debug the kernel — understand subsystems, boot parameters, and tracing tools.
Kconfig & menuconfig
Kconfig language, tristate options, menuconfig/xconfig/nconfig, defconfigs, .config fragments, and CONFIG_ macros in code.
Kernel Compilation
Cross-compiling the kernel, ARCH/CROSS_COMPILE variables, make targets (zImage, uImage, dtbs), and module installation.
Boot Parameters
Kernel command line, root=, console=, init=, earlycon, passing parameters from U-Boot, and /proc/cmdline inspection.
Kernel Subsystems
Overview of major subsystems: VFS, memory management, scheduler, networking stack, and the driver model (bus/device/driver).
printk & Dynamic Debug
printk log levels, dmesg, /proc/sys/kernel/printk, dynamic_debug, dev_dbg, and enabling debug at runtime without recompile.
ftrace & kprobes
trace-cmd, function tracer, function_graph, event tracing, kprobes, uprobes, and perf integration for kernel profiling.