PCIe NVMe SSD 上电初始化全流程

1. 在FPGA中对PCIe IP核中的各种寄存器进行最原始的配置,比如Vendor ID, Device ID, Revision ID, Class Vaule等等

2. HOST首先将PCIe的Bar全写入1,来获取NVMe寄存器的大小,并在内核空间中开辟一块内存(不是真的通过kalloc去开辟,只是指定一块内存没有被使用的地址)来映射NVMe寄存器,并将此块内存的首地址填入PCIe 的Bar寄存器中

注:HOST访问这块映射的内存时,Root Complex会自动转发到对应的PCIe Endpoint

3. HOST首先通过PCIe TLP事务去配置位于PCIe Bar寄存器指向的NVMe寄存器,具体来说是配置NVMe寄存器中的Admin Queue
Attributes (AQA),Admin Submission Queue Base Address (ASQ),以及Admin Completion Queue Base Address (ACQ)。从而完成对Admin Queue的配置,使得SSD后续能够接收Admin Command。

4. HOST通过PCIe TLP事务设置 CC寄存器中各个参数,包括主机页面大小、IO完成队列条目大小、IO提交队列条目大小、关机通知、内存页面大小、命令仲裁方式等。

5. HOST通过PCIe TLP事务将CC寄存器中的EN设置为1

6. HOST等待NVMe 控制器将NVMe寄存器中的CSTS.RDY变为1,表示控制器准备好接收NVMe Command。

7. HOST开始通过ASQ和ACQ发起Admin Command,首先通过Set Features获取I/O队列的数量。

8. HOST发送Identify命令,将CNS设置为1,来获取SSD内部的Controller的数据结构,里面包含SSD的名称,厂商,IO SQ, CQ的Entry大小,一次命令的最大传输量(mdts),寻址方式(是否支持SGL),namespace数量等。

9. HOST发送Identify命令,将CNS设置为2,来获取此SSD中每一个Namespace

10. HOST发送Identify命令,将CNS设置为0,来获取SSD内部Namespace的数据结构,里面包含此Namespace中的起始逻辑地址,逻辑页的数量(也即整个SSD的容量)信息。

11. HOST通过Create I/O Completion Queue Command来创建适当数量的CQ。

12. HOST通过Create I/O Submission Queue Command来创建适当数量的SQ。

13. HOST可以正常发送NVMe I/O Command

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vuex:深入理解所涉及的几个问题

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 一、Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 二、Vu…

别找了!包含gpt在内的国内可以使用的Ai网站都在这了【最新可用】

在当今人工智能迅速发展的时代,智能创作与对话平台为用户提供了多样化的功能支持。以下是一些国内代表性的GPT平台,涵盖了从个人到企业的广泛需求,您可以根据自己的需求灵活选择。我们还为您整理了这些平台的链接,方便直接体验。&…

Redis学习Day3——项目工程开发

扩展阅读推荐: 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程,我们还将遇到各种实际问题,例如缓存击穿、雪崩、热Key等问题&…

Ubuntu20.04+ros-noetic配置Cartographer

一、概述 因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统,…

C语言中的磁盘映射与共享内存详解

文章目录 C语言中的磁盘映射与共享内存1. 磁盘映射(Memory Mapping)1.1 磁盘映射的深入概念1.2 mmap函数的详细参数解析1.3 磁盘映射的高级应用场景1.3.1 大文件处理1.3.2 内存共享1.3.3 文件与内存同步1.3.4 内存映射数据库 1.4 完整的磁盘映射代码示例…

np.ndarray和np.array区别;MXNet的 mx.array 类型是什么;NDArray优化了什么:并行计算优化

目录 np.ndarray和np.array区别 np.ndarray np.array 举例说明 MXNet的 mx.array 类型是什么 NDArray优化了什么 1. 异步计算和内存优化 2. 高效的数学和线性代数运算 3. 稀疏数据支持 4. 自动化求导 举例说明 np.ndarray和np.array区别 在NumPy库中,np.ndarray和n…

如何看待IBM中国研发部裁员?

如何看待IBM中国研发部裁员?近日,IBM中国宣布撤出在华两大研发中心,引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展,也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

Java+vue的医药进出口交易系统(源码+数据库+文档)

外贸系统|医药进出口交易系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 仓储部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设…

2024.09.04 校招 实习 内推 面经

🛰️ :neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 海康威视2025届校园招聘正式启动(内推) 校招 | 海康威视2025届校园招聘正式启动(内推) 2、校招 | 沃飞长空2025届全球校…

中国书法——孙溟㠭浅析碑帖《三希堂法帖》

孙溟㠭浅析碑帖《三希堂法帖》 全称是《三希堂石渠宝笈法帖》,是中国清代宫廷刻帖,一共三十二册。 清朝高宗弘历收藏了晋王羲之《快雪时晴帖》,王献之的《中秋帖》,王珣的《伯远帖》三种王氏原墨迹。故而把所藏法书之所…

农产品管理与推荐系统Python+Django网页界面+计算机毕设项目+推荐算法

一、介绍 农产品管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的…

2024年9月10日嵌入式学习

今日主要学习了缓冲帧。 Framebuffer(帧缓冲)是Linux系统为显示设备提供的一套应用程序接口,它将显存抽象为一种设备,允许上层应用程序在图形模式下直接进行显示缓冲区的读写操作。 原理:通过内存映射技术向显存空间…

MM-PhyQA——一个专门处理高中物理选择题的 LLM 聊天机器人

概述 论文地址:https://arxiv.org/abs/2404.12926 人工智能的发展正在改变我们的学习方式。特别是使用大规模语言模型(LLM)的聊天机器人,通过提供个性化指导和即时反馈,极大地拓展了教育的可能性。 然而&#xff0c…

带你深入了解C语言指针(一)

目录 前言 一、内存和地址 1. 内存 2. 究竟该如何理解编址 二、指针变量和地址 1. 取地址操作符(&) 2. 指针变量和解引用操作符(*) 2.1 指针变量 2.2 如何拆解指针类型 2.3 解引⽤操作符 3. 指针变量的大小 三、指…

JavaScript更改属性名称+增加字段+排序

JavaScript更改属性名称增加字段排序 背景 客户提供的接口里包含了一堆数据,其中分为多个模块,需要进行拆分,其中涉及到名称更改、字段增加、排序。处理过程 -需要的数据: data: {"四年级": [{ "class": &q…

LeetCode题练习与总结:矩形面积--223

一、题目描述 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。第二个矩形由其左…

jina-embeddings 的使用教程,怎么用它做embeddings和rerank的操作呢?

Jina-embeddings 使用教程 Jina-embeddings 是一个强大的工具,可以用来生成文本的嵌入向量(embeddings),这些向量可用于相似度搜索、分类、重排序(reranking)等任务。在这个教程中,我将展示如何…

配置 MinGW 以及使用 g++ 编译 C++ 程序

如何在 Windows 上安装和配置 MinGW 以及使用 g 编译 C 程序 (C语言(gcc)类似 ) 在Windows环境下,使用C进行编程需要一个编译器,而MinGW (Minimalist GNU for Windows) 是一个常用的C/C编译器工具集。对于编程新手来说&#xff0c…

SOMEIP_ETS_101: SD_ClientServiceActivate_send_StopOfferService

测试目的: 验证当DUT在客户端模式下开始发送FindService消息时,测试器发送StopOfferService后,DUT能够理解其正在寻找的服务和实例ID不再可用,并停止为此服务和实例ID发送FindService消息。同时,DUT仍然可以发送Find-…

云曦2024秋季开学考

ezezssrf 第一关:md5弱比较 yunxi%5B%5D1&wlgf%5B%5D2 第二关: md5强比较 需要在bp中传参,在hackbar里不行 yunxiiM%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DC V%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_B…