PCI/PCIe Bus Theory & Linux Driver Development
From PCI configuration space to SR-IOV: the bus theory and the Linux PCI subsystem, taught together.
Intermediate30 lessons
written lessons≈ 15 h
Linux Kernel & Device Drivers · 30 illustrated lessons (text/HTML)
Outcomes
- Read configuration space, BARs and capabilities by hand
- Write a PCI driver with interrupts, DMA and power management
- Understand PCIe topology, TLPs and link training
Where we teach this
- DRV-220 · PCIe Drivers & DMA Engines live cohort
The lessons
Every lesson in this curriculum, in the order we teach it.
- 1Computer bus overview
- 2PCI bus basics
- 3PCI configuration space explained
- 4PCI/PCIe address spaces explained
- 5PCI bus enumeration and resource allocation
- 6PCI bus arbitration and data transfer
- 7PCIe bus evolution and advantages
- 8PCIe topology and layered structure
- 9PCIe packets and transaction types
- 10PCIe configuration space and extended capabilities
- 11PCIe link training and power management
- 12Overview of the Linux device driver model
- 13The Linux PCI subsystem architecture explained
- 14PCI device probing and initialisation
- 15Accessing PCI configuration space: the pci_read_config_* and pci_write_config_* functions
- 16Mapping PCI device address spaces
- 17Handling PCI device interrupts: requesting IRQs, writing handlers and sharing interrupts
- 18Core principles of PCI DMA operations
- 19Advanced PCIe feature driver development
- 20PCIe hot-plug and kernel event handling
- 21Debugging PCI/PCIe devices: tools and reading the output
- 22Writing a simple PCI character-device driver: framework and file-operation interface
- 23PCIe network driver framework: net_device and packet transmit/receive
- 24Writing a PCI block device driver framework: gendisk, request_queue and block operations
- 25Implementing PCI device power management
- 26PCIe SR-IOV virtualisation driver development
- 27User-space PCI device access
- 28PCI drivers and the device tree
- 29PCI driver debugging and performance tuning
- 30Course summary and capstone: PCIe device driver development
All-access library
Every curriculum on this page, with the labs and lab sequences, for a year.