PCIE DMA 实战
内存映射 · 驱动开发
📘 30 章 · 从入门到生产
📚 总章节
30
⚡ DMA 核心
12
🧩 实战案例
8
🛠 调试与优化
6
🚀 高阶专题
4
01
PCIe 基础概念
总线架构
拓扑结构 · 分层协议 · 事务层/数据链路层/物理层 · 配置空间
→
02
DMA 原理与分类
传输模式
基本概念 · 块传输/描述符链 · 与CPU交互机制
→
03
内存映射 (MMIO)
BAR空间
PCIe BAR · MMIO地址映射 · ioremap vs mmap
→
04
Linux 内核 DMA API
一致性
dma_alloc_coherent · dma_map_single · dma_map_sg · 方向
→
05
PCIe 设备驱动框架
pci_driver
probe/remove · pci_enable_device · pci_set_master
→
06
DMA 描述符环设计
环形缓冲区
环形缓冲区原理 · 描述符结构 · 硬件/软件同步
→
07
中断处理与 MSI-X
中断类型
INTx/MSI/MSI-X · 中断注册 · 中断服务函数
→
08
DMA 传输实战
双向传输
内存↔设备 · 双向传输 · 性能测量
→
09
Scatter-Gather DMA
SG列表
SG原理 · SG DMA API · 描述符构建
→
10
DMA 一致性缓存问题
缓存一致性
dma_alloc_coherent vs dma_map_single · dma_sync_*
→
11
用户态 DMA 控制
UIO/VFIO
mmap映射 · 用户态驱动框架 · 性能对比
→
12
PCIe 配置空间编程
Capability
配置空间读写 · Capability链表 · 扩展配置空间
→
13
多队列 DMA
队列分配
多队列原理 · 分配策略 · 中断亲和性
→
14
DMA 超时与错误处理
调试技巧
超时检测 · 错误恢复 · 调试技巧
→
15
性能优化
NUMA感知
对齐要求 · 批量传输 · 预取缓存 · NUMA
→
16
PCIe AER
高级错误报告
AER原理 · 错误类型 · 驱动处理流程
→
17
SR-IOV 与 DMA
VF驱动
SR-IOV概念 · VF驱动编写 · VF DMA传输
→
18
DMA 调试工具
perf/ftrace
perf · tracepoint · dma-debug · ftrace
→
19
FPGA PCIe DMA 实战
XDMA
XDMA IP核 · AXI总线 · FPGA侧DMA设计
→
20
NVMe 协议中的 DMA
PRP/SGL
NVMe队列对 · PRP/SGL · DMA传输流程
→
21
GPU 与 DMA
cudaMemcpy
显存映射 · cudaMemcpy底层 · P2P DMA
→
22
网络设备 DMA
NAPI/零拷贝
NAPI机制 · RX/TX描述符环 · 零拷贝技术
→
23
DMA 与虚拟化
IOMMU
IOMMU原理 · VFIO passthrough · vhost-user
→
24
原子操作与 DMA
AtomicOp
PCIe原子操作 · CAS · FetchAdd
→
25
DMA 带宽测量
性能分析
带宽公式 · 测量工具 · 瓶颈分析
→
26
多核 DMA 调度
负载均衡
任务绑定 · 中断负载均衡 · CPU隔离
→
27
DMA 安全
IOMMU保护
DMA攻击原理 · IOMMU保护 · 内核安全机制
→
28
实时系统 DMA
RT内核
RT内核 · DMA延迟控制 · 优先级反转
→
29
PCIe Gen5/6 新特性
CXL
更高带宽 · FLIT模式 · DDR5与CXL
→
30
综合实战
从零到生产
完整PCIe DMA驱动开发 · 生产级代码
→
📌 点击卡片跳转对应章节 · 持续更新中