基于异步非透明桥的数据传输方法及系统
技术领域
本发明涉及数据通讯技术,尤其涉及一种基于异步非透明桥的数据传输方法及系统。
背景技术
在两个控制器之间的通讯,目前常用的是同步传输的方式,但是由于同步传输的代价很高,有着CPU利用率过高以及通讯时延过高的问题,而较高的通讯时延又会影响整个通讯的并发及吞吐量,
发明内容
基于上述问题,本发明提供一种基于异步非透明桥的数据传输方法及系统,该方法通过在整个通讯过程中使用异步调用,降低了计算资源的开销和通讯的时延。
根据上述目的,本发明提供了一种基于异步非透明桥的数据传输方法,其特征在于,所述方法包括:
第一终端设备初始化非透明桥NTB通讯模块;
使用注册函数向所述NTB通讯模块注册通讯通道,与第二终端设备建立通讯连接;
通过所述通讯通道,所述第一终端设备向所述第二终端设备发送数据。
其中,所述第一终端设备初始化所述NTB通讯模块的过程具体包括:
申请所述NTB通讯模块的接收缓冲区;
将所述缓冲接收区映射到基址寄存器;
初始化门铃寄存器、中断处理函数和数据寄存器;
创建发送线程。
其中,所述第一终端设备向所述第二终端设备发送待传输数据的过程具体包括:
调用发送函数,申请记录结构以保存发送请求的各项参数,并将所述记录结构插入到发送队列中,唤醒所述发送线程;
所述发送线程根据所述发送队列中的发送请求发送数据并更新所述第二终端设备的数据寄存器的已发送数据通道标识,然后触发所述门铃寄存器并将所述发送线程置于休眠状态;
在所述中断处理函数接收到所述第二终端设备的中断信号后,从所述门铃寄存器中得知所述数据发送完成,然后唤醒所述发送线程;
所述发送线程查看数据发送完成后的所述第二终端设备的数据寄存器中已读取数据的通道标识,并对与所述数据发送完成后的所述第二终端设备的数据寄存器中已读取数据的通道标识对应的通道标识的所有发送请求调用数据回调函数进行处理。
其中,所述方法还包括:
当所述第一终端设备检测到所述第二终端设备断开或处于设备切换状态时,所述NTB通讯模块调用所有未发送完成的数据对应的数据回调函数通知所述第一终端设备发送数据失败,并调用所有注册的通讯通道的事件回调函数进行事件通知。
根据本发明的另一个方面,提供一种基于异步非透明桥的数据传输方法,其特征在于,所述方法包括:
第二终端设备初始化非透明桥NTB通讯模块;
使用注册函数向所述NTB通讯模块注册通讯通道,与第一终端设备建立通讯连接;
通过所述通讯通道,所述第二终端设备接收所述第一终端设备发送的数据。
其中,所述第一终端设备初始化所述NTB通讯模块的过程具体包括:
申请所述NTB通讯模块的接收缓冲区;
将所述缓冲接收区映射到基址寄存器;
初始化门铃寄存器、中断处理函数、环形缓冲区和数据寄存器;
创建接收线程。
其中,所述第二终端设备接收所述第一终端设备发送的待传输数据的过程具体包括:
所述第二终端设备的中断处理函数收到所述第一终端设备的中断信号后,从所述门铃寄存器中得知收到数据,唤醒所述第二终端设备的接收线程;
所述接收线程查看所述数据寄存器中所述第一终端设备的已发送数据的通道标识,从所述环形缓冲区中读取对应的数据,并根据所读取的数据头部的通道标识调用对应的数据回调函数进行数据处理;
所述数据处理完成之后,更新所述数据寄存器的已读取数据的通道标识,触发门铃寄存器。
根据本发明的又一个方面,提供一种基于异步非透明桥的数据发送装置,其特征在于,所述装置包括:
初始化单元,用于初始化非透明桥NTB通讯模块;
通道注册单元,用于使用注册函数向所述NTB通讯模块注册通讯通道,并与第二终端设备建立通讯连接;
数据发送单元,用于通过所述通讯通道,向所述第二终端设备发送数据。
根据本发明的又另一个方面,提供一种基于异步非透明桥的数据接收装置,其特征在于,所述装置包括:
初始化单元,用于初始化非透明桥NTB通讯模块;
通道注册单元,用于使用注册函数向所述NTB通讯模块注册通讯通道,与第一终端设备建立通讯连接;
数据接收单元,用于通过所述通讯通道,接收所述第一终端设备发送的数据。
根据本发买那个的又另一个方面,提供一种基于异步非透明桥的数据传输系统,其特征在于,所述系统包括上述的数据发送装置和数据接收装置。
本发明的基于异步非透明桥的数据传输方法及系统,采用异步通讯架构,使得整个通讯过程对于数据的发送和接收都可以进行完全的异步处理,降低计算资源开销和通讯时延,并通过环形缓冲区的方式充分利用有限的NTB通讯缓冲区,使得多个数据的发送可以并发执行,扩大了对整个缓冲器的利用率,增加了并发处理能力,进一步提高了通讯效率。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的流程图。
图2示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的步骤S11的流程图。
图3示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的步骤S13的流程图。
图4示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的流程图。
图5示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的步骤S22的流程图。
图6示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的步骤S23的流程图。
图7示出了本发明的第三实施例的基于异步非透明桥的数据发送装置的结构框图。
图8示出了本发明的第四实施例的基于异步非透明桥的数据接收装置的结构框图。
图9示出了本发明的第五实施例的基于异步非透明桥的数据传输系统的结构框图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本实施例中,第一终端设备和第二终端设备使用注册函数向NTB通讯模块注册一个或多个通讯通道,然后通过注册的通讯通道进行第一终端设备和第二终端设备之间的数据传输。
下面将结合附图对本发明的实施例进行详细描述。
实施例一
图1示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的流程图。
参照图1,本实施例的基于异步非透明桥的数据传输方法如下:
S11,第一终端设备初始化非透明桥NTB通讯模块;
图2示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的步骤S11的流程图。
如图2所示,该步骤S11具体包括:
S111、申请所述NTB通讯模块的接收缓冲区;
S112、将所述缓冲接收区映射到基址寄存器;
S113、初始化门铃寄存器、中断处理函数和数据寄存器;
S114、创建发送线程。
S12,使用注册函数向所述NTB通讯模块注册通讯通道,与第二终端设备建立通讯连接;
在注册通道的过程中,使用的参数有通道地址ID,处理数据发送接收异步的数据回调函数data_callback,处理链接断开事件通知的事件回调函数event_callback等。
S13,通过所述通讯通道,所述第一终端设备向所述第二终端设备发送数据。
图3示出了本发明的第一实施例的基于异步非透明桥的数据传输方法的步骤S13的流程图。
如图3所示,该步骤S13具体包括:
S131、调用发送函数,申请记录结构保存发送请求的各项参数,并将记录结构其插入到发送队列中,唤醒所述发送线程;
S132、所述发送线程根据所述发送队列中的发送请求发送数据并更新所述第二终端设备的数据寄存器的已发送数据通道标识,然后触发所述门铃寄存器并将所述发送线程置于休眠状态;
S133、在所述中断处理函数接收到所述第二终端设备的中断信号后,从所述门铃寄存器中得知所述数据发送完成,然后唤醒所述发送线程;
S134、所述发送线程查看数据发送完成后的所述第二终端设备的数据寄存器中已读取数据的通道标识,并对与所述数据发送完成后的所述第二终端设备的数据寄存器中已读取数据的通道标识对应的通道标识的所有发送请求调用数据回调函数进行处理。
在上述方法中,当第一终端设备检测到第二终端设备断开或设备正在切换时,所述NTB通讯模块调用所有未发送完成的数据对应的数据回调函数data_callback通知所述第一终端设备发送数据失败,并调用所有注册的通讯通道ID的事件回调函数event_callback进行事件通知。
在本实施例中,在第一终端设备发送数据完成后,触发门铃寄存器,通知第二终端设备发送数据后,发送线程结束发送,处于休眠状态,从而可以减少计算资源的利用,提高传输效率。
实施例二
图4示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的流程图。
在本实施例中,基于异步非透明桥的数据传输方法包括步骤:
S21,第二终端设备初始化非透明桥NTB通讯模块;
图5示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的步骤S21的流程图。
如图5所示,该步骤S21具体包括:
S2111、申请所述NTB通讯模块的接收缓冲区;
S212、将所述缓冲接收区映射到基址寄存器;
S213、初始化门铃寄存器、中断处理函数、初始化环形缓冲区和数据寄存器;
S214、创建接收线程。
S22,使用注册函数向所述NTB通讯模块注册通讯通道,与第一终端设备建立通讯连接;
在注册通道的过程中,使用的参数有通道地址ID,处理数据发送接收异步的数据回调函数data_callback,处理链接断开事件通知的事件回调函数event_callback等。
S23,通过所述通讯通道,所述第二终端设备接收所述第一终端设备发送的数据。
图6示出了本发明的第二实施例的基于异步非透明桥的数据传输方法的步骤S23的流程图。
参照图6,该步骤S23具体包括:
S231、所述第二终端设备的中断处理函数收到所述第一终端设备的中断信号后,从所述门铃寄存器中得知收到数据,唤醒所述第二终端设备的接收线程;
S232、所述接收线程查看所述数据寄存器中所述第一终端设备的已发送数据的通道标识,从所述环形缓冲区中读取对应的数据,并根据所读取的数据头部的通道标识调用对应的数据回调函数进行数据处理;
S233、所述数据处理完成之后,更新所述数据寄存器的已读取数据的通道标识,触发门铃寄存器。
在本实施例中,第二终端设备在收到需要接收数据的指令后,才唤醒接收线程进行数据接收并处理,在数据处理完成后,如果没有数据接收,则会回到休眠状态,从而减少了由于第二终端设备处于运行状态而造成资源的浪费,并且减少了对缓存的使用,提高了传输效率。
实施例三
图7示出了本发明的第三实施例的基于异步非透明桥的数据发送装置的结构框图。为了便于说明,本实施例仅示出了与本发明的实施例相关的部分,该装置可以是内置于终端设备中的软件单元、硬件单元或者软硬件结合单元。
参照图7,本实施例的基于异步非透明桥的数据发送装置10包括:
初始化单元101,用于初始化非透明桥NTB通讯模块;
通道注册单元102,用于使用注册函数向所述NTB通讯模块注册通讯通道,并与第二终端设备建立通讯连接;
数据发送单元103,用于通过所述通讯通道,向所述第二终端设备发送数据。
本实施例提供的数据发送装置可以使用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
实施例四
图8示出了本发明的第四实施例的基于异步非透明桥的数据接收装置的结构框图。为了便于说明,本实施例仅示出了与本发明的实施例相关的部分,该装置可以是内置于终端设备中的软件单元、硬件单元或者软硬件结合单元。
参照图8,本实施例的基于异步非透明桥的数据接收装置20包括:
初始化单元201,用于初始化非透明桥NTB通讯模块;
通道注册单元202,用于使用注册函数向所述NTB通讯模块注册通讯通道,与第一终端设备建立通讯连接;
数据接收单元203,用于通过所述通讯通道,接收所述第一终端设备发送的数据。
本实施例提供的数据接收装置可以使用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
实施例五
图9示出了本发明的第五实施例的基于异步非透明桥的数据传输系统的结构框图为了便于说明,本实施例仅示出了与本发明的实施例相关的部分,该装置可以是内置于终端设备中的软件单元、硬件单元或者软硬件结合单元。
参照图9,本实施例的基于异步非透明桥的数据传输系统包括:
实施例三所述的数据发送装置10和实施例四所述的数据接收装置20。
本发明的基于异步非透明桥的数据传输方法及系统,采用异步通讯架构,使得整个通讯过程对于数据的发送和接收都可以进行完全的异步处理,降低计算资源开销和通讯时延,并通过环形缓冲区的方式充分利用有限的NTB通讯缓冲区,使得多个数据的发送可以并发执行,扩大了对整个缓冲器的利用率,增加了并发处理能力,进一步提高了通讯效率。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。