本发明涉及汽车电子控制,尤其涉及高速数据传输领域,具体是指一种linux系统内实现进程间高速数据传输的方法、装置、处理器及其计算机可读存储介质。
背景技术:
1、近几年,随着汽车行业的蓬勃发展,汽车的功能越来越丰富,随之而来的是仪表等系统需要处理的整车数据量越来越大。在基于linux操作系统的控制器中,d-bus总线传输为linux系统官方推荐的进程间通讯总线。
2、dbus提供了一种低延时,低开销,高可用性的进程间通信方式,其以消息作为驱动,采用二进制的协议,实现一对一及多对多的对等通信,避免通信的序列化(编码过程)过程。dbus进程通信的核心是提供了一个后台中转守护进程,需要通信的进程首先连接到dbus守护进程,在想要发送消息时,其先发送到守护进程,再通过dbus守护进程转到目标进程中。同时此种方法限制了的d-bus不适合传输大量的数据。d-bus的一个调用-返回消息需要10次消息拷贝,4次消息验证,4次上下文切换。
3、在汽车智能化电子化之前,整车can数据量内容可控,数据量较小,因此基于d-bus安全可靠特性,在汽车仪表系统中,多采用d-bus做数据通讯,确保了数据的准确性。但是在汽车智能化、电动化的今天,汽车功能越来越复杂,整车数据量越来越高,需要处理传输的数据量也在不断增加,在此种情况下,如何平衡数据的准确性和传输的高效性则是当前面临的困难。
4、如图1所示,基于dbus的高可靠性通讯原理(多次校验),在dbus通讯时,当一包数据量低于20byte时,耗时5ms,当数据量在20~80byte时,耗时12ms,基于此特性,我们对汽车的数据传输进程做了优化。
技术实现思路
1、本发明的目的是克服了上述现有技术的缺点,提供了一种linux系统内实现进程间高速数据传输的方法、装置、处理器及其计算机可读存储介质。
2、为了实现上述目的,本发明的该linux系统内实现进程间高速数据传输的方法、装置、处理器及其计算机可读存储介质如下:
3、该linux系统内实现进程间高速数据传输的方法,其主要特点是,所述的方法包括以下步骤:
4、(1)收集can总线数据,并通过can解析进程进行can信号解析处理;
5、(2)对经过解析处理后得到的can信号发送至d-bus数据发送端进行d-bus数据传输;
6、(3)由系统的业务处理进程接收所述的can信号,并进行相应的业务处理。
7、较佳地,所述的步骤(1)包括:所述的can解析进程对接收到的can总线数据进行逻辑解析和过滤处理,其中,所述的逻辑解析具体为:
8、根据当前接收到的can总线数据的can id,将该can总线数据拆分为数个can信号,以此完成can数据解析。
9、较佳地,所述的步骤(2)具体为:
10、将经过逻辑解析处理后的数个can信号同步发送至所述的d-bus数据发送端,待满足预设数据量后以供后续进行d-bus数据传输。
11、较佳地,所述的步骤(2)之前还包括:平衡检测与峰值整合处理,具体为:
12、当所述的can解析进程监控到在一定周期内,can总线上发生变化的can总线数据超过预设个数时,则触发峰值整合处理过程。
13、较佳地,所述的预设个数为:当can总线上发生变化的can总线数据超过15个canid时,则触发峰值整合处理过程。
14、较佳地,所述的峰值整合处理过程具体为:
15、当检测到当前can总线数据的数量到达峰值标准后,收集待通过所述的d-bus数据发送端进行传输的数据,并将该部分数据按照预设的周期频率进行d-bus数据传输。
16、较佳地,所述的预设的周期频率为:以20ms周期的频率进行d-bus数据传输。
17、较佳地,所述的步骤(3)具体为:
18、所述的业务处理进程接收经过数据整合后的can总线数据,并对d-bus总线上的数据进行异步处理,从而减少dbus总线上数据的发送频率,以此降低内存占用率。
19、该linux系统内实现进程间高速数据传输的装置,其主要特点是,所述的装置包括:
20、处理器,被配置成执行计算机可执行指令;
21、存储器,存储一个或多个计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述所述的linux系统内实现进程间高速数据传输的方法的步骤。
22、该linux系统内实现进程间高速数据传输的处理器,其主要特点是,所述的处理器被配置成执行计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述所述的linux系统内实现进程间高速数据传输的方法的步骤。
23、该计算机可读存储介质,其主要特点是,其上存储有计算机程序,所述的计算机程序可被处理器执行以实现上述所述的linux系统内实现进程间高速数据传输的方法的步骤。
24、采用了本发明的该linux系统内实现进程间高速数据传输的方法、装置、处理器及其计算机可读存储介质,可以动态检测当前can总线上的变化的数据量,以及可以依据待通过d-bus传输数据量的大小,选择实时传输(高频)或者周期传输(大的数据包),可以确保在软件架构、通讯协议不变的前提下实现大数据传输,同时满足应用对数据的准确性、时效性的要求。
1.一种linux系统内实现进程间高速数据传输的方法,其特征在于,所述的方法包括以下步骤:
2.根据权利要求1所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的步骤(1)包括:所述的can解析进程对接收到的can总线数据进行逻辑解析和过滤处理,其中,所述的逻辑解析具体为:
3.根据权利要求2所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的步骤(2)具体为:
4.根据权利要求2所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的步骤(2)之前还包括:平衡检测与峰值整合处理,具体为:
5.根据权利要求4所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的预设个数为:当can总线上发生变化的can总线数据超过15个can id时,则触发峰值整合处理过程。
6.根据权利要求4所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的峰值整合处理过程具体为:
7.根据权利要求6所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的预设的周期频率为:以20ms周期的频率进行d-bus数据传输。
8.根据权利要求6所述的linux系统内实现进程间高速数据传输的方法,其特征在于,所述的步骤(3)具体为:
9.一种linux系统内实现进程间高速数据传输的装置,其特征在于,所述的装置包括:
10.一种linux系统内实现进程间高速数据传输的处理器,其特征在于,所述的处理器被配置成执行计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现权利要求1~8中任一项所述的linux系统内实现进程间高速数据传输的方法的步骤。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述的计算机程序可被处理器执行以实现权利要求1~8中任一项所述的linux系统内实现进程间高速数据传输的方法的步骤。