掌桥专利:专业的专利平台
掌桥专利
首页

SD存储卡传输延迟调谐方法及装置、可读存储介质、终端

文献发布时间:2024-04-18 20:01:55


SD存储卡传输延迟调谐方法及装置、可读存储介质、终端

技术领域

本发明实施例涉及通信技术领域,尤其涉及一种SD存储卡传输延迟调谐方法及装置、可读存储介质、终端。

背景技术

安全数字输入输出存储卡(Secure Digitalcard,SD)卡是专门为满足新兴音频和视频消费电子设备固有的安全、容量、性能和环境要求而设计的存储卡,采用SD协议通过安全数字输入输出(Secure Digital Input and Output,SDIO)接口与主机(Host)完成通信交互。

SD存储卡是一种非易失性的外置存储卡,与主机通过cmdline与dataline连接,进行命令的传输及数据的交互。其中,cmdline是主机(Host)与设备(Device)间的双向命令传输通道,包括读操作和写操作。dataline是主机(Host)与设备(Device)间的双向数据传输通道,包括读操作和写操作。由于芯片制造工艺、印制电路板(PCB)负载、电压、偏移(skew)等因素的影响,从Device端送出的信号相位与到达Host端的接收到的信号相位是不一致的,Host端接收数据时采样的时间点也需要进行相应的调整;调谐(tuning)就是为了找到Host端的最佳采样时间点,保证数据传输的完整性和准确性。

目前,由于大多数SD存储卡都是朝着速率更快,频率更高的方向发展,忽视了对传统低速SD存储卡的兼容支持。目前kernel社区代码及SD卡协议中,仅对支持UHS-1的设备(支持SDR50模式,SDR104模式)通过发送cmd19进行tuning以获取最佳采样点。其中,UHS-1表示支持超高速(Ultra High Speed,UHS)接口,最高可支持SDR104模式,其最大支持传输数据速率可达到104MB/s,SDR50模式下最大支持数据传输速率为50MB/s。对于工作在高度(High Speed,HS)模式下的非UHS-1的SD存储卡未对其传输过程中的采样延迟(delay)值进行tuning,导致某些电气特性不是特别优秀的低速SD存储卡在HS模式下传输过程中dataline或者cmdline不是处在最佳采样点,传输质量得不到保证,导致某些命令或数据的传输无法被时钟(clk)成功采样,使用过程中可能出现读写传输错误,影响正常功能的使用。

发明内容

本发明实施例解决的技术问题是低速SD存储卡在HS模式下,传输质量得不到保证,导致某些命令或数据的传输无法被clk成功采样,使用过程中可能出现读写传输错误,影响正常功能的使用。

为解决上述技术问题,本发明实施例提供一种SD存储卡传输延迟调谐方法,包括:在第一采样区间内的各个传输读指令延迟值下发送第一类型命令,其中,所述第一采样区间包括多个传输读指令延迟值,所述第一类型命令用于指示SD存储卡基于双向命令传输通道执行对应操作;根据各个传输读指令延迟值下发送的所述第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值;在所述双向命令传输通道的传输读指令延迟值下发送第二类型指令,并在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,其中,所述第二采样区间内包括多个传输读数据延迟值;根据所述第二类型指令的传输情况以及各个传输读数据延迟值下发送的所述指定数据的传输情况,从能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值。

可选的,所述从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,包括:根据能够成功传输所述第一类型命令的传输读指令延迟值,统计连续成功传输所述第一类型命令的传输读指令延迟值的候选采样区间;从区间长度最大的传输读指令延迟值的候选采样区间内选取所述最佳传输读指令延迟值。

可选的,所述从区间长度最大的候选采样区间内选取所述最佳传输读指令延迟值,包括:选取所述区间长度最大的候选采样区间的区间中点作为所述最佳传输读指令延迟值。

可选的,所述能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,包括:根据能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值,统计连续成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值的候选采样区间;从区间长度最大的所述传输读数据延迟值的候选采样区间内选取所述最佳传输读数据延迟值。

可选的,所述从区间长度最大的所述传输读数据延迟值的候选采样区间内选取所述最佳传输读数据延迟值,包括:选取区间长度最大的所述传输读数据延迟值的候选采样区间的区间中点作为所述最佳传输读数据延迟值。

可选的,在第一采样区间内的各个传输读指令延迟值下发送第一类型命令之前,还包括:对所述SD存储卡进行初始化;在所述SD存储卡初始化成功后,获取默认传输延迟值,所述默认传输延迟值包括:默认传输读数据延迟值、默认传输读指令延迟值以及默认传输写数据延迟值;响应于需要执行对所述SD存储卡传输延迟调谐,将所述默认传输读指令延迟值清零,并配置所述第一采样区间。

可选的,所述第一采样区间采用如下方式配置得到:将一个时钟周期M等分得到M个传输读指令延迟值,其中M为大于1的正整数;基于一个时钟周期的高电平对应的M/2个传输读指令延迟值得到所述第一采样区间,其中,所述第一采样区间的区间左端点大于等于所述高电平对应的M/2个传输读指令延迟值中最小的传输读指令延迟值,所述第一采样区间的区间右端点小于等于所述高电平对应的M/2个传输读指令延迟值中最大的传输读指令延迟值。

可选的,所述SD存储卡传输延迟调谐方法,还包括:将所述最佳传输读指令延迟值作为命令传输通道的传输读指令延迟值后,将所述默认传输读数据延迟值清零,并配置所述第二采样区间。

可选的,所述第二采样区间采用如下方式配置得到:将一个时钟周期N等分得到N个传输读数据延迟值,其中N为大于1的正整数;基于一个时钟周期的高电平对应的N/2个传输读数据延迟值得到所述第二采样区间,其中,所述第二采样区间的区间左端点大于等于所述高电平对应的N/2个传输读数据延迟值中最小的传输读数据延迟值,所述第二采样区间的区间右端点小于等于所述高电平对应的N/2个传输读数据延迟值中最大的传输读数据延迟值。

可选的,所述SD存储卡传输延迟调谐方法,还包括:存储所述双向命令传输通道的传输读指令延迟值以及所述双向数据传输通道的传输读数据延迟值。

本发明还提供一种SD存储卡传输延迟调谐装置,包括:第一发送单元,用于在第一采样区间内的各个传输读指令延迟值下发送第一类型命令,其中,所述第一采样区间包括多个传输读指令延迟值,所述第一类型命令用于指示SD存储卡基于双向命令传输通道执行对应操作;第一确定单元,用于根据各个传输读指令延迟值下发送的所述第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值;第二发送单元,用于在所述双向命令传输通道的传输读指令延迟值下发送第二类型指令,并在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,其中,所述第二采样区间内包括多个传输读数据延迟值;第二确定单元,用于根据所述第二类型指令的传输情况以及各个传输读数据延迟值下所述指定数据的传输情况,从能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述任一种SD存储卡传输延迟调谐方法的步骤。

本发明还提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述任一种SD存储卡传输延迟调谐方法的步骤。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

根据在第一采样区间内的各个传输读指令延迟值下发送第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,并将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值,实现与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐。在与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐得到的传输读指令延迟值下发送第二类型命令,在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,并从能够成功传输第二类型命令且能够成功传输指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值,实现对双向数据传输通道的读操作的传输延迟调谐。通过对双向命令传输通道的读操作和双向数据传输通道的读操作分别进行传输延迟调谐,可以分别获取到最佳传输读指令延迟值和最佳传输读数据延迟值,也即分别获取到双向命令传输通道的最佳传输采样点和双向数据传输通道的最佳传输采样点。采用此种方式调谐得到的最佳传输读指令延迟值和最佳传输读数据延迟值,降低读写传输错误出现概率,可以提高传输质量,增强通信稳定性。

附图说明

图1是本发明实施例中的一种SD存储卡传输延迟调谐方法的流程图;

图2是一种典型场景下的SD存储卡传输延迟调谐方法的流程图;

图3是本发明实施例中的一种SD存储卡传输延迟调谐装置的结构示意图。

具体实施方式

如上所述,对于工作在高速(High Speed,HS)模式下的非UHS-1的SD存储卡未对其传输过程中的采样延迟(delay)值进行tuning,导致某些电气特性不是特别优秀的低速SD存储卡在HS模式下传输过程中dataline或者cmdline不是处在最佳采样点,传输质量得不到保证,导致某些命令或数据的传输无法被时钟(clk)成功采样,使用过程中可能出现读写传输错误,影响正常功能的使用。

为解决上述问题,在本发明实施例中,根据在第一采样区间内的各个传输读指令延迟值下发送第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,并将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值,实现与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐。在与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐得到的传输读指令延迟值下发送第二类型命令,在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,并从能够成功传输第二类型命令且能够成功传输指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值,实现对双向数据传输通道的读操作的传输延迟调谐。通过对双向命令传输通道的读操作和双向数据传输通道的读操作分别进行传输延迟调谐,可以分别获取到最佳传输读指令延迟值和最佳传输读数据延迟值,也即分别获取到双向命令传输通道的最佳传输采样点和双向数据传输通道的最佳传输采样点。采用此种方式调谐得到的最佳传输读指令延迟值和最佳传输读数据延迟值,降低读写传输错误出现概率,可以提高传输质量,增强通信稳定性。

为使本发明实施例的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

本发明提供一种SD存储卡传输延迟调谐方法,SD存储卡传输延迟调谐方法可以由终端执行,也可以由终端中具有SD存储卡传输延迟调谐功能的芯片或芯片模组执行,也可以由终端中具有数据处理功能的芯片或芯片模组执行。终端可以为销售点情报管理系统(Point of sales terminal,pos)机、手机、后视镜以及智能座舱等车机相关设备、智能可穿戴设备等支持SD存储卡的设备。

参照图1,给出了本发明实施例中的一种SD存储卡传输延迟调谐方法的流程图,SD存储卡传输延迟调谐方法包括具体可以包括如下步骤S11至步骤S14。

步骤11,在第一采样区间内的各个传输读指令延迟值下发送第一类型命令,其中,所述第一采样区间包括多个传输读指令延迟值,所述第一类型命令用于指示SD存储卡基于双向命令传输通道执行对应操作。

步骤12,根据各个传输读指令延迟值下发送的所述第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值。

步骤13,在所述双向命令传输通道的传输读指令延迟值下发送第二类型指令,并在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,其中,所述第二采样区间内包括多个传输读数据延迟值。

步骤14,根据所述第二类型指令的传输情况以及各个传输读数据延迟值下所述指定数据的传输情况,从能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值。

由上可知,根据在第一采样区间内的各个传输读指令延迟值下发送第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,并将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值,实现与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐。在与SD存储卡通信的双向命令传输通道的读操作的传输延迟调谐得到的传输读指令延迟值下发送第二类型命令,在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,并从能够成功传输第二类型命令且能够成功传输指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值,实现对双向数据传输通道的读操作的传输延迟调谐。通过对双向命令传输通道的读操作和双向数据传输通道的读操作分别进行传输延迟调谐,可以分别获取到最佳传输读指令延迟值和最佳传输读数据延迟值,也即分别获取到双向命令传输通道的最佳传输采样点和双向数据传输通道的最佳传输采样点。采用此种方式调谐得到的最佳传输读指令延迟值和最佳传输读数据延迟值,降低读写传输错误出现概率,可以提高传输质量,增强通信稳定性。

在步骤11的具体实施中,第一类型命令用于指示SD存储卡基于双向命令传输通道执行对应操作,可以为仅通过双向命令传输通道(cmdline)与SD存储卡进行交互,而不通过双向数据传输通道(dataline)与SD存储卡进行交互,且不改变SD存储卡的设备状态。

第一类型命令可以为cmd16,cmd16为set_block_length命令。也即向SD存储卡发送cmd16。第一类型命令也可以为cmd2,cmd2用于通知所有SD存储卡通过cmdline返回硬盘序列号(CID)值。第一类型命令还可以为cmd10,cmd10用于指示选定的SD存储卡通过cmdline发送卡标识。第一类型命令还可以为cmd13等,此处不再一一举例。

可以在第一采样区间内,按照各个传输读指令延迟值的大小顺序,从小至大,先在最小的传输读指令延迟值下,发送第一类型命令。若第一类型命令传输无报错,则当前的传输读指令延迟值为能够成功传输所述第一类型命令的传输读指令延迟值。相应地,若第一类型命令传输报错,则当前的传输读指令延迟值不能成功传输所述第一类型命令的传输读指令延迟值。继续选取下一传输读指令延迟值,并在选取下一传输读指令延迟值下再次发送第一类型命令,再次判断所述下一传输读指令延迟值是否能够成功传输所述第一类型命令的传输读指令延迟值,以此类推,直至在第一采样区间内的所有传输读指令延迟值下均发送第一类型命令,也即直至完成对第一采样区间内的所有传输读指令延迟值的判断。

在一些实施例中,SD存储卡接收到第一类型命令之后会反馈响应信号。若接收到SD存储卡反馈的响应信号,则判定第一类型命令传输成功,也即当前的传输读指令延迟值下,SD存储卡可以成功接收到第一类型命令;相应地,未接收到响应信号,则判定第一类型命令传输失败,也即当前的传输读指令延迟值下,SD存储卡可以无法成功接收到第一类型命令。

需要说明的是,在实际中也可以按照传输读指令延迟值从大到小的顺序依次下发第一类型命令。

在具体实施中,在步骤11之前,也即在第一采样区间内的各个传输读指令延迟值下发送第一类型命令之前,对所述SD存储卡进行初始化;在所述SD存储卡初始化成功后,获取默认传输延迟值。所述默认传输延迟值包括:默认传输读数据延迟值(read datadelay)、默认传输读指令延迟值(read command delay)以及默认传输写数据延迟值(writedata delay);响应于需要执行对所述SD存储卡传输延迟调谐,将所述默认传输读指令延迟值清零,并配置所述第一采样区间。

获取到默认传输延迟值后,判断是否需要执行对所述SD存储卡传输延迟调谐。若不需要执行对所述SD存储卡传输延迟调谐,可以将默认传输延迟值写入指定寄存器。指定寄存器可以为Host寄存器。在一些非限制性实施例中,所述第一采样区间可以采用如下方式配置得到:将一个时钟周期M等分得到M个传输读指令延迟值,其中M为大于1的正整数;基于一个时钟周期的高电平对应的M/2个传输读指令延迟值得到所述第一采样区间,其中,所述第一采样区间的区间左端点大于等于所述高电平对应的M/2个传输读指令延迟值中最小的传输读指令延迟值,所述第一采样区间的区间右端点小于等于所述高电平对应的M/2个传输读指令延迟值中最大的传输读指令延迟值。

也即,在一些实施例中,将一个时钟周期M等分得到M个传输读指令延迟值,可以将一个时钟周期的高电平对应的M/2个传输读指令延迟值中的最小的传输读指令延迟值和最大的传输读指令延迟值形成的区间作为第一采样区间。

在另一实施例中,第一采样区间可以为一个时钟周期的高电平对应的M/2个传输读指令延迟值中的最小的传输读指令延迟值和最大的传输读指令延迟值形成的区间的子区间。如此,可以减小待确定的传输读指令延迟值的数目,提高SD存储卡传输延迟调谐的调谐效率,以快速完成SD存储卡传输延迟调谐。

高电平对应的M/2个传输读指令延迟值可以为前M/2个传输读指令延迟值,也可以为后M/2个传输读指令延迟值,具体根据一个时钟周期中高电平和低电平的配置情况进行确定。在实际中,由于仅在高电平对应的时钟周期内进行采样,故只需对高电平对应的传输读数据延迟值进行调谐即可。

M的取值可以为256,也即将一个时钟周期256等分得到256个传输读指令延迟值。在实际中,根据传输读指令延迟值的等分精度,M还可以为其他取值,此处不再一一举例。

在步骤12的一个非限制性实施例中,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值具体可以通过如下方式实现:根据能够成功传输所述第一类型命令的传输读指令延迟值,统计连续成功传输所述第一类型命令的传输读指令延迟值的候选采样区间;从区间长度最大的传输读指令延迟值的候选采样区间内选取所述最佳传输读指令延迟值。

在一些实施例中,当区间长度最大的传输读指令延迟值的候选采样区间的数目大于等于两个时,可以从首次出现的区间长度最大的传输读指令延迟值的候选采样区间中选取最佳传输读指令延迟值。也可以从任意一个区间长度最大的传输读指令延迟值的候选采样区间中选取最佳传输读指令延迟值。

在具体实施中,选取所述区间长度最大的候选采样区间的区间中点作为所述最佳传输读指令延迟值。

在一些实施例中,区间长度最大的候选采样区间的区间中点为其中一个传输读指令延迟值,则将区间中点作为最佳传输读指令延迟值。

在另一些实施例中,区间长度最大的候选采样区间的区间中点与任一个传输读指令延迟值均不相同,则从最靠近区间中点的两个传输读指令延迟值中选取最佳传输读指令延迟值。

采用将区间中点作为最佳传输读指令延迟值,或者从最靠近区间中点的两个传输读指令延迟值中选取最佳传输读指令延迟值的方式,由于最佳传输读指令延迟值附近的其他处于区间长度最大的候选采样区间内的传输读指令延迟值也能够成功传输第一类型命令,如此,即使后期出现时钟偏移,可以提高偏移后的传输读指令延迟值依然处于采样范围的概率,进而提高第一类型命令传输成功的概率,以提高通信稳定性。

在一些非限制性实施例中,将所述最佳传输读指令延迟值作为命令传输通道的传输读指令延迟值后,将所述默认传输读数据延迟值清零,并配置所述第二采样区间。

在一些实施例中,所述第二采样区间可以采用如下方式配置得到:将一个时钟周期N等分得到N个传输读数据延迟值,其中N为大于1的正整数。基于一个时钟周期的高电平对应的N/2个传输读数据延迟值得到所述第二采样区间,其中,所述第二采样区间的区间左端点大于等于所述高电平对应的N/2个传输读数据延迟值中最小的传输读数据延迟值,所述第二采样区间的区间右端点小于等于所述高电平对应的N/2个传输读数据延迟值中最大的传输读数据延迟值。

在一些非限制性实施例中,第一采样区间和第二采样区间相同,此时M和N的取值相同。

在步骤13的具体实施中,可以在双向命令传输通道的传输读指令延迟值下,与SD存储卡之间进行命令的读操作。在各个传输读数据延迟值下与SD存储卡之间进行数据的读操作,也即,所述指定数据是在传输读数据延迟值下进行传输的。所述指定数据是响应于第二类型命令从SD存储卡中读取得到的。

在步骤14的具体实施中,可以采用如下方式从能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,具体而言:根据能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值,统计连续成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值的候选采样区间;从区间长度最大的所述传输读数据延迟值的候选采样区间内选取所述最佳传输读数据延迟值。

在步骤14的具体实施中,第二类型命令可以为cmd17。cmd17具体为read_single_block命令。也即向SD存储卡发送cmd17命令。第二类型命令可以为cmd18,cmd18用于从SD存储卡的多个数据块中读取数据。第二类型命令也可以为其他能够从SD存储卡中读取数据,并经由dataline传输,且不会改变SD存储卡中存储的数据的命令,此处不再一一举例。

可以在所述双向命令传输通道的传输读指令延迟值下发送第二类型命令,并在第二采样区间内,按照各个传输读数据延迟值的大小顺序,从小至大,先从最小的传输读数据延迟值下,接收指定数据。向SD存储卡发送第二类型命令后,SD存储卡可以反馈第二类型命令的成功接收情况,并反馈指定数据,所述指定数据是响应于所述第二类型命令生成的。在当前的传输读数据延迟值下,若能够成功传输所述第二类型命令且能够成功传输所述指定数据,则当前的传输读数据延迟值为能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值。相应地,若在当前的传输读数据延迟值下,第二类型命令和指定数据中的任意一个无法成功传输,则当前的传输读数据延迟值为不能成功传输所述第二类型命令且不能成功传输所述指定数据的传输读数据延迟值。

继续选取下一传输读数据延迟值,并在最佳传输读指令延迟值下发送第二类型命令,并在下一传输读数据延迟值下接收指定数据,并基于所述第二类型命令以及所述指定数据的传输情况,判断下一传输读数据延迟值是否为能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值。以此类推,直至完成第二采样区间内的所有传输读数据延迟值的判断。

需要说明的是,在实际中也可以按照传输读数据延迟值从大至小的顺序进行指定数据的传输。

在一些实施例中,当区间长度最大的所述传输读数据延迟值的候选采样区间的数目大于等于两个时,可以从首次出现的所述传输读数据延迟值的候选采样区间中选取最佳传输读数据延迟值。也可以从任意一个区间长度最大的所述传输读数据延迟值的候选采样区间中选取最佳传输读数据延迟值。

在具体实施中,可以选取区间长度最大的所述传输读数据延迟值的候选采样区间的区间中点作为所述最佳传输读数据延迟值。

在一些实施例中,区间长度最大的候选采样区间的区间中点为其中一个传输读数据延迟值,则将区间中点作为最佳传输读数据延迟值。

在另一些实施例中,区间长度最大的候选采样区间的区间中点与任一个传输读数据延迟值均不相同,则从最靠近区间中点的两个传输读数据延迟值中选取最佳传输读数据延迟值。

在具体实施中,存储所述双向命令传输通道的传输读指令延迟值以及所述双向数据传输通道的传输读数据延迟值。

在一些实施例中,可以将双向命令传输通道的传输读指令延迟值以及所述双向数据传输通道的传输读数据延迟值写入主机寄存器。

在具体实施中,SD存储卡可以为低速SD存储卡。低速SD存储卡指不支持UHS-1接口的SD卡,最高仅支持HS模式,最大支持数据传输速率为25MB/S的SD卡工作模式。

在具体实施中,可以在SD存储卡的HS模式下进行SD存储卡传输延迟调谐。可以理解的是,也可以在SD存储卡的默认模式下进行SD存储卡传输延迟调谐,其中,默认模式的数据传输速度小于HS模式下的数据传输速度。

本发明实施例提供的SD存储卡传输延迟调谐方法可以适用于已经出厂的终端,对终端进行售后维修。也可以适应于未出厂的终端,对终端进行出厂前的传输延迟调谐。

为便于本领域技术人员更好的理解和实现本发明实施例,下面结合一个典型场景对SD存储卡传输延迟调谐方法进行详细说明。

参考图2,在该典型场景下,以终端中的主机作为SD存储卡传输延迟调谐方法的执行主体为例进行说明,具体可以包括如下步骤:

步骤201,SD存储卡初始化。

可以通过相关初始化驱动函数进行SD存储卡初始化。在完成初始化之后,可以切换到高速(High Speed,HS)模式,在HS模式下进行SD存储卡传输延迟调谐。在HS模式为最大支持数据传输速率为25MB/S的SD存储卡工作模式。

步骤202,获取预设的默认传输延迟值,响应于需要执行对所述SD存储卡传输延迟调谐,清零默认传输读指令延迟值,配置第一采样区间。

其中,在SD存储卡初始化成功后,是否需要进行SD存储卡传输延迟调谐是预先配置的。例如,可以在设备树文件(Device Tree Source,DTS)中配置是否进行SD存储卡传输延迟调谐。若配置为进行SD存储卡传输延迟调谐,则在SD存储卡初始化成功后自动触发进入SD存储卡传输延迟调谐的流程。若配置为不进行SD存储卡传输延迟调谐,则在SD存储卡初始化成功后获取预配置的默认传输延迟值,并基于默认传输延迟值进行命令和数据的传输。

在具体实施中,可以在SD存储卡初始化成功后,进入对双向命令传输通道的调谐流程。获取DTS中预设的默认传输延迟值。默认传输延迟值包括:默认传输读数据延迟值、默认传输读指令延迟值以及默认传输写数据延迟值。

响应于需要执行对所述SD存储卡传输延迟调谐,清零默认传输读指令延迟值,配置第一采样区间。具体而言,将一个时钟周期等分为256份,得到256个传输读指令延迟值,并记作0x00到0xff,第一采样区间为0x00到0x7f。

步骤203,发送cmd16。

步骤204,判断传输读指令延迟值是否到0x7f。

从传输读指令延迟值为0x00开始,依次在各个传输读指令延迟值下发送cmd16。先在0x00下向SD存储卡发送cmd16,并判断当前的传输读指令延迟值是否到0x7f,响应于判断结果为否,执行步骤205。响应于判断结果为是,执行步骤206。

步骤205,将传输读指令延迟值加1。

也即采用下一传输读指令延迟值继续发送cmd16,也即继续执行步骤204,直至传输读指令延迟值达到0x7f。

步骤206,选取区间长度最大的传输读指令延迟值的候选采样区间的区间中点作为所述最佳传输读指令延迟值。

此时,最佳传输读指令延迟值为最佳双向命令传输通道的最佳采样点。

关于区间长度最大的传输读指令延迟值的候选采样区间的确定方式可以参见上述实施例中的相关描述,此处不再赘述。

步骤207,清零默认传输读数据延迟值,并配置第二采样区间。

将默认传输读数据延迟值(read data delay)清零,将一个时钟周期等分为256份,得到256个传输读数据延迟值,并记作0x00到0xff,第二采样区间为0x00到0x7f。

步骤208,发送cmd17。

步骤209,判断传输读数据延迟值是否达到0x7f。

从传输读数据延迟值为0x00开始,依次在各个传输读数据延迟值下发送cmd17。先在0x00下向SD存储卡发送cmd17,并判断当前的传输读数据延迟值是否到0x7f,响应于判断结果为否,执行步骤210。响应于判断结果为是,执行步骤211。

步骤210,将传输读数据延迟值加1。

也即采用下一传输读数据延迟值继续发送cmd17,也即继续执行步骤208,直至传输读数据延迟值达到0x7f。

步骤211,选取区间长度最大的所述传输读数据延迟值的候选采样区间的区间中点作为所述最佳传输读数据延迟值。

关于区间长度最大的所述传输读数据延迟值的候选采样区间的确定方式可以参见上述实施例中的描述,此处不再赘述。此时,最佳传输读数据延迟值即为双向数据传输通道的最佳采样点。

步骤212,将最佳传输读指令延迟值和最佳传输读数据延迟值写入主机寄存器配置。

关于步骤201至步骤212的具体实施方案的描述的更多介绍,可以参见上述实施例中的说明,此处不再赘述。

本发明还提供一种SD存储卡传输延迟调谐装置,参见图3给出的本发明实施例中的一种SD存储卡传输延迟调谐装置的结构示意图,SD存储卡传输延迟调谐装置30包括:

第一发送单元301,用于在第一采样区间内的各个传输读指令延迟值下发送第一类型命令,其中,所述第一采样区间包括多个传输读指令延迟值,所述第一类型命令用于指示SD存储卡基于双向命令传输通道执行对应操作;

第一确定单元302,用于根据各个传输读指令延迟值下发送的第一类型命令的传输情况,从能够成功传输所述第一类型命令的传输读指令延迟值中选取最佳传输读指令延迟值,将所述最佳传输读指令延迟值作为与所述SD存储卡之间的双向命令传输通道的传输读指令延迟值;

第二发送单元303,用于在所述双向命令传输通道的传输读指令延迟值下发送第二类型指令,并在第二采样区间内的各个传输读数据延迟值下读取指定数据,所述第二类型指令用于从所述SD存储卡读取所述指定数据,其中,所述第二采样区间内包括多个传输读数据延迟值;

第二确定单元304,用于根据所述第二类型指令的传输情况以及各个传输读数据延迟值下所述指定数据的传输情况,从能够成功传输所述第二类型命令且能够成功传输所述指定数据的传输读数据延迟值中选取最佳传输读数据延迟值,将所述最佳传输读数据延迟值作为与所述SD存储卡之间的双向数据传输通道的传输读数据延迟值。

在具体实施中,上述SD存储卡传输延迟调谐装置30可以对应于终端中具有SD存储卡传输延迟调谐功能的芯片,例如SOC(System-On-a-Chip,片上系统)等;或者对应于终端中包括具有SD存储卡传输延迟调谐功能的芯片模组;或者对应于具有数据处理功能芯片的芯片模组,或者对应于终端本身。

SD存储卡传输延迟调谐装置30可以用于实现上述SD存储卡传输延迟调谐方法,关于SD存储卡传输延迟调谐装置30的具体工作原理及工作流程的更多介绍,可以参见上述实施例中对SD存储卡传输延迟调谐方法中的描述,此处不再赘述。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行本发明上述任一实施例提供的SD存储卡传输延迟调谐方法的步骤。

所述计算机可读存储介质可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器,还可以包括光盘、机械硬盘、固态硬盘等。

具体地,在本发明实施例中,所述处理器可以为中央处理单元(centralprocessing unit,简称CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,简称DSP)、专用集成电路(application specificintegrated circuit,简称ASIC)、现场可编程门阵列(field programmable gate array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,简称ROM)、可编程只读存储器(Programmable ROM,简称PROM)、可擦除可编程只读存储器(Erasable PROM,简称EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,简称EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random AccessMemory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(Random Access Memory,简称RAM)可用,例如静态随机存取存储器(StaticRAM,简称SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SynchronousDRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,简称DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,简称ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,简称DR RAM)。

本发明实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述任一实施例提供的SD存储卡传输延迟调谐方法的步骤。

所述存储器和所述处理器耦合,存储器可以位于终端装置内,也可以位于终端外。所述存储器和所述处理器可以通过通信总线连接。

终端可以包括但不限于pos机、手机、后视镜以及智能座舱等车机相关设备、智能可穿戴设备等。

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。

本申请实施例中出现的“多个”是指两个或两个以上。

本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。

需要指出的是,本实施例中各个步骤的序号并不代表对各个步骤的执行顺序的限定。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

技术分类

06120116566657