基于域控制器的通过链路和共享内存实现跨核通信的方法与流程

未命名 07-14 阅读:153 评论:0


1.本技术涉及数据通信技术领域,尤其涉及一种基于域控制器的通过链路和共享内存实现跨核通信的方法。


背景技术:

2.车载等行业,cpu需要支持的功能越来越多,如:360全景影像、apa、车道线检测、车底残留、车辆行人检测、标志牌检测等,使得cpu负荷很高,导致程序稳定性降低,并且高负荷导致发热量大、散热困难。于是,使用dsp/mcu等其他芯片分担cpu的负载成为必然,并且dsp在数字信号处理方面有很大优势。多处理芯片的使用,带来了各个芯片上程序之间的通信问题,当这些程序之间传输的数据量很大时,数据传输效率低。


技术实现要素:

3.本技术通过充分利用数据传输链路和共享内存的特点,提供一种基于域控制器的通过链路和共享内存实现跨核通信的技术方案,用以解决现有的多处理芯片之间传输的数据量很大时数据传输效率低的技术问题。
4.本技术提供的一种基于域控制器的通过链路和共享内存实现跨核通信的方法,包括以下具体步骤:
5.在第一处理器上启动第一进程,在第二处理器上启动第二进程,并申请共享内存;
6.通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,所述第一节点、第二节点为预设的数据传输链路中的两个相邻的节点,所述第二节点订阅所述第一节点的数据;
7.在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请虚拟内存,同时将所述第一数据赋值给所述虚拟内存,并将所述虚拟内存上的数据发送至所述共享内存;
8.所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递释放内存指令;
9.所述第一节点通过所述共享内存接收所述释放内存指令,并据此释放所述虚拟内存。
10.进一步的,还包括以下步骤:
11.在所述第二节点中处理从所述共享内存读取的数据,并输出处理结果;
12.所述第一进程、第二进程释放所述共享内存。
13.进一步的,所述共享内存的key值唯一。
14.进一步的,所述共享内存为物理内存。
15.进一步的,所述第一处理器、第二处理器均为cpu、dsp、mcu中的任意一种。
16.本技术还提供一种基于域控制器的通过链路和共享内存实现跨核通信的方法,包括以下具体步骤:
17.在第一处理器上启动第一进程,在第二处理器上启动第二进程,在第三处理器上启动第三进程,并申请共享内存;
18.通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,通过所述第三进程创建第三节点,所述第一节点、第二节点、第三节点为预设的数据传输链路中的三个相邻的节点,所述第二节点订阅所述第一节点的数据,所述第三节点订阅所述第二节点的数据;
19.在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请第一虚拟内存,同时将所述第一数据赋值给所述第一虚拟内存,并将所述第一虚拟内存上的数据发送至所述共享内存;
20.所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递第一释放内存指令;
21.所述第一节点通过所述共享内存接收所述第一释放内存指令,并据此释放所述第一虚拟内存;
22.在所述第二节点中处理从所述共享内存中读取的数据,得到第二数据,并为所述第二数据申请虚拟内存,得到第二虚拟内存,同时将所述第二数据赋值给所述第二虚拟内存,并将所述第二虚拟内存上的数据发送至所述共享内存;
23.所述第三节点读取所述共享内存中的数据,并通过所述共享内存向所述第二节点传递第二释放内存指令;所述第二节点通过所述共享内存接收所述第二释放内存指令,并据此释放所述第二虚拟内存。
24.进一步的,还包括以下步骤:
25.在所述第三节点中处理从所述共享内存读取的数据,并输出处理结果;
26.所述第一进程、第二进程、第三进程释放所述共享内存。
27.进一步的,所述共享内存的key值唯一。
28.进一步的,所述共享内存为物理内存。
29.进一步的,所述第一处理器、第二处理器、第二处理器均为cpu、dsp、mcu中的任意一种。
30.本技术提供的技术方案至少具有以下有益效果:
31.基于数据传输链路实现第二节点订阅第一节点的数据,并通过共享内存实现第二节点与第一节点之间的数据传输,提高了多处理芯片之间传输的数据量很大时的数据传输效率。
附图说明
32.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
33.图1为本技术实施例提供的一种基于域控制器的通过链路和共享内存实现跨核通信的方法的流程图;
34.图2为本技术实施例提供的一种基于域控制器的通过链路和共享内存实现跨核通信的方法的软件流程示意图;
35.图3为本技术实施例提供的一种基于域控制器的通过链路和共享内存实现跨核通
信的方法中的数据传输链路示意图。
具体实施方式
36.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
37.请参照图1,本技术提供的一种基于域控制器的通过链路和共享内存实现跨核通信的方法,包括以下具体步骤:
38.s100:在第一处理器上启动第一进程,在第二处理器上启动第二进程,并申请共享内存。
39.本技术公开了一种通过链路和共享内存实现跨核通信的软件设计方法。本技术中的技术方案优选应用于域控制器,基于域控制器通过链路和共享内存实现跨核通信。这里的链路可以理解为数据传输链路。所谓的跨核通信,是指运行于cpu、dsp、mcu等芯片上的进程之间进行数据传输。基于通过数据传输链路和共享内存实现跨核通信的方法的系统涉及数据传输链路的创建、共享内存的创建、数据的发送和接受。针对各个核都可以访问物理内存的特性,在物理内存上创建key值唯一的一块共享内存,而共享内存一旦映射成功,一个进程向共享内存区写入数据,其他共享这个内存的所有进程就能立刻看到其中的内容,从而保证数据通信的快速、稳定。在具体的实施过程中,请参考图2,第一处理器可以理解为处理器1,第二处理器可以理解为处理器2。第一处理器和第二处理器上的程序启动之后,立刻申请共享内存。显然,程序启动对应着启动进程,第一处理器和第二处理器可以访问申请的共享内存。通过运用共享内存,可以有效提高数据存取效率。
40.进一步的,所述共享内存的key值唯一。
41.可以理解的是,使用相同的key值,可以确保返回的是同一块内存,防止数据传输异常。
42.进一步的,所述共享内存为物理内存。
43.进一步的,所述第一处理器、第二处理器均为cpu、dsp、mcu中的任意一种。
44.s200:通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,所述第一节点、第二节点为预设的数据传输链路中的两个相邻的节点,所述第二节点订阅所述第一节点的数据。
45.需要说明的是,请参考图2,第一进程创建第一节点可以理解为处理器1中启动进程后进行的创建节点操作,第二进程创建第二节点可以理解为处理器2中启动进程后进行的创建节点操作。创建节点操作依照预设的数据传输链路的结构进行。本技术中的数据传输链路需要提前创建。本技术通过数据传输链路将程序中各个相对独立的功能封装在一个个的节点中,然后通过特定的数据结构在节点之间传输数据。这样可以充分挖掘处理器的潜力,提高程序运行效率,并提升开发效率。在一种具体的实施方式中,在步骤s100之前还包括创建数据传输链路,数据传输链路由多个节点组成,这些节点分布在不同的进程,这些进程分布在不同的处理器。各个处理器上的程序按照创建的数据传输链路订阅对应的数据。请参考图3,创建的包括n个节点的数据传输链路中,除了第一个node_1和最后一个节点
node_n,每个节点都接受上一个节点的数据,按需求处理完毕之后,将处理后的数据发送给下一个节点。
46.s300:在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请虚拟内存,同时将所述第一数据赋值给所述虚拟内存,并将所述虚拟内存上的数据发送至所述共享内存。
47.需要指出的是,这里的待处理数据可能是按初始程序运行条件获得的原始数据,也可能是来源于其他节点,需要依据第一节点所处位置来决定。请参考图3,当这里的第一节点为node_1时,这里的待处理数据来源于程序自身运行的初始数据,在第一节点中处理后得到第一数据data1;当这里的第一节点为node_2时,这里的待处理数据来源于由节点node_1发送的数据data1,在第一节点中处理后得到第一数据data2。显然,这里的第一节点可以是图3中除节点node_n外的任意节点。请参考图2,在一种具体的实施方式中,处理器1的节点node_a中,为第一数据申请内存,节点node_a可以理解为第一节点,这里的内存为虚拟内存,将第一数据赋值给这块内存,然后将内存上的数据发送给共享内存。
48.s400:所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递释放内存指令。
49.可以理解的是,第一节点和第二节点可以共同访问共享内存。请参考图2,处理器2的节点node_b中,读取共享内存中的数据,然后通过共享内存告知节点node_a,其已得到数据,节点node_a可以释放内存。这个过程可以无限循环。这里的节点node_b可以理解为第二节点。节点node_b以传递释放内存指令的形式通过共享内存告知节点node_a,其已得到数据。
50.s500:所述第一节点通过所述共享内存接收所述释放内存指令,并据此释放所述虚拟内存。
51.进一步的,还包括以下步骤:
52.在所述第二节点中处理从所述共享内存读取的数据,并输出处理结果;
53.所述第一进程、第二进程释放所述共享内存。
54.需要指出的是,在第二节点中处理从共享内存读取的数据,并输出处理结果后,可以理解为此时已经完成数据处理任务,需要退出程序。程序退出时,第一进程和第二进程释放申请的共享内存。
55.本技术还提供一种基于域控制器的通过链路和共享内存实现跨核通信的方法,包括以下具体步骤:
56.在第一处理器上启动第一进程,在第二处理器上启动第二进程,在第三处理器上启动第三进程,并申请共享内存;
57.通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,通过所述第三进程创建第三节点,所述第一节点、第二节点、第三节点为预设的数据传输链路中的三个相邻的节点,所述第二节点订阅所述第一节点的数据,所述第三节点订阅所述第二节点的数据;
58.在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请第一虚拟内存,同时将所述第一数据赋值给所述第一虚拟内存,并将所述第一虚拟内存上的数据发送至所述共享内存;
59.所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递第一释放内存指令;
60.所述第一节点通过所述共享内存接收所述第一释放内存指令,并据此释放所述第一虚拟内存;
61.在所述第二节点中处理从所述共享内存中读取的数据,得到第二数据,并为所述第二数据申请虚拟内存,得到第二虚拟内存,同时将所述第二数据赋值给所述第二虚拟内存,并将所述第二虚拟内存上的数据发送至所述共享内存;
62.所述第三节点读取所述共享内存中的数据,并通过所述共享内存向所述第二节点传递第二释放内存指令;所述第二节点通过所述共享内存接收所述第二释放内存指令,并据此释放所述第二虚拟内存。
63.可以理解的是,第一处理器、第二处理器、第三处理器上的程序启动之后,立刻申请共享内存。显然,程序启动对应着启动进程,第一处理器、第二处理器、第三处理器可以访问申请的共享内存。通过运用共享内存,可以有效提高数据存取效率。这里的共享内存优选使用相同的key值,可以确保返回的是同一块内存,防止数据传输异常。
64.需要说明的是,创建节点操作依照预设的数据传输链路的结构进行。本技术中的数据传输链路需要提前创建。本技术通过数据传输链路将程序中各个相对独立的功能封装在一个个的节点中,然后通过特定的数据结构在节点之间传输数据。这样可以充分挖掘处理器的潜力,提高程序运行效率,并提升开发效率。在一种具体的实施方式中,在第一处理器上启动第一进程,在第二处理器上启动第二进程,在第三处理器上启动第二进程之前还包括创建数据传输链路,数据传输链路由多个节点组成,这些节点分布在不同的进程,这些进程分布在不同的处理器。各个处理器上的程序按照创建的数据传输链路订阅对应的数据。请参考图3,创建的包括n个节点的数据传输链路中,除了第一个node_1和最后一个节点node_n,每个节点都接受上一个节点的数据,按需求处理完毕之后,将处理后的数据发送给下一个节点。
65.需要指出的是,这里的待处理数据可能是按原始运行条件获得的原始数据,也可能是来源于其他节点,需要依据第一节点所处位置来决定。请参考图3,当这里的第一节点为node_1时,这里的待处理数据来源于程序自身运行的初始数据,在第一节点中处理后得到第一数据data1;当这里的第一节点为node_2时,这里的待处理数据来源于由节点node_1发送的数据data1,在第一节点中处理后得到第一数据data2。可以理解的是,第一节点、第二节点、第三节点可以共同访问共享内存。
66.进一步的,还包括以下步骤:
67.在所述第三节点中处理从所述共享内存读取的数据,并输出处理结果;
68.所述第一进程、第二进程、第三进程释放所述共享内存。
69.需要指出的是,在第三节点中处理从共享内存读取的数据,并输出处理结果后,可以理解为此时已经完成数据处理任务,需要退出程序。程序退出时,第一进程、第二进程、第三进程释放申请的共享内存。
70.进一步的,所述共享内存的key值唯一。
71.进一步的,所述共享内存为物理内存。
72.进一步的,所述第一处理器、第二处理器、第二处理器均为cpu、dsp、mcu中的任意
一种。
73.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
74.本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
75.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。

技术特征:
1.一种基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,包括以下具体步骤:在第一处理器上启动第一进程,在第二处理器上启动第二进程,并申请共享内存;通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,所述第一节点、第二节点为预设的数据传输链路中的两个相邻的节点,所述第二节点订阅所述第一节点的数据;在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请虚拟内存,同时将所述第一数据赋值给所述虚拟内存,并将所述虚拟内存上的数据发送至所述共享内存;所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递释放内存指令;所述第一节点通过所述共享内存接收所述释放内存指令,并据此释放所述虚拟内存。2.如权利要求1所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,还包括以下步骤:在所述第二节点中处理从所述共享内存读取的数据,并输出处理结果;所述第一进程、第二进程释放所述共享内存。3.如权利要求1所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述共享内存的key值唯一。4.如权利要求1所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述共享内存为物理内存。5.如权利要求1所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述第一处理器、第二处理器均为cpu、dsp、mcu中的任意一种。6.一种基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,包括以下具体步骤:在第一处理器上启动第一进程,在第二处理器上启动第二进程,在第三处理器上启动第三进程,并申请共享内存;通过所述第一进程创建第一节点,通过所述第二进程创建第二节点,通过所述第三进程创建第三节点,所述第一节点、第二节点、第三节点为预设的数据传输链路中的三个相邻的节点,所述第二节点订阅所述第一节点的数据,所述第三节点订阅所述第二节点的数据;在所述第一节点中处理待处理数据,得到第一数据,并为所述第一数据申请第一虚拟内存,同时将所述第一数据赋值给所述第一虚拟内存,并将所述第一虚拟内存上的数据发送至所述共享内存;所述第二节点读取所述共享内存中的数据,并通过所述共享内存向所述第一节点传递第一释放内存指令;所述第一节点通过所述共享内存接收所述第一释放内存指令,并据此释放所述第一虚拟内存;在所述第二节点中处理从所述共享内存中读取的数据,得到第二数据,并为所述第二数据申请虚拟内存,得到第二虚拟内存,同时将所述第二数据赋值给所述第二虚拟内存,并将所述第二虚拟内存上的数据发送至所述共享内存;
所述第三节点读取所述共享内存中的数据,并通过所述共享内存向所述第二节点传递第二释放内存指令;所述第二节点通过所述共享内存接收所述第二释放内存指令,并据此释放所述第二虚拟内存。7.如权利要求6所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,还包括以下步骤:在所述第三节点中处理从所述共享内存读取的数据,并输出处理结果;所述第一进程、第二进程、第三进程释放所述共享内存。8.如权利要求6所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述共享内存的key值唯一。9.如权利要求6所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述共享内存为物理内存。10.如权利要求6所述的基于域控制器的通过链路和共享内存实现跨核通信的方法,其特征在于,所述第一处理器、第二处理器、第二处理器均为cpu、dsp、mcu中的任意一种。

技术总结
本申请公开了一种基于域控制器的通过链路和共享内存实现跨核通信的方法,包括:在第一处理器上启动第一进程,在第二处理器上启动第二进程,并申请共享内存;通过第一进程创建第一节点,通过第二进程创建第二节点,第一节点、第二节点为预设的数据传输链路中的两个相邻的节点,第二节点订阅第一节点的数据;在第一节点中处理待处理数据,得到第一数据,并为第一数据申请虚拟内存,同时将第一数据赋值给虚拟内存,并将虚拟内存上的数据发送至共享内存;第二节点读取共享内存中的数据,并通过共享内存向第一节点传递释放内存指令;第一节点通过共享内存接收释放内存指令,并据此释放虚拟内存,以此提供一种快速、稳定的跨核通信技术方案。术方案。术方案。


技术研发人员:潘军林 钟晨 唐新鲁 陈志敏
受保护的技术使用者:深圳市德驰微视技术有限公司
技术研发日:2023.01.20
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐