一种提高存储卡数据写入速度的方法技术

技术编号:2942118 阅读:790 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种提高存储卡数据写入速度的方法,首先在存储卡的缓存区建立一个临时数据存储区,该方法执行如下步骤:主机发送完写命令后,如果检测到存储卡的响应,则主机通过数据总线发送数据到存储卡缓存区的临时数据存储区,同时,主机通过命令总线继续接收响应;如果主机接收到正确响应,则将临时数据存储区的数据依次写入存储卡的闪存中。本发明专利技术降低了存储卡数据总线的闲置状态,缩短了存储卡数据写入的时间,保证了写入数据的有效性。

【技术实现步骤摘要】

本专利技术涉及一种存储卡写入数据的方法,尤其涉及。
技术介绍
现有主机和存储卡的读写通信协议如下读数据时,主机发送读命令,等待存储卡响应,该响应有一个起始位,主机一旦检测到该起始位,数据总线就可以接收数据。因此,主机发完读命令不用等待接收完全部响应,就可以读数据;而在写入数据时,却是主机发完写命令并且接收完正确响应以后,才能写入数据。由于命令和响应是通过命令总线进行通信的,而数据是通过数据总线进行通信的,这两条总线可以同时通信。在写入数据操作中命令和响应的通信时间内,数据总线总是处于闲置状态,只有当命令总线接收完正确响应后,数据总线才能传输数据。因此,这种通信协议会延误数据的通信时间,从而降低写入数据操作的通信速率。
技术实现思路
因此本专利技术所要解决的技术问题是提供,该方法能够降低存储卡数据总线的闲置状态,缩短存储卡数据写入的时间,保证写入数据的有效性。本专利技术具体是这样实现的,首先在存储卡的缓存区建立一个临时数据存储区,该方法执行如下步骤主机发送完写命令后,如果检测到存储卡的响应,则主机通过数据总线发送数据到存储卡缓存区的临时数据存储区,同时,主机通过命令总线继续接收响应;如果主机接收到正确响应,则将临时数据存储区的数据依次写入存储卡的闪存中。按上述方案,所述检测到存储卡的响应为检测到该响应的起始位为低电平信号。按上述方案,如果存储卡给出错误响应,则存储卡忽略随后到来的所有数据传输并保持在接收状态;同时,主机停止发送数据。按上述方案,所述存储卡给出错误响应包括写保护异常、越界、地址偏差、内部错误。按上述方案,如果存储卡缓存区的临时数据存储区空间已满,那么将数据线DAT0置为低电平。按上述方案,如果数据线DAT0为低电平,存储卡不再接收数据,主机也不再发送数据,直到数据线DAT0重新为高电平。按上述方案,当主机发送数据结束后或者主机给出停止发送命令时,结束主机与存储卡之间的这次数据通信。按上述方案,还包括循环冗余码校验步骤,该步骤在存储卡缓存区的临时数据存储区进行,供存储卡检验传输错误。按上述方案,存储卡将循环冗余码校验的结果通过数据线DAT0传送给主机,如果发生传输错误,存储卡传送给主机‘101’;如果没有发生传输错误,存储卡传送给主机‘010’。按上述方案,如果临时数据存储区的数据的循环冗余码校验不正确,则不能将其写入存储卡的闪存中,主机需要重新发送数据。由于采用了上述处理步骤,本专利技术与现有技术相比,具有以下优点1.主机发送完写命令后,在接收响应的同时,主机通过数据总线发送数据,可以节省48个时钟周期的时间;2.如果存储卡检测到错误(例如写保护异常、越界、地址偏差、内部错误等),将忽略随后到来的所有数据传输并保持在接收状态;如果存储卡没有检测到任何错误并且数据的CRC(CYCLIC REDUNDANCY CODE,循环冗余码)校验正确后,才会将数据写入存储卡的Flash(闪存)中,从而保证了写入数据的有效性;3.如果存储卡检测到错误或者数据在存储卡缓存区的临时数据存储区发生校验错误的情况,或者两种情况同时出现,那么,主机每次重发命令或者重发数据时,都可以做到节省48个时钟周期,从而提高了数据写入速度。附图说明图1是普通多媒体卡的结构框图;图2是本专利技术的一次单块数据写入时序图; 图3是普通多媒体卡的一次单块数据写入时序图;图4是本专利技术的块写入数据流程图。具体实施例方式本专利技术所述的存储卡有多种结构,下面以多媒体卡(MMC)为一个具体的实施例(但不限于MMC卡的具体命令、命令格式、响应、响应格式、状态指示和寄存器标志或MMC卡本身,也可以是MMC其它未用到的或已用到的采取复用方式的命令、命令格式、响应、响应格式、状态指示和寄存器标志或SD卡来实现)对本专利技术的具体实施过程作进一步的说明首先描述多媒体卡(MMC)的具体结构和数据传输命令(1)多媒体卡(MMC)的基本结构多媒体卡(MMC)的结构如图1所示,其中通信信号包括CLK在时钟信号的每个周期内,在命令总线和数据总线上只传输一个比特数据;CMD这是一个用于存储卡初始化和传输指令的双向指令通道,指令从存储卡的主机发送到存储卡,响应从存储卡发送到主机;DAT0-DAT7双向数据通道。(2)总线协议主机和多媒体卡之间通信是基于消息的协议,每条消息由下面信号之一表示命令命令是一个操作开始的信号,从主机发送到存储卡上,在CMD总线上串行传输;响应响应是从存储卡发送到主机的信号,作为对前面接收到的命令的回应。响应在CMD总线上串行传输;数据数据可以在主机和存储卡之间双向传输。数据通过数据总线传输,用于数据传输的数据总线宽度可以是1位、4位或者8位。其中,命令的传输格式如下表所示 一个命令总是由一个起始比特(恒为‘0’)开始,后面是表明传输方向(恒为‘1’)的比特,接下来的6比特是命令的索引,其值可解释为二进制编码数字(从0到63)。有些命令需要参数(例如地址),使用32比特编码。所有的命令都由CRC进行校验,都以结束比特(恒为‘1’)结束。多媒体卡的响应有五种类型,其中卡接收到主机端写入命令后的响应格式如下表所示 所有响应都通过CMD总线进行传送,响应总是由一个起始比特(恒为‘0’)开始,后面是表明传输方向(恒为‘0’)的比特,接下来的6比特是命令的索引,接下来32比特用来表示卡的状态信息。所有的响应都由CRC进行校验,都以结束比特(恒为‘1’)结束。在主机发送数据的处理上,高位数据首先传送,低位数据最后传送。数据传输的起始位恒为‘0’,结束位恒为‘1’,数据传输有两种类型块传输和流传输,在块传输中,每块数据后面由CRC进行校验,CRC状态响应和存储卡“忙”的指示将会通过数据线DAT0发送给主机;而流传输中没有CRC校验。本专利技术的设计构思提供一种主机和存储卡的写操作通信方法。当写命令发送完毕后,在命令总线接收响应的同时,数据就可以通过数据总线进行通信。本专利技术在存储卡的缓存区建立一个临时数据存储区,关于数据的CRC(Cyclic Redundancy Code,循环冗余码)校验也在这里完成。如果存储卡给出错误响应(例如写保护异常、越界、地址偏差、内部错误等),必须忽略随后到来的所有数据传输并保持在接收状态,同时主机不再发送数据;如果存储卡没有检测到任何错误,但是数据的CRC校验错误,则临时数据存储区的数据不会写入存储卡的Flash(闪存)中;如果存储卡没有检测到任何错误并且数据的CRC校验正确后,则将临时数据存储区的数据写入存储卡的Flash中;如果存储卡的临时数据存储区已满,则存储卡将数据线DAT0设置为低电平,一旦有空闲的存储区,存储卡就会将DAT0重新设置为高电平;如果主机检测到DAT0的低电平信号,则不再发送数据,直到检测到DAT0重新为高电平。根据上述设计构思,本专利技术按下列过程实现如图2所示为本专利技术的一次单块数据写入时序图,该时序图使用下表中的缩写形式 图中所示序列由单块写入命令开始,它决定了数据写入存储卡的起始地址。当存储卡在CMD命令总线上给出响应后,主机开始传输传送数据。数据后紧接着是CRC校验比特,供存储卡检验传输错误。存储卡将CRC的校验结果通过数据线DAT0传送给主机(可参见图2中DAT0数本文档来自技高网...

【技术保护点】
一种提高存储卡数据写入速度的方法,首先在存储卡的缓存区建立一个临时数据存储区,该方法执行如下步骤:主机发送完写命令后,如果检测到存储卡的响应,则主机通过数据总线发送数据到存储卡缓存区的临时数据存储区,同时,主机通过命令总线继续接收响 应;如果主机接收到正确响应,则将临时数据存储区的数据依次写入存储卡的闪存中。

【技术特征摘要】

【专利技术属性】
技术研发人员:杨光敏
申请(专利权)人:普天信息技术研究院
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利