![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NVME协议
文章平均质量分 84
listeningwk
keep running
展开
-
NVME协议第四章-Data Structures
本章描述NVME所需的数据结构(讨论均基于PCIE over NVME)。原创 2024-05-10 15:12:07 · 865 阅读 · 0 评论 -
Nvme协议第三章 Controller Registers
控制器寄存器位于MLBAR/MUBAR寄存器(PCI BAR0和BAR1)中,该寄存器应映射到支持有序访问和可变访问宽度的内存空间。host主机通过访问虚拟内存的方式访问该部分寄存器。注:访问过程只能一次访问一个寄存器,不能多个访问。原创 2024-05-06 19:55:59 · 1024 阅读 · 0 评论 -
NVME协议第二章 System Bus Registers
本章节主要详细地介绍如何为Nvme控制器构造PCI Header,PCI Capability,PCI Express Extended Capabilities。(PCI相关可参考。原创 2024-05-06 12:01:35 · 277 阅读 · 0 评论 -
使用qemu调试NVME driver
编译完成后,将image拷贝到buildboot的output目录下(根据自己保存的目录 最终的目录名称应该都一样)。于是想了一个办法,新拉了一个Linux内核版本,目前我使用的是linux-6.8.8版本,于是编译Linux。但是这里遇到参考博客评论区遇到的问题,使用ls-l /dev/n*命令找nvme设备,没有找到任何设备。然后执行上面的qemu命令运行qemu,可以正常看到nvme设备,此时就可以调试nvme驱动代码。另外,builidroot可以下载最新的版本,进入网站下载,进行解压。原创 2024-05-01 10:40:34 · 643 阅读 · 1 评论 -
nvme协议学习总结
至于CQ的tail指针怎么处理呢,CQ命令里面DW3有个P字符,初始化时候设置成0,当CQ填入时候,把该值设置成1,这样当SSD发送CQ到host时候,host可以读取CQ任何信息,保留了上次P状态位置,即旧的tail位置,依次往下检查,得到现在的新的tail位置。首先是SQ head指针,SSD取指令对于host是不可见的,所以当SSD取完指令后,把head信息更新到了CQ head里面,host拿到CQ信息就知道了SQ的head;step4:SSD执行取回的CMD;未完待续...(后序继续补充)原创 2024-04-02 14:11:39 · 408 阅读 · 0 评论