一种基于FT6678控制器的NVME硬盘驱动方法与流程

文档序号:26957052发布日期:2021-10-16 04:39阅读:1899来源:国知局
一种基于FT6678控制器的NVME硬盘驱动方法与流程
一种基于ft6678控制器的nvme硬盘驱动方法
技术领域
1.本发明涉及nvme硬盘技术领域,具体涉及一种基于ft6678控制器的nvme硬盘驱动方法。


背景技术:

2.飞腾ft6678控制器dsp没有提供官方操作硬盘的存储解决方法,现有非国产的技术方案,采用ti dsp的pcie接口连接pcie转sata桥接芯片,再连接sata硬盘的存储解决方法,架构如图1。现有技术采用的pcie转sata桥接芯片对dsp数据进行中转,性能存在损失,同时采用sata硬盘存储,且支持的sata2.0协议,导致输出、传输性能不高。另外,现有技术在pcie转sata桥接芯片的选型上无法满足国产化要求。


技术实现要素:

3.本发明的目的在于提供一种基于ft6678控制器的nvme硬盘驱动方法,以至少解决现有技术采用的pcie转sata桥接芯片对dsp数据进行中转,性能存在损失,采用sata硬盘存储,且支持的sata2.0协议,导致输出、传输性能不高的技术问题。
4.本发明通过下述技术方案实现:
5.本发明提供一种基于ft6678控制器的nvme硬盘驱动方法,包括:
6.将ft6678控制器通过pcie与nvme硬盘连接;
7.对ft6678控制器端pcie进行初始化;
8.通过ft6678控制器对nvme硬盘进行识别;
9.通过ft6678控制器对nvme硬盘进行写控制和读控制。
10.进一步,所述对ft6678控制器端pcie进行初始化,具体包括:
11.对ft6678控制器端pcie接口进行初始化;
12.配置pcie工作在rc模式,配置pcie采用pcie2.0接口协议和4lane接口。
13.进一步,所述通过ft6678控制器对nvme硬盘进行识别,具体包括:
14.(1)打开pcie链接使能,检查pcie与nvme固态硬盘的link状态,如果link成功,则执行步骤3;如果link不成功,则重新训练链路,重新link,如果一直link不成功,直到link超时,则执行步骤2;
15.(2)进行link超时异常处理;
16.(3)配置pcie bar空间寄存器,实现与nvme硬盘地址映射,通过pcie bar获取nvme硬盘版本信息;
17.(4)初始化admin queue空间,在ft6678控制器的共享存储空间分配地址空间;
18.(5)配置nvme硬盘寄存器;
19.(6)发送identify命令,获取nvme硬盘基本信息;
20.(7)初始化io queue空间,在ft6678控制器的共享存储空间分配地址空间;
21.(8)创建,即初始化cq和sq。
22.进一步,所述通过ft6678控制器对nvme硬盘进行写控制,具体包括:
23.(1)获取写操作数据地址、数据长度和写数据lba地址;
24.(2)在ft6678控制器的共享存储空间动态分配地址空间;
25.(3)若ft6678控制器一级数据缓存无效,则执行步骤4;
26.(4)将写操作数据拷贝到共享存储空间;
27.(5)计算本次写操作lba地址、数据长度、共享存储空间数据地址;
28.(6)设置sq队列参数;
29.(7)通知nvme硬盘从sq队列取命令;
30.(8)等待nvme硬盘执行指令,并返回执行结果;
31.(9)在cq中查看指令执行结果;
32.(10)统计数据传输完成。
33.进一步,所述通过ft6678控制器对nvme硬盘进行读控制,具体包括:
34.(1)获取读操作数据地址、数据长度和读数据lba地址;
35.(2)在ft6678控制器的共享存储空间动态分配地址空间;
36.(3)计算本次读操作lba地址、数据长度、共享存储空间数据地址;
37.(4)设置sq队列参数;
38.(5)通知nvme硬盘从sq队列取命令;
39.(6)等待nvme硬盘执行指令,并返回执行结果;
40.(7)在cq中查看指令执行结果;
41.(8)若ft6678控制器一级数据缓存无效,则执行步骤9;
42.(9)将共享存储空间数据拷贝到读操作数据地址;
43.(10)统计数据传输完成。
44.本发明与现有技术相比,具有如下的优点和有益效果:
45.本发明提供的一种基于ft6678控制器的nvme硬盘驱动方法,不依赖操作系统,飞腾ft6678控制器可采用pcie2.0x4直接和nvme硬盘连接进行数据存储,相比现有技术传输存储性能提高10倍以上,至少解决了现有技术采用的pcie转sata桥接芯片对dsp数据进行中转,性能存在损失,采用sata硬盘存储,且支持的sata2.0协议,导致输出、传输性能不高的技术问题。该方法在无系统下采用飞腾ft6678控制器实现对nvme硬盘的读写控制,dsp主控芯片采用ft6678控制器,nvme硬盘控制器芯片采用忆芯star1000,可实现全国产化。
附图说明
46.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
47.图1为现有硬盘驱动方法的架构图;
48.图2为本发明一种基于ft6678控制器的nvme硬盘驱动方法的架构图;
49.图3为本发明一种基于ft6678控制器的nvme硬盘驱动方法的流程图;
50.图4为本发明一种基于ft6678控制器的nvme硬盘驱动方法中nvme硬盘识别流程图;
51.图5为本发明一种基于ft6678控制器的nvme硬盘驱动方法中nvme硬盘写控制流程
图;
52.图6为本发明一种基于ft6678控制器的nvme硬盘驱动方法中nvme硬盘读控制流程图。
具体实施方式
53.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
54.实施例一
55.请参考图2至图6,本发明提供一种基于ft6678控制器的nvme硬盘驱动方法,包括:
56.s1、将ft6678控制器通过pcie(高速串行计算机扩展总线标准)与nvme(非易失性内存主机控制器接口规范)硬盘连接;
57.s2、对ft6678控制器端pcie进行初始化;
58.s3、通过ft6678控制器对nvme硬盘进行识别;
59.s4、通过ft6678控制器对nvme硬盘进行写控制和读控制。
60.本发明提供的一种基于ft6678控制器的nvme硬盘驱动方法,不依赖操作系统,飞腾ft6678控制器可采用pcie2.0x4直接和nvme硬盘连接进行数据存储,相比现有技术传输存储性能提高10倍以上,至少解决了现有技术采用的pcie转sata桥接芯片对dsp(数字信号处理)数据进行中转,性能存在损失,采用sata硬盘存储,且支持的sata2.0协议,导致输出、传输性能不高的技术问题。该方法在无系统下采用飞腾ft6678控制器实现对nvme硬盘的读写控制,dsp主控芯片采用ft6678控制器,nvme硬盘控制器芯片采用忆芯stari000,可实现全国产化。
61.作为具体实施方式,所述对ft6678控制器端pcie进行初始化,具体包括:
62.对ft6678控制器端pcie接口进行初始化;
63.配置pcie工作在rc(root complex)模式,配置pcie采用pcie2.0接口协议和4lane接口。
64.作为具体实施方式,所述通过ft6678控制器对nvme硬盘进行识别,具体包括:
65.(1)打开pcie链接使能,检查pcie与nvme固态硬盘的link状态(链路状态),如果1ink成功,则执行步骤3;如果1ink不成功,则重新训练链路,重新link,如果一直link不成功,直到link超时,则执行步骤2;
66.(2)进行link超时异常处理;
67.(3)配置pcie bar空间寄存器,实现与nvme硬盘地址映射,通过pcie bar获取nvme硬盘版本信息;
68.(4)初始化admin queue(管理队列)空间,在ft6678控制器的共享存储空间(msmc)分配地址空间;
69.(5)配置nvme硬盘寄存器,包括aqa(admin queue attributes)、asq(admin submission queue base address)、acq(admin complete queue base address)、cc(controller configuration);
70.(6)发送identify命令,获取nvme硬盘基本信息;
71.(7)初始化io queue(io队列)空间,在ft6678控制器的共享存储空间分配地址空间;
72.(8)创建,即初始化cq(completion queue)和sq(submission queue)。
73.作为具体实施方式,所述通过ft6678控制器对nvme硬盘进行写控制,具体包括:
74.(1)获取写操作数据地址(ddr3数据地址空间)、数据长度和写数据lba地址;
75.(2)在ft6678控制器的共享存储空间(msmc)动态分配地址空间;
76.(3)若ft6678控制器一级数据缓存无效,则执行步骤4;
77.(4)将写操作数据拷贝到共享存储空间(msmc);
78.(5)计算本次写操作lba地址、数据长度、共享存储空间数据地址;
79.(6)设置sq队列参数;
80.(7)通知nvme硬盘从sq队列取命令;
81.(8)等待nvme硬盘执行指令,并返回执行结果;
82.(9)在cq中查看指令执行结果;
83.(10)统计数据传输完成。
84.作为具体实施方式,所述通过ft6678控制器对nvme硬盘进行读控制,具体包括:
85.(1)获取读操作数据地址(ddr3数据地址空间)、数据长度和读数据lba地址;
86.(2)在ft6678控制器的共享存储空间(msmc)动态分配地址空间;
87.(3)计算本次读操作lba地址、数据长度、共享存储空间数据地址;
88.(4)设置sq队列参数;
89.(5)通知nvme硬盘从sq队列取命令;
90.(6)等待nvme硬盘执行指令,并返回执行结果;
91.(7)在cq中查看指令执行结果;
92.(8)若ft6678控制器一级数据缓存无效,则执行步骤9;
93.(9)将共享存储空间数据拷贝到读操作数据地址;
94.(10)统计数据传输完成。
95.本领域普通技术人员可以理解实现上述事实和方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,涉及的程序或者所述的程序可以存储于一计算机所可读取存储介质中,该程序在执行时,包括如下步骤:此时引出相应的方法步骤,所述的存储介质可以是rom/ram、磁碟、光盘等等
96.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1