PCIe nvm驱动开发
时间: 2023-10-21 10:29:05 浏览: 175
PCIe NVMe驱动开发涉及与PCIe设备通信以传输数据的过程。当主机的驱动程序需要与PCIe设备传输数据时,只需告知PCIe设备存放数据的地址即可。NVMe SSD是作为PCIe的终端点进行连接的,PCIe是一种在x86平台上流行的总线,许多外设通过PCI总线与主机通信,甚至一些集成外设也通过PCI总线连接。NVMe SSD使用新的标准协议NVMe,并且是一个块设备,因此其驱动程序也遵循块设备的驱动架构。
在NVMe驱动开发中,需要指定class code为010802h,并将其放入pci_driver nvme_driver的id_table中。这样,当nvme_driver注册到PCI总线后,PCI总线就知道这个驱动程序是为class code为010802h的设备使用的。NVMe驱动中的probe函数(nvme_probe())是真正加载设备的处理函数。同时,NVMe SSD内部的Controller PCIe Header中的class code也会设置为010802h。
此外,PCIe还有一个寄存器位Bus Master Enable,当该位被置为1时,PCIe设备可以向主机发送DMA读取内存和DMA写入内存的请求。这对于NVMe驱动的开发也是相关的。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文