CN101556564A - 数据接收/发送方法和装置 - Google Patents

数据接收/发送方法和装置 Download PDF

Info

Publication number
CN101556564A
CN101556564A CNA2008101038941A CN200810103894A CN101556564A CN 101556564 A CN101556564 A CN 101556564A CN A2008101038941 A CNA2008101038941 A CN A2008101038941A CN 200810103894 A CN200810103894 A CN 200810103894A CN 101556564 A CN101556564 A CN 101556564A
Authority
CN
China
Prior art keywords
data
length
dma
transmission
configuration descriptor
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.)
Granted
Application number
CNA2008101038941A
Other languages
English (en)
Other versions
CN101556564B (zh
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.)
Datang Semiconductor Design Co Ltd
Original Assignee
Datang Mobile Communications Equipment Co Ltd
Leadcore 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 Datang Mobile Communications Equipment Co Ltd, Leadcore Technology Co Ltd filed Critical Datang Mobile Communications Equipment Co Ltd
Priority to CN2008101038941A priority Critical patent/CN101556564B/zh
Publication of CN101556564A publication Critical patent/CN101556564A/zh
Application granted granted Critical
Publication of CN101556564B publication Critical patent/CN101556564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

一种数据接收方法,包括:建立含两个DMA配置描述符的配置描述符循环链表;利用DMA链式模式形成循环接收链,设置表头为当前配置描述符,启动DMA;响应DMA接收数据完成中断;根据指示位的值和接收数据的长度,重新配置所述当前配置描述符并重新设置指示位的状态,设置下一个结点为当前配置描述符;再次等待中断。本发明有效地综合了现有的定长传输和头标识传输的优点,利用链式DMA,通过动态的配置DMA接收长度,实现数据的不定长传输。这样既兼顾了系统负担和传输效率又消除了数据丢失的风险。本发明还公开一种数据接收装置,一种数据发送方法和一种数据发送装置。

Description

数据接收/发送方法和装置
技术领域
本发明涉及数据传输技术领域,尤其涉及一种用于直接存储器访问(DMA,Direct Memory Access)的数据接收/发送方法、装置。
背景技术
DMA是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过中央处理单元(CPU),也不需要CPU干预。整个数据传输操作是在一个称为“DMA控制器”的控制下进行的。目前,可以采用以下两种方式进行DMA操作:
a、定长传输,即发送方将发送的数据按照发送方和接收方约定好的固定长度拆分,不足固定长度就填充无效数据至固定长度。采用定长传输时,由于接收方提前知道发送方发送的每一帧数据的长度,因此可以利用链式DMA将多个固定接收长度的DMA配置描述符做成循环链表,形成一条DMA循环接收链;在DMA根据前一个配置描述符的配置接收完一帧数据后,根据下一个DMA配置描述符链表项自动重新配置并启动DMA接收下一帧数据。
这里所述的无效数据是指,仅仅用于填充位置的数据而不是实际要发送的数据。相对于无效数据而言,实际要发送的数据可以称为有效数据。无效数据一般具有特殊的形式,以明显区别于有效数据。
b、头标识传输,即发送方在发送数据时,先发送一段用于指示待发送数据长度的标识头再发送数据;接收方根据标识头的指示可以相应地配置DMA寄存器的长度以接收发送方发送的数据。
无论采用哪种方式进行DMA操作都存在不足之处。定长传输难以同时兼顾系统负担和传输效率,头标识传输存在丢失数据的风险。
发明内容
有鉴于此,本发明解决的技术问题是提供一种用于DMA的数据接收/发送方法,既可以兼顾系统负担和传输效率还可以消除丢失数据的风险。
为此,本发明提供的技术方案如下:
一种数据接收方法,包括:
建立含两个DMA配置描述符的配置描述符循环链表;
利用DMA链式模式形成循环接收链,设置表头为当前配置描述符,启动DMA;
响应DMA接收数据完成中断;
根据指示位的值和接收数据的长度,重新配置所述当前配置描述符并重新设置指示位的状态,设置下一个结点为当前配置描述符;
再次等待DMA接收数据完成中断。
在一些实施例中,当所述指示位为第一预设值时,比较w和2×m-n以确定重新配置所述当前配置描述符中的传输长度,比较w和m-n以确定重新设置的指示位的值;
当所述指示位为第二预设值时,重新配置所述当前配置描述符中的传输长度为m,比较w和2×m-n以确定重新设置的指示位的值;
当所述指示位为第三预设值时,重新配置所述当前配置描述符中的传输长度为m,重新设置指示位的值;
其中,w表示接收数据中标识头所指示的数据长度,m表示各DMA配置描述符传输长度的初始值,n表示接收数据中标识头的长度。
在一些实施例中,如果w大于2×m-n,则重新配置所述第一个DMA寄存器的长度为w+n-2×m;否则,重新配置所述当前配置描述符中的传输长度为m。
在一些实施例中,如果w大于m-n,则重新设置指示位为第二预设值;否则,重新设置指示位为第一预设值;
在一些实施例中,如果w大于2×m-n,则重新设置指示位为第三预设值;否则,重新设置指示位为第一预设值。
在一些实施例中,按m≥s×(t1+t2)-b配置各配置描述符中传输长度的初始值;
其中,s表示数据传输速率,t1表示响应中断所需要的时间,t2表示从中断响应到配置DMA配置描述符完成所需要的时间,b表示通信口硬件接收缓存大小。
一种数据发送方法,包括:
在待发送的数据之前打上标识头;
根据标识头的长度、待发送数据的长度和接收方DMA配置描述符中传输长度的初始值,确定所要填充的无效数据的长度;
发送所述标识头、待发送的数据和填充的无效数据。
在一些实施例中,当w<m-n时,所要填充的无效数据的长度为m-n-w;
当m-n≤w<2×m-n时,所要填充的无效数据的长度为2×m-n-w;
当2×m-n≤w<3×m-n时,所要填充的无效数据的长度为3×m-n-w;
当w≥3×m-n时,所要填充的无效数据的长度为0;
其中,w表示待传输数据的长度,m表示接收方DMA配置描述符中传输长度的初始值,n表示标识头的长度。
一种数据接收装置,包括有一个DMA寄存器组和一个用于控制DMA寄存器组的控制单元,其中,
所述控制单元,用于建立含两个DMA配置描述符的配置描述符循环链表,利用DMA链式模式形成循环接收链;还用于在DMA根据当前配置描述符的配置接收数据完成后,根据指示位的值和接收数据的长度,重新配置该配置描述符传输长度并重新设置指示位的状态。
一种数据发送装置,包括:
第一单元,用于在待发送的数据之前打上标识头;
第二单元,用于根据标识头的长度、待发送数据的长度和接收方DMA配置描述符中传输长度的初始值,确定所要填充的无效数据的长度;和
第三单元,用于发送所述标识头、待发送的数据和填充的无效数据。
在本发明中,将长度固定的数据帧和长度可变的数据帧相结合传输数据,利用长度固定的数据帧传输部分数据,利用长度可变的数据帧传输另一部分的数据。相对于现有的定长传输而言,由于只采用两个长度固定的数据帧因此可以降低长度固定的数据帧对传输效率的影响,还会降低处理器的负担,从而可以很好地兼顾系统负担和传输效率。相对于现有的标识头传输而言,由于可以在接收下一段数据的缓冲时间内根据标识头所指示的数据长度完成对DMA配置描述符的重新设置,从而避免了数据丢失。本发明有效地综合了现有的定长传输和头标识传输的优点,利用链式DMA,通过动态的配置DMA接收长度,实现数据的不定长传输。这样既兼顾了系统负担和传输效率又消除了数据丢失的风险。
附图说明
图1是本发明提出的一种数据传输格式;
图2是一个用于接收方的数据接收方法的实施例流程图;
图3是另一个用于接收方的数据接收方法的实施例流程图;
图4是一个用于发送方的发送数据方法的实施例流程图;
图5是一个用于接收方的数据接收装置的实施例示意图;
图6是一个用于发送方的数据发送装置的实施例示意图。
具体实施方式
采用定长传输方式进行DMA操作时,如果数据帧的长度设置得越短,传输数据的长度大于数据帧的长度,则所需要的DMA传输次数越多,在接收方DMA在数据传输过程中完成的中断次数就越多,处理器响应中断的次数也就越多,处理器的负担也就越大。反之,如果数据帧的长度设置得越长,传输数据的长度小于数据帧的长度,则需要填充的无效数据就越多,有效数据的传输效率也就越低。因此,采用定长传输方式进行DMA操作时,难以同时兼顾系统负担和传输效率。
采用头标识传输方式进行DMA操作时,因为只有标识头长度是固定的而数据段长度不固定,且数据段长度要等到标识头接收并解析完成才能确定。而接收方从完成标识头的接收到完成DMA的配置,其间的时间间隔会受到接收方系统的负荷状态影响,接收方系统的负荷越重,配置DMA的时延就越长。当发送方启动DMA发送数据时,接收方没有及时完成DMA的重新配置,必然会造成数据丢失。
本发明提供的用于DMA的数据接收/发送方法,既可以兼顾系统负担和传输效率还可以消除丢失数据的风险。
采用本发明提供的方法时,应该预先在发送方和接收方统一约定数据的传输格式。在一个实施例中,接收方按照图1所示的传输格式接收数据。在图1所示的传输格式中,包括前面两个长度固定的数据帧和后面一个长度可变的数据帧。对于长度固定的数据帧,其长度都为m字节。
以下,将第一个长度固定的数据帧称为标识帧,将其它长度固定的数据帧称为缓存帧,将长度可变的数据帧称为数据段。
标识帧包括标识头和一段数据,其中前n个字节为标识头,用于指示传输数据的长度,如果传输数据的长度为w则标识头指示的长度也为w;后m-n个字节为数据,n≤m。可以看出,当传输数据的长度w小于或等于m-n时,在标识帧中就可以完成所有数据的传输,在这种情况下也就不再需要缓存帧和数据段。当m-n<w≤2×m-n时,利用标识帧和缓存帧即可完成数据的传输,在这种情况下不再需要后面的数据段。其中。当w>2×m-n时,需要利用标识帧、缓存帧和数据段来传输数据。
在接收方,一种可选的接收方式是采用链式DMA接收数据。在接收方可以将两个DMA配置描述符做成循环链表形成循环接收链,每个DMA配置描述符初始传输长度都是m字节。这样,可以保证当一次DMA传输完成后重新配置当前配置描述符时,DMA已在接收下一段数据。DMA接收下一段数据的时间可以作为重新配置当前配置描述符的缓冲时间。
图2示出了一个用于接收方的数据接收方法的实施例流程。
在步骤201,初始配置。
所述初始配置包括:建立含两个DMA配置描述符的配置描述符循环链表;利用DMA链式模式形成循环接收链,设置表头为当前配置描述符;将特定的指示位Flag的值设置为0。
其中,可以根据内存缓存和外设硬件缓存等配置两个DMA配置描述符,并设置它们的传输长度为m。将这两个DMA配置描述符做成循环链表,使用链式DMA模式利用该循环链表做成循环接收链。
通过Flag的值,可以得知接收的是位于传输格式中哪个位置的数据。其中,一种Flag值与位置的对应关系可以是:
Flag=0:标识帧;
Flag=1:缓存帧;
Flag=2:数据段。
完成初始配置后,等待DMA接收数据完成中断。
DMA接收数据完成中断到来时,在步骤202,响应DMA接收数据完成中断。
由于根据Flag的值可以得知接收的是位于传输格式中哪个位置的数据,因此可以根据Flag的值决定后续的操作。
当Flag=0时,表示接收的是标识帧,在这种情况下:
在步骤203,比较w和2×m-n以确定重新配置当前配置描述符中的传输长度。并且在步骤204,比较w和m-n以确定重新设置的Flag值。
在步骤205,重新配置当前配置描述符中的传输长度和Flag的值。
更具体地说:
如果w>2×m-n,重新配置当前配置描述符中的传输长度为w+n-2×m;
如果w≤2×m-n,则重新配置当前配置描述符中的传输长度为m;
如果w>m-n,则重新设置Flag为1;
如果w≤m-n,则重新设置Flag为0。
当Flag=1时,表示接收的是缓存帧,在这种情况下:
在步骤206,比较w和2×m-n以确定重新设置的Flag的值。然后,
在步骤207,重新配置当前配置描述符中的传输长度为m,重新设置Flag的值。
更具体地说:
如果w>2×m-n,则重新设置Flag为2;
如果w≤2×m-n,则重新设置Flag为0。
当Flag=2时,表示接收的是数据段,在这种情况下:
在步骤208,重新配置当前配置描述符中的传输长度为m,重新设置Flag为0。
重新配置当前配置描述符中的传输长度,并重新设置Flag的值后,
在步骤209,设置接收链中的下一个结点为当前配置描述符。
然后再次等待DMA接收数据完成中断。
下面,对利于上述实施例接收数据的一次完整流程进行具体说明。
在接收方配置完成DMA的传输长度和工作模式之后,当发送方发送数据给接收方时,接收方将依次接收发送方发送的标识帧、缓存帧和数据段。
接收完成标识帧后,响应DMA接收完成中断,此时Flag=0。
由于Flag=0,此时将比较w和2×m-n以确定重新配置当前配置描述符中的传输长度,并且比较w和m-n以确定重新设置的Flag值。
如果w>2×m-n,则说明传输数据很长,发送方会利用标识帧、缓存帧和数据段来传输数据,因此需要将当前配置描述符中的传输长度重新配置为w+n-2×m。
如果w≤2×m-n,则说明传输数据不是很长,发送方不会利用数据段传输数据,只要将当前配置描述符中的传输长度重新配置为m即可。
如果w>m-n,则说明需要在下一次中断接收缓存帧,此时需要将Flag重新设置为1;
如果w≤m-n,则说明不需要接收缓存帧,此时应该重新设置Flag为0,这种情况也可以视为保持Flag值不变。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
接收完缓存帧后,响应DMA接收完成中断,此时Flag=1。
由于Flag=1,因此不会利用当前配置描述符接收数据段,只要将当前配置描述符中的传输长度重新配置为m即可。但是,需要通过比较w和2×m-n以确定是否会接收数据段。
如果w>2×m-n,则说明需要在下一次中断接收数据段,此时需要将Flag设置为2;
如果w≤2×m-n,则说明不需要接收数据段,此时将Flag设置为0。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
可以保证当一次DMA传输完成后重新配置当前配置描述符时,DMA已在接收下一段数据。DMA接收下一段数据的时间可以作为重新配置当前配置描述符的缓冲时间。
这里需要指出的是,完成下一段数据的接收前,应该保证对当前配置描述符的配置也全部完成,这样才能避免丢失数据。
可以看出,DMA接收下一段数据的时间可以作为重新配置当前配置描述符的缓冲时间。根据发送方和接收方传输预定,标识帧、缓存帧和数据段均不小于m,故缓冲时间与m有关,m越大则缓冲时间越长,m越小则缓冲时间越短。为保证接收方不会像头标识传输一样可能因为无法及时重新配置DMA而丢失数据,m的设置必须保证缓冲时间大于接收方从响应中断到完成配置描述符重新配置的时间。
可以按m≥s×(t1+t2)-b来设置缓存帧和标识帧的长度,进而将各DMA寄存器的初始长度配置为m。其中,s表示数据传输速率,t1表示响应中断所需要的时间,t2表示从中断响应到配置DMA配置描述符完成所需要的时间,b表示通信口硬件接收缓存大小。
接收完数据段后,响应数据接收完成中断,此时Flag=2。
由于Flag=2,因此本次数据传输结束,应该将当前配置描述符中的传输长度重新配置为m,并将Flag设置为0。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
采用上述实施例时,将长度固定的数据帧和长度可变的数据帧相结合,利用长度固定的数据帧传输部分数据,利用长度可变的数据帧传输另一部分的数据。相对于现有的定长传输而言,由于只采用两个长度固定的数据帧因此可以降低长度固定的数据帧对传输效率的影响,还会降低处理器的负担,从而可以很好地兼顾系统负担和传输效率。相对于现有的标识头传输而言,由于可以在接收缓存帧的缓冲时间内根据标识头所指示的数据长度完成当前配置描述符的重新配置,从而避免了数据丢失。
经过分析可知,上述实施例有效地综合了现有的定长传输和头标识传输的优点,因此采用上述实施例接收数据既可以兼顾系统负担和传输效率还可以消除丢失数据的风险。
图3示出了另一个可选实施例的流程。
在步骤301,初始配置。
步骤301的配置与步骤201相同,此不赘述。
完成初始配置后,等待DMA接收数据完成中断。DMA接收数据完成中断到来时,在步骤302,响应DMA接收数据完成中断。
在步骤303,判断Flag是否等于0。如果是,则执行步骤304,否则执行步骤310。
在步骤304,根据接收数据中标识头的指示获得传输数据的长度w。
在步骤305,比较w和m-n。如果w≤m-n,则执行步骤306;否则,执行步骤307。
在步骤306,重新配置当前配置描述符的传输长度为m,重新设置Flag为0,转步骤316。
在步骤307,比较w和2×m-n。如果w≤2×m-n,则执行步骤308;否则,执行步骤309。
在步骤308,重新配置当前配置描述符的传输长度为m,重新设置Flag为1,转步骤316。
在步骤309,重新配置当前配置描述符的传输长度为w+n-2×m,重新设置Flag为1,转步骤316。
在步骤310,判断Flag是否等于1。如果是,则执行步骤311,否则执行步骤315。
在步骤311,重新配置当前配置描述符的传输长度为m,转步骤316。
在步骤312,比较w和2×m-n。如果w≤2×m-n,则执行步骤313;否则,执行步骤314。
在步骤313,重新设置Flag为0。
在步骤314,重新设置Flag为2。
在步骤315,重新配置当前配置描述符的传输长度为m,重新设置Flag为0。
步骤316,将接收链中的下一个结点设为当前配置描述符。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
然后再次等待DMA接收数据完成中断。
图4示出了一个用于发送方的发送数据方法实施例。
在步骤401,在待发送的数据之前打上标识头。
在步骤402,根据标识头的长度、待发送数据的长度和接收方DMA配置描述符中传输长度的初始值,确定所要填充的无效数据的长度。
在步骤403,发送所述标识头、待发送的数据和填充的无效数据。
其中,一个可选的确定所要填充的无效数据的长度的方式是:
当w<m-n时,所要填充的无效数据的长度为m-n-w;
当m-n≤w<2×m-n时,所要填充的无效数据的长度为2×m-n-w;
当2×m-n≤w<3×m-n时,所要填充的无效数据的长度为3×m-n-w;
当w≥3×m-n时,所要填充的无效数据的长度为0。
在一个具体的应用场景中:在两个处理器之间利用高速串口进行通信,串口通讯速率为16Mbps,传输的数据包含控制命令字和视频数据流两种,最大数据帧长度为49.5K字节。接收方处理器主频为72MHz,高速串口硬件接收缓存为4字节,最大中断响应时间为20微秒。
如果采用定长传输。假设定长长度为1K字节。那么当以15帧/秒的速率传输QCIF分辨率的RGB565数据时,1秒钟数据量为742.5K字节,1秒钟内会有742.5次中断,而当在这1秒钟之间同时传输20个命令字,每个命令字为20字节时,1秒钟传输的无效数据量大约有20K字节,占总带宽的1%。如果定长长度变短一些,中断次数会更多;如果定长长度变长一些,带宽浪费会更多。可见无论定长长度设置为多少都难以兼顾系统负担和传输效率。
如果采用头标识传输。则从头标识数据接收完成的中断响应,到根据接收到的头标识动态配置直接存储器完成之间超过2微秒,接收方高速串口硬件接收缓存就会溢出,而接收方最大中断响应时间远大于微秒。所以当系统忙时,该情况是极有可能发生的。
而如果使用上述各实施例所示的方法,对于72MHz的处理器来说,动态配置直接存储器完成时间不超过1微秒。根据前面n和m的计算公式,可设置n为2字节,设置m为64字节。m的计算原理就是为了避免像头标识传输一样存在丢失数据的风险。所以相比于头标识传输可见各实施例所示的方法能解决丢失数据的风险。
当以15帧/秒的速率传输QCIF分辨率的RGB565数据时,1秒钟只有45个中断。而当在这1秒钟之间同时传输20个命令字,每个命令字为20字节时,1秒钟传输的无效数据量大约有0.86K字节,仅占总带宽的0.043%。相比于定长传输可见各实施例所示的方法能同时兼顾系统负担和传输效率。
图5示出了一个用于接收方的数据接收装置500,数据接收装置500包括一个DMA寄存器组51和一个用于控制DMA寄存器组51的控制单元52。
控制单元52用于建立含两个DMA配置描述符的配置描述符循环链表,利用DMA链式模式形成循环接收链;还用于在DMA根据当前配置描述符的配置接收数据完成后,根据指示位的值和接收数据的长度,重新配置该配置描述符传输长度并重新设置指示位的状态。
下面,对利于装置500接收数据的一次完整流程进行具体说明。
在接收方控制单元52配置完成DMA的传输长度和工作模式之后,当发送方发送数据给接收方时,在接收方DMA寄存器组51将依次接收发送方发送的标识帧、缓存帧和数据段。
DMA寄存器组51接收完成标识帧后,控制单元52响应DMA接收完成中断,此时Flag=0。
由于Flag=0,此时控制单元52将比较w和2×m-n以确定重新配置当前配置描述符中的传输长度,并且比较w和m-n以确定重新设置的Flag值。
如果w>2×m-n,则说明传输数据很长,发送方会利用标识帧、缓存帧和数据段来传输数据,因此需要将当前配置描述符中的传输长度重新配置为w+n-2×m。
如果w≤2×m-n,则说明传输数据不是很长,发送方不会利用数据段传输数据,只要将当前配置描述符中的传输长度重新配置为m即可。
如果w>m-n,则说明需要在下一次中断接收缓存帧,此时需要将Flag重新设置为1;
如果w≤m-n,则说明不需要接收缓存帧,此时应该重新设置Flag为0,这种情况也可以视为保持Flag值不变。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
DMA寄存器组51接收完缓存帧后,控制单元52响应DMA接收完成中断,此时Flag=1。
由于Flag=1,因此不会利用当前配置描述符接收数据段,控制单元52只要将当前配置描述符中的传输长度重新配置为m即可。但是,需要通过比较w和2×m-n以确定是否会接收数据段。
如果w>2×m-n,则说明需要在下一次中断接收数据段,此时需要将Flag设置为2;
如果w≤2×m-n,则说明不需要接收数据段,此时将Flag设置为0。
重新配置当前配置描述符中的传输长度和Flag的值后,设置接收链中的下一个结点为当前配置描述符。
图6示出了一个用于发送方的数据发送装置600,数据发送装置600包括第一单元61、第二单元62和第三单元63。
第一单元61用于在待发送的数据之前打上标识头。第二单元62用于根据标识头的长度、待发送数据的长度和接收方DMA接收的初始长度,确定所要填充的无效数据的长度。第三单元63用于发送所述标识头、待发送的数据和填充的无效数据。
其中,一个可选的确定所要填充的无效数据的长度的方式是:
当w<m-n时,所要填充的无效数据的长度为m-n-w;
当m-n≤w<2×m-n时,所要填充的无效数据的长度为2×m-n-w;
当2×m-n≤w<3×m-n时,所要填充的无效数据的长度为3×m-n-w;
当w≥3×m-n时,所要填充的无效数据的长度为0。
本领域技术人员可以明白,这里结合所公开的实施例描述的各种示例性的方法步骤和装置单元均可以电子硬件、软件或二者的结合来实现。为了清楚地示出硬件和软件之间的可交换性,以上对各种示例性的步骤和单元均以其功能性的形式进行总体上的描述。这种功能性是以硬件实现还是以软件实现依赖于特定的应用和整个系统所实现的设计约束。本领域技术人员能够针对每个特定的应用,以多种方式来实现所描述的功能性,但是这种实现的结果不应解释为倒是背离本发明的范围。
利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程的逻辑器件、分立门或者晶体管逻辑、分立硬件组件或者他们之中的任意组合,可以实现或执行结合这里公开的实施例描述的各种示例性的单元。通用处理器可能是微处理器,但是在另一种情况中,该处理器可能是任何常规的处理器、控制器、微控制器或者状态机。处理器也可能被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或者更多结合DSP核心的微处理器或者任何其他此种结构。
结合上述公开的实施例所描述的方法的步骤可直接体现为硬件、由处理器执行的软件模块或者这二者的组合。软件模块可能存在于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其他形式的存储媒质中。一种典型存储媒质与处理器耦合,从而使得处理器能够从该存储媒质中读信息,且可向该存储媒质写信息。在替换实例中,存储媒质是处理器的组成部分。处理器和存储媒质可能存在于一个ASIC中。该ASIC可能存在于一个用户站中。在一个替换实例中,处理器和存储媒质可以作为用户站中的分立组件存在。
提供所述公开的实施例,可以使得本领域技术人员能够实现或者使用本发明。对于本领域技术人员来说,这些实施例的各种修改是显而易见的,并且这里定义的总体原理也可以在不脱离本发明的范围和主旨的基础上应用于其他实施例。以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1、一种数据接收方法,其特征在于,包括:
建立含两个DMA配置描述符的配置描述符循环链表;
利用DMA链式模式形成循环接收链,设置表头为当前配置描述符,启动DMA;
响应DMA接收数据完成中断;
根据指示位的值和接收数据的长度,重新配置所述当前配置描述符并重新设置指示位的状态,设置下一个结点为当前配置描述符;
再次等待DMA接收数据完成中断。
2、如权利要求1所述的方法,其特征在于:
当所述指示位为第一预设值时,比较w和2×m-n以确定重新配置所述当前配置描述符中的传输长度,比较w和m-n以确定重新设置的指示位的值;
当所述指示位为第二预设值时,重新配置所述当前配置描述符中的传输长度为m,比较w和2×m-n以确定重新设置的指示位的值;
当所述指示位为第三预设值时,重新配置所述当前配置描述符中的传输长度为m,重新设置指示位的值;
其中,w表示接收数据中标识头所指示的数据长度,m表示各DMA配置描述符传输长度的初始值,n表示接收数据中标识头的长度。
3、如权利要求2所述的方法,其特征在于,如果w大于2×m-n,则重新配置所述第一个DMA寄存器的长度为w+n-2×m;否则,重新配置所述当前配置描述符中的传输长度为m。
4、如权利要求2所述的方法,其特征在于,如果w大于m-n,则重新设置指示位为第二预设值;否则,重新设置指示位为第一预设值。
5、如权利要求2所述的方法,其特征在于,如果w大于2×m-n,则重新设置指示位为第三预设值;否则,重新设置指示位为第一预设值。
6、如权利要求2至5任一项所述的方法,其特征在于,按m≥s×(t1+t2)-b配置各配置描述符中传输长度的初始值;
其中,s表示数据传输速率,t1表示响应中断所需要的时间,t2表示从中断响应到配置DMA配置描述符完成所需要的时间,b表示通信口硬件接收缓存大小。
7、一种数据发送方法,其特征在于,包括:
在待发送的数据之前打上标识头;
根据标识头的长度、待发送数据的长度和接收方DMA配置描述符中传输长度的初始值,确定所要填充的无效数据的长度;
发送所述标识头、待发送的数据和填充的无效数据。
8、如权利要求7所述的方法,其特征在于:
当w<m-n时,所要填充的无效数据的长度为m-n-w;
当m-n≤w<2×m-n时,所要填充的无效数据的长度为2×m-n-w;
当2×m-n≤w<3×m-n时,所要填充的无效数据的长度为3×m-n-w;
当w≥3×m-n时,所要填充的无效数据的长度为0;
其中,w表示待传输数据的长度,m表示接收方DMA配置描述符中传输长度的初始值,n表示标识头的长度。
9、一种数据接收装置,包括有一个DMA寄存器组和一个用于控制DMA寄存器组的控制单元,其特征在于,
所述控制单元,用于建立含两个DMA配置描述符的配置描述符循环链表,利用DMA链式模式形成循环接收链;还用于在DMA根据当前配置描述符的配置接收数据完成后,根据指示位的值和接收数据的长度,重新配置该配置描述符传输长度并重新设置指示位的状态。
10、一种数据发送装置,其特征在于,包括:
第一单元,用于在待发送的数据之前打上标识头;
第二单元,用于根据标识头的长度、待发送数据的长度和接收方DMA配置描述符中传输长度的初始值,确定所要填充的无效数据的长度;和
第三单元,用于发送所述标识头、待发送的数据和填充的无效数据。
CN2008101038941A 2008-04-11 2008-04-11 数据接收/发送方法和装置 Active CN101556564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101038941A CN101556564B (zh) 2008-04-11 2008-04-11 数据接收/发送方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101038941A CN101556564B (zh) 2008-04-11 2008-04-11 数据接收/发送方法和装置

Publications (2)

Publication Number Publication Date
CN101556564A true CN101556564A (zh) 2009-10-14
CN101556564B CN101556564B (zh) 2011-08-24

Family

ID=41174683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101038941A Active CN101556564B (zh) 2008-04-11 2008-04-11 数据接收/发送方法和装置

Country Status (1)

Country Link
CN (1) CN101556564B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547847A (zh) * 2010-12-29 2012-07-04 迈普通信技术股份有限公司 一种无线聚合帧的接收处理方法及接收装置
CN102681953A (zh) * 2011-03-15 2012-09-19 联芯科技有限公司 直接存储器存取装置及其数据接收方法
CN102819406A (zh) * 2012-07-04 2012-12-12 浙江宇视科技有限公司 一种前端数据存储方法及装置
CN103514126A (zh) * 2012-06-26 2014-01-15 京信通信系统(广州)有限公司 一种数据的接收方法、系统以及装置
CN104468404A (zh) * 2014-11-07 2015-03-25 迈普通信技术股份有限公司 一种缓冲区配置方法及装置
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN105103145A (zh) * 2013-04-10 2015-11-25 三菱电机株式会社 数据转发装置及数据转发方法
CN106227673A (zh) * 2016-07-25 2016-12-14 东南大学—无锡集成电路技术研究所 一种基于dma的序列波形合成方法
CN106547709A (zh) * 2016-11-24 2017-03-29 盛科网络(苏州)有限公司 灵活配置多通道dma控制器的方法及装置
CN107423654A (zh) * 2017-08-11 2017-12-01 四川长虹电器股份有限公司 一种接收不定长条形码的方法
CN109522262A (zh) * 2018-10-10 2019-03-26 上海亚明照明有限公司 适用于不定长数据帧的接收方法、系统、电子终端及存储介质
CN109976501A (zh) * 2017-12-28 2019-07-05 中移物联网有限公司 一种低功耗控制方法、装置、系统及存储介质
CN113946527A (zh) * 2021-09-30 2022-01-18 中国船舶重工集团公司第七二四研究所 一种基于PCIe总线的多通道DMA交互设计方法
US11803490B2 (en) 2019-03-27 2023-10-31 Wuxi Hisky Medical Technologies Co., Ltd. Apparatus and method for data transmission and readable storage medium

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547847B (zh) * 2010-12-29 2015-06-03 迈普通信技术股份有限公司 一种无线聚合帧的接收处理方法及接收装置
CN102547847A (zh) * 2010-12-29 2012-07-04 迈普通信技术股份有限公司 一种无线聚合帧的接收处理方法及接收装置
CN102681953A (zh) * 2011-03-15 2012-09-19 联芯科技有限公司 直接存储器存取装置及其数据接收方法
CN102681953B (zh) * 2011-03-15 2015-07-29 联芯科技有限公司 直接存储器存取装置及其数据接收方法
CN103514126B (zh) * 2012-06-26 2016-07-20 京信通信系统(广州)有限公司 一种数据的接收方法、系统以及装置
CN103514126A (zh) * 2012-06-26 2014-01-15 京信通信系统(广州)有限公司 一种数据的接收方法、系统以及装置
CN102819406A (zh) * 2012-07-04 2012-12-12 浙江宇视科技有限公司 一种前端数据存储方法及装置
CN105103145B (zh) * 2013-04-10 2018-02-16 三菱电机株式会社 数据转发装置及数据转发方法
CN105103145A (zh) * 2013-04-10 2015-11-25 三菱电机株式会社 数据转发装置及数据转发方法
CN104468404B (zh) * 2014-11-07 2017-08-29 迈普通信技术股份有限公司 一种缓冲区配置方法及装置
CN104468404A (zh) * 2014-11-07 2015-03-25 迈普通信技术股份有限公司 一种缓冲区配置方法及装置
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN104899182B (zh) * 2015-06-09 2017-10-31 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN106227673A (zh) * 2016-07-25 2016-12-14 东南大学—无锡集成电路技术研究所 一种基于dma的序列波形合成方法
CN106547709B (zh) * 2016-11-24 2019-05-21 盛科网络(苏州)有限公司 灵活配置多通道dma控制器的方法及装置
CN106547709A (zh) * 2016-11-24 2017-03-29 盛科网络(苏州)有限公司 灵活配置多通道dma控制器的方法及装置
CN107423654B (zh) * 2017-08-11 2020-06-09 四川长虹电器股份有限公司 一种接收不定长条形码的方法
CN107423654A (zh) * 2017-08-11 2017-12-01 四川长虹电器股份有限公司 一种接收不定长条形码的方法
CN109976501A (zh) * 2017-12-28 2019-07-05 中移物联网有限公司 一种低功耗控制方法、装置、系统及存储介质
CN109522262A (zh) * 2018-10-10 2019-03-26 上海亚明照明有限公司 适用于不定长数据帧的接收方法、系统、电子终端及存储介质
CN109522262B (zh) * 2018-10-10 2022-12-13 上海亚明照明有限公司 适用于不定长数据帧的接收方法、系统、电子终端及存储介质
US11803490B2 (en) 2019-03-27 2023-10-31 Wuxi Hisky Medical Technologies Co., Ltd. Apparatus and method for data transmission and readable storage medium
CN113946527A (zh) * 2021-09-30 2022-01-18 中国船舶重工集团公司第七二四研究所 一种基于PCIe总线的多通道DMA交互设计方法
CN113946527B (zh) * 2021-09-30 2023-06-20 中国船舶集团有限公司第七二四研究所 一种基于PCIe总线的多通道DMA交互设计方法

Also Published As

Publication number Publication date
CN101556564B (zh) 2011-08-24

Similar Documents

Publication Publication Date Title
CN101556564B (zh) 数据接收/发送方法和装置
US10552352B2 (en) Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
CN100417134C (zh) 数据处理设备和流控制方法
US7849252B2 (en) Providing a prefix for a packet header
CN111126589B (zh) 神经网络数据处理装置、方法和电子设备
US7571271B2 (en) Lane merging
KR950703766A (ko) 호스트 지시 조합을 구비하는 장치(a device with host indication combination)
CN111149097B (zh) 一种主芯片、从芯片及芯片间的dma传输系统
EP4002137B1 (en) Secure digital (sd) direct command for improving throughput with a reduced memory footprint
US20030099195A1 (en) Method and apparatus for notifying data congestion in a communication system
CN116192772A (zh) 一种基于空间缓存的cpu收发包调度装置及方法
KR100478112B1 (ko) 패킷 제어 시스템 및 통신 방법
CN106326157A (zh) 一种接收串口不定长数据的方法及装置
WO2016095323A1 (zh) 一种基于串口服务器的数据传输方法及装置
US7610415B2 (en) System and method for processing data streams
WO2018201694A1 (zh) 在100g以上光传输芯片中控制ptp报文的方法及系统
CN116431558B (zh) 一种基于axi协议的请求响应方法、装置、系统及介质
CN110012367B (zh) 用于gpon olt的omci组帧装置及组帧方法
CN101938453A (zh) 一种实现中央处理器与以太网进行数据传输的装置与方法
US9906468B2 (en) Packet traffic control in a network processor
US11646971B2 (en) Limiting backpressure with bad actors
CN111193650B (zh) 一种基于sae as5643标准的节点收发控制装置
CN101192911B (zh) 一种时分复用模式下传输数据的方法和系统
CN110765044B (zh) 数据包传输装置及系统
CN116582412B (zh) Otn跨芯片发送、接收开销及请求的方法、装置和介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Free format text: FORMER OWNER: DATANG MOBILE COMMUNICATION EQUIPMENT CO., LTD. DATANG MOBILE COMMUNICATION EQUIPMENTCO., LTD., SHANGHAI

Effective date: 20120323

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120323

Address after: 201206 Pudong New Area Mingyue Road, Shanghai, No. 1258

Patentee after: Leadcore Technology Co., Ltd.

Address before: 201206 Pudong New Area Mingyue Road, Shanghai, No. 1258

Co-patentee before: Datang Mobile Communication Equipment Co., Ltd.

Patentee before: Leadcore Technology Co., Ltd.

Co-patentee before: Datang Mobile Communication Equipment Co., Ltd., Shanghai

ASS Succession or assignment of patent right

Owner name: DATANG SEMICONDUCTOR DESIGN CO., LTD.

Free format text: FORMER OWNER: LEADCORE TECHNOLOGY CO., LTD.

Effective date: 20141104

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 201206 PUDONG NEW AREA, SHANGHAI TO: 100094 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20141104

Address after: 100094, No. 6 Yongjia North Road, Beijing, 5, 3, northwest side of Haidian District

Patentee after: Datang Semiconductor Design Co., Ltd.

Address before: 201206 Pudong New Area Mingyue Road, Shanghai, No. 1258

Patentee before: Leadcore Technology Co., Ltd.