USB电子装置及数据包重传控制方法和系统
技术领域
本发明涉及USB数据传输技术领域,特别是涉及USB电子装置及数据包重传控制方法和系统。
背景技术
由于USB3.x协议(如USB3.0,USB3.1GEN1,USB3.1GEN2等)链路层支持数据重传,因此数据传输出去的同时,必须保存在链路层中直到数据正确传输之后,该数据可以移除,否则进行重传,数据继续保存。按照USB3.x的协议规定,链路层最多可以在没有收到正确与否的握手包之前传输四个数据包(USB3.1GEN2是八个数据,四个TYPE1,四个TYPE2),因此数据链路层有四个(或八个USB3.1GEN2)缓存(buffer)来存储数据包头(DPH),那么是否需要buffer来存储数据负载包(DPP)则依赖于当DPH出现错误需要重传时,DPP是否重传来决定。下面具体分析各种选择的特点:
当选择重传DPP时,则在链路层需要准备4KByte的buffer来存储DPP,如果是USB3.1GEN2模式,则需要8K Byte的buffer,这需要以增加固定的资源为代价;同时,USB3.X是一个主机导向的协议,也就是说每个时间段发送的数据都是经过主机计算与控制的,在主机上层决策的过程中,计算发送一个完整的数据包(DPH+DPP)需要的时间并没有考虑重传的时间(因为重传是低概率事件),如果链路层主动重传DPP,这会导致额外的时间,这会使得在一定的时间里,链路层不能把上层需要发送的数据发完,链路层重传的动作并未告知协议层,协议层并不会将重传的额外时间计入。
但是如果链路层不重传DPP,则在链路层DPH CRC16发生错误时,只重传DPH,那么接收端设备的协议层将会收到一个丢失了DPP的数据包,然后在协议层重传DPP,这必然导致协议层时间的浪费与传输的效率。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供USB电子装置及数据包重传控制方法和系统,用于解决现有技术中USB设备数据包重传效率低或浪费缓存资源等问题。
为实现上述目的及其他相关目的,本发明提供一种USB电子装置,包括:存储器,其包括:一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;控制器,连接所述存储器,用于调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
于本发明的一实施例中,对所述第二存储单元容量的调节是根据数据包传输需求来进行的。
于本发明的一实施例中,所述数据包传输需求包括:预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到。
于本发明的一实施例中,所述控制器将所述第二存储单元的容量调节为0以不进行数据负载包的重传。
于本发明的一实施例中,所述存储器包括4组或8组所述第一存储单元及第二存储单元。
于本发明的一实施例中,所述USB电子装置为USB主机或USB从设备。
为实现上述目的及其他相关目的,本发明提供一种USB电子装置的数据包重传控制方法,包括:通过USB电子装置的存储器提供一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
于本发明的一实施例中,对所述第二存储单元容量的调节是根据数据包传输需求来进行的。
于本发明的一实施例中,所述数据包传输需求包括:预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到。
于本发明的一实施例中,所述控制器将所述第二存储单元的容量调节为0以不进行数据负载包的重传。
于本发明的一实施例中,所述存储器包括4组或8组所述第一存储单元及第二存储单元。
于本发明的一实施例中,所述USB电子装置为USB主机或USB从设备。
为实现上述目的及其他相关目的,本发明提供一种USB电子装置的数据包重传控制系统,包括:第一存储功能模块,用于通过USB电子装置的存储器提供一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;第二存储功能模块,还用于调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
于本发明的一实施例中,对所述第二存储单元容量的调节是根据数据包传输需求来进行的。
于本发明的一实施例中,所述数据包传输需求包括:预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到。
于本发明的一实施例中,所述第二存储功能模块,用于将所述第二存储单元的容量调节为0以不进行数据负载包的重传。
于本发明的一实施例中,所述存储器包括4组或8组所述第一存储单元及第二存储单元。
于本发明的一实施例中,所述USB电子装置为USB主机或USB从设备。
如上所述,本发明的USB电子装置及数据包重传控制方法和系统,所述USB电子装置的存储器包括一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;通过调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传;可根据需求调节DPP存储使用的第二存储单元的容量从而限制并选择可重传的数据包长度范围,从而可以配合调度时间,不影响传输效率,同时,亦可根据需要将其容量设置得较小,也避免了现有技术中固定容量buffer的资源浪费的问题。
附图说明
图1显示为本发明于一实施例中应用环境的结构示意图。
图2显示为本发明于一实施例中USB电子装置的结构示意图。
图3显示为本发明于一实施例中数据包重传控制方法的流程示意图。
图4显示为本发明于一实施例中数据包重传控制系统的模块示意图。
元件标号说明
101 USB主机
102 USB从设备
103 USB集线器
201 USB电子装置
202 存储器
203 第一存储单元
204 第二存储单元
205 控制器
401 第一存储功能模块
402 第二存储功能模块
S301~S302 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
请参阅图1,本发明所提供技术方案,应用于USB主机101(Host)与USB从设备102(device)间的数据传输,当然,USB主机101可以通过USB集线器(Hub)来连接多台USB从设备102。
具体的,图1还展示了USB数据传输的结构,每个主机101或从设备102中均具有协议层、链路层和物理层,每层会对数据做不同的检查和处理。
进一步的,协议层定义了主机101(Host)和从设备102(device)之间端到端(end-to-end)的通讯规则。这是一个主机101(Host)导向的协议层,意味着主机101控制以及决定什么时候发起数据传输。当协议层检测到数据在传输过程中发生了错误,其将会根据该数据类型而决定是否重传,其中,同步传输数据类型不需要重传,其他类型,如控制传输类型、批量传输类型及中断传输类型等的数据均需要进行重传。
链路层定义的是端口到端口(port-to-port)的通信规则,其负责对链路进行校准,保证链路的质量以及数据在链路层的正确传输。
物理层负责对数据进行8b/10b编码转换,scramble编码等处理,保证其在线上的正确传输与接收。
USB3.x的数据包有固定的格式,由两部分组成,包括一个数据包头(DPH),和带有数据块加上用来确保数据完整性的32位CRC的数据负载包(DPP)。链路层主要负责DPH的正确传输(CRC16保护DPH),而协议层则负责DPP的正确性(CRC32保护DPP)。
如图1所示,一个USB3.x数据包的传输要经过主机101host,hub1(例如0到5个),最后到设备device,而一个完整的数据包从主机101到设备的传输流程是:
首先,主机101(host)协议层准备一个数据包连同CRC32发送到主机101链路层,由主机101链路层给数据包头(DPH)产生CRC16校验码,保证其在链路的接收端可以检测错误,最后端口PORT1物理层将数据发出。
hub的链路层(PORT2)接收到数据,检测数据包头(DPH)里的CRC16编码是否正确,如果正确将其通过PORT3发送到device,如果错误,host与hub之间的链路层将从PORT2重传该数据包,最终正确的数据包将从hub的PORT3物理层发出。
device的PORT4接收到数据包后,链路层会检测其CRC16编码,如果正确,将其上传给device的协议层处理,如果错误,PORT3和PORT4之间的链路层将负责进行重传该数据包。
Device的协议层检测数据包的DPP的CRC32编码,如果错误则要在host和device之间的协议层进行重传。
上述流程是从主机101(host)到从设备102(device)的数据传输,相反当数据包从从设备102(device)到主机101(host)传输时,其数据传输方向相反,传输过程和检测原理是一样的。
本发明的技术方案,是通过DPP所使用存储空间的容量可调节,进而仅对长度小于该容量的数据包进行存储并重传,而对长度大于该容量的数据包则不进行存储及重传,以节省存储资源并提升传输效率。
如图2所示,为实现该技术方案,本发明提供一种USB电子装置201,所述USB电子装置201既可以是前述的主机(host),也可以是从设备(device)。
所述USB电子装置201包括:存储器202和控制器205,其中,所述存储器202可以是控制器芯片中的寄存器或在内存(例如RAM等)中开辟的存储区域等,所述控制器205可以是USB接口控制器205,结合USB驱动程序的运行来实现功能。
所述存储器202包括:一或多组第一存储单元203及第二存储单元204,各所述第一存储单元203和第二存储单元204可以是在所述存储器202中划分的存储区域,在每组第一存储单元203及第二存储单元204中,同一组中的第一存储单元203用于存储遵循USB协议的数据包的包头(DPH),同一组中的第二存储单元204用于存储按照USB协议传输的数据包的数据负载包(DPP),所述第二存储单元204容量可调节,也就是说,可以通过调整容量大小或重新分配其存储空间等方式来进行调节。
具体的,对应USB3.0,USB3.1GEN1和USB3.1GEN2等协议的数据传输模式要求,可提供8个第一存储单元203(可共计8K容量)来存储DPH,并提供8个容量可调节的第二存储单元204,即DPP buffer,当然,若仅仅需要支持如USB3.0,USB3.1GEN1协议,则可仅需要4个第一存储单元203和第二存储单元204。
所述控制器205,连接所述存储器202;于一实施例中,所述控制器205可以是控制器芯片(如中央处理器或单片机芯片等)中的控制部件,而所述存储器202则为该控制器芯片中的寄存器;对应不同类型的USB电子装置,所述控制器芯片在主机可以是主机控制器,在从设备可以是设备控制器;当然,所述控制器205亦可即为所述控制器芯片,而所述存储器202为在内存中开辟的存储区域亦可实现。
所述控制器205用于调节所述第二存储单元204的容量以令第二存储单元204用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
具体的,当需重传的数据包中DPP长度小于第二存储单元204的容量,则当链路层发生DPH重传,DPP也重传,这样协议层在链路层发生错误的同时依然会收到正确的数据包,同时由于数据包长度比较小(<第二存储单元204容量)不会消耗额外太多的数据传输时间而影响USB主机的数据调度;当数据包大于第二存储单元204的容量,链路层不会重传DPP,这样链路层不会额外消耗太多的时间重传DPP,使得USB在一定时间内调度的数据包都能按时完成。
该容量的调节是可以根据数据包传输需求进行的,所述需求例如预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到;具体的,在例如需重传的数据包都是8byte大小,并且数据包不多,那么选择第二存储单元204的容量为8byte可以保证所有的数据都能够在链路层正确传输,同时资源消耗只有8*8byte大小的存储空间;如果数据包都是例如1K的长包,并且数据包很多,主机调度时间很紧,那么将buffer size调节成0,实现链路层只重传DPH,不重传DPP,保证主机调度的包按时传送。
如图3所示,本发明提供一种应用于上述实施例中USB电子装置的数据包重传控制方法,包括:
步骤S301:通过USB电子装置的存储器提供一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;
步骤S302:调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
于本发明的一实施例中,对所述第二存储单元容量的调节是根据数据包传输需求来进行的。
于本发明的一实施例中,所述数据包传输需求包括:预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到。
于本发明的一实施例中,所述控制器将所述第二存储单元的容量调节为0以不进行数据负载包的重传。
于本发明的一实施例中,所述存储器包括4组或8组所述第一存储单元及第二存储单元。
于本发明的一实施例中,所述USB电子装置为USB主机或USB从设备。
如图4所示,本发明提供一种应用于上述实施例中USB电子装置的数据包重传控制系统,包括:第一存储功能模块401,用于通过USB电子装置的存储器提供一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;第二存储功能模块402,还用于调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传。
于本发明的一实施例中,对所述第二存储单元容量的调节是根据数据包传输需求来进行的。
于本发明的一实施例中,所述数据包传输需求包括:预设调度时间内需传输完预设数据量,所述预设数据量根据数据包个数及数据包长度计算得到。
于本发明的一实施例中,所述第二存储功能模块,用于将所述第二存储单元的容量调节为0以不进行数据负载包的重传。
于本发明的一实施例中,所述存储器包括4组或8组所述第一存储单元及第二存储单元。
于本发明的一实施例中,所述USB电子装置为USB主机或USB从设备。
所述数据包重传控制方法和系统的实施例可通过前述控制器实现,通过运行软件程序来告知所述控制器多少长度以内的数据负载包需要重传,进而对应调整容量;在其它实施例中,还可无需软件程序而仅通过在控制器的硬件设计时,将第二存储单元可配长度的容量一次性按需求设计完成亦可。
综上所述,本发明的USB电子装置及数据包重传控制方法和系统,所述USB电子装置的存储器包括一或多组第一存储单元及第二存储单元;其中,同一组中的第一存储单元用于存储遵循USB协议的数据包的包头,同一组中的第二存储单元用于存储该数据包的数据负载包;所述第二存储单元容量可调节;通过调节所述第二存储单元的容量以令第二存储单元用于存储长度小于所述第二存储单元的容量的需重传的数据包中的数据负载包以进行重传,而不对长度大于所述第二存储单元的容量的数据负载包进行存储及重传;可根据需求调节DPP存储使用的第二存储单元的容量从而限制并选择可重传的数据包长度范围,从而可以配合调度时间,不影响传输效率,同时,亦可根据需要将其容量设置得较小,也避免了现有技术中固定容量buffer的资源浪费的问题。
本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。