Three Driver Bootcamps: USB, Network Card & PCIe
Three hands-on bootcamps in one: USB HID and storage, real Ethernet and virtual NICs, and PCIe capture cards.
Intermediate30 lessons
written lessons≈ 15 h
Linux Kernel & Device Drivers, High-Performance Networking & Cloud-Native · 30 illustrated lessons (text/HTML)
Outcomes
- Write USB HID, mass-storage and gadget drivers
- Port and debug a real Ethernet NIC driver
- Build a PCIe data-acquisition driver and contribute upstream
Where we teach this
- DRV-210 · USB Device Drivers & the Gadget Framework live cohort
- DRV-220 · PCIe Drivers & DMA Engines live cohort
The lessons
Every lesson in this curriculum, in the order we teach it.
- 1Opening introduction
- 2Linux kernel and driver fundamentals
- 3Hardware interfaces and kernel communication
- 4The USB protocol stack in depth
- 5The Linux USB driver framework explained
- 6Practice 1: developing a USB HID device driver
- 7Practice 2: analysing a USB mass-storage driver
- 8USB gadget driver development in practice
- 9The Linux network subsystem architecture
- 10NIC hardware basics
- 11The Linux network device driver framework explained
- 12Practice 3: developing a virtual NIC driver
- 13Practice 4: porting and debugging a real Ethernet NIC driver
- 14Wireless NIC driver overview
- 15PCI/PCIe protocol basics
- 16The Linux PCI subsystem explained
- 17Advanced PCIe features in practice
- 18Practice 5: PCIe device driver for a simple FPGA data-acquisition card
- 19Practice 6: developing a PCIe NIC driver
- 20The art of driver debugging
- 21Analysing and troubleshooting kernel oopses
- 22Hardware co-debugging in practice
- 23Driver performance optimisation in practice
- 24Linux driver power management: runtime PM and system sleep/wake
- 25Device-tree driver development
- 26Practice 7: a multi-function USB data-card driver
- 27Practice 8: driver for a high-speed PCIe image-capture card
- 28Driver security and stability
- 29Linux kernel coding style
- 30Course summary and outlook
All-access library
Every curriculum on this page, with the labs and lab sequences, for a year.