马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
通过PCIe直接进行高速数据读写,首先需要实现对PCIe的初始化控制,该控制单元负责控制初始化进程和获取初始化状态。 对于初学者而言,初始化进程比较复杂,在初始化过程中可能由于 PCIe 链路或 NVMe 设备的不确定性导致初始化失败, 通过初始化进程控制可以阶段性的启动初始化流程, 从而更容易定位初始化过程的错误发生点和更好的掌握初始化过程状态。
初始化进程控制功能由初始化寄存器组实现, 初始化寄存器组包含初始化控制寄存器、 初始化状态寄存器、 内存页大小寄存器和单队列最大深度寄存器。初始化控制寄存器用于控制初始化进程, 通过配置初始化控制寄存器可以启动PCIe 初始化进程和 NVMe 初始化进程。 需要注意的是,在 PCIe 未建立链路连接时, 配置启动 PCIe初始化是无效的; 在 PCIe 初始化未完成时, 配置启动 NVMe 初始化也是无效的; 同样需要注意的是:初始化进程在正常结束后, 再次配置启动初始化是无效的, 只有当系统复位后才可以配置初始化控制寄存器启动初始化进程。 初始化控制寄存器的定义如表 1 所示。
表1 初始化控制寄存器定义 初始化状态寄存器用于反馈初始化进程的实时状态, 其中包含了 PCIe 链路状态、PCIe 初始化状态和 NVMe 初始化状态等信息。 PCIe 建立链路和初始化需要严格遵循
先后顺序, 用户可读取初始化状态寄存器判断下一步操作, 当初始化进程出错时也可从该寄存器获取错误代码判断出错原因。 初始化状态寄存器的定义如表2 所示。
表2 初始化状态寄存器定义
内存页大小寄存器用于暂存从初始化过程中获得的 NVMe 设备所支持的内存页大小信息。 内存页大小寄存器的定义如表 3 所示。
表3 内存页大小寄存器定义
单队列最大深度寄存器用于暂存从初始化过程中获得的 NVMe 设备所支持的单队列的最大深度信息, 该寄存器用于判断创建队列大小是否超过限制。 单队列最大深度寄存器的定义如表4 所示.
表4 单队列最大深度寄存器定义
想进一步了解相关视频,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/58513 … st.card_title.click
|