Core Driver Skills: Interrupts, DMA & Bus Transfers
Interrupts, DMA and bus transfers: the core skills behind every fast and reliable peripheral driver.
Intermediate29 lessons
written lessons≈ 15 h
Linux Kernel & Device Drivers · 30 illustrated lessons (text/HTML)
Outcomes
- Write interrupt handlers with threaded IRQs and bottom halves
- Program DMA engines and scatter-gather transfers safely
- Build SPI data-acquisition drivers with DMA and interrupts
Where we teach this
The lessons
Every lesson in this curriculum, in the order we teach it.
- 2The Linux kernel interrupt subsystem architecture
- 3Interrupt requests and registration
- 4Interrupt handling overview
- 5Chapter introduction
- 6Workqueue overview
- 7Threaded interrupts: principles, configuration and driver use
- 8Introduction
- 9DMA fundamentals
- 10The Linux DMA API explained
- 11DMA engine framework overview
- 12Chapter goals
- 13Cache-coherency problems
- 14Scatter-gather DMA: efficient transfers to non-contiguous memory
- 15Bus fundamentals
- 16Overview of the platform bus driver model
- 17I2C bus protocol overview
- 18SPI bus driver: protocol, master/slave and driver implementation
- 19The PCI and PCIe bus drivers explained
- 20USB system architecture overview
- 21Introduction: why the device model and sysfs matter
- 22Character-device framework: cdev, file_operations, device numbers and device files
- 23Blocking and non-blocking I/O: wait queues, poll and select in drivers
- 24Introduction: why kernel memory management matters
- 25Kernel synchronisation
- 26Introduction: an overview of kernel time management
- 27Power management overview
- 28Core Linux driver debugging techniques
- 29Case study 1: interrupt-driven button driver development and testing
- 30Case study 2: DMA-based high-speed SPI data-acquisition driver development and testing
All-access library
Every curriculum on this page, with the labs and lab sequences, for a year.