一种数据的接收方法、系统以及装置转让专利

申请号 : CN201210214211.6

文献号 : CN103514126B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘军赖福琪方彬浩

申请人 : 京信通信系统(广州)有限公司

摘要 :

本发明公开了一种数据的接收方法、系统以及装置,包括:DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,数据帧头携带用于表征数据帧的数据长度的信息,在确定接收并存储完成数据帧头后读取第一存储空间保存的数据帧头,并将数据长度的信息发送至应用程序,以及,在确定接收并存储完成数据帧头后,将接收的数据帧的数据体存储在第二存储空间;该应用程序根据从DMA控制器获取的数据长度的信息,确定DMA控制器将接收并存储完成数据体后,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体。采用本技术方案,能够避免应用程序从存储空间读取到的数据帧与实际的数据帧不一致的问题,提高应用程序读取数据的成功率。

权利要求 :

1.一种数据的接收方法,其特征在于,包括:

直接内存存取DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息,在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序,以及,在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间;

所述应用程序根据所述DMA控制器发送的所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据体后,读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体,具体的,所述应用程序将所述数据长度的信息对应的数据长度与所述数据帧头的数据长度的差值,确定为所述数据体的数据长度;根据所述数据体的数据长度,确定所述DMA控制器将接收的所述数据长度的数据体存储在第二存储空间需要的时长;并在经过所述时长后,确定所述DMA控制器接收并存储完成所述数据体。

2.如权利要求1所述的方法,其特征在于,DMA控制器确定接收并存储完所述数据帧头,包括:DMA控制器在监控到所述第一存储空间对应的存储区域被所述数据帧头全部占用后,确定接收并存储完所述数据帧头,其中,所述第一存储空间对应的存储区域大小与所述数据帧头的数据长度匹配;或DMA控制器在监控到所述第一存储空间对应的存储区域被所述数据帧头占用的大小与预先保存的所述数据帧头的数据长度匹配时,确定接收并存储完所述数据帧头。

3.如权利要求1所述的方法,其特征在于,所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域相邻、且所述第二存储空间对应的存储区域位于所述第一存储空间对应的存储区域之后;

应用程序读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体,包括:应用程序确定所述第一存储空间的地址的起始地址;并

根据所述DMA控制器发送的数据长度的信息,从所述第一存储空间的地址的起始地址开始,读取所述数据长度的数据作为所述数据帧的数据帧头以及数据体。

4.如权利要求1所述的方法,其特征在于,所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域非相邻;

应用程序读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体,包括:应用程序确定所述第一存储空间的地址以及所述第二存储空间的地址;

根据所述数据帧的数据帧头的数据长度,从所述第一存储空间的地址对应的存储区域读取所述数据帧头的数据长度的数据,作为所述数据帧的数据帧头;以及根据所述数据帧的数据体的数据长度,从所述第二存储空间的地址对应的存储区域读取所述数据体的数据长度的数据,作为所述数据帧的数据体。

5.一种数据的接收方法,其特征在于,包括:

直接内存存取DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息;

确定接收并存储完成所述数据帧头,具体的,DMA控制器在监控到所述第一存储空间对应的存储区域被所述数据帧头全部占用后,确定接收并存储完所述数据帧头,其中,所述第一存储空间对应的存储区域大小与所述数据帧头的数据长度匹配;或,DMA控制器在监控到所述第一存储空间对应的存储区域被所述数据帧头占用的大小与预先保存的所述数据帧头的数据长度匹配时,确定接收并存储完所述数据帧头;

在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序;以及在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间。

6.一种数据的接收方法,其特征在于,包括:

应用程序接收直接内存存取DMA控制器发送的用于表征接收的数据帧的数据长度的信息;

根据所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据帧的数据体,具体的,所述应用程序将所述数据长度的信息对应的数据长度与所述数据帧头的数据长度的差值,确定为所述数据体的数据长度;

根据所述数据体的数据长度,确定所述DMA控制器将接收的所述数据长度的数据体存储在第二存储空间需要的时长;并在经过所述时长后,确定所述DMA控制器接收并存储完成所述数据体;

确定所述DMA控制器接收并存储完成所述数据帧的数据体后,读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体。

7.如权利要求6所述的方法,其特征在于,所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域相邻、且所述第二存储空间对应的存储区域位于所述第一存储空间对应的存储区域之后;

应用程序读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体,包括:应用程序确定所述第一存储空间的地址的起始地址;并

根据所述DMA控制器发送的数据长度的信息,从所述第一存储空间的地址的起始地址开始,读取所述数据长度的数据作为所述数据帧的数据帧头以及数据体。

8.如权利要求6所述的方法,其特征在于,所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域非相邻;

应用程序读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体,包括:应用程序确定所述第一存储空间的地址以及所述第二存储空间的地址;

根据所述数据帧的数据帧头的数据长度,从所述第一存储空间的地址对应的存储区域读取所述数据帧头的数据长度的数据,作为所述数据帧的数据帧头;以及根据所述数据帧的数据体的数据长度,从所述第二存储空间的地址对应的存储区域读取所述数据体的数据长度的数据,作为所述数据帧的数据体。

9.一种数据的接收系统,其特征在于,包括:

直接内存存取DMA控制器以及应用程序,其中:

所述DMA控制器,用于将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息,在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序,以及,在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间;

所述应用程序,用于根据所述DMA控制器发送的所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据体后,读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体。

10.一种数据的接收装置,其特征在于,包括:

数据帧头存储单元,用于将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息;

数据帧头存储监控单元,用于确定所述数据帧头存储单元是否接收并存储完成所述数据帧头;

数据帧头读取单元,用于在所述数据帧头存储监控单元确定所述数据帧头存储单元接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头;

数据长度的信息发送单元,用于将所述数据帧头读取单元读取的数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序;

数据体存储单元,用于在所述数据帧头存储监控单元确定所述数据帧头存储单元接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间。

11.如权利要求10所述的装置,其特征在于,所述数据帧头存储监控单元,具体用于在监控到所述第一存储空间对应的存储区域被所述数据帧头全部占用后,确定所述数据帧头存储单元接收并存储完所述数据帧头,其中,所述第一存储空间对应的存储区域大小与所述数据帧头的数据长度匹配;或在监控到所述第一存储空间对应的存储区域被所述数据帧头占用的大小与预先保存的所述数据帧头的数据长度匹配时,确定所述数据帧头存储单元接收并存储完所述数据帧头。

12.一种直接内存存取DMA控制器,其特征在于,包括权利要求10或权利要求11所述的数据的接收装置。

13.一种数据的接收装置,其特征在于,包括:

数据长度的信息接收单元,用于接收直接内存存取DMA控制器发送的用于表征接收的数据帧的数据长度的信息;

数据体存储完成确定单元,用于根据所述数据长度的信息接收单元接收的数据长度的信息,确定所述DMA控制器是否完成接收并存储所述数据帧的数据体的操作;具体用于将所述数据长度的信息对应的数据长度与所述数据帧头的数据长度的差值,确定为所述数据体的数据长度;根据所述数据体的数据长度,确定所述DMA控制器将接收的所述数据长度的数据体存储在第二存储空间需要的时长;并在经过所述时长后,确定所述DMA控制器接收并存储完成所述数据体;

数据帧读取单元,用于在所述数据体存储完成确定单元确定所述DMA控制器接收并存储完成所述数据帧的数据体后,读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体。

14.如权利要求13所述的装置,其特征在于,所述数据帧读取单元,具体用于若所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域相邻、且所述第二存储空间对应的存储区域位于所述第一存储空间对应的存储区域之后,确定所述第一存储空间的地址的起始地址;并根据所述DMA控制器发送的数据长度的信息,从所述第一存储空间的地址的起始地址开始,读取所述数据长度的数据作为所述数据帧的数据帧头以及数据体。

15.如权利要求13所述的装置,其特征在于,所述数据帧读取单元,具体用于若所述第一存储空间对应的存储区域与所述第二存储空间对应的存储区域非相邻,确定所述第一存储空间的地址以及所述第二存储空间的地址;根据所述数据帧的数据帧头的数据长度,从所述第一存储空间的地址对应的存储区域读取所述数据帧头的数据长度的数据,作为所述数据帧的数据帧头;以及根据所述数据帧的数据体的数据长度,从所述第二存储空间的地址对应的存储区域读取所述数据体的数据长度的数据,作为所述数据帧的数据体。

说明书 :

一种数据的接收方法、系统以及装置

技术领域

[0001] 本发明涉及计算机及信息技术领域,尤其涉及一种数据的接收方法、系统以及装置。

背景技术

[0002] 目前,嵌入式系统在与高速数据传输设备进行通信时,一般通过多次接收的方式接收一个完整的数据帧,即每次接收该数据帧的部分数据,该部分数据的长度会根据系统本地配置的硬件的数据处理能力决定,并且,系统每接收一次数据就会产生一次中断请求,该中断请求会触发中央处理器(Central Processing Unit,CPU)调用中断服务程序进行数据接收的操作。实际应用中,CPU每次接收的数据量有限,因此,在系统接收的数据量较大的情况下,CPU接收完成所有数据的次数也会相应增加,相应地,CPU根据中断请求调用中断服务程序的处理次数也会增加,这些处理过程提高了CPU资源的占用率,可能导致CPU数据处理能力的降低。
[0003] 目前,针对上述问题,嵌入式系统一般采用直接内存存取(Direct Memory Access,DMA)的数据接收方式。采用DMA方式接收数据之前,CPU主要对DMA的数据接收配置进行初始化,例如,CPU会根据预先设定的数据帧的数据长度为DMA控制器分配用于存储接收的数据帧的存储空间。在DMA的数据接收方式中,主要由DMA控制器完成数据的接收操作,该DMA控制器能够适应配置了不同数据处理能力的硬件的嵌入式系统,一般情况下,DMA控制器能够一次接收一个完整的数据帧,但要求该数据帧的数据长度满足设定的数据帧的数据长度,即不需要通过多次接收完一个数据帧,从而减少了CPU对中断请求的处理资源。
[0004] 在基于DMA的数据接收方式中,为DMA控制器分配的用于存储DMA控制器接收的数据的存储空间的大小一般是固定的,也即采用DMA的数据接收方式,要求每次接收的数据帧的数据长度是固定的。基于为DMA控制器分配的固定大小的存储空间,DMA控制器会根据该存储空间进行数据存储的操作情况判断是否接收完一个数据帧,例如,预先设定的数据帧的数据长度为512bit,基于该数据长度为DMA控制器分配用于存储该数据长度的数据帧的存储空间为1000bit,那么,在DMA控制器接收数据的过程中,会将接收的数据帧保存至该存储空间的前512bit对应的存储空间,在DMA控制器确定完成数据帧的接收后,会产生中断请求,并将该中断请求发送至应用程序,由应用程序根据设定的数据帧的数据长度从该存储空间读取相应长度的数据。其中,DMA控制器确定完成数据帧的接收,主要是在将接收的数据帧保存至存储空间的前512bit对应的存储空间后,判断设定时间内是否再接收到数据,若未接收到,则确定完成数据帧的接收。
[0005] 显然,采用DMA的数据接收方式,DMA控制器主要是基于预先分配的固定大小的存储空间来接收满足设定数据长度的数据帧,在实际应用中,由于实际业务类型的不同,很难保证数据帧的数据长度为固定值,在此情况下,可能导致数据接收失败,例如,在当前接收的数据帧的实际数据长度大于设定的数据帧的数据长度时,可能存在预先分配的存储空间小于当前接收的数据帧的实际数据长度,如此,DMA控制器则不能够接收到完整的数据帧,进而应用程序也无法获取到完整的数据;在当前接收的数据帧的实际数据长度小于设定的数据帧的数据长度时,由于应用程序是根据设定的数据帧的数据长度从存储空间读取相应数据长度的数据的,因此,可能存在应用程序在读取该数据帧时还会读取到其他不相关的数据信息的问题,从而导致应用程序读取到的数据帧与实际的数据帧不一致,降低了应用程序读取数据的成功率。
[0006] 综上所述,现有的DMA的数据接收方式,存在应用程序从存储空间读取到的数据帧与实际的数据帧不一致的问题,从而导致应用程序读取数据的成功率。

发明内容

[0007] 有鉴于此,本发明实施例提供一种数据的接收方法以及装置,采用该技术方案,能够避免应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题。
[0008] 本发明实施例通过如下技术方案实现:
[0009] 根据本发明实施例的一个方面,提供了一种数据的接收方法,包括:
[0010] DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息,在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序,以及,在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间;
[0011] 所述应用程序根据所述DMA控制器发送的所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据体后,读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体。
[0012] 根据本发明实施例的另一个方面,还提供了一种数据的接收方法,包括:
[0013] DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息;
[0014] 在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序;以及
[0015] 在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间。
[0016] 根据本发明实施例的另一个方面,还提供了一种数据的接收方法,包括:
[0017] 应用程序接收DMA控制器发送的用于表征接收的数据帧的数据长度的信息;
[0018] 根据所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据帧的数据体后,读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体。
[0019] 根据本发明实施例的另一个方面,还提供了一种数据的接收系统,该系统包括DMA控制器以及应用程序,其中:
[0020] 所述DMA控制器,用于将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息,在确定接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头,并将所述数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序,以及,在确定接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间;
[0021] 所述应用程序,用于根据所述DMA控制器发送的所述数据长度的信息,确定所述DMA控制器接收并存储完成所述数据体后,读取所述第一存储空间保存的所述数据帧头以及所述第二存储空间保存的所述数据体。
[0022] 根据本发明实施例的另一个方面,还提供了一种数据的接收装置,包括:
[0023] 数据帧头存储单元,用于将接收的数据帧的数据帧头存储在第一存储空间,所述数据帧头携带用于表征所述数据帧的数据长度的信息;
[0024] 数据帧头存储监控单元,用于确定所述数据帧头存储单元是否接收并存储完成所述数据帧头;
[0025] 数据帧头读取单元,用于在所述数据帧头存储监控单元确定所述数据帧头存储单元接收并存储完成所述数据帧头后,读取所述第一存储空间保存的所述数据帧头;
[0026] 数据长度的信息发送单元,用于将所述数据帧头读取单元读取的数据帧头携带的所述数据长度的信息发送至用于处理所述数据帧的应用程序;
[0027] 数据体存储单元,用于在所述数据帧头存储监控单元确定所述数据帧头存储单元接收并存储完成所述数据帧头后,将接收的所述数据帧的数据体存储在第二存储空间。
[0028] 根据本发明实施例的另一个方面,还提供了一种数据的接收装置,包括:
[0029] 数据长度的信息接收单元,用于接收DMA控制器发送的用于表征接收的数据帧的数据长度的信息;
[0030] 数据体存储完成确定单元,用于根据所述数据长度的信息接收单元接收的数据长度的信息,确定所述DMA控制器是否完成接收并存储所述数据帧的数据体的操作;
[0031] 数据帧读取单元,用于在所述数据体存储完成确定单元确定所述DMA控制器接收并存储完成所述数据帧的数据体后,读取所述DMA控制器接收并保存在第一存储空间的所述数据帧的数据帧头以及所述DMA控制器接收并保存在所述第二存储空间的所述数据体。
[0032] 通过本发明实施例提供的上述至少一个技术方案,DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,该数据帧头携带用于表征接收的数据帧的数据长度的信息,在确定接收并存储完成数据帧头后,读取第一存储空间保存的数据帧头,并将数据帧头携带的数据长度的信息发送至用于处理数据帧的应用程序。应用程序根据DMA控制器发送的数据长度的信息,确定DMA控制器将接收的数据帧的数据体存储在第二存储空间的操作完成后,即读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体。本技术方案与现有技术相比,能够通过数据帧的数据帧头携带数据长度的信息,从而在DMA控制器完成数据帧头的接收后,能够将接收的数据帧头携带的数据长度的信息发送至用于处理接收的数据帧的应用程序,从而该应用程序能够根据数据长度的信息确定DMA控制器是否完成数据帧的接收,并在确定DMA控制器接收并存储完成数据帧的数据体后,读取在第一存储空间保存的数据帧头以及在第二存储空间保存的数据体,从而DMA控制器能够支持不同数据长度的数据帧的接收,避免了应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题,提高了应用程序读取数据的成功率。
[0033] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0034] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0035] 图1为本发明实施例一提供的一种数据的接收的流程示意图;
[0036] 图2为本发明实施例一提供的确定DMA控制器接收并存储数据体的操作完成的流程示意图;
[0037] 图3为本发明实施例一提供的读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的优选实施方式的流程示意图;
[0038] 图4为本发明实施例一提供的读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的又一优选实施方式的流程示意图;
[0039] 图5为本发明实施例三提供的一种数据的接收装置的结构示意图;
[0040] 图6为本发明实施例三提供的又一种数据的接收装置的结构示意图。

具体实施方式

[0041] 为了给出提高应用程序读取数据的成功率的实现方案,本发明实施例提供了一种数据的接收方法、系统以及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0042] 本发明提供的技术方案中,在进行数据的接收的相关操作前,会首先对DMA控制器进行初始化,例如,由CPU根据数据帧的数据帧头的数据长度为DMA控制器分配用于存储接收的数据帧的数据帧头的第一存储空间,该第一存储空间提供的存储区域可以与数据帧头的数据长度匹配,也可以大于数据帧头的数据长度,实际应用中,可以根据具体情况进行相应的分配;此外,CPU还能够根据数据帧的数据体的数据长度的取值范围,为DMA控制器分配用于存储接收的数据帧的数据体的第二存储空间,本技术方案中,数据帧的数据体的数据长度是不固定的,该数据长度可以根据实际传输的数据的情况进行灵活的设置,因此,CPU会根据实际应用中数据体的数据长度的取值范围为DMA控制器分配存储该数据体的第二存储空间。
[0043] 实施例一
[0044] 该实施例一提供了一种数据的接收方法,该方法能够应用在嵌入式系统中,通过在嵌入式系统中应用本技术方案,能够避免应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题,从而能够达到提高应用程序读取数据的成功率的目的。
[0045] 图1示出了本发明实施例一提供的一种数据的接收的流程示意图,如图1所示,该数据的接收过程,主要包括以下步骤:
[0046] 步骤101、DMA控制器将接收的数据帧的数据帧头存储在第一存储空间,其中,数据帧头携带用于表征数据帧的数据长度的信息。
[0047] 该步骤101中,用于表征数据帧的数据长度的信息对应的数据长度,由数据帧包括的数据帧头的数据长度以及数据帧包括的数据体的数据长度组成,其中,数据帧头的数据长度是预先设定的,数据体的数据长度可以根据传输的数据的具体情况进行相应的设置,即该数据体的数据长度不固定。
[0048] 步骤102、DMA控制器在确定接收并存储完成接收的数据帧头后,读取第一存储空间保存的数据帧头,并将接收的数据帧的数据体存储在第二存储空间。
[0049] 该步骤102中,DMA控制器在确定接收并存储完接收的数据帧头后,可以通过产生中断请求的方式,由中断服务程序到第一存储空间读取存储的数据帧头以获取该数据帧头携带的数据长度的信息。此外,本技术方案并不限定对于执行“读取第一存储空间保存的数据帧头”以及“将接收的数据帧的数据体存储在第二存储空间”的操作的顺序,即上述操作可以根据实际的应用环境,同时进行,或者根据需要依次进行,此处不再赘述。本方案中的所述数据帧的数据体为数据帧中除数据帧头外的数据。
[0050] 步骤103、DMA控制器将读取的数据帧头携带的数据长度的信息发送至用于处理数据帧的应用程序。
[0051] 该步骤103中,实际应用中,可以基于步骤102中的描述,中断服务程序读取在第一存储空间中存储的数据帧头后,将读取的数据帧头携带的数据长度的信息发送至应用程序,由应用程序进行后续的操作,至此,结束中断服务程序以结束中断处理进行的操作。实际应用中,步骤102以及步骤103除采用中断处理的方式读取保存在第一存储空间的数据帧头、并将数据帧头中携带的数据长度的信息发送至应用程序外,还可以根据应用环境的具体情况或者要求采用其他方式进行相应的操作,此处,不再一一赘述。本方案中,能够根据产生中断请求的DMA控制器,也可以根据实际需求实现相应的读取保存在第一存储空间的数据帧头、发送数据帧头中携带的数据长度的信息的技术方案,为便于描述,本方案以下将以DMA控制为例进行后续的描述。
[0052] 步骤104、应用程序根据DMA控制器发送的数据长度的信息,确定DMA控制器接收并存储完数据体后,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体。
[0053] 该步骤104中,应用程序在根据DMA控制器发送的数据长度的信息,判断DMA控制器是否完成接收并存储数据体的操作时,可以结合DMA控制器接收数据帧时的数据传输速率进行,例如,将数据体的数据长度包括的比特位的数目与数据传输速率相乘的结果确定为DMA控制器将接收的数据帧的数据体存储在第二存储空间的操作时长,实际应用中,还会结合应用环境,在确定出的时长的基础上增加额外的设定的时长,以充分保证数据帧被接收与存储完,该额外的时长一般可以为确定出的时长的5%-10%,实际应用中,该比例可以根据具体情况灵活设置。在该时长后,可以确定DMA控制器将接收的数据帧的数据体存储在第二存储空间的操作完成。此外,根据应用环境的需要,在确定DMA控制器接收并存储完数据体后,可以读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体,也可以直接读取第二存储空间保存的数据体,即直接获取数据帧除数据帧头外的数据。
[0054] 至此,数据的接收的流程结束。
[0055] 在图1对应的流程中,能够通过数据帧的数据帧头携带数据长度的信息,从而在DMA控制器完成数据帧头的接收后,能够将接收的数据帧头携带的数据长度的信息发送至用于处理接收的数据帧的应用程序,从而该应用程序能够根据数据长度的信息确定DMA控制器是否完成数据帧的接收,并在确定DMA控制器接收并存储完成数据帧的数据体后,读取在第一存储空间保存的数据帧头以及在第二存储空间保存的数据体,从而DMA控制器能够支持不同数据长度的数据帧的接收,避免了应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题,提高了应用程序读取数据的成功率。
[0056] 在图1对应的流程包括的步骤102中,即在DMA控制器在确定接收并存储完成接收的数据帧头后,读取第一存储空间保存的数据帧头中,本技术方案针对DMA控制器确定接收并存储完成接收的数据帧头的操作提供了几种优先实施方式,具体如下:
[0057] 当用于存储数据帧的数据帧头的第一存储空间对应的存储区域大小与数据帧的数据帧头的数据长度匹配时,DMA控制器可以通过监控第一存储空间对应的存储区域被占用的情况确定是否接收并存储完成接收的数据帧头,例如,当DMA控制器监控到第一存储空间对应的存储区域被数据(即接收的数据帧的数据帧头)全部占用后,确定接收并存储完数据帧头;
[0058] 当用于存储数据帧的数据帧头的第一存储空间对应的存储区域大于数据帧的数据帧头的数据长度时,DMA控制器可以在监控到第一存储空间对应的存储区域被数据(即接收的数据帧的数据帧头)占用的大小与预先保存的数据帧头的数据长度匹配时,确定接收并存储完所述数据帧头。
[0059] 在图1对应的流程包括的步骤104中,即在应用程序根据DMA控制器发送的数据长度的信息,确定DMA控制器接收并存储完成数据体后,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体中,应用程序根据DMA控制器发送的数据长度的信息,确定DMA控制器接收并存储数据体的操作完成时,应用程序可以根据数据长度的信息对应的数据长度以及数据帧的数据帧头的数据长度,确定出数据帧的数据体的数据长度,进而,确定出DMA控制器在第二存储空间中存储接收的数据帧的数据体的时长,具体地,图2示出了本实施例一提供的一种确定DMA控制器接收并存储数据体的操作完成的流程示意图,如图,该确定DMA控制器接收并存储数据体的操作完成的过程,主要包括以下步骤:
[0060] 步骤201、应用程序将DMA中断处理程序发送的数据长度的信息对应的数据长度与数据帧头的数据长度的差值,确定为数据体的数据长度。
[0061] 步骤202、应用程序根据数据体的数据长度,确定DMA控制器将接收的确定出的数据长度的数据体存储在第二存储空间需要的时长。
[0062] 该步骤202中,应用程序可以在明确DMA控制器接收数据帧时的数据传输速率的情况下,根据数据体的数据长度,确定出DMA控制器将接收的确定出的数据长度的数据体存储在第二存储空间需要的时长,具体地,可以参考上述步骤104中的相关描述。
[0063] 步骤203、应用程序在经过确定出的时长后,确定DMA控制器接收并存储数据体的操作完成。
[0064] 该步骤203中,基于应用程序接收DMA控制器发送数据长度的信息、以及在接收数据长度的信息后执行步骤201以及步骤202的时长,相对DMA控制器接收并存储接收的数据帧的时长是可以忽略的,因此,应用程序可以从接收到DMA控制器发送的数据长度的信息的时间开始计时,并进入休眠状态,在经过确定出的时长后,应用程序被唤醒并确定DMA控制器将接收的数据帧的数据体存储在第二存储空间的操作完成;或者,直接从确定出DMA控制器将接收的确定出的数据长度的数据体存储在第二存储空间需要的时长的时间开始计时,并进入休眠状态,在经过确定出的时长后,应用程序被唤醒并确定DMA控制器将接收的数据帧的数据体存储在第二存储空间的操作完成。
[0065] 至此,确定DMA控制器接收并存储数据体的操作完成的流程结束。
[0066] 基于上述分别用于存储数据帧的数据帧头以及数据体的第一存储空间以及第二存储空间被分配时的位置的特征,本技术方案针对图1对应流程包括的步骤104中的“读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体”,提供了几种优选实施方式,具体如下:
[0067] 优选实施方式一
[0068] 该优选实施方式一中,第一存储空间对应的存储区域与第二存储空间对应的存储区域相邻、且第二存储空间对应的存储区域位于第一存储空间对应的存储区域之后,对应该第一存储空间以及第二存储空间的位置的特征,图3示出了本发明实施例一提供的应用程序读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的流程示意图,如图3所示,该读取保存的数据帧头以及数据体的过程,主要包括以下步骤:
[0069] 步骤301、应用程序确定第一存储空间的地址的起始地址。
[0070] 该步骤301中,基于第一存储空对应的存储区域与第第二存储空间的存储区域相邻、且第二存储空间对应的存储区域位于第一存储空间对应的存储区域之后,即CPU分配的第一存储空间与第二存储空间的存储区域是连续的,DMA控制器在连续的存储区域中保存数据后,若需要读取保存的数据,一般确定出该连续的存储区域的地址的起始地址即可,即确定第一存储空间的地址的起始地址即可。若只需要读取第二存储空间中存储的数据帧的数据体,则可以将第一存储空间对应的物理存储空间后、且与该物理存储空间相邻的存储空间的地址作为第二存储空间的起始地址。
[0071] 步骤302、应用程序根据DMA控制器发送的数据长度的信息,从第一存储空间的地址的起始地址开始,读取确定出的数据长度的数据作为数据帧的数据帧头以及数据体。
[0072] 该步骤302中,应用程序从第一存储空间的地址的起始地址开始,读取与DMA控制器发送的数据长度的信息相应的数据长度一致数据,该读取到的数据为由数据帧头以及数据体组成的数据帧。若只需要读取第二存储空间中存储的数据帧的数据体,则直接从步骤301中确定的第二存储空间的起始地址开始读取数据长度与数据帧的数据体的数据长度一致的数据,作为数据帧的数据体。
[0073] 至此,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的流程结束。
[0074] 优选实施方式二
[0075] 该优选实施方式二中,第一存储空间对应的存储区域与第二存储空间对应的存储区域非相邻,对应该第一存储空间以及第二存储空间的位置的特征,图4示出了本发明实施例一提供的应用程序读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的流程示意图,如图4所示,该读取保存的数据帧头以及数据体的过程,主要包括以下步骤:
[0076] 步骤401、应用程序确定第一存储空间的地址以及第二存储空间的地址。
[0077] 步骤402、应用程序根据数据帧的数据帧头的数据长度,从第一存储空间的地址对应的存储区域读取数据长度与数据帧头的数据长度一致的数据,作为数据帧的数据帧头。
[0078] 该步骤402中,应用程序从第一存储空间的地址对应的存储区域读取数据时,可以根据第一存储空间的地址,从第一存储空间的地址对应的存储区域的起始存储地址开始读取数据长度与数据帧头的数据长度一致的数据。
[0079] 步骤403、应用程序根据数据帧的数据体的数据长度,从第二存储空间的地址对应的存储区域读取数据长度与数据体的数据长度一致的数据,作为数据帧的数据体。
[0080] 该步骤403中,应用程序从第二存储空间的地址对应的存储区域读取数据时,可以根据第二存储空间的地址,从该地址对应的存储区域的起始存储地址开始读取数据长度与数据体的数据长度一致的数据。若只需要读取第二存储空间中存储的数据帧的数据体,则可以在步骤401中确定出第二存储空间的地址即可,然后执行该步骤403。若需要读取完整的数据帧,该步骤403与步骤402的执行顺序,可以根据实际情况灵活进行,此处不作限定,例如,可以同时执行步骤402以及步骤403,或者,在执行步骤403后执行步骤402,或者,执行步骤402后执行步骤403。
[0081] 至此,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体的流程结束。
[0082] 实施例二
[0083] 该实施例二提供了一种数据的接收系统,该系统能够应用在嵌入式系统中,通过在嵌入式系统中应用本技术方案,能够避免应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题,从而能够达到提高应用程序读取数据的成功率的目的。
[0084] 本实施例二提供的数据的接收系统,包括DMA控制器以及应用程序,其中:
[0085] DMA控制器,用于将接收的数据帧的数据帧头存储在第一存储空间,数据帧头携带用于表征数据帧的数据长度的信息,在确定接收并存储完成数据帧头后,读取第一存储空间保存的数据帧头,并将数据帧头携带的数据长度的信息发送至用于处理数据帧的应用程序,以及,在确定接收并存储完成数据帧头后,将接收的数据帧的数据体存储在第二存储空间;
[0086] 应用程序,用于根据DMA控制器发送的数据长度的信息,确定DMA控制器接收并存储完成数据体后,读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体。
[0087] 进一步地,本实施例二提供的DMA控制器以及应用程序还具有以下功能,具体如下:
[0088] DMA控制器在进行确定接收并存储完数据帧头的操作时,若用于存储数据帧头的第一存储空间对应的存储区域的大小与数据帧头的数据长度匹配,则可以在监控到第一存储空间对应的存储区域被数据帧头全部占用后,确定接收并存储完数据帧头;若第一存储空间对应的存储区域的大小大于数据帧头的数据长度时,则在监控到第一存储空间对应的存储区域被数据帧头占用的大小与预先保存的数据帧头的数据长度匹配时,确定接收并存储完据帧头。
[0089] 应用程序根据DMA控制器发送的数据长度的信息,在进行确定DMA控制器接收并存储完成数据体的操作时,可以将数据长度的信息对应的数据长度与数据帧头的数据长度的差值,确定为数据体的数据长度,然后根据数据体的数据长度,确定DMA控制器将接收的数据体存储在第二存储空间需要的时长,并在经过确定出的时长后,确定DMA控制器接收并存储完成数据体。
[0090] 应用程序读取第一存储空间保存的数据帧头以及第二存储空间保存的数据体时,会根据第一存储空间以及第二存储空间的位置的特征进行相应的读取操作,例如,若第一存储空间对应的存储区域与第二存储空间对应的存储区域相邻、且第二存储空间对应的存储区域位于第一存储空间对应的存储区域之后,则应用程序可以在确定第一存储空间的地址的起始地址后,根据DMA控制器发送的数据长度的信息,从第一存储空间的地址的起始地址开始,将读取的具有DMA控制器发送的数据长度的数据作为数据帧的数据帧头以及数据体;若第一存储空间对应的存储区域与第二存储空间对应的存储区域非相邻,则应用程序可以在确定第一存储空间的地址以及第二存储空间的地址后,根据数据帧的数据帧头的数据长度,将从第一存储空间的地址对应的存储区域读取数据帧头的数据长度的数据,作为数据帧的数据帧头,以及根据数据帧的数据体的数据长度,将从第二存储空间的地址对应的存储区域读取数据体的数据长度的数据,作为数据帧的数据体。
[0091] 实施例三
[0092] 该实施例三提供了一种数据的接收装置,该装置能够应用在嵌入式系统中,进一步,该装置能够应用在DMA控制器中,通过在嵌入式系统中应用本技术方案,能够避免应用程序从存储空间读取到的数据帧与实际传输的数据帧不一致的问题,从而能够达到提高应用程序读取数据的成功率的目的。
[0093] 图5示出了本发明实施例二提供的一种数据的接收装置的结构示意图,如图5所示,该装置包括:
[0094] 数据帧头存储单元501、数据帧头存储监控单元502、数据帧头读取单元503、数据长度的信息发送单元504以及数据体存储单元505,其中:
[0095] 数据帧头存储单元501,用于将接收的数据帧的数据帧头存储在第一存储空间,数据帧头携带用于表征数据帧的数据长度的信息;
[0096] 数据帧头存储监控单元502,用于确定数据帧头存储单元501是否接收并存储完成数据帧头;
[0097] 数据帧头读取单元503,用于在数据帧头存储监控单元502确定数据帧头存储单元501接收并存储完成数据帧头后,读取第一存储空间保存的数据帧头;
[0098] 数据长度的信息发送单元504,用于将数据帧头读取单元503读取的数据帧头携带的数据长度的信息发送至用于处理数据帧的应用程序;
[0099] 数据体存储单元505,用于在数据帧头存储监控单元502确定数据帧头存储单元501接收并存储完成数据帧头后,将接收的数据帧的数据体存储在第二存储空间。
[0100] 本发明实施例三提供的优选实施方式中,图5所示装置包括的数据帧头存储监控单元502,具体用于在监控到第一存储空间对应的存储区域被数据帧头全部占用后,确定数据帧头存储单元接收并存储完数据帧头,其中,第一存储空间对应的存储区域大小与数据帧头的数据长度匹配;或在监控到第一存储空间对应的存储区域被数据帧头占用的大小与预先保存的数据帧头的数据长度匹配时,确定数据帧头存储单元接收并存储完数据帧头。
[0101] 图6示出了本实施例三提供的又一种数据的接收装置,该装置能够应用在嵌入式系统中,进一步,该装置能够应用在用于处理接收并保存后的数据的设备中,如图6所示,该装置包括:
[0102] 数据长度的信息接收单元601、数据体存储完成确定单元602以及数据帧读取单元603,其中:
[0103] 数据长度的信息接收单元601,用于接收直接内存存取DMA控制器发送的用于表征接收的数据帧的数据长度的信息;
[0104] 数据体存储完成确定单元602,用于根据数据长度的信息接收单元601接收的数据长度的信息,确定DMA控制器是否完成接收并存储数据帧的数据体的操作;
[0105] 数据帧读取单元603,用于在数据体存储完成确定单元602确定DMA控制器接收并存储完成数据帧的数据体后,读取DMA控制器接收并保存在第一存储空间的数据帧的数据帧头以及DMA控制器接收并保存在第二存储空间的数据体。
[0106] 本发明实施例三提供的优选实施方式中,图6所示装置包括的数据体存储完成确定单元602,具体用于将数据长度的信息对应的数据长度与数据帧头的数据长度的差值,确定为数据体的数据长度;根据数据体的数据长度,确定DMA控制器将接收的数据长度的数据体存储在第二存储空间需要的时长;并在经过时长后,确定DMA控制器接收并存储完成数据体。
[0107] 本发明实施例三提供的优选实施方式中,图6所示装置包括的数据帧读取单元603,具体用于若第一存储空间对应的存储区域与第二存储空间对应的存储区域相邻、且第二存储空间对应的存储区域位于第一存储空间对应的存储区域之后,确定第一存储空间的地址的起始地址;并根据DMA控制器发送的数据长度的信息,从第一存储空间的地址的起始地址开始,读取数据长度的数据作为数据帧的数据帧头以及数据体。
[0108] 本发明实施例三提供的优选实施方式中,图6所示装置包括的数据帧读取单元603,具体用于若第一存储空间对应的存储区域与第二存储空间对应的存储区域非相邻,确定第一存储空间的地址以及第二存储空间的地址;根据数据帧的数据帧头的数据长度,从第一存储空间的地址对应的存储区域读取数据帧头的数据长度的数据,作为数据帧的数据帧头;以及根据数据帧的数据体的数据长度,从第二存储空间的地址对应的存储区域读取数据体的数据长度的数据,作为数据帧的数据体。
[0109] 应当理解,以上装置包括的单元仅为根据该装置实现的功能进行的逻辑划分,实际应用中,可以进行上述单元的叠加或拆分。并且该实施例提供的装置所实现的功能与上述实施例提供的一种数据的接收方法流程一一对应,对于该装置所实现的更为详细的处理流程,在上述方法实施例中已做详细描述,此处不再详细描述。
[0110] 并且,本实施例三中的数据的接收装置还具有能够实现实施例一以及实施例二方案的功能模块,此处不再赘述。
[0111] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0112] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。