CN105630711A - 一种sd数据读取/写入出错处理方法及sd主机、sd设备 - Google Patents

一种sd数据读取/写入出错处理方法及sd主机、sd设备 Download PDF

Info

Publication number
CN105630711A
CN105630711A CN201410584283.9A CN201410584283A CN105630711A CN 105630711 A CN105630711 A CN 105630711A CN 201410584283 A CN201410584283 A CN 201410584283A CN 105630711 A CN105630711 A CN 105630711A
Authority
CN
China
Prior art keywords
equipment
main frame
data block
write
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410584283.9A
Other languages
English (en)
Inventor
曾旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Acrospeed Inc
Original Assignee
SUZHOU MONTAGE MICROELECTRONIC TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SUZHOU MONTAGE MICROELECTRONIC TECHNOLOGY Co Ltd filed Critical SUZHOU MONTAGE MICROELECTRONIC TECHNOLOGY Co Ltd
Priority to CN201410584283.9A priority Critical patent/CN105630711A/zh
Publication of CN105630711A publication Critical patent/CN105630711A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本发明提供一种SD数据读取/写入错误处理方法及SD主机、SD设备,所述SD数据读取错误处理方法包括:SD主机从SD设备读取数据块;检测所述数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD设备;所述SD设备接收检测结果信息;当确定所述数据块存在CRC错误时,所述SD设备与所述SD主机自动重新读取所述数据块。本发明的技术方案能够在SD主机(SecureDigitalHost)和SD设备(SecureDigitalDevice)之间建立数据传输出错时的自动重传机制,将大大提高数据的传输效率,并且完全不违反现有的SD官方协议,并且可以兼容市面上其他SD主机和设备。

Description

一种SD数据读取/写入出错处理方法及SD主机、SD设备
技术领域
本发明涉及一种计算机数据传输,特别是涉及一种SD数据读取/写入出错处理方法及SD主机、SD设备。
背景技术
SD卡(SecureDigitalMemoryCard)是一种基于半导体闪存工艺的存储卡,具有大容量、高性能、安全等多种特点,目前已成为消费数码设备中应用最广泛的一种存储卡。在SD(SecureDigital)卡越来越普及的今天,SD数据传输的效率的提高也越来越显得重要。通常将SD设备分成SD主机(SecureDigitalHost)和SD设备(SecureDigitalDevice)两个部分,其中SD主机负责对SD设备的控制并作为SD设备与其他设备相连的接口通道。SD卡在进行数据传输(数据在SD主机与SD设备之间传输)时,偶尔也会发生数据传输错误的现象,这在传输多块大数据的时候更容易发生。目前,对于SD卡数据传输出现错误的情况的处理,通常为通过软件参与判断错误的处理。需要软件参与处理的步骤包括判断是否丢弃已经传输正确的数据,是否终止传输后面没有传输完成的数据,是否需要对SD卡进行复位等等。显然,这将大大降低数据的传输效率。
鉴于此,如何提高在SD卡输出传输出错时的处理速度,进而提高SD卡的整体传输速度成为了本领域技术人员亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种SD数据读写传输错误处理方法及SD主机、SD设备,用于解决现有技术中在SD卡数据读取/写入出错时的处理效率低的问题。
为实现上述目的及其他相关目的,本发明提供一种SD数据读取错误处理方法,所述SD数据读取错误处理方法包括:SD主机从SD设备读取数据块;检测所述数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD设备;所述SD设备接收检测结果信息;当确定所述数据块存在CRC错误时,所述SD设备与所述SD主机自动重新读取所述数据块。
可选地,所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,统计连续错误次数;当所述连续错误次数小于所述最大重传次数时,完成重新读取操作。
可选地,所述自动统计连续错误次数是通过计数器完成的。
可选地,所述最大重传次数通过软件设置。
可选地,所述自动重新读取所述数据块的具体实现包括:所述SD主机丢弃所述数据块并准备重新读取所述数据块;所述SD主机重新从所述SD设备读取的所述数据块。
可选地,所述SD主机丢弃所述数据块并准备重新读取所述数据块的具体实现包括:所述SD主机采用FIFO来接收所述数据块;读取所述SD设备开始前,所述SD主机FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时写指针的值载入到所述当前写指针中;所述SD设备采用FIFO来保存所述数据块;所述SD主机读取开始前,所述SD设备FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时读指针的值载入到所述当前读指针中。
本发明提供一种SD数据写入错误处理方法,所述SD数据写入错误处理方法包括:SD主机向SD设备写入数据块;所述SD设备检测所写入的数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD主机;所述SD主机接收检测结果信息;当确定所写入的数据块存在CRC错误时,所述SD设备与所述SD主机自动重新写入所述数据块。
可选地,所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,自动统计连续错误次数;当所述连续错误次数小于所述最大重传次数时,自动完成重新写入操作。
可选地,所述自动统计连续错误次数是通过计数器完成的。
可选地,所述最大重传次数通过软件设置。
可选地,所述自动重新写入所述数据块的具体实现包括:所述SD设备丢弃所述数据块并准备重新写入所述数据块;所述SD主机重新向所述SD设备写入所述数据块。
可选地,所述SD主机重新向所述SD设备写入所述数据块的具体实现包括:所述SD主机采用FIFO来保存将要写入到所述SD设备的所述数据块;写入所述SD设备开始前,所述SD主机FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机开始重新写入所述数据块时,将所述临时读指针的值载入到所述当前读指针中;所述SD设备采用FIFO来保存所述SD主机写入的所述数据块;所述SD主机写入开始前,所述SD设备FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机开始重新写入所述SD设备所述数据块时,将所述临时写指针的值载入到所述当前写指针中。
本发明还提供一种SD设备,所述SD设备包括:标识设备重传寄存器,用于标识所述SD设备是否具备数据重传功能;使能设备重传寄存器,用于使能所述SD设备的数据重传功能;如果所述SD设备具备自动重传功能且所述自动重传功能使能,则当所述SD设备检测到读取/写入的数据块存在CRC错误时,所述SD设备自动重新读取/写入所述存在CRC错误的数据块。
可选地,所述SD设备还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数;计数器,用于统计连续发生CRC错误的次数;当所述SD设备检测到读取/写入数据块存在CRC错误时,所述计数器自动执行加1操作,当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD设备自动重新读取/写入所述存在CRC错误的数据块;当所述SD设备检测到读取/写入的数据块不存在CRC错误时,所述计数器自动执行清零操作。
可选地,所述最大重传次数寄存器的值通过软件设置。
可选地,所述SD设备包括一个数据读写FIFO,用于临时保存读取或写入数据块;当所述SD主机读取数据块时,首先把所述SD设备的数据读写FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机读取所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时读指针的值载入到所述当前读指针中;自动重新读取所述数据块;当所述SD主机写入数据块时,首先把所述SD设备的数据读写FIFO的当前写指针的值保存在一个临时写指针中;当写入所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时写指针的值载入到所述当前写指针中;自动重新写入所述数据块。
本发明还提供一种SD主机,所述SD主机包括:标识主机重传寄存器,用于标识所述SD主机是否具备数据重传功能;使能主机重传寄存器,用于使能所述SD主机的数据重传功能;如果所述SD主机具备自动重传功能且所述自动重传功能使能,则当SD主机读取数据块并进行CRC检测后,将所述CRC检测结果发送给所读取的SD设备;当所述SD主机检测到读取/写入的数据块存在CRC错误时,所述SD主机自动重新读取/写入所述存在CRC错误的数据块。
可选地,所述SD主机还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数;计数器,用于统计连续发生CRC错误的次数;当所述SD主机检测到读取/写入的数据块存在CRC错误时,所述计数器自动执行加1操作;当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD主机自动重新读取/写入所述存在CRC错误的数据块;当所述SD主机检测到读取/写入的数据块不存在CRC错误时,所述计数器自动执行清零操作。
可选地,所述最大重传次数寄存器的值通过软件设置。
可选地,所述SD主机包括一个数据读写FIFO,用于读取或写入数据块;当读取所述SD设备数据块时,首先把所述SD主机的数据读写FIFO的当前写指针的值保存在一个临时写指针中;当读取所述SD设备所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时写指针的值载入到所述当前写指针中;自动重新向所述SD设备读取所述数据块;当写入所述SD设备数据块时,首先把所述数据读写FIFO的当前读指针的值保存在一个临时读指针中;当写入所述SD设备所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时读指针的值载入到所述当前读指针中;自动重新写入所述数据块。
如上所述,本发明的一种SD数据读取/写入错误处理方法及SD主机、SD设备,具有以下有益效果:在SD主机(SecureDigitalHost)和SD设备(SecureDigitalDevice)之间建立数据传输出错时的自动重传机制,将大大提高数据的传输效率,并且完全不违反现有的SD官方协议,在不使能(enable)重传机制的情况,完全兼容市面上其他SD主机和设备。
附图说明
图1显示为本发明的一种SD数据读取错误处理方法的一实施例的流程示意图。
图2显示为本发明的一种SD数据写入错误处理方法的一实施例的流程示意图。
图3显示为本发明的一种SD设备的一实施例的结构示意图。
图4显示为本发明的一种SD主机的一实施例的结构示意图。
图5显示为本发明的一种SD主机、SD设备的一实施例的结构示意图。
元件标号说明
1SD设备
11标识设备重传寄存器
12使能设备重传寄存器
2SD主机
21标识主机重传寄存器
22使能主机重传寄存器
S11~S14步骤
S21~S24步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明提供一种SD数据传输处理方法,所述SD数据传输错误处理方法包括SD数据读取错误处理方法以及SD数据写入错误处理方法,所述SD数据读取错误处理方法是指向SD设备读取数据时发生错误的处理方法,所述SD数据写入错误处理方法是指向SD设备写入数据时发生错误的处理方法。所述方法在设计SDhostcontroller(SD主机)和SDdevicecontroller(SD设备)硬件的时候把本方法在硬件电路中实现。在一个实施例中,如图1所示,所述SD数据读取错误处理方法包括:
步骤S11,SD主机从SD设备读取数据块。具体地,遵照SD官方协议,SD主机从SD设备读取数据块。
步骤S12,检测所述数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD设备。具体地,遵照SD官方协议,所述SD主机检测所述数据块是否存在CRC错误。同时增加一个把CRC检测结果返回给所述SD设备的过程。
步骤S13,所述SD设备接收检测结果信息;当确定所述数据块存在CRC错误时,所述SD设备与所述SD主机自动重新读取所述数据块。具体地,与标准SD官方协议相比,增加一个所述SD设备接收检测结果信息,所述SD设备根据所述检测结果信息判断是否发生CRC错误的过程。同时,增加所述SD设备与所述SD主机自动重新读取所述数据块。在一个实施例中,所述自动重新读取所述数据块的具体实现包括:SD主机丢弃所述数据块并准备重新读取所述数据块;所述SD主机重新从所述SD设备读取的所述数据块。进一步,在一个实施例中,所述SD主机丢弃所述数据块并准备重新读取所述数据块的具体实现包括:所述SD主机采用FIFO来接收所述数据块;读取SD设备开始前,SD主机FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时写指针的值载入到所述当前写指针中。所述SD设备采用FIFO来保存所述数据块;所述SD主机读取开始前,所述SD设备FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时读指针的值载入到所述当前读指针中。
在一个实施例中,所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,自动统计连续错误次数;当所述连续错误次数小于所述最大重传次数时,自动完成重新读取操作。当不存在CRC错误时,所述连续错误次数赋值为零。具体地,所述自动统计连续错误次数是通过计数器完成的。当所述连续错误次数小于所述最大重传次数时,自动完成重新读取操作。在一个实施例中,所述最大重传次数通过软件设置。
本发明提供一种SD数据写入错误处理方法。所述方法在设计SDhostcontroller(SD主机)和SDdevicecontroller(SD设备)硬件的时候把本方法在硬件电路中实现。在一个实施例中,如图2所示,所述SD数据写入错误处理方法包括:
步骤S21,SD主机向SD设备写入数据块。具体地,遵照SD官方协议,SD主机向SD设备写入数据块。
步骤S22,所述SD设备检测所写入的数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD主机。具体地,遵照SD官方协议,所述SD设备检测所写入的数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD主机。
步骤S23,SD主机接收检测结果信息。具体地,遵照SD官方协议,SD主机接收检测结果信息。
步骤S24,当确定所写入的数据块存在CRC错误时,所述SD设备与所述SD主机自动重新写入所述数据块。具体地,当确定所写入的数据块存在CRC错误时,所述自动重新写入所述数据块的具体实现包括:所述SD设备丢弃所述数据块并准备重新写入所述数据块;所述SD主机重新向所述SD设备写入所述数据块。在一个实施例中,所述SD主机向所述SD设备重新写入所述数据块的具体实现包括:所述SD主机采用FIFO来写入所述数据块;写入SD设备开始前,SD主机FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机开始重新写入所述数据块时,将所述临时读指针的值载入到所述当前读指针中。所述SD设备采用FIFO来保存所述SD主机写入的所述数据块;所述SD主机写入开始前,所述SD设备FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机开始重新写入所述SD设备所述数据块时,将所述临时写指针的值载入到所述当前写指针中。
在一个实施例中,所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,自动统计连续重传次数;当所述重传次数小于所述最大重传次数时,自动完成重新写入操作。当不存在CRC错误时,所述连续错误次数赋值为零。具体地,所述自动统计连续错误次数是通过计数器完成的。当所述连续错误次数小于所述最大重传次数时,自动完成重新读取操作。在一个实施例中,所述最大重传次数通过软件设置。
本发明还提供一种SD设备。在一个实施例中,如图3所示,所述SD设备1包括:
标识设备重传寄存器11,用于标识所述SD设备是否具备数据重传功能。
使能设备重传寄存器12,用于使能所述SD设备的数据重传功能。
如果所述SD设备1具备自动重传功能且所述自动重传功能使能,则当所述SD设备1检测到读取/写入的数据块存在CRC错误时,所述SD设备1自动重新读取/写入所述存在CRC错误的数据块。所述SD设备1可以完全由硬件电路实现其数据功能。
在一个实施例中,所述SD设备包括一个数据读写FIFO,用于临时保存读取或写入数据块;当所述SD主机读取数据块时,首先把所述SD设备的数据读写FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机读取所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时读指针的值载入到所述当前读指针中;自动重新读取所述数据块;当所述SD主机写入数据块时,首先把所述SD设备的数据读写FIFO的当前写指针的值保存在一个临时写指针中;当写入所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时写指针的值载入到所述当前写指针中;自动重新写入所述数据块。
在一个实施例中,在SD设备1的寄存器空间里,分别选择两个官方协议中没有利用的寄存器比特位来表明设备是否具有自动重传数据功能和是否使能自动重传功能,即主机中选择某寄存地址的两个比特,一个比特表示设备是否有能力自动重传,即代表标识设备重传寄存器11。一个比特表示是否使能自动重传功能,即代表使能设备重传寄存器12。在一个实施例中,SD设备1选择的寄存器为地址0xF0的第8个比特来表示设备是否具备自动重传功能,如果为1,表示有自动重传功能,如果为0,表示没有自动重传功能,这个比特位为主机只读寄存器位。假设设备选择的寄存器为地址0XF0的第7个比特来表示设备是否使能自动重传功能,如果为1,表示使能自动重传功能,如果为0,表示不使能自动重传功能,这个比特位为主机可读可写寄存器位。
可选地,所述SD设备1还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数。计数器,用于统计连续发生CRC错误的次数。在一个实施例中,当SD设备1检测到读取/写入数据块存在CRC错误时,所述计数器自动执行加1操作,当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD设备1自动重新读取/写入所述存在CRC错误的数据块。当所述计数器的值大于所述最大重传次数寄存器的值时,通知SD驱动程序进行处理。当SD设备1检测到读取/写入的数据块不存在CRC错误时,所述SD设备1中的计数器自动执行清零操作。在一个实施例中,所述SD设备1中的最大重传次数寄存器的值通过软件设置。
本发明还提供一种SD主机。在一个实施例中,如图4所示,所述SD主机2包括:标识主机重传寄存器21,用于标识所述SD主机是否具备数据重传功能。使能主机重传寄存器22,用于使能所述SD主机2的数据重传功能。所述SD主机可以完全由硬件电路实现其数据重传功能。
如果所述SD主机2具备自动重传功能且所述自动重传功能使能,则当SD主机2读取数据块并进行CRC检测后,将所述CRC检测结果发送给所读取的SD设备1;当所述SD主机2检测到读取/写入的数据块存在CRC错误时,所述SD主机2自动重新读取/写入所述存在CRC错误的数据块。
在一个实施例中,在SD主机2的寄存器空间里,分别选择两个官方协议中没有利用的寄存器比特位来表明SD主机2是否具有自动重传数据功能和是否使能自动重传功能,即SD主机2中选择某寄存地址的两个比特,一个比特表示主机是否有能力自动重传,即代表标识主机重传寄存器21。一个比特表示是否使能自动重传功能,即代表使能主机重传寄存器22。在一个实施例中,SD主机2选择的寄存器为地址0x47的第8个比特来表示SD主机2是否具备自动重传功能,如果为1,表示有自动重传功能,如果为0,表示没有自动重传功能,这个比特位为软件只读寄存器位。在一个实施例中,SD主机2选择的寄存器为地址0x47的第7个比特来表示SD主机2是否使能自动重传功能,如果为1,表示使能自动重传功能,如果为0,表示不使能自动重传功能,这个比特位为软件可读可写寄存器位。
当SD设备1插入SD主机2的时候,SD主机2的驱动程序首先读取相应的SD主机寄存器来判断SD主机2是否具有自动重传功能,然后再读取SD设备1相应的寄存器来判断SD设备1是否具有自动重传功能,如果都具备自动重传功能,那么主机驱动程序同时使能主机和设备的自动重传机制,即给使能设备重传寄存器12以及使能主机重传寄存器22赋值,使能SD设备1和SD主机2的自动重传功能。这样SD主机和SD设备之间就建立了数据传输错误时候的自动重传机制。
在一个实施例中,SD主机2向SD设备1写入数据时的自动重传机制包括:SD主机2向SD设备1写入数据的过程中,每写完一个数据块(block),SD设备1都会进行CRC检测,并且SD设备1会回复一个8位的检测结果给SD主机2,里面包含了CRC正确或者错误的信息。当SD主机2收到检测结果的时候,就会分析SD设备1返回的结果,如果发现了CRC校验错误,那么SD主机2重传当前数据块。
在一个实施例中,SD主机2读取SD设备1数据时的自动重传机制包括:SD主机2在读取SD设备1数据的过程中,每读完一个块(block),SD主机2都会检测CRC。但是在当前的官方协议中,SD主机2并不会通知SD设备1当前传输数据块的CRC检测结果。所以,当SD主机2和SD设备1都使能数据重传机制之后,在SD主机2接收完一个数据块(block)之后,增加一个把CRC检测结果发送到SD设备1的过程。在一个实施例中,SD主机2回复设备一个8位的检测结果,让设备知道当前是否存在CRC错误,如果设备发现了CRC错误,那么设备重传当前数据块。
采用上述SD主机2和SD设备1可以由SD硬件实现数据重传功能,大大提高了SD数据传输发生CRC错误时的处理速度。在一个实施例中,只能在SD主机2和SD设备1都使能数据重传功能之后,才能增加这个SD主机2读取SD设备1时的SD主机2将CRC检测回复到SD设备1的过程,以保证该SD主机2(或SD设备1)能够兼容市面上其他不带数据重传功能的SD设备(或SD主机)。
在一个实施例中,所述SD主机2还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数。计数器,用于统计连续发生CRC错误的次数。当SD主机2检测到读取/写入的数据块存在CRC错误时,所述计数器自动执行加1操作;当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD主机2自动重新读取/写入所述存在CRC错误的数据块。当所述计数器的值大于所述最大重传次数寄存器的值时,中断通知SD驱动程序进行处理。当SD主机2检测到读取/写入的数据块不存在CRC错误时,所述SD主机2中的计数器自动执行清零操作。在一个实施例中,所述SD主机2中的所述最大重传次数寄存器的值通过软件设置。
在一个实施例中,在SD主机2和SD设备1的寄存器地址空间里,分别选择2比特官方协议中没有利用的寄存器来表示针对同一数据块的连续重传次数,即SD设备1和SD主机2上的最大重传次数寄存器。在使能重传机制之前,SD主机2的驱动程序首先要设置SD主机2和SD设备1的针对同一个数据块连续发生CRC错误时重传次数,即给最大重传次数寄存器赋值。在SD主机2控制器电路里,需要一个CRC错误计数器来计数连续CRC错误的次数,即计数器。每次产生CRC错误,CRC错误计数器加1,每次成功接收或发送一个数据块(没有CRC错误),CRC错误计数器清零。当错误计数器的值大于或等于连续重传次数寄存器所设定的阈值,SD主机2和SD设备1自动终止此次传输,SD主机2通过中断通知SD主机2放入驱动程序,让驱动程序决定下一步动作。具体的实施中,必须注意SD主机2和SD设备1的连续重传次数的设定必须保持一致,即对SD设备1和SD主机2上的最大重传次数寄存器设置一样的值。
在一个实施例中,所述SD主机2包括一个数据读写FIFO,用于读取或写入数据块;当SD主机2读取SD设备1数据块时,SD主机2首先把所述数据读写FIFO的当前写指针的值保存在一个临时写指针中;当读取所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时写指针的值载入到所述当前写指针中;自动重新读取所述数据块;当向SD设备1写入数据块时,SD主机2首先把所述数据读写FIFO的当前读指针的值保存在一个临时读指针中;当写入所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时读指针的值载入到所述当前读指针中;自动重新写入所述数据块。
在一个实施例中,如图5所示,在本实施例中,不仅SD主机2包括一个数据读写FIFO,SD设备1也包括一个数据读写FIFO。
SD主机2向SD设备1写入数据时,在SD主机2端,进行的是读取FIFO的操作,先把当前读指针载入到一个临时读指针里(此临时读指针与临时写指针配合,用来判断FIFO空满和FIFO里有效数据的个数)。当前数据块传输完成,并且SD设备1的CRC状态回复中没有CRC错误的时候,把新的读指针的值载入到临时读指针,表示刚才的数据发送正确。如果当前数据块传输完成,收到了SD设备1回复的CRC状态错误,那么把临时读指针中的值载入到当前读指针中,读指针保持为读取FIFO操作之前的值。FIFO中就像刚才的数据块没有被写入一样。在SD设备1端,进行的是写入FIFO的操作,先把当前写指针载入到一个临时写指针里(此临时写指针与临时读指针配合,用来判断FIFO空满和FIFO里有效数据的个数)。当前数据块传输完成,并且SD设备1没有发现CRC错误的时候,把新的写指针的值载入到临时写指针,表示刚才收到的数据正确并且可以加以利用。如果当前数据块传输完成,SD设备1检测到CRC状态错误,那么把临时写指针中的值载入到当前写指针中,写指针保持为读取FIFO操作之前的值。SD设备1中的FIFO中就像刚才的数据块没有被写入一样。
SD主机2向SD设备1读取数据时,在SD主机2端,进行的是写入FIFO的操作,先把当前写指针载入到一个临时写指针里(此写临时指针与临时读指针配合,用来判断FIFO空满和FIFO里有效数据的个数)。当当前数据块传输完成,并且SD主机2的CRC状态检测没有CRC错误的时候,把新的写指针的值载入到临时写指针,表示刚才收到的数据正确并且可以加以利用。如果当前数据块传输完成,SD主机2的CRC状态检测发现CRC错误的时候,那么把临时写指针中的值载入到当前写指针中,写指针保持为读取FIFO操作之前的值。SD主机2中的FIFO中就像刚才的数据块没有被写入一样。在SD设备1端,进行的是读取FIFO的操作,先把当前读指针载入到一个临时读指针里(此临时读指针与临时写指针配合,用来判断FIFO空满和FIFO里有效数据的个数)。当当前数据块传输完成,并且SD主机2回复中没有CRC错误的时候,把新的读指针的值载入到临时读指针,表示刚才的数据发送正确。如果当前数据块传输完成,SD主机2回复中存在CRC状态错误,那么把临时读指针中的值载入到当前读指针中,读指针保持为读取FIFO操作之前的值。FIFO中就像刚才的数据块没有被写入一样。
综上所述,本发明的一种SD数据读取/写入错误处理方法及SD主机、SD设备,具有以下有益效果:在SD主机(SecureDigitalHost)和SD设备(SecureDigitalDevice)之间建立数据传输出错时的自动重传机制,将大大提高数据的传输效率,并且完全不违反现有的SD官方协议,在不使能(enable)重传机制的情况,完全兼容市面上其他SD主机和设备。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (20)

1.一种SD数据读取错误处理方法,其特征在于,所述SD数据读取错误处理方法包括:
SD主机从SD设备读取数据块;
检测所述数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD设备;
所述SD设备接收检测结果信息;
当确定所述数据块存在CRC错误时,所述SD设备与所述SD主机自动重新读取所述数据块。
2.根据权利要求1所述的SD数据读取错误处理方法,其特征在于:所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,自动统计连续错误次数;当所述连续错误次数小于所述最大重传次数时,完成重新读取操作。
3.根据权利要求2所述的SD数据读取错误处理方法,其特征在于:所述最大重传次数通过软件设置。
4.根据权利要求2所述的SD数据写入错误处理方法,其特征在于:所述自动统计连续错误次数是通过计数器完成的。
5.根据权利要求1所述的SD数据读取错误处理方法,其特征在于:所述自动重新读取所述数据块的具体实现包括:所述SD主机丢弃所述数据块并准备重新读取所述数据块;所述SD主机重新从所述SD设备读取所述数据块。
6.根据权利要求5所述的SD数据读取错误处理方法,其特征在于:所述SD主机丢弃所述数据块并准备重新读取所述数据块的具体实现包括:所述SD主机采用FIFO来接收所述数据块;读取所述SD设备开始前,所述SD主机FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时写指针的值载入到所述当前写指针中;所述SD设备采用FIFO来保存所述数据块;所述SD主机读取开始前,所述SD设备FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机丢弃所述数据块并准备重新读取所述数据块时,将所述临时读指针的值载入到所述当前读指针中。
7.一种SD数据写入错误处理方法,其特征在于:所述SD数据写入错误处理方法包括:
SD主机向SD设备写入数据块;
所述SD设备检测所写入的数据块是否存在CRC错误,并将所述检测结果信息发送给所述SD主机;
所述SD主机接收检测结果信息;
当确定所写入的数据块存在CRC错误时,所述SD设备与所述SD主机自动重新写入所述数据块。
8.根据权利要求7所述的SD数据写入错误处理方法,其特征在于:所述方法还包括在所述SD设备与所述SD主机设置相同的最大重传次数;当确定存在CRC错误时,自动统计连续错误次数;当所述连续错误次数小于所述最大重传次数时,自动完成重新写入操作。
9.根据权利要求8所述的SD数据写入错误处理方法,其特征在于:所述自动统计连续错误次数是通过计数器完成的。
10.根据权利要求8所述的SD数据写入错误处理方法,其特征在于:所述最大重传次数通过软件设置。
11.根据权利要求7所述的SD数据写入错误处理方法,其特征在于:所述自动重新写入所述数据块的具体实现包括:所述SD设备丢弃所述数据块并准备重新写入所述数据块;所述SD主机重新向所述SD设备写入所述数据块。
12.根据权利要求11所述的SD数据写入错误处理方法,其特征在于:所述SD主机重新向所述SD设备写入所述数据块的具体实现包括:所述SD主机采用FIFO来保存将要写入到所述SD设备的所述数据块,所述SD主机读取FIFO中的数据,然后写入所述SD设备;写入所述SD设备开始前,所述SD主机把FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机开始重新写入所述SD设备所述数据块时,将所述临时读指针的值载入到所述当前指针中;所述SD设备采用FIFO来保存所述SD主机写入的所述数据块;所述SD主机写入开始前,所述SD设备FIFO的当前写指针的值保存在一个临时写指针中;当所述SD主机开始重新写入所述SD设备所述数据块时,将所述临时写指针的值载入到所述当前写指针中。
13.一种SD设备,其特征在于:所述SD设备包括:
标识设备重传寄存器,用于标识所述SD设备是否具备数据重传功能;
使能设备重传寄存器,用于使能所述SD设备的数据重传功能;
如果所述SD设备具备自动重传功能且所述自动重传功能使能,则当所述SD设备检测到读取/写入的数据块存在CRC错误时,所述SD设备自动重新读取/写入所述存在CRC错误的数据块。
14.根据权利要求13所述的SD设备,其特征在于:所述SD设备还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数;计数器,用于统计连续发生CRC错误的次数;当所述SD设备检测到读取/写入数据块存在CRC错误时,所述计数器自动执行加1操作,当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD设备自动重新读取/写入所述存在CRC错误的数据块;当所述SD设备检测到读取/写入的数据块不存在CRC错误时,所述计数器自动执行清零操作。
15.根据权利要求14所述的SD设备,其特征在于:所述最大重传次数寄存器的值通过软件设置。
16.根据权利要求13所述的SD设备,其特征在于:所述SD设备包括一个数据读写FIFO,用于临时保存读取或写入数据块;当所述SD主机读取数据块时,首先把所述SD设备的数据读写FIFO的当前读指针的值保存在一个临时读指针中;当所述SD主机读取所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时读指针的值载入到所述当前读指针中;自动重新读取所述数据块;当所述SD主机写入数据块时,首先把所述SD设备的数据读写FIFO的当前写指针的值保存在一个临时写指针中;当写入所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时写指针的值载入到所述当前写指针中;自动重新写入所述数据块。
17.一种SD主机,其特征在于:所述SD主机包括:
标识主机重传寄存器,用于标识所述SD主机是否具备数据重传功能;
使能主机重传寄存器,用于使能所述SD主机的数据重传功能;
如果所述SD主机具备自动重传功能且所述自动重传功能使能,则当SD主机读取数据块并进行CRC检测后,将所述CRC检测结果发送给所读取的SD设备;当所述SD主机检测到读取/写入的数据块存在CRC错误时,所述SD主机自动重新读取/写入所述存在CRC错误的数据块。
18.根据权利要求17所述的SD主机,其特征在于:所述SD主机还包括:最大重传次数寄存器,用于存储自动连续重传的最大次数;计数器,用于统计连续发生CRC错误的次数;当所述SD主机检测到读取/写入的数据块存在CRC错误时,所述计数器自动执行加1操作;当所述计数器的值小于所述存储连续重传次数的寄存器的值时,所述SD主机自动重新读取/写入所述存在CRC错误的数据块;当所述SD主机检测到读取/写入的数据块不存在CRC错误时,所述计数器自动执行清零操作。
19.根据权利要求18所述的SD主机,其特征在于:所述最大重传次数寄存器的值通过软件设置。
20.根据权利要求17所述的SD主机,其特征在于:所述SD主机包括一个数据读写FIFO,用于读取或写入数据块;当向所述SD设备读取数据块时,首先所述SD主机把所述数据读写FIFO的当前写指针的值保存在一个临时写指针中;当向所述SD设备读取所述数据块完成并确定所读取的数据块存在CRC错误时,把所述临时写指针的值载入到所述当前写指针中;自动重新读取所述数据块;当向所述SD设备写入数据块时,首先把所述数据读写FIFO的当前读指针的值保存在一个临时读指针中;当向所述SD设备写入所述数据块完成并确定所写入的数据块存在CRC错误时,将所述临时读指针的值载入到所述当前读指针中;自动重新写入所述数据块。
CN201410584283.9A 2014-10-27 2014-10-27 一种sd数据读取/写入出错处理方法及sd主机、sd设备 Pending CN105630711A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410584283.9A CN105630711A (zh) 2014-10-27 2014-10-27 一种sd数据读取/写入出错处理方法及sd主机、sd设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410584283.9A CN105630711A (zh) 2014-10-27 2014-10-27 一种sd数据读取/写入出错处理方法及sd主机、sd设备

Publications (1)

Publication Number Publication Date
CN105630711A true CN105630711A (zh) 2016-06-01

Family

ID=56045678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410584283.9A Pending CN105630711A (zh) 2014-10-27 2014-10-27 一种sd数据读取/写入出错处理方法及sd主机、sd设备

Country Status (1)

Country Link
CN (1) CN105630711A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101026442A (zh) * 2006-02-24 2007-08-29 华为技术有限公司 多天线系统的数据重传方法及其装置
CN101034959A (zh) * 2006-03-10 2007-09-12 华为技术有限公司 混合自动重传方法及其装置和系统
US20070230430A1 (en) * 2003-07-01 2007-10-04 Samsung Electronics Co., Ltd. Apparatus and method for transmitting reverse packet data in mobile communication system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070230430A1 (en) * 2003-07-01 2007-10-04 Samsung Electronics Co., Ltd. Apparatus and method for transmitting reverse packet data in mobile communication system
CN101026442A (zh) * 2006-02-24 2007-08-29 华为技术有限公司 多天线系统的数据重传方法及其装置
CN101034959A (zh) * 2006-03-10 2007-09-12 华为技术有限公司 混合自动重传方法及其装置和系统

Similar Documents

Publication Publication Date Title
CN104699576B (zh) 串行通信测试装置、包括该装置的系统及其方法
CN112579509B (zh) 单线通讯方法、装置、电子设备及可读存储介质
US20070061681A1 (en) Mechanism for error handling of corrupted repeating primitives during frame reception
US9026895B2 (en) Flash memory controllers and error detection methods
US11960350B2 (en) System and method for error reporting and handling
KR20160018987A (ko) 인터페이스 회로 및 그것의 패킷 전송 방법
CN103631534B (zh) 数据存储系统以及其管理方法
US8984250B2 (en) Memory controller, memory device and method for determining type of memory device
US9473273B2 (en) Memory system capable of increasing data transfer efficiency
CN104112413A (zh) Led显示屏坏点点检系统
CN109074294A (zh) 通信装置和通信系统
CN112000536A (zh) 一种内存检测方法、系统及相关设备
CN105573947B (zh) 一种基于apb总线的sd/mmc卡控制方法
CN105022706B (zh) 控制器电路,数据接口块和用于传输数据的方法
US6880111B2 (en) Bounding data transmission latency based upon a data transmission event and arrangement
CN109800202B (zh) 一种基于pcie的数据传输系统、方法及装置
CN105630711A (zh) 一种sd数据读取/写入出错处理方法及sd主机、sd设备
CN101206613A (zh) 高速基本输入/输出系统调试卡
CN101488825A (zh) 数据传输的检错方法与系统
CN115422099A (zh) 一种通信信息发送方法、装置、电子设备及存储介质
CN103885844A (zh) 基于角色变换的双口ram数据高速安全交互方法及装置
US9838229B2 (en) Method for verifying the functionality of a digital circuit
CN103631740B (zh) Sd卡在spi模式下传输自适应字节对齐的电路
CN109614359B (zh) 一种基于axi总线的数据发送方法、装置和存储介质
CN103873192A (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171026

Address after: 200233 room A1601, No. 900, Xuhui District, Shanghai, Yishan Road

Applicant after: Acrospeed, Inc.

Address before: Suzhou City, Jiangsu Province, Suzhou Industrial Park 215123 Xinghu Street No. 328 Creative Industry Park 6-1002

Applicant before: Suzhou Montage Microelectronic Technology Co., Ltd.

TA01 Transfer of patent application right
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160601

WD01 Invention patent application deemed withdrawn after publication