在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 57|回复: 0

[原创] NVMe高速传输之摆脱XDMA设计8之初始化控制单元设计

[复制链接]
发表于 6 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
通过PCIe直接进行高速数据读写,首先需要实现对PCIe的初始化控制,该控制单元负责控制初始化进程和获取初始化状态。 对于初学者而言,初始化进程比较复杂,在初始化过程中可能由于 PCIe 链路或 NVMe 设备的不确定性导致初始化失败, 通过初始化进程控制可以阶段性的启动初始化流程, 从而更容易定位初始化过程的错误发生点和更好的掌握初始化过程状态。
初始化进程控制功能由初始化寄存器组实现, 初始化寄存器组包含初始化控制寄存器、 初始化状态寄存器、 内存页大小寄存器和单队列最大深度寄存器。初始化控制寄存器用于控制初始化进程, 通过配置初始化控制寄存器可以启动PCIe 初始化进程和 NVMe 初始化进程。 需要注意的是,在 PCIe 未建立链路连接时, 配置启动 PCIe初始化是无效的; 在 PCIe 初始化未完成时, 配置启动 NVMe 初始化也是无效的; 同样需要注意的是:初始化进程在正常结束后, 再次配置启动初始化是无效的, 只有当系统复位后才可以配置初始化控制寄存器启动初始化进程。 初始化控制寄存器的定义如表 1 所示。
表1 初始化控制寄存器定义
NVMe摆脱XDMA之8PCIe控制寄存器定义1.png
初始化状态寄存器用于反馈初始化进程的实时状态, 其中包含了 PCIe 链路状态、PCIe 初始化状态和 NVMe 初始化状态等信息。 PCIe 建立链路和初始化需要严格遵循
先后顺序, 用户可读取初始化状态寄存器判断下一步操作, 当初始化进程出错时也可从该寄存器获取错误代码判断出错原因。 初始化状态寄存器的定义如表2 所示。

表2 初始化状态寄存器定义
NVMe摆脱XDMA之8PCIe状态寄存器定义.png

内存页大小寄存器用于暂存从初始化过程中获得的 NVMe 设备所支持的内存页
大小信息。 内存页大小寄存器的定义如表 3 所示。

表3 内存页大小寄存器定义
NVMe摆脱XDMA之8内存页定义.png

单队列最大深度寄存器用于暂存从初始化过程中获得的 NVMe 设备所支持的单队列的最大深度信息, 该寄存器用于判断创建队列大小是否超过限制。 单队列最大深
度寄存器的定义如表4 所示.



表4 单队列最大深度寄存器定义
NVMe摆脱XDMA之8单队列最大度寄存器定义.png

想进一步了解相关视频,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/58513 … st.card_title.click

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-7-1 16:42 , Processed in 0.018840 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表