一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGA的NVMESSD固件开发仿真平台的制作方法

2022-06-05 14:06:38 来源:中国专利 TAG:

一种基于fpga的nvme ssd固件开发仿真平台
技术领域
1.本发明涉及nvme ssd 固件开发技术领域,具体为一种基于fpga的nvme ssd 固件开发仿真平台。


背景技术:

2.目前ssd 固件的开发验证大都需要将固件编译好,下载到特定ssd 硬件平台上运行,这种方式会受到硬件平台的限制,当硬件平台不稳定或者还未完善时,容易拉长固件开发的周期。同时搭建硬件环境、下载固件一般比较耗时,所以影响固件开发效率;当前已存在的ssd仿真平台,一般是利用主机端的cpu、内存和硬盘资源,搭建一个纯软件的平台,虽然可以实现ssd 的固件的仿真,但难以模拟真实的嵌入式运行环境;当前纯软件的仿真平台都不能模拟前端数据传输的通道,以及后端闪存的读写擦的特性;当前已有的一些ssd 仿真平台, 在搭建和使用时不够灵活的问题;针对上述问题,我们提供了一种基于fpga的nvme ssd 固件开发仿真平台。


技术实现要素:

3.针对现有技术的不足,本发明提供了一种基于fpga的nvme ssd 固件开发仿真平台,解决了上述背景技术中提出的问题。
4.为实现以上目的,本发明通过以下技术方案予以实现:一种基于fpga的nvme ssd 固件开发仿真平台,包括fpga和测试机,以及在fpga上开发的cpu、nand控制器和ssd硬件平台;其中,在fpga上通过嵌入式cpu模拟硬件行为;在fpga上开发通用nand控制器,并预留socket底座;在fpga上实现基于tcp/ip的网络传输功能,并提供ssd固件基本接口以及一套ssd固件参考代码;测试机上实现nvme over fabric协议,通过网络对ssd仿真平台发命令,通过ssd仿真平台执行相应命令。
5.可选的,所述ssd硬件平台包括多核cpu、串口、ddr、spi nor flash、emmc和网口,以及nand 控制器;测试机上实现基于nvme over fabric协议实现收发命令;fpga上实现串口打印和接受信息的功能,并且提供接口;fpga上用cpu来模拟nvme ssd硬件行为,实现基于网络的收发命令、传输数据,并且提供接口;fpga上提供访问ddr的接口;fpga上提供访问spi nor flash的接口;fpga上提供访问emmc的接口。
6.可选的,所述fpga上开发基于onfi协议的通用nand控制器,同时预留socket底座,可以把nand封装成扣卡,接在底座上,实现通信,同时提供读写擦的接口。
7.可选的,所述fpga上提供一套ssd固件参考代码,包括io路径,垃圾回收,纠错,掉电保护和恢复。
8.本发明提供了一种基于fpga的nvme ssd 固件开发仿真平台,具备以下有益效果:1、该基于fpga的nvme ssd 固件开发仿真平台是软件和硬件相结合的仿真平台,更加贴近真实的嵌入式开发环境。
9.2、该基于fpga的nvme ssd 固件开发仿真平台提供一系列的自动化搭建脚本和参考代码,环境搭建简单,使用方便,是ssd 开发高效。
10.3. 该基于fpga的nvme ssd 固件开发仿真平台提供真实的nand访问。
11.4.该基于fpga的nvme ssd 固件开发仿真平台模拟了更加真实的nvme ssd,测试机端看到的就是真实的nvme ssd。
附图说明
12.图1为本发明的结构示意图。
具体实施方式
13.下面,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
14.实施案例一本发明提供一种技术方案:一种基于fpga的nvme ssd 固件开发仿真平台,包括fpga和测试机,以及在fpga上开发的cpu、nand控制器和ssd硬件平台;其中,在fpga上通过嵌入式cpu模拟硬件行为;在fpga上开发通用nand控制器,并预留socket底座;在fpga上实现基于tcp/ip的网络传输功能,并提供ssd固件基本接口以及一套ssd固件参考代码;测试机上实现nvme over fabric协议,通过网络对ssd仿真平台发命令,通过ssd仿真平台执行相应命令。
15.本发明把ssd固件运行在fpga上,并且测试机通过网络下发命令,从而模拟更加真实的ssd 运行场景,用户可以使用该平台完成以下需求:1.通过阅读参考代码学习nvme ssd 工作原理,通过windows调试机的jtag 链接fpga, 用断点和单步调试的方法,更加具体地学习nvme ssd 命令处理的流程2.编写自己的nvme ssd 固件代码,下载到fpga 上,调试和验证ssd固件算法。
16.实施案例二步骤1:windows 开发调试机,实现固件的开发编译,通过jtag将代码下载到fpga 开发平台上, 同时支持在线调试,以及串口打印调试信息;步骤2:使用fpga 来模拟ssd的硬件平台,包括以下功能多核cpu, 串口,ddr, spi nor flash, emmc, 网口,nand 控制器;步骤3:测试机上实现基于nvme over fabric 协议实现收发命令;
步骤4:fpga 上实现串口打印和接受信息的功能,并且提供接口;步骤5:fpga 上用cpu来模拟nvme ssd 硬件行为,实现基于网络的收发命令、传输数据,并且提供接口;步骤6:fpga 上提供访问ddr的接口;步骤7:fpga 上提供访问 spi nor flash 的接口;步骤8:fpga 上提供访问emmc 的接口;步骤9:fpga 上开发基于onfi 协议的通用 nand 控制器,同时预留socket 底座,可以把nand封装成扣卡, 接在底座上, 实现通信, 同时提供读写擦的接口;步骤10:fpga 上提供一套ssd 固件参考代码,包括io 路径,垃圾回收,纠错,掉电保护和恢复;步骤11:fpga 接通电源,然后在测试机上运行脚本,通过网络与fpga建立联系,从而使测试机可以看到一个模拟的ssd;步骤12:测试机对这个模拟的ssd 发送各种nvme 命令;步骤13:fpga 上的固件处理这些命令;步骤14:于此同时,windows 调试机通过 jtag 链接fpga上的cpu来观察和调试固件,通过串口来收集固件运行状态。
17.具体实施案例一步骤1:用户通过该平台学习nvme ssd 工作原理;步骤2:用户阅读平台自带的参考代码;步骤3:fpga 上电, 测试机上电,测试机运行脚本,与fpga 建立联系,测试机可以识别到模拟的nvme ssd;步骤4:windows 调试机上电,链接串口,通过jtag 链接fpga cpu;步骤5:测试机上对模拟的ssd 发出各种命令,fpga 仿真平台处理对应命令;步骤6:windows 调试机上通过串口和jtag 观察和学习nvme ssd的工作原理。
18.具体实施案例二步骤1:用户可以通过该平台开发验证自己的ssd 算法;步骤2:用户阅读平台自带的参考代码,熟悉底层接口的使用;步骤3:开发自己的代码,可以包括:nvme前端实现,ftl 算法,任务调度框架等等;步骤4:fpga上电;步骤5:windows 调试机上电,利用平台自带编译工具编译已开发好的代码;步骤6:链接串口,链接jtag,通过jtag把编译好的固件代码下载到fpga开发平台上;步骤7:测试机上电,测试机上运行脚本,与fpga 建立联系,使测试机可以识别到模拟的nvme ssd;步骤8:测试机上对模拟的ssd 发出各种命令,用户通过串口和jtag调试自己的代码。
19.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献