基于ATA的存储设备的读写驱动系统和方法与流程

文档序号:13760124阅读:247来源:国知局
基于ATA的存储设备的读写驱动系统和方法与流程

本发明涉及数据读写驱动技术领域,尤其涉及一种基于ATA的存储设备的读写驱动系统和方法。



背景技术:

现有的ATA规范存储器驱动技术以Windows系列,Linux(UNIX)系列为代表,均为可靠性数据读写模式。而随着多媒体设备的日益普及和发展,流媒体数据读写设备所占比例越来越高。可靠性数据读写模式由于读写错误导致终端的缺陷,已经不能满足流媒体数据读写设备的性能要求。虽然有读写重置、重启的补偿手段,但是以读写效率下降为代价的。

现存ATA规范存储设备驱动的优缺点:目前普遍存在的ATA规范存储设备驱动技术(Linux/UNIX的驱动技术以及Windows的驱动技术)可以实现大容量(137G以上)存储空间管理,两者都支持PIO读写以及DMA读写方式,并实现数据无差错读写。但是两者均没有实现针对非可靠性数据的读写功能,非可靠性数据读写可以忽略无关紧要的读写错误,保证数据读写不发生中断。

在多媒体产品日益普及的现状下,流媒体数据读写迫切需求一种与之相适应的读写驱动技术。当需要可靠性数据读写功能的时候,能够进行可靠性数据读写,当进行非可靠性数据(流媒体数据)读写的时候,能够忽略无关紧要的错误进行非可靠性数据读写。

综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。



技术实现要素:

针对上述的缺陷,本发明的目的在于提供一种基于ATA的存储设备的读写驱动系统和方法,其可以实现可靠性数据读写驱动功能和非可靠性数据读写功能。

为了实现上述目的,本发明提供一种基于ATA的存储设备的读写驱动系统,包括功能应用层和硬件接口层,其中:

所述功能应用层,用于解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递;

所述硬件接口层,用于传递到达指令和参数,根据不同类型的指令作数据处理准备。

根据本发明的基于ATA的存储设备的读写驱动系统,所述指令的类型包括:设定命令、初始化命令及读写命令;

所述硬件接口层进一步用于:

当所述指令为设定命令时,根据参数执行存储器初始化命令;

当所述指令为初始化命令时,针对数据读写所需要的控制寄存器设定,存储空间准备,中断控制寄存器的设定;

当所述指令为读写命令请求时,根据读写指令,向存储器发起读写请求。

根据本发明的基于ATA的存储设备的读写驱动系统,所述功能应用层包括非流媒体数据读写接口及流媒体数据读写接口;

所述硬件接口层包括非流媒体数据读写控制模块及流媒体数据读写控制模块;

所述流媒体数据读写控制模块用于在所述流媒体数据读写过程中,如果数据发生读写错误,则将错误数据信息记录到错误数据表里,并将所述错误数据写入存储设备中,保持数据持续写入;

所述非流媒体数据读写控制模块用于所述非流媒体数据读写过程中,如果数据发生读写错误,则控制停止数据读写。

根据本发明的基于ATA的存储设备的读写驱动系统,所述流媒体数据读写控制模块进一步用于

根据需要被读出或写入数据块大小,并计算读写命令列表的读写命令发行次数,并依次填充命令和参数,在命令行最后设置结尾标志;以及

在流媒体数据发生读写错误时,根据预设定的错误保存地址自动存储错误数据信息。

根据本发明的基于ATA的存储设备的读写驱动系统,所述功能应用层向硬件接口层传递的初始化指令包括:

设置非流媒体数据读写所需的寄存器;

IdentifyDevice判读,CCTL判定与设定,中断处理控制单元初始化,流媒体数据读写命令有效性检查与设定及错误处理寄存器初始化。

本发明还相应的提供一种基于ATA的存储设备的读写驱动方法,包括

解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递;

传递到达指令和参数,根据不同类型的指令作数据处理准备。

根据本发明的基于ATA的存储设备的读写驱动方法,所述指令的类型包括:设定命令、初始化命令及读写命令;

当所述指令为设定命令时,根据参数执行存储器设定命令;

当所述指令为初始化命令时,针对数据读写所需要的控制寄存器设定,存储空间准备,中断控制寄存器的设定;

当所述指令为读写命令请求时,根据读写指令,向存储器发起读写请求。

根据本发明的基于ATA的存储设备的读写驱动方法,所述流媒体数据读写过程中,如果数据发生读写错误,则将错误数据信息记录到错误数据表里,并将所述错误数据写入存储设备中,数据持续写入;

所述非流媒体数据读写过程中,如果数据发生读写错误,则停止数据读写。

根据本发明的基于ATA的存储设备的读写驱动方法,所述流媒体数据读写过程进一步包括:

根据需要被读出或写入数据块大小,并计算读写命令列表的读写命令发行次数,并依次填充命令和参数,在命令行最后设置结尾标志;

在发生读写错误时,根据预设定的错误保存地址自动存储错误数据信息。

根据本发明的基于ATA的存储设备的读写驱动方法,执行初始化命令的步骤包括:

设置非流媒体数据读写所需的寄存器;

IdentifyDevice判读,CCTL判定与设定,中断处理控制单元初始化,流媒体数据读写命令有效性检查与设定及错误处理寄存器初始化。

本发明提供一种基于ATA的存储设备的读写驱动系统包括功能应用层和硬件接口层,其中:所述功能应用层,用于解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递;所述硬件接口层,用于传递到达指令和参数,根据不同类型的指令作数据处理准备。本发明还相应的提供一种基于ATA的存储设备的读写驱动方法。借此,本发明可以同时实现可靠性数据读写驱动功能和非可靠性数据读写功能。

附图说明

图1是本发明的基于ATA的存储设备的读写系统结构示意图;

图2是本发明一实施例的数据读写流程图;

图3是本发明一实施例的可靠数据读写过程示意图;

图4是本发明一实施例的非可靠数据读写过程示意图;

图5是本发明的读写方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参见图1,本发明提供了一种基于ATA的存储设备的读写驱动系统,ATA存储设备包括PATA设备及SATA设备。所述读写驱动系统包括功能应用层和硬件接口层,其中:

所述功能应用层,用于解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递。本发明的实施例中,功能应用层接受用户按照存储区端口设置和读写指令的说明文档所发行的指令请求,解析指令请求以及所带参数,并进行合法性检查,对于不符合格式要求的请求返回错误。如果格式正确,且数值合法,则将指令名称与所解析参数向硬件接口层传递。

所述硬件接口层,用于传递到达指令和参数,根据不同类型的指令作数据处理准备。

具体的说,功能应用层所解析的指令的类型包括:设定命令、初始化命令及读写命令,当功能应用层将这些正确的命令传递给硬件接口层时,如果所述指令为设定命令,则硬件接口层根据参数执行存储器初始化命令,另外,在执行设定指令时,每次读写指令发行时都需要实施的设定过程包括:设定流媒体数据的字节数量,设定起始地址,设定数据类型标志(可靠性读写或非可靠性读写),设定读写命令列表。

如果所述指令为初始化命令,则硬件接口层针对数据读写所需要的控制寄存器设定,存储空间准备,中断控制寄存器的设定;

如果所述指令为读写命令请求时,则硬件接口层根据读写指令,向存储器发起读写请求。

优选的是,本发明的硬件接口层可以接受系统指令完成寄存器接口宏定义及寄存器功能宏定义,在实施功能移植时只需要按照具体的系统完成这些寄存器的定义,完成源代码编译即可。需要说明的,本发明的定义接口仅适用于ATA接口规范以及能够转换成ATA规范的存储设备控制系统。

另外,本发明所述功能应用层除了可靠性数据读写必须的寄存器设置之外,还需要对IdentifyDevice判读,CCTL判定,中断处理控制单元初始化,流数据读写命令有效性检查与设定,错误处理寄存器初始化。

功能应用层包括非流媒体数据读写接口及流媒体数据读写接口,硬件接口层包括对应的非流媒体数据读写控制模块及流媒体数据读写控制模块。当本发明的系统在执行一个流媒体数据“写”(Write)命令发行时,需要设定中断处理控制单元的构造体,并设定“写”命令发行时的错误处理次数,CCTL超时判定,错误数据缓冲区设置等处理过程。当发生错误时,流媒体数据读写控制模块将错误次数与错误数据被记录到错误记录缓冲区,但“写”操作并不会终止,以此保持数据的持续读过程。当然,用户可以根据错误寄存器的错误数据进行判定后选择是否终止继续“写”操作。

当一个流媒体数据“读”(Read)命令发行时,需要设定中断处理控制单元的构造体。并设定“读”命令发行时的错误处理次数,CCTL超时判定,错误数据缓冲区设置等处理过程。当发生错误时,流媒体数据读写控制模块将错误次数与错误数据被记录到错误记录缓冲区,但“读”操作并不会终止,以此保证数据的持续读过程。当然,用户可以根据错误寄存器的错误数据进行判定后选择是否终止继续“读”操作。

另外,本发明的系统在处理错误数据时,由于读写效率控制的原因,在多数情况下缓冲区数据是以块为单位保存。因此,错误数据仅仅是所保存数据块中的一部分,用户可以根据每次读写中断的错误记录信息来截取其中的错误数据作为出错原因分析的依据,同时也可以根据需要对这些数据作出保存、抛弃或者比较等处理。

需要说明的,流媒体数据读写使能时需要设定存储器内部的读写缓存PRD表。存储器内部的读写缓存PRD表都设有上限,该参数属于固有参数,不能控制。但是PRD表的下限相关设定数值则可以根据流媒体数据的类型以及系统能够提供的缓冲区内存容量综合决定,以尽可能地提高读写效率。本发明所提供的设定功能可以设定16M/block,32M/block,64M/block等不同适应H.264(MPEG4)等的各种压缩比数据流,也可以设定更小或更大的值。用户如果设定的数值与实际的流媒体数据以及缓冲内存匹配度不一致,则会导致读写效率的明显下降,甚至溢出。

结合图2~图4,本发明所述设定指令过程结束之后,开始实施读写命令发行过程,包括可靠数据读写和非可靠数据读写2种模式。对于非可靠数据读写,参见图2的block1—非可靠数据读写过程及图4:首先流媒体数据读写控制模块根据需要被读出或写入数据块大小计算读写命令列表的读写命令发行次数,并依次填充命令和参数,在命令行最后设置结尾标志。在读写指令开始执行后,在遇到读写错误时,根据前文所设定错误保存地址自动存储错误内容。与此同时读写不发生中断,继续进行,发生错误的数据也被正常读写,直到读写指令列表被执行完毕。

对于可靠性数据读写,参见图2的block2—可靠数据读写过程及图3:首先根据需要被读出或写入数据块大小计算读写命令列表的读写命令发行次数,并依次填充命令和参数,在命令行最后设置结尾标志。在读写指令开始执行后,与前述非可靠数据读写发生错误时处理不同,如果数据发生读写错误,则非流媒体数据读写控制模块控制停止数据读写,停止实施读写过程,重新载入并执行发生错误的读写指令行实施再次读写。

所述读写过程结束后,对于非可靠数据读写模式,如果读写发生错误时,与可靠性数据读写一样,错误内容由于前文与所述方法得以保存,可以随时进行分析,调查读写错误发生的原因。

本发明的系统具备以下的技术效果:

1)安全性高:由于隔离了开发者对硬盘控制存储器的直接控制,减少了开发者逻辑错误带来的数据破坏,提高了存储器读写的安全性;

2)读写效率高:无论是可靠性数据读写还是非可靠性数据读写,比相同硬件系统下的驱动模块有更高的读写效率,特别对非可靠性数据读写效率提高更明显。

3)可靠性高:本发明的两层控制接口设计已经过严苛的测试和验证,具备高度的可靠性。

4)检测功能:本发明附带设计用于流媒体读写验证的测试数据模板,可以用于对当前市面的机械硬盘做固件逻辑是否存在错误进行检测,从而进一步提高存储设备的可靠性和健壮性。

再参见图5,本发明相应的提供一种基于ATA的存储设备的读写驱动方法,其通过如图1所示的系统实现,该方法包括:

步骤S501,解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递。所述指令的类型包括:设定命令、初始化命令及读写命令,系统根据不同的指令做不同处理。当所述指令为设定命令时,根据参数执行存储器设定命令;当所述指令为初始化命令时,针对数据读写所需要的控制寄存器设定,存储空间准备,中断控制寄存器的设定;当所述指令为读写命令请求时,根据读写指令,向存储器发起读写请求。

步骤S502,传递到达指令和参数,根据不同类型的指令作数据处理准备。

本发明在执行流媒体数据读写过程中,如果数据发生读写错误,则将错误数据信息记录到错误数据表里,并将所述错误数据写入存储设备中,数据持续写入;在执行所述非流媒体数据读写过程中,如果数据发生读写错误,则停止数据读写。

进一步的,所述流媒体数据读写过程包括:

根据需要被读出或写入数据块大小,并计算读写命令列表的读写命令发行次数,并依次填充命令和参数,在命令行最后设置结尾标志;

在发生读写错误时,根据预设定的错误保存地址自动存储错误数据信息。

另外本发明的初始化过程包括:

设置非流媒体数据读写所需的寄存器;

IdentifyDevice判读,CCTL判定与设定,中断处理控制单元初始化,流媒体数据读写命令有效性检查与设定及错误处理寄存器初始化。借此,使得系统可以顺利的执行后续的数据读写。

综上所述,本发明提供一种基于ATA的存储设备的读写驱动系统包括功能应用层和硬件接口层,其中:所述功能应用层,用于解析指令请求以及所带参数,并进行合法性检查,并将格式正确且数值合法的指令名称与所解析参数向所述硬件接口层传递;所述硬件接口层,用于传递到达指令和参数,根据不同类型的指令作数据处理准备。本发明还相应的提供一种基于ATA的存储设备的读写驱动方法。借此,本发明可以同时实现可靠性数据读写驱动功能和非可靠性数据读写功能。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1