VIP20
本课程属于:069-NVMe存储协议 高速接口与互连 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

NVMe驱动开发实战技术手册

📚 共计 30 章节
第01章
NVMe协议概述
NVMe的诞生背景、NVMe相比AHCI的优势、NVMe协议栈全景图。
基础协议
第02章
NVMe寄存器与队列机制
PCIe配置空间、BAR空间、Admin Submission Queue与Completion Queue、I/O Submission Queue与Completion Queue。
寄存器队列
第03章
NVMe命令集详解
Admin Command Set(Identify、Create IO SQ/CQ、Get Log Page)、NVM Command Set(Read、Write、Flush)。
命令Admin
第04章
Linux NVMe驱动框架
驱动入口与模块初始化、PCIe probe流程、中断处理机制。
框架Linux
第05章
NVMe驱动核心数据结构
struct nvme_dev、struct nvme_queue、struct nvme_ns、struct nvme_cmd。
数据结构核心
第06章
Admin命令处理流程
命令构建、SQ门铃写入、CQ轮询与中断、命令完成处理。
流程Admin
第07章
I/O命令处理流程
块设备层请求下发、命令映射与提交、DMA映射与数据传输、I/O完成回调。
I/O块设备
第08章
中断与MSI-X配置
MSI-X中断向量分配、中断亲和性设置、中断处理函数编写。
中断MSI-X
第09章
DMA与PRP/SGL机制
PRP(Physical Region Page)原理、SGL(Scatter Gather List)原理、DMA映射API使用。
DMAPRP
第10章
NVMe驱动中的同步与并发
自旋锁与互斥锁的使用、工作队列与tasklet、RCU机制在NVMe中的应用。
并发同步
第11章
NVMe驱动调试与日志
动态调试(dynamic debug)、tracepoint与ftrace、kdump与crash分析。
调试日志
第12章
NVMe多队列与CPU亲和性
多队列原理、队列与CPU绑定、irqbalance的影响。
多队列亲和性
第13章
NVMe电源管理
APST(Autonomous Power State Transition)、设备休眠与唤醒、功耗优化策略。
电源APST
第14章
NVMe热插拔支持
PCIe热插拔原理、NVMe热插拔驱动实现、udev规则与用户空间通知。
热插拔PCIe
第15章
NVMe错误处理与恢复
命令超时处理、控制器重置流程、错误日志解析。
错误恢复
第16章
NVMe虚拟化支持
SR-IOV原理、VF驱动编写、VFIO透传。
虚拟化SR-IOV
第17章
NVMe over Fabrics(NVMe-oF)基础
NVMe-oF架构、RDMA与TCP传输、驱动端实现。
NVMe-oFRDMA
第18章
NVMe安全与认证
TCG Opal规范、加密命令、安全擦除。
安全Opal
第19章
NVMe驱动性能优化
队列深度调整、轮询模式(polling)vs中断模式、内存池与预分配。
性能优化
第20章
NVMe固件更新
固件下载与提交、激活与回滚、驱动侧实现。
固件更新
第21章
NVMe命名空间管理
命名空间创建与删除、格式化、容量调整。
命名空间管理
第22章
NVMe端到端数据保护
DIF/DIX机制、保护信息(PI)格式、驱动校验实现。
数据保护DIF
第23章
NVMe驱动与块设备层交互
请求队列(request_queue)设置、bio映射、多队列块层(blk-mq)集成。
块设备blk-mq
第24章
NVMe驱动中的内存管理
DMA内存分配、IOMMU与SWIOTLB、大页支持。
内存IOMMU
第25章
NVMe驱动测试方法
单元测试框架(kunit)、功能测试(fio)、压力测试(stress-ng)。
测试kunit
第26章
NVMe驱动移植指南
不同架构(x86/ARM/RISC-V)适配、设备树与ACPI、编译选项配置。
移植架构
第27章
NVMe驱动代码审查要点
常见bug模式、性能瓶颈识别、安全漏洞检查。
审查代码
第28章
NVMe最新特性与演进
NVMe 2.0新特性、ZNS(Zoned Namespace)、KV命令集。
新特性ZNS
第29章
实战项目一:从零编写简化NVMe驱动
模拟器环境,手写简化NVMe驱动。
实战模拟器
第30章
实战项目二:添加自定义Admin命令
为NVMe驱动添加自定义Admin命令。
实战Admin