数据通信的方法及设备的制作方法

文档序号:6382827阅读:126来源:国知局
专利名称:数据通信的方法及设备的制作方法
技术领域
本发明涉及数据通信技术,尤其涉及数据通信的方法及其设备。
背景技术
在数据通信领域,数据的发送和接收一直是业界关注的领域,它是数据通信的基础。在以往的数据通信领域,大家关注的通常是远距离,或者设备之间的数据通信问题,数据的传递通常是通过设备间的物理链路、中继设备等进行传输。对于近距离的数据传输,特别是设备内部的数据传输,大家或者秘而不宣,或者没有普遍应用。
申请号为“98800800”的中国专利公开了名称为“数据传送方法和数据传送设备”,其技术方案为通过级别对等的两个处理器的直接存储器访问(DMA)通信机制来实现数据的传递,这两个处理器相互独立,没有直接的关联关系。这两个处理器使用各自独立的数据总线进行数据传输,并且处理器之间的数据交互是通过一个总线中继器来实现的。
上述技术方案适用于两个对等的中央处理器(CPU)之间进行通信,然而对于具有主从关系的CPU之间的通信,这种方式因为需要通过中断器进行转换处理,所以会导致数据传递的及时性差、数据传输的速度和效率低。

发明内容
本发明提供一种数据通信的方法及其设备,以解决现有技术在具有主从关系的两个处理器间传送数据时存在及时性差和速度低的问题。
实现发明的技术方案一种数据通信的方法,该方法为在通过总线连接的主处理器和从处理器之间映射共享内存;
主处理器和从处理器分别在所述共享内存中设置接收数据的地址;发送数据时,源端从所述共享内存中获取目的端接收数据的地址,并将数据写入该地址对应的存储介质内,目的端则从该地址中获取数据。
其中主处理器和从处理器通过私有地址访问所述共享内存。
源端在发送数据前判断目的端是否准备好接收数据,当目的端未准备好接收数据时将数据缓存,并在目的端准备好接收数据时再发送。
所述共享内存中设置有表示主、从处理器接收数据状态的状态标识,源端在发送数据前从共享内存获取目的端的状态标识来判断目的端是否准备好接收数据。
源端通过特殊中断方式来判断目的端是否准备好接收数据。
所述数据发送采用直接存储器访问(DMA)方式。
当采用DMA方式中的串链方式传输数据时,所述共享内存中还设置有数据段信息,用于表明源端DMA控制器发送的数据由多少个独立的数据段构成。
一种数据传输设备,包括总线,通过总线连接的处理器、内存介质和直接存储器访问(DMA)控制器,其中,所述处理器包括具有主从关系并且通过所述总线相连的主处理器和从处理器,该主、从处理器分别连接有DMA控制器,并且所述内存介质包含允许主处理器和从处理器访问的共享存储区;在传输数据时,源端的DMA控制器从所述共享存储区内获取目的端的地址。
本方案提供了一种主从CPU之间大量、快速传递数据的有效方法,该方法可以提高CPU之间数据收发效率,有效降低CPU的使用率(即节约资源),同时在一定程度上保证了数据发送的及时性。


图1为本发明的数据传输设备的结构示意图;图2为DAM串链方式示意图;图3为接收数据前的初始化流程图;图4为发送数据的流程图;
图5为接收数据的流程图;图6为定时触发的发送数据流程图。
具体实施例方式
参阅图1所示,传输设备包括总线,通过总线连接的主处理器(主CPU)、从CPU、内存介质和直接存储器访问(DMA)控制器。主、从处理器之间通过公共总线相连,并且可以通过直接或者间接的方式向对方发送中断;通过公共总线,CPU可以访问外挂于CPU的外部存储介质,进行数据的读写操作。
对于主CPU而言,它将一部分外挂于公共总线上的内存介质的地址空间映射给从CPU的内存空间,允许从CPU对其进行读写;主CPU对该映射内存空间仍然可以读写。对于非映射给从CPU的存储介质地址空间,从CPU不能访问。
从CPU具有独立的内存地址空间,对于映射到从CPU的存储器介质,从CPU通过其私有地址进行访问,即对于同一个内存介质的某个区域(字节),存在两个地址一个是主CPU的地址,另一个是从CPU的地址。图1中,内存介质J1中的存储空间J2(阴影部分)是由主CPU映射给从CPU的存储介质,主CPU可以访问内存介质J2的全部存储介质空间,从CPU只能访问存储空间J2,对于内存介质J1之内并且在存储空间J2以外的内存空间,从CPU不可访问。
数据传送使用CPU提供的DMA方式,而DMA传送存在“串链”和“非串链”两种方式。所谓“串链”方式就是在一次DMA发送中存在多个不同地址和长度的数据。“非串链”方式每次DMA中只发送一个地址和长度的数据。“非串链”方式可以看作DMA“串链”方式的一个特例。
本发明通过在共享内存中设置主处理器和从处理器接收数据的地址,在发送数据时,源端从共享内存中获取目的端接收数据的地址,然后将数据写入该地址对应的存储介质内,目的端则从该地址中获取数据。
在发送数据时,为了使源端能够获知目的端是否准备好接收数据,在共享内存介质中设置两个DMA传送控制字K1和K2控制字K1用于标识主CPU接收数据的状态,控制字K2用于标识从CPU接收数据的状态。在控制字K1和K2中包含以下信息状态字段该字段用于表示当前CPU是否做好了接收数据的准备,至少表示“就绪”和“忙”两种状态。
数据的个数用于表明DMA发送过来的数据由几个独立的数据段构成。当然,对于“非串链”方式而言,这个字段可以省略。
在共享内存介质中还设置两个地址表L1和L2。地址表L1用于存储主CPU可以接收数据的起始地址,地址表L2用于存储从CPU可以接收数据的起始地址。因为DMA传输是在公共总线上的整个系统范围的数据传输过程,因此这两个地址表中的地址都需要存储绝对地址,即主CPU使用的存储介质的地址。
对于DMA方式的数据传输,需要知道源地址、目的地址和数据长度三个基本要素,请参阅图2所示。根据这三个基本要素,同时知道有多少个这样的数据段需要传送,CPU就可以使用DMA机制来完成数据的传送过程。
具备了状态控制字和地址表之外,将DMA“串链”的数据段个数加以限定,定义为每次DMA最多可以传送数据段的预定值为N,这个N值可以根据实际情况来设定。之所以做这样的限定,首先从内存管理的角度看,不可能无限制地为DMA准备可以接收数据的地址;其次,从数据传递的及时性方面考虑,同样需要一个数据段个数的限制。
数据段个数的限制同时也解决了DMA触发时机的问题,即具备了状态控制字和地址列表,在可以进行DMA传送的条件下,DMA触发时机为A、在需要传送的数据段的个数为N或者大于N的情况下,触发DMA传送;B、在有数据段需要DMA传送,且不满足方法一的情况下,如果距离前一次DMA发送的时间满足一定的时间间隔(比如10毫秒),则触发DMA操作。
对于控制字的判断处理在数据发送之前,首先判断对端CPU是否将控制字设置为“就绪”状态,对于“就绪”态,首先将控制字的“就绪”态更改为“忙”态,然后进行触发时机的判断处理;控制字如果是“忙”态,则将需要发送的数据进行缓存,等待对端CPU将控制字设置为“就绪”态。
在触发DMA操作之后,源端CPU通过中断的形式通知目的端CPU有数据需要接收,这时目的端CPU的中断服务程序将执行数据接收处理,并为下一次DMA数据接收做好准备。
参阅图3所示,主、从处理器的初始化流程如下步骤300初始化系统变量。
步骤310申请空闲内存空间,用于DMA数据接收。
步骤320初始化DMA控制字状态为“就绪”。
参阅图4所示,发送数据的流程如下步骤400应用程序进行数据处理。
步骤410判断发送的数据段数量据是否大于预定值,如果是则进行步骤420,否则进行步骤430。
步骤420判断接收端控制字状态是否为“就绪”,如果是则进行440,否则进行步骤430。
步骤430将数据缓存,等待发送并结束流程。
步骤440将需要发送的数据“串链”处理。
步骤450触发DMA传送数据。
步骤460将控制字状态设置为“忙”。
步骤470向接收端发送中断,通知目的端接收数据并结束流程。
参阅图5所示,接收数据的流程如下步骤500清除中断。
步骤510根据DMA控制字中的数据段个数地址表中顺序读取数据。
步骤520中请相应个数的空闲空间进行补充,以准备接收下次的数据。
步骤530将控制字的状态设备为“就绪”并结束该流程。
参阅图6所示,定时触发DMA数据发送的流程如下步骤600判断是否有数据需要DMA发送,如果是则进行步骤610,否则结束该流程。
步骤610判断目的端的控制字状态是否为“就绪”,如果是则进行步骤620,否则结束该流程。
步骤620进行DMA数据发送处理。
步骤630判断DMA发送是否完成,如果是则进行步骤620,否则进行步骤640。
步骤640向接收端发送中断,通知目的端数据到达并结束流程。
在本发明中,从处理器不限于一个,可以为多个,主处理器与每一从主处理器之间均建立有共享内存,其工作原理相同。
本发明利用共享内存来传递主、从处理器的状态信号和接收数据地址,能够保证数据发送的及时性,可以提高CPU之间数据收发效率,是主从CPU之间大量、快速传递数据的有效方法。
权利要求
1.一种数据通信的方法,其特征在于包括步骤在通过总线连接的主处理器和从处理器之间映射共享内存;主处理器和从处理器分别在所述共享内存中设置接收数据的地址;发送数据时,源端从所述共享内存中获取目的端接收数据的地址,并将数据写入该地址对应的存储介质内,目的端则从该地址中获取数据。
2.如权利要求1所述的方法,其特征在于,主处理器和从处理器通过私有地址访问所述共享内存。
3.如权利要求1所述的方法,其特征在于,源端在发送数据前判断目的端是否准备好接收数据,如果目的端未准备好接收数据时将数据缓存,并在目的端准备好接收数据时再发送。
4.如权利要求3所述的方法,其特征在于,所述共享内存中设置有表示主、从处理器接收数据状态的状态标识,源端在发送数据前从共享内存获取目的端的状态标识来判断目的端是否准备好接收数据。
5.如权利要求3或4所述的方法,其特征在于,源端通过特殊中断方式来判断目的端是否准备好接收数据。
6.如权利要求1至4之一项所述的方法,其特征在于,所述数据发送采用直接存储器访问(DMA)方式。
7.如权利要求6所述的方法,其特征在于,当采用DMA方式中的串链方式传输数据时,所述共享内存中还设置有数据段信息,用于表明源端DMA控制器发送的数据由多少个独立的数据段构成。
8.如权利要求7所述的方法,其特征在于,当需要传送的数据段的数量不少于预定值时,触发DMA传送;当需要传送的数据段的数量不大于预定值且距离前一次DMA发送的时间间隔达到设定值时,触发DMA传送。
9.一种数据传输设备,包括总线,通过总线连接的处理器、内存介质和直接存储器访问(DMA)控制器,其特征在于,所述处理器包括具有主从关系并且通过所述总线相连的主处理器和从处理器,该主、从处理器分别连接有所述DMA控制器,并且所述内存介质包含允许主处理器和从处理器访问的共享存储区;在传输数据时,源端的DMA控制器从所述共享存储区内获取目的端的地址。
10.如权利要求9所述的数据传输设备,其特征在于,所述主、从处理器以私有地址访问所述共享存储区。
11.如权利要求9或10所述的数据传输设备,其特征在于,所述从处理器为多个。
全文摘要
本发明公开了一种数据通信的方法及设备,用于在具有主从关系的处理器之间进行通信。其中方法为在通过总线连接的主处理器和从处理器之间映射共享内存;主处理器和从处理器分别在所述共享内存中设置接收数据的地址;发送数据时,源端从所述共享内存中获取目的端接收数据的地址,并将数据写入该地址对应的存储介质内,目的端则从该地址中获取数据。
文档编号G06F12/00GK1658176SQ200410005658
公开日2005年8月24日 申请日期2004年2月21日 优先权日2004年2月21日
发明者丁阳华, 李一兵, 李志同, 高永华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1