DRV-120 · Device Drivers · Practitioner
Platform Drivers & Device Tree — full syllabus
Describing non-discoverable hardware and writing the drivers that consume that description.
Who this course is for
Embedded engineers bringing up drivers for non-discoverable hardware on ARM or RISC-V SoCs, where the device tree — not the bus — tells the kernel what exists.
Prerequisites
- DRV-110 or solid device-model knowledge
- C and basic kernel build experience
- Enough electronics to follow a schematic excerpt (lab boards provided)
Course outline
Day 1 — Device tree as data
- DTS syntax: nodes, properties, phandles and labels
- Compiling with dtc and decompiling a running system's DTB
- How the FDT becomes device_nodes and then platform_devices
- Addressing: reg, #address-cells, #size-cells and ranges
- compatible, status and the matching chain to a driver
Day 2 — Bindings that survive review
- What a binding must document and what it must not
- DT schema in YAML: properties, required, patternProperties
- Validating with dt_binding_check and dtbs_check
- Writing a binding document acceptable upstream
- Common review failures: generic names, vendor prefixes, unit-address mistakes
Day 3 — The driver side of the tree
- of_* property parsing: scalars, strings, phandles, arrays
- platform_get_resource and devm_ioremap_resource for MMIO
- IRQ mapping from the interrupts property
- Clocks, resets, regulators and GPIOs as DT-described resources
- Deferred probe when a dependency is not ready yet
Day 4 — Debugging and overlays
- Why a node never probes: compatible mismatch, disabled status, silent deferral
- Reading /sys/kernel/debug/devices_deferred and initcall_debug output
- Pinmux and pinctrl from the driver's seat
- Writing and applying a DT overlay at runtime
- Verifying a change: decompile, diff, reboot, re-check
Hands-on labs
- Lab: Decompile the lab board's live DTB and trace one peripheral from its node to the registered platform_device
- Lab: Write a YAML binding for a simple device, pass dt_binding_check, then break it and read the validation errors
- Lab: Implement a platform driver that parses custom properties and takes a clock, a reset and a GPIO from the tree
- Lab: Diagnose an injected never-probes fault using devices_deferred and boot logs — fix the DT, not the driver
- Lab: Apply and remove a DT overlay on a running board and verify the new device appears and probes
Capstone project
From a supplied schematic excerpt for a lab-board peripheral, deliver the complete chain: a YAML binding that passes dtbs_check, the DTS node, and a platform driver that probes, acquires clock/reset/regulator/IRQ resources and survives injected failures — with a probe-chronology log and validation output as the evidence pack.
What you leave with
- A working binding-plus-driver chain you built from a schematic
- YAML binding skills that will pass upstream review
- Fluent of_* resource acquisition: clocks, resets, regulators, GPIOs, IRQs
- A repeatable method for never-probes debugging
- Overlay workflows for iterating without full rebuilds
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 11 Oct – 14 Oct 20264 full days | RiyadhIn person · KAFD Conference Centre | 7 of 14 | — | SAR 10,500 | |
| 18 Oct – 21 Oct 20264 full days | Kuwait CityIn person · Al Hamra Tower | 12 of 14 | — | KWD 870 | |
| 18 Oct – 21 Oct 20264 full days | MuscatIn person · Knowledge Oasis Muscat | 7 of 14 | — | OMR 1,080 | |
| 25 Oct – 3 Nov 20268 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 13 of 20 | — | US$2,000 | |
| 26 Oct – 29 Oct 20264 full days | OttawaIn person · Kanata North Tech Park | 12 of 14 | — | CAD 3,810 | |
| 26 Oct – 4 Nov 20268 half-days | Europe bandLive online · 09:00–13:00 CET | 18 of 20 | — | US$2,000 | |
| 2 Nov – 5 Nov 20264 full days | TorontoIn person · MaRS Discovery District | 7 of 14 | — | CAD 3,810 | |
| 2 Nov – 5 Nov 20264 full days | LondonIn person · Shoreditch Works | 12 of 14 | — | GBP 2,180 | |
| 2 Nov – 11 Nov 20268 half-days | Americas bandLive online · 13:00–17:00 ET | 7 of 20 | — | US$2,000 | |
| 9 Nov – 12 Nov 20264 full days | BerlinIn person · Factory Görlitzer Park | 7 of 14 | EUR 2,320until 10 Oct |
Book a seat, or bring this course to your team
Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.
Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.