一种数据交互方法、装置、设备及可读存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种数据交互方法、装置、设备及可读存储介质。
背景技术
目前,为了实现网络层和数据链路层的数据交互,需要预先申请一大片连续的DDR地址空间。在实际应用过程中,该DDR地址空间可能剩余较多,但由于该DDR地址空间不能由其他服务使用,因此可能造成存储资源浪费。
因此,如何提高DDR的利用率,避免存储资源浪费,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据交互方法、装置、设备及可读存储介质,以提高DDR的利用率,避免存储资源浪费。其具体方案如下:
第一方面,本申请提供了一种数据交互方法,应用于网络层,包括:
获取发送数据;
根据所述发送数据的数据量和当前DDR空间申请DDR地址,并将所述发送数据存储至所述DDR地址;
按照第一格式配置包含所述DDR地址的TX NORMAL描述符,并存储所述TX NORMAL描述符至DDR,以便数据链路层从所述DDR中获取所述TX NORMAL描述符,按照所述TXNORMAL描述符读取所述发送数据。
优选地,所述根据所述发送数据的数据量和当前DDR空间申请DDR地址,包括:
计算所述发送数据的数据量以及当前DDR空间;
从所述当前DDR空间中选择等于所述数据量的可用空间,并确定所述可用空间的DDR地址。
优选地,所述第一格式包括数据信息字段和至少一个地址信息字段,所述数据信息字段包括:所有权标识位、第一个描述符标识位、最后一个描述符标识位、地址信息的长度。
优选地,所述数据链路层从所述DDR中获取所述TX NORMAL描述符,按照所述TXNORMAL描述符读取所述发送数据之后,还包括:
所述数据链路层处理所述发送数据,并按照第二格式配置包含发送数据处理状态的TX STATUS描述符,存储所述TX STATUS描述符至所述DDR,以便所述网络层从所述DDR中获取所述TX STATUS描述符;所述第二格式包括数据信息字段和至少一个地址信息字段,所述数据信息字段包括:所有权标识位和地址信息的长度。
优选地,还包括:
按照第三格式配置包含接收数据存储地址的RX NORMAL描述符,并存储所述RXNORMAL描述符至所述DDR,以便数据链路层在接收到接收数据后,从所述DDR中获取所述RXNORMAL描述符,按照所述RX NORMAL描述符存储所述接收数据;所述第三格式包括数据信息字段和至少一个地址信息字段,所述数据信息字段包括:所有权标识位和地址信息的长度。
优选地,所述数据链路层按照所述RX NORMAL描述符存储所述接收数据之后,还包括:
所述数据链路层按照第四格式配置包含接收数据处理状态的RX STATUS描述符,存储所述RX STATUS描述符至所述DDR,以便所述网络层从所述DDR中获取所述RX STATUS描述符;所述第四格式包括数据信息字段和至少一个地址信息字段,所述数据信息字段包括:所有权标识位和地址信息的长度。
优选地,所述数据链路层按照所述RX NORMAL描述符存储所述接收数据,包括:
若开启分离存储功能,则所述数据链路层按照所述RX NORMAL描述符存储所述接收数据对应的数据帧的帧头至缓存,存储所述数据帧的负载至所述DDR;
若未开启分离存储功能,则所述数据链路层按照所述RX NORMAL描述符存储所述帧头和所述负载至所述DDR。
第二方面,本申请提供了一种数据交互装置,应用于网络层,包括:
获取模块,用于获取发送数据;
申请模块,用于根据所述发送数据的数据量和当前DDR空间申请DDR地址,并将所述发送数据存储至所述DDR地址;
交互模块,用于按照第一格式配置包含所述DDR地址的TX NORMAL描述符,并存储所述TX NORMAL描述符至DDR,以便数据链路层从所述DDR中获取所述TX NORMAL描述符,按照所述TX NORMAL描述符读取所述发送数据。
第三方面,本申请提供了一种数据交互设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据交互方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据交互方法。
通过以上方案可知,本申请提供了一种数据交互方法,应用于网络层,包括:获取发送数据;根据所述发送数据的数据量和当前DDR空间申请DDR地址,并将所述发送数据存储至所述DDR地址;按照第一格式配置包含所述DDR地址的TX NORMAL描述符,并存储所述TXNORMAL描述符至DDR,以便数据链路层从所述DDR中获取所述TX NORMAL描述符,按照所述TXNORMAL描述符读取所述发送数据。
可见,本申请在获取到待发送的发送数据后,根据发送数据的数据量和当前DDR空间申请DDR地址,并将发送数据存储至DDR地址;按照第一格式配置包含DDR地址的TXNORMAL描述符,并存储TX NORMAL描述符至DDR,以便数据链路层从DDR中获取TX NORMAL描述符,按照TX NORMAL描述符读取发送数据。本申请能够基于发送数据的数据量和当前DDR空间申请DDR地址,并利用TX NORMAL描述符记录当前申请的DDR地址,因此数据链路层可以按照TX NORMAL描述符读取当前发送的数据。在实际应用过程中,需要用多少DDR空间,即申请多少DDR空间,因此不用预先申请固定的DDR空间,提高了DDR的利用率,也避免了存储资源的浪费。
相应地,本申请提供的一种数据交互装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据交互方法流程图;
图2为本申请公开的一种TX NORMAL描述符结构示意图:
图3为本申请公开的一种TX STATUS描述符结构示意图:
图4为本申请公开的一种RX NORMAL描述符结构示意图:
图5为本申请公开的一种针对接收数据的分离存储示意图;
图6为本申请公开的一种针对接收数据的不分离存储示意图;
图7为本申请公开的一种RX STATUS描述符结构示意图:
图8为本申请公开的一种数据交互方案示意图;
图9为本申请公开的一种数据交互装置示意图;
图10为本申请公开的一种数据交互设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,为了实现网络层和数据链路层的数据交互,需要预先申请一大片连续的DDR地址空间。在实际应用过程中,该DDR地址空间可能剩余较多,但由于该DDR地址空间不能由其他服务使用,因此可能造成存储资源浪费。为此,本申请提供了一种数据交互方案,能够提高DDR的利用率,避免存储资源浪费。
参见图1所示,本申请实施例公开了一种数据交互方法,应用于网络层,包括:
S101、获取发送数据。
S102、根据发送数据的数据量和当前DDR空间申请DDR地址,并将发送数据存储至DDR地址。
在一种具体实施方式中,根据发送数据的数据量和当前DDR空间申请DDR地址,包括:计算发送数据的数据量以及当前DDR空间;从当前DDR空间中选择等于数据量的可用空间,并确定可用空间的DDR地址。在发送数据时,需要用多少DDR空间,即申请多少DDR空间,因此提高了DDR的利用率,也避免了存储资源的浪费。
S103、按照第一格式配置包含DDR地址的TX NORMAL描述符,并存储TX NORMAL描述符至DDR,以便数据链路层从DDR中获取TX NORMAL描述符,按照TX NORMAL描述符读取发送数据。
在一种具体实施方式中,第一格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位、第一个描述符标识位、最后一个描述符标识位、地址信息的长度。
第一格式可参见图2,图2所示的描述符为TX NORMAL描述符,其由网络层(CPU/驱动)进行设置/配置。图2所示的描述符由3个字段组成:TDES0---TDES2,一个字段32bits(若应用于64位系统,则一个字段64bits)。其中,TDES0的内容是TX BUFFER1的地址,TDES1的内容是TX BUFFER2的地址。BUFFER为DDR中的存储块。其中BUFFER的个数以及每个BUFFER的长度可以根据要发送的数据量以及当前DDR空间灵活调整。
TDES2是数据信息字段,其中:
Bit[31]为所有权标识位(图2中的OWN):bit[31]=1时,表示当前描述符所有权属于数据链路层(即MAC);Bit[31]=0,表示当前描述符的所有权属于网络层(即CPU)。当CPU在配置TX NORMAL描述符时,要将该字段设置为1。其中,本说明书中的所有权是指:描述符的使用所有权。例如:CPU配置完TX NORMAL描述符之后,该描述符给MAC使用,所以该描述符的所有权属于MAC。
Bit[30]=1,表示当前TX NORMAL描述符为发送数据的第一个描述符(由驱动进行判断,图2中的FD),当该bit=0,表示当前TX NORMAL描述符指示不是发送数据的第一个描述符(发送数据可能需要分多次发送,因此发送数据可能对应多个TX NORMAL描述符)。
Bit[29]=1,表示当前TX NORMAL描述符为发送数据的最后一个描述符(由驱动进行判断,图2中的LD),当该bit=0,表示当前TX NORMAL描述符指示不是发送数据的最后一个描述符。
Bit[28]为扩展位,用户可自定义该字段。
Bit[27-14]共14bits,表示BUFFER2的长度(图2中的FD),单位是字节Byte。
Bit[13-0]共14bits,表示BUFFER1的长度(图2中的FD),单位是字节Byte。
在一种具体实施方式中,数据链路层从DDR中获取TX NORMAL描述符,按照TXNORMAL描述符读取发送数据之后,还包括:数据链路层处理发送数据,并按照第二格式配置包含发送数据处理状态的TX STATUS描述符,存储TX STATUS描述符至DDR,以便网络层从DDR中获取TX STATUS描述符;第二格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
第二格式与第一格式相似,具体可参见图3,图3所示的描述符为TX STATUS描述符,其由数据链路层(MAC)进行设置/配置。图3所示的TX STATUS描述符由3个字段组成:TDES0---TDES2,一个字段32bits(若应用于64位系统,则一个字段64bits)。其中,TDES0的内容是TX BUFFER1地址中存储的数据的发送状态及校验状态等,TDES1的内容是TXBUFFER2地址中存储的数据的发送状态及校验状态等。
TDES2是数据信息字段,其中:
bit[31]为所有权标识位(图3中的OWN):bit[31]=1时,表示当前描述符所有权属于数据链路层(即MAC);Bit[31]=0,表示当前描述符的所有权属于网络层(即CPU)。
在OWN=0时,CPU读取TDES0-TDES2的内容,得知发送状态、校验状态等发送数据处理状态,进而进行判断,是继续写入新的发送数据,还是将校验发送失败的数据,再配置一遍TX NORMAL描述符。
RESV(Reserved,保留)可以由用户自定义各种状态,灵活应用。例如:是否将发送数据的时间戳丢掉,校验错误的帧,源地址是否校验错误,目的地址是否校验错误等。
可见,TX NORMAL描述符和TX STATUS描述符相对应。其中,TX NORMAL描述符供网络层配置发送数据存储地址,以使数据从网络层传输至数据链路层。TX STATUS供数据链路层写入发送数据的各种处理状态,以告知网络层。
需要说明的是,当前系统可能接收到其他设备发送的数据,因此对于接收数据,设置RX NORMAL描述符和RX STATUS描述符。其中,RX NORMAL描述符供网络层配置接收数据存储地址,以使数据链路层写入数据。RX STATUS供数据链路层写入接收数据的各种处理状态,以告知网络层。
在一种具体实施方式中,还包括:按照第三格式配置包含接收数据存储地址的RXNORMAL描述符,并存储RX NORMAL描述符至DDR,以便数据链路层在接收到接收数据后,从DDR中获取RX NORMAL描述符,按照RX NORMAL描述符存储接收数据;第三格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
第三格式具体可参见图4,图4所示的RX NORMAL描述符由网络层进行设置/配置,其由3个字段组成:TDES0---TDES2,一个字段32bits(若应用于64位系统,则一个字段64bits)。其中,TDES0的内容是TX BUFFER1的地址,TDES1的内容是TX BUFFER2的地址。BUFFER为DDR中的存储块。
TDES2是数据信息字段,其中:
Bit[31]为所有权标识位(图4中的OWN):bit[31]=1时,表示当前描述符所有权属于数据链路层(即MAC);Bit[31]=0,表示当前描述符的所有权属于网络层(即CPU)。
Bit[30-28]为扩展位,用户可自定义该字段。
Bit[27-14]共14bits,表示BUFFER2的长度,单位是字节Byte。
Bit[13-0]共14bits,表示BUFFER1的长度,单位是字节Byte。
在一种具体实施方式中,数据链路层按照RX NORMAL描述符存储接收数据,包括:若开启分离存储功能,则数据链路层按照RX NORMAL描述符存储接收数据对应的数据帧的帧头至缓存,存储数据帧的负载至DDR;若未开启分离存储功能,则数据链路层按照RXNORMAL描述符存储帧头和负载至DDR。
分离存储功能指:将接收数据对应的数据帧的帧头和负载分开存储,帧头存储于缓存,负载存储于DDR。这样将帧头存储在更靠近CPU但是空间小的缓存中,可以使CPU更快的读取到帧头,提高交互效率和性能。
具体的,若开启分离存储功能,则接收数据的存储示意图可参见图5。在图5中,接收数据对应两个RX NORMAL描述符(接收数据可能需要分多次存储,因此接收数据可能对应多个RX NORMAL描述符)。图5中的RX NORMAL描述符1为接收数据对应的第一个RX NORMAL描述符,且开启了分离存储功能,因此将帧头(图5中的Header)存储至缓存,故该描述符中的RX_BUFFER1_ADDR(RDES0)需记录Header的缓存(cache)地址,以方便CPU可以更快的获取到比较重要的Header。该描述符中的RX_BUFFER2_ADDR(RDES1)需记录负载(图5中的Payload)的DDR地址。图5中的RX NORMAL描述符2为接收数据对应的第二个RX NORMAL描述符,且因为开启了分离存储功能,因此第二个RX NORMAL描述符的RDES0为空(因为只有一个帧头,且已存储过),后续第三个、第四个RX NORMAL描述符的RDES0均为空。
若未开启分离存储功能,则接收数据的存储示意图可参见图6。在图6中,接收数据对应两个RX NORMAL描述符(接收数据可能需要分多次存储,因此接收数据可能对应多个RXNORMAL描述符)。图6中的RX NORMAL描述符1为接收数据对应的第一个RX NORMAL描述符,且未开启分离存储功能,因此将帧头(图6中的Header)和负载(即数据帧中的具体数据,图6中的Payload)均存储至DDR,故该描述符中的RX_BUFFER1_ADDR(RDES0)和RX_BUFFER2_ADDR(RDES1)均需记录DDR地址。其中,由于帧头的数据量很小,因此一般将帧头和其后的负载一起存储,如图5中的RX NORMAL描述符1中的RX_BUFFER1_ADDR(RDES0)所记录。
在一种具体实施方式中,数据链路层按照RX NORMAL描述符存储接收数据之后,还包括:数据链路层按照第四格式配置包含接收数据处理状态的RX STATUS描述符,存储RXSTATUS描述符至DDR,以便网络层从DDR中获取RX STATUS描述符;第四格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
第四格式具体可参见图7,图7所示的RX STATUS描述符由数据链路层进行设置/配置,其由3个字段组成:TDES0---TDES2,一个字段32bits(若应用于64位系统,则一个字段64bits)。其中,TDES0的内容是TX BUFFER1的地址,TDES1的内容是TX BUFFER2的地址。BUFFER为DDR中的存储块。
TDES2是数据信息字段,其中:
bit[31]为所有权标识位(图7中的OWN):bit[31]=1时,表示当前描述符所有权属于数据链路层(即MAC);Bit[31]=0,表示当前描述符的所有权属于网络层(即CPU)。
RECEIVE STATUS(接收状态)以由用户自定义各种状态,灵活应用。例如:是否将接收数据的时间戳丢掉,校验错误的帧,源地址是否校验错误,目的地址是否校验错误等。
可见,本申请实施例能够基于发送数据的数据量和当前DDR空间申请DDR地址,并利用TX NORMAL描述符记录当前申请的DDR地址,因此数据链路层可以按照TX NORMAL描述符读取当前发送的数据。在实际应用过程中,需要用多少DDR空间,即申请多少DDR空间,因此不用预先申请固定的DDR空间,提高了DDR的利用率,也避免了存储资源的浪费。
参见图8所示,本申请实施例公开了一种数据交互方案。假设该方案需要CPU将下述发送数据传输给MAC;并且对于接收数据,不采用Header和Payload分离存储的功能。
发送数据用16进制数表示,具体包括:
0x00000000,0x11111111,0x22222222,0x33333333
0x44444444,0x55555555,0x66666666,0x77777777
0x88888888,0x99999999,0xAAAAAAAA,0xBBBBBBBB
0xCCCCCCCC,0xDDDDDDDD,0Xeeeeeeee,0xFFFFFFFF
设定TX NORMAL描述符的起始地址为0x8000_0000,RX NORMAL描述符的起始地址为0x8000_1000。在此示例中,系统为32位,DDR地址(包括描述符所占用的地址和具体数据所占用的地址)是连续的,在实际应用中,用户可以根据DDR的使用情况灵活进行申请。
下述示例中的标号对应图8中的标号。
1、CPU/驱动配置TX NORMAL描述符1如下:
0x8000_0000(TDES0):写内容为0x8001_0000(即TX BUFFER1的地址);
0x8000_0004(TDES1):写内容为0x8002_0000(即TXBUFFER2的地址);
0x8000_0008(TDES2):bit[31]=1:表示描述符所有权为MAC;bit[30]=1:表示当前描述符为发送数据的第一个描述符;bit[29]=0:表示当前描述符不是最后一个描述符,bit[28]=0:补位字段。Bit[27-14]=0x10(用二进制数表示为:00000000010000):表示TXBUFFER1中有16个字节要发送。Bit[13-0]=0x10(用二进制数表示为:00000000010000):表示TX BUFFER2中有16个字节要发送。故拼接TDES2所有字段,用二进制数表示为:11000000000001000000000000010000,那么CPU配置TDES2为:0Xc004_0010。
CPU/驱动配置TX NORMAL描述符2如下:
0x8000_000C(TDES0):写内容为0x8003_0000(即TX BUFFER1的地址);
0x8000_0010(TDES1):写内容为0x8004_0000(即TXBUFFER2的地址);
0x8000_0014(TDES2):bit[31]=1:表示描述符所有权为MAC;bit[30]=0:表示当前描述符不是发送数据的第一个描述符;bit[29]=0:表示当前描述符不是最后一个描述符,bit[28]=0:补位字段。Bit[27-14]=0x10:表示TX BUFFER1中有16个字节要发送。Bit[13-0]=0x10:表示TX BUFFER2中有16个字节要发送。故CPU配置TDES2为0X8004_0010。
2、CPU驱动下发要发送的数据:
针对TX NORMAL描述符1:将发送数据0x00000000,0x11111111,0x22222222,0x33333333写入DDR地址(起始地址)0x8001_0000。将发送数据0x44444444,0x55555555,0x66666666,0x77777777写入DDR地址(起始地址)0x8002_0000。
针对TX NORMAL描述符2:将发送数据0x88888888,0x99999999,0xAAAAAAAA,0xBBBBBBBB写入DDR地址(起始地址)0x8003_0000。将发送数据0xCCCCCCCC,0xDDDDDDDD,0Xeeeeeeee,0xFFFFFFFF写入DDR地址(起始地址)0x8004_0000。
3、CPU/驱动配置接收数据的存储地址:
配置RX NORMAL描述符1如下:
0x8000_1000(RDES0):写内容为0x8011_0000(即RX BUFFER1的地址);
0x8000_1004(RDES1):写内容为0x8012_0000(即RXBUFFER2的地址);
0x8000_1008(RDES2):bit[31]=1:表示描述符所有权为MAC;bit[30-28]=0:补位字段。Bit[27-14]=0x10:表示RX BUFFER1可以接收16个字节。Bit[13-0]=0x10:表示RXBUFFER2可以接收16个字节。故CPU配置TDES2为0X1004_0010。
配置RX NORMAL描述符2如下:
0x8000_1008(RDES0):写内容为0x8013_0000(即RX BUFFER1的地址);
0x8000_100C(RDES1):写内容为0x8014_0000(即RXBUFFER2的地址);
0x8000_1010(RDES2):bit[31]=1:表示描述符所有权为MAC;bit[30-28]=0:补位字段。Bit[27-14]=0x10:表示RX BUFFER1可以接收16个字节。Bit[13-0]=0x10:表示RXBUFFER2可以接收16个字节。故CPU配置TDES2为0X1004_0010。
4、MAC读取TX NORMAL描述符1和2,以获得描述符中的内容(包括发送数据的存储地址等)。
5、MAC按照TX NORMAL描述符1和2读取发送数据:
MAC在解析读回的TX NORMAL描述符之后,解析出TX BUFFER的地址,发起读TXBUFFER的操作,将发送数据读回,然后MAC内部进行校验等处理,然后发送到PHY/网口(这是MAC内部的操作,具体可参照现有技术)。
6、MAC设置TX STATUS描述符,以写入发送数据的各种处理状态:
MAC内部在对发送数据进行校验,发送等操作之后,将校验状态,发送状态以及用户自定义的其他状态等,写入TX STATUS描述符,供CPU获取后,进行下一步的操作。
7、MAC获取RX NORMAL描述符1和2,以获得描述符中的内容(包括接收数据的存储地址等)。
若MAC获取到RX NORMAL描述符1,则读取0x8000_1000(RDES0),以获得其内容为0x8011_0000;读取0x8000_1004(RDES1),以获得其内容为0x8012_0000;读取0x8000_1008(RDES2),以获得RX BUFFER1的尺寸为16,RX BUFFER2的尺寸为16。
8、MAC写接收数据至RX NORMAL描述符1和2中记录的DDR地址:
MAC将接收数据的前16(0-15)字节写入RX BUFFER1,再将接收数据的(16-31)字节写入RX BUFFER2,接收数据的后续字节以此类推。
如果此时配置了HEADER和PAYLOAD分离的存储模式,则RX NORMAL描述符1的RXBUFFER1只存储HEADER,而PAYLOAD只存储在任一个RX NORMAL描述符的RX BUFFER2中。
9、CPU读任一个RX NORMAL描述符记录的DDR地址,即可获得接收数据。
10、MAC设置RX STATUS描述符,以写入接收数据的各种处理状态:
MAC内部在对接收数据进行校验,存储等操作之后,将校验状态,存储状态以及用户自定义的其他状态等,写入RX STATUS描述符,供CPU获取后,进行下一步的操作。
需要说明的是,TX NORMAL描述符、RX NORMAL描述符、RX STATUS描述符、TXSTATUS描述符在配置完成后,都会存储在DDR中,以便被读取。
本实施例能够提高网络传输时的内存(DDR)使用效率,同时支持接收数据帧的HEADER和PAYLOAD分离存储,以方便CPU可以更快的访问更重要的HEADER。同时描述符状态为Status描述符时候,MAC可以将发送/接收状态写回至描述符,供CPU读取。这样的方式比传统的MAC设置内部寄存器,然后CPU再来读取的方式,效率更高。
下面对本申请实施例提供的一种数据交互装置进行介绍,下文描述的一种数据交互装置与上文描述的一种数据交互方法可以相互参照。
参见图9所示,本申请实施例公开了一种数据交互装置,应用于网络层,包括:
获取模块901,用于获取发送数据;
申请模块902,用于根据发送数据的数据量和当前DDR空间申请DDR地址,并将发送数据存储至DDR地址;
交互模块903,用于按照第一格式配置包含DDR地址的TX NORMAL描述符,并存储TXNORMAL描述符至DDR,以便数据链路层从DDR中获取TX NORMAL描述符,按照TX NORMAL描述符读取发送数据。
在一种具体实施方式中,申请模块具体用于:
计算发送数据的数据量以及当前DDR空间;从当前DDR空间中选择等于数据量的可用空间,并确定可用空间的DDR地址。
在一种具体实施方式中,第一格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位、第一个描述符标识位、最后一个描述符标识位、地址信息的长度。
在一种具体实施方式中,还包括:
数据链路层处理发送数据,并按照第二格式配置包含发送数据处理状态的TXSTATUS描述符,存储TX STATUS描述符至DDR,以便网络层从DDR中获取TX STATUS描述符;第二格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
在一种具体实施方式中,还包括:
配置模块,用于按照第三格式配置包含接收数据存储地址的RX NORMAL描述符,并存储RX NORMAL描述符至DDR,以便数据链路层在接收到接收数据后,从DDR中获取RXNORMAL描述符,按照RX NORMAL描述符存储接收数据;第三格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
在一种具体实施方式中,还包括:
数据链路层按照第四格式配置包含接收数据处理状态的RX STATUS描述符,存储RX STATUS描述符至DDR,以便网络层从DDR中获取RX STATUS描述符;第四格式包括数据信息字段和至少一个地址信息字段,数据信息字段包括:所有权标识位和地址信息的长度。
在一种具体实施方式中,若开启分离存储功能,则数据链路层按照RX NORMAL描述符存储接收数据对应的数据帧的帧头至缓存,存储数据帧的负载至DDR;若未开启分离存储功能,则数据链路层按照RX NORMAL描述符存储帧头和负载至DDR。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据交互装置,该装置能够基于发送数据的数据量和当前DDR空间申请DDR地址,并利用TX NORMAL描述符记录当前申请的DDR地址,因此数据链路层可以按照TX NORMAL描述符读取当前发送的数据。在实际应用过程中,需要用多少DDR空间,即申请多少DDR空间,因此不用预先申请固定的DDR空间,提高了DDR的利用率,也避免了存储资源的浪费。
下面对本申请实施例提供的一种数据交互设备进行介绍,下文描述的一种数据交互设备与上文描述的一种数据交互方法及装置可以相互参照。
参见图10所示,本申请实施例公开了一种数据交互设备,包括:
存储器1001,用于保存计算机程序;
处理器1002,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据交互方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据交互方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“TX”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“TX”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“TX”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。