Embedded Linux / Driver systems
Yocto + QEMU EDU Lab
A PC-only learning lab that follows a virtual PCI peripheral from Yocto machine configuration through Linux discovery, a kernel driver, packages, and a bootable image.
Follow the interface end to end
The lab derives an x86-64 Yocto machine, adds QEMU's EDU educational PCI peripheral, builds an out-of-tree kernel module, and carries the interface through a userspace test package and custom minimal image.
- PCI ID matching, probe, BAR and MMIO mapping, and a shared legacy interrupt handler
- sysfs controls, automatic module loading, and a userspace validation utility
- Scripted setup, inspection, build, driver-rebuild, and QEMU boot workflows
One operation exposes the whole stack
The factorial exercise starts in userspace, crosses a sysfs driver attribute, enables an interrupt, writes the MMIO register, waits for QEMU's asynchronous result, acknowledges the virtual PCI interrupt, and returns the value to userspace.
That narrow path makes driver registration, hardware discovery, matching, memory-mapped I/O, interrupt handling, packaging, and image composition visible as one system.
Simulation is a first step, not physical proof
The project states the limits of its evidence: QEMU cannot validate electrical behavior, clock and reset sequencing, pin multiplexing, analog interfaces, physical DMA coherency, interrupt wiring, or silicon errata.
Project scaffolding and documentation use MIT licensing; the example kernel module and its build file use GPL-2.0-only, with file-level SPDX identifiers defining the boundary.