背景技术
请参阅图1,为现有技术提供的典型的实时性数据传输系统。实时性数据传输系统一般由存储器、数据传输通道、实时性设备接口以及实时性设备四个部分组成。其中数据传输通道是指任何可以将数据包从一个存储区传输到另一个存储区的数据传输通道,如将数据包从存储器传输至实时性设备,或者将数据包从实时性设备传输至存储器,或者将数据包从存储器的某个存储区传输至另一个存储区的数据传输通道。数据传输通道包括但不限于直接存储器存取通道(Direct Memory Access,DMA)、通过中央处理器(Central Processing Unit,CPU)进行数据传输的通道等。
存储器用于存储传输的数据。数据传输通道用于发起对存储器和实时性设备的访问,将数据从存储器传输到实时性设备,或者将数据从实时性设备传输至存储器。实时性设备接口用于将存储器的数据处理成实时性设备可以使用的格式,或者将实时性设备输入的数据解码得到有效数据供数据传输通道传输至存储器。
请参阅图2,为现有技术提供的DMA传输数据的实现流程图,简述如下:配置DMA传输时的数据源以及目的端,再配置DMA传输的数据总量,启动DMA,DMA从配置的数据源中将配置的数据总量传输至目的端,至此一次DMA传输完毕,当DMA传输完毕后,重新启动DMA,接着进行数据传输。
在DMA中有一个寄存器用来配置传输的数据总量,对于实时性设备,不可能预知数据总量,而且即时可以预知,数据总量也是天文数字,DMA不可能做这样的寄存器,所以一般的做法是将DMA传输的数据总量设置为一个有限数,DMA在传输完该数据总量后,再多次重启,继续传输该数目的数据量,以满足实时性设备的请求。
现有技术中数据传输的实现流程一般如下:首先配置数据传输通道的数据源以及目的端,然后配置数据传输通道传送的数据总量,然后启动数据传输通道,从配置的数据源中将配置的数据总量传输至目的端,至此一次数据传输完毕。下一次需要传输数据时,再重新启动数据传输通道进行数据传输。
在现有的系统中,一般有多个设备共享总线资源和存储器,当总线资源紧张时,或者存储器为其他外部设备服务时,就会导致系统无法及时响应实时性设备的请求,从而导致实时性设备数据的丢失。但是由于实时性数据传输要求外部设备在工作时传输不能中断,否则就会丢失部分数据,导致时序错位和错位累加,如对于音频,表现为音画不同步,对于视频,表现为图像错位。
现有技术一般是通过提高系统总线和存储器的效率来避免实时性设备数据的丢失,或者讲实时性设备的响应优先级设置为最高,以保证及时响应实时性设备的需求。这种方法虽然一定程度上可以避免实时性设备数据的丢失,但是其实现代价较高,且也会存在很多意外的因素,很难保证万无一失。
现有技术还提供了另一种通过软件设置错误检测机制的方法来避免实时性设备数据的丢失,一旦发现传输错误,就通过软件重启DMA和实时性设备。这种方法虽然也可以在一定程度上避免实时性设备数据的丢失,但是这种方法将加重软件的负担,而且在系统繁忙的时候恢复速度也会减慢,如果频繁重启,用户还是会感知到,影响用户使用体验。
发明内容
本发明实施例的目的在于提供一种实时性数据传输错误的恢复方法,旨在解决现有的实时性数据传输系统中对系统总线和存储器的效率要求高、数据传输错误恢复速度慢的问题。
本发明实施例是这样实现的,一种实时性数据传输错误的恢复方法,所述方法包括下述步骤:
配置数据传输通道传输的数据总量;
实时性设备在每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕。
优选地,所述实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕的步骤具体为:
实时性数据传输错误的恢复装置强制拉高用于请求数据传输通道传输数据的标志信号。
优选地,所述方法还包括下述步骤:
在数据传输通道将实时性设备所请求的数据量传输完毕后,实时性数据传输错误的恢复装置取消被拉高的用于请求数据传输通道传输数据的标志信号。
本发明实施例的另一目的在于提供一种实时性数据传输错误的恢复装置,所述装置包括:
传输量配置单元,用于配置数据传输通道传输的数据总量;
数据请求单元,用于在实时性设备每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。
优选地,所述数据请求单元请求数据传输通道将实时性设备所请求的数据量传输完毕是指:
数据请求单元强制拉高用于请求数据传输通道传输数据的标志信号。
优选地,所述装置还包括:
信号取消单元,用于在数据传输通道将实时性设备所请求的数据量传输完毕后,取消被所述数据请求单元拉高的用于请求数据传输通道传输数据的标志信号。
本发明实施例的另一目的在于提供一种实时性数据传输系统,所述系统包括存储器、与存储器通过系统总线或者专用通道连接的数据传输通道、与数据传输通道通过系统总线连接的实时性设备接口、与实时性设备接口通过端口连接的实时性设备,所述系统还包括:
实时性数据传输错误的恢复装置,分别与所述数据传输通道、实时性设备接口进行通信,用于配置数据传输通道传输的数据总量,并在实时性设备在每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。
优选地,所述实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕是指:
数据请求单元强制拉高用于请求数据传输通道传输数据的标志信号。
优选地,所述实时性数据传输错误的恢复装置还用于在数据传输通道将实时性设备所请求的数据量传输完毕后,取消被所述数据请求单元拉高的用于请求数据传输通道传输数据的标志信号。
在本发明实施例中,在实时性设备每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕,从而在实时性设备的下一帧开始时,可以恢复实时性设备与数据传输通道之间的时序错误,降低了对系统总线和存储器的效率的要求,而且在当前帧出错时,下一帧就可以恢复,数据传输错误恢复速度快。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,配置数据传输通道传输的数据总量,实时性设备在每次输出配置的数据总量的数据后,强制拉高用于请求数据传输通道传输数据的标志信号,以请求数据传输通道将实时性设备所请求的数据量传输完毕,这样,当数据传输通道偶尔不能及时响应实时性设备而造成数据传输通道与实时性设备的时序错位时,不需要重启实时性设备以及数据传输通道,就可以在实时性设备的下一次数据传输请求时恢复数据传输通道与实时性设备之间的时序错位。
本发明提供了一种实时性数据传输错误的恢复方法和装置:
所述方法包括下述步骤:配置数据传输通道传输的数据总量;实时性设备在每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕。
所述装置包括传输量配置单元,用于配置数据传输通道传输的数据总量;
数据请求单元,用于在实时性设备每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。
本发明还提供了一种实时性数据传输系统,所述系统包括存储器、与存储器通过系统总线连接的数据传输通道、与数据传输通道通过系统总线或者专用通道连接的实时性设备接口、与实时性设备接口通过端口连接的实时性设备,所述系统还包括:实时性数据传输错误的恢复装置,分别与所述数据传输通道、实时性设备接口进行通信,用于配置数据传输通道传输的数据总量,并在实时性设备在每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图3示出了本发明实施例提供的实时性数据传输错误的恢复方法的实现流程,详述如下:
在步骤S101中,实时性数据传输错误的恢复装置配置数据传输通道传输的数据总量。
其中数据传输通道为任何可以将数据包从一个存储区传输到另一个存储区的数据传输通道,如将数据包从存储器传输至实时性设备,或者将数据包从实时性设备传输至存储器,或者将数据包从存储器的某个存储区传输至另一个存储区的数据传输通道。数据传输通道包括但不限于DMA、CPU等。
在本发明实施例中,数据传输通道中至少包括一个用于存储配置的数据总量的寄存器。其中配置的数据总量的大小与具体的实时性设备的应用有关,如可以将数据传输通道传输的数据总量配置为一个任意大小的数据包,如配置为1帧或者1场数据数量。
在步骤S102中,实时性设备在每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕。
实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕的方式可以但不限于是强制拉高用于请求数据传输通道传输数据的标志信号。
在本发明实施例中,实时性设备在每次输出配置的数据总量的数据后,强制拉高用于请求数据传输通道传输数据的标志信号,当用于请求数据传输通道传输数据的标识信号被拉高时,数据传输通道将继续进行数据传输,直到将实时性设备所请求的数据量传输完毕。
如当配置的数据传输通道传输的数据总量为一帧或者一场时,实时性设备在输出每帧的帧尾或者输出每场的场尾,实时性数据传输错误的恢复装置强制拉高用于请求数据传输通道传输数据的标志信号,以请求数据传输通道将实时性设备所请求的数据量传输完毕。
在本发明实施例中,当实时性设备准备就绪后,如果有实时性数据传输需求,则可以向数据传输通道发送数据传输请求,数据传输通道在接收到实时性设备发送的数据传输请求后,将配置的数据总量从存储器传输至实时性设备,实时性设备再将数据传输通道传输的数据总量的数据输出。在上述过程中,如果由于总线资源紧张或者存储器当时无法为该实时性设备提供服务,可能导致数据传输通道无法将配置的数据总量从存储器传输至实时性设备,而只能将实时性设备请求的部分数据传输至实时性设备,实时性设备在其输出时序来临时,无论数据传输通道是否传输完毕,都将输出配置的数据总量的数据,这将导致当前输出的部分数据的丢失,从而导致时序错位,如果不加以恢复,将导致错位累加,此时,在本发明实施例中,实时性设备在每次输出配置的数据总量的数据后,强制拉高用于请求数据传输通道传输数据的标志信号,这样可以请求数据传输通道继续将实时性设备所请求的数据量传输完毕。以数据传输通道为DMA为例,进行说明如下:
假设配置的DMA传输的数据总量为一帧,当实时性设备准备就绪后,如果需要传输数据,则实时性数据传输错误的恢复装置可以向DMA发送数据传输请求,DMA在接收到实时性设备发送的数据传输请求后,将一帧数据从存储器传输至实时性设备,实时性设备再将DMA传输的该帧数据输出。在此过程中,如果由于总线资源紧张或者存储器当时无法为该实时性设备提供服务,可能导致DMA无法将一帧的数据总量从存储器传输至实时性设备,如当一帧包括100个数据时,此时DMA可能只能将90个数据从存储器传输至实时性设备,而实时性设备在其输出时序来临时,直接将该帧数据输出,无论该帧数据是否包含100个数据,此时,由于实时性设备在此次输出时序本应该输出包括100个数据的一帧数据,但由于DMA只传输了包括90个数据的一帧数据,从而导致当前输出的数据丢失了一部分,也就是说DMA没有将实时性设备请求的数据量传输完毕,从而导致时序错位。此时,实时性设备在输出DMA传输的包括90个数据的一帧数据后,强制拉高用于请求DMA传输数据的标志信号,这样可以请求DMA继续将未传输完毕的数据(如该帧包括的剩余10个数据)传输完毕。这样虽然实时性设备输出的当前帧发生了时序错位,但在实时性设备下一帧开始时,DMA也重新启动传输,从而实时性设备与DMA之间的时序也就恢复了。
在本发明实施例中,实时性设备在每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置都强制拉高用于请求数据传输通道传输数据的标志信号,以请求数据传输通道将实时性设备所请求的数据量传输完毕,从而在实时性设备的下一帧开始时,可以恢复实时性设备与数据传输通道之间的时序错误,占用的资源少、无需软件干预、实现简单、提高了产品的稳定性,而且恢复迅速,在当前帧出错时,下一帧就可以恢复,不需要重启实时性设备和数据传输通道,从而连续性好,只要数据传输通道不是长时间无法响应或大部分帧都不能及时响应,用户很难察觉到时序错误,提升了用户体验,而且降低了对总线和存储器的工作效率的要求,偶尔的带宽不足不致影响后续数据的传输。
在本发明另一实施例中,该方法还包括下述步骤:
在数据传输通道将实时性设备所请求的数据量传输完毕后,实时性数据传输错误的恢复装置取消被拉高的用于请求数据传输通道传输数据的标志信号。
在本发明实施例中,当数据传输通道将实时性设备所请求的数据量传输完毕后,实时性数据传输错误的恢复装置取消被拉高的用于请求数据传输通道传输数据的标志信号,从而停止数据传输通道的数据传输。
当然用于请求数据传输通道传输数据的标志信号被拉高后,也可以一直保持这种状态,因为用于请求数据传输通道传输数据的标志信号被拉高后,数据传输通道会将实时性设备所请求的数据量传输完毕,在实时性设备所请求的数据量传输完毕后,无论该用于请求数据传输通道传输数据的标志信号是否被拉高,数据传输通道都不会再进行数据传输,除非实时性设备需要输出下一帧而向数据传输通道再次发送数据传输请求,此时重新启动数据传输通道,进行新的一次数据传输操作。
以下以一个具体的示例对本发明提供的方法进行更为详细的描述,但不以该示例为限,在该示例中,数据传输通道以DMA为例:
预先配置DMA传输的数据总量为一帧,也就是说,实时性数据传输错误的恢复装置每次向DMA发送数据传输请求时,DMA都将一帧数据从存储器中传输至实时性设备,一帧传输完毕后,如果到达实时性设备的输出时序,实时性设备输出该帧数据,实时性设备需要输出下一帧数据时,再次向DMA发送数据传输请求,DMA重新启动,将下一帧数据从存储器中传输至实时性设备,以便实时性设备可以输出下一帧数据。
请参阅图4,为本发明实施例提供的实时性数据传输错误的恢复方法的实现流程:
在步骤S301中,实时性数据传输错误的恢复装置判断是否为帧尾,即判断是否为实时性设备输出的当前帧的帧尾,如果是,执行步骤S302,否则,继续执行步骤S301。
在步骤S302中,实时性数据传输错误的恢复装置请求DMA传输数据,即强制拉高用于请求DMA传输数据的标志信号,以请求DMA将实时性设备所请求的数据量传输完毕。
在步骤S303中,实时性数据传输错误的恢复装置判断DMA传输是否完成,如果是,执行步骤S304,否则执行步骤S302。
在步骤S304中,实时性数据传输错误的恢复装置取消DMA请求,即取消强制拉高的用于请求DMA传输数据的标志信号。
实施例二:
图5示出了本发明实施例提供的实时性数据传输错误的恢复装置的结构,为了便于说明仅示出了与本发明实施例相关的部分。
该装置可以用于实时性数据传输系统,也可以用于各种具有实时性数据传输需求的电子设备,例如计算机、便携式播放器、移动终端等,可以是运行于这些设备内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到这些设备中或者运行于这些设备的应用系统中,其中:
传输量配置单元1配置数据传输通道传输的数据总量。其中配置的数据总量的大小与具体的实时性设备的应用有关,如可以将数据传输通道传输的数据总量配置为1帧或者1场数据数量。
数据请求单元2在实时性设备每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。其中数据请求单元2请求数据传输通道将实时性设备所请求的数据量传输完毕的方式可以但不限于是强制拉高用于请求数据传输通道传输数据的标志信号。
在本发明另一实施例中,该装置还包括信号取消单元3。该信号取消单元3在数据传输通道将实时性设备所请求的数据量传输完毕后,取消被数据请求单元2拉高的用于请求数据传输通道传输数据的标志信号。
实施例三:
图6示出了本发明实施例提供的实时性数据传输系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该实时性数据传输系统包括存储器、与存储器通过系统总线或者专用通道连接的数据传输通道、与数据传输通道通过系统总线连接的实时性设备接口、与实时性设备接口通过端口连接的实时性设备、以及分别与数据传输通道、实时性设备接口进行通信的实时性数据传输错误的恢复装置。其中:
存储器用于存储传输的数据。
数据传输通道用于发起对存储器和实时性设备的访问,将数据从一端传输至另一端。该数据传输通道是指任何可以将数据包从一个存储区传输到另一个存储区的数据传输通道,如将数据包从存储器传输至实时性设备,或者将数据包从实时性设备传输至存储器,或者将数据包从存储器的某个存储区传输至另一个存储区的数据传输通道。数据传输通道包括但不限于DMA、CPU等。
实时性设备接口用于实现数据传输通道与实时性设备之间的通讯。
实时性数据传输错误的恢复装置配置数据传输通道传输的数据总量,并在实时性设备在每次输出配置的数据总量的数据后,请求数据传输通道将实时性设备所请求的数据量传输完毕。其中实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕的方式可以但不限于是强制拉高用于请求数据传输通道传输数据的标志信号。
在本发明另一实施例中,该实时性数据传输错误的恢复装置还用于在数据传输通道将实时性设备所请求的数据量传输完毕后,取消被所述数据请求单元拉高的用于请求数据传输通道传输数据的标志信号。
该实时性数据传输错误的恢复装置的结构如图5所示,在此不再赘述。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等,该程序用来执行如下步骤:
配置数据传输通道传输的数据总量;实时性设备在每次输出配置的数据总量的数据后,强制拉高用于请求数据传输通道传输数据的标志信号,以请求数据传输通道将实时性设备所请求的数据量传输完毕。
在本发明实施例中,在实时性设备每次输出配置的数据总量的数据后,实时性数据传输错误的恢复装置请求数据传输通道将实时性设备所请求的数据量传输完毕,从而在实时性设备的下一帧开始时,可以恢复实时性设备与数据传输通道之间的时序错误,占用的资源少,降低了对系统总线和存储器的效率的要求,无需软件干预、实现简单、提高了产品的稳定性,而且在当前帧出错时,下一帧就可以恢复,数据传输错误恢复速度快,偶尔的带宽不足不致影响后续数据的传输。不需要重启实时性设备和数据传输通道,从而连续性好,只要数据传输通道不是长时间无法响应或大部分帧都不能及时响应,用户很难察觉到时序错误,提升了用户体验。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。