本发明涉及智能驾驶,具体涉及一种用于车辆智驾的多核异构通信方法与系统、计算机存储介质。
背景技术:
1、随着智驾技术的发展,越来越多的传感器被用在智驾系统上,信号的传递越来越繁重,各个模块信号和消息的传递,所用平台经常都是复杂的多核异构自动驾驶平台,信息的跨核传输的高效率性和低时延性显得尤为重要。
2、目前,多核异构自动驾驶平台通常采用一个主核来管理发送数据,这样在传输大量数据时往往会造成主核处理会有先后顺序,如果每个核访问ddr(double dataratesdram,双倍速率同步动态随机存储器,习惯称为ddr)的优先级没有顺序,全凭每个核上的进程自己去抢占资源,会造成信号传输延迟的不确定性,不适用于大型的多核异构智驾soc(system on chip,系统级芯片)平台使用。因此,亟待提出一种适用于大型的多核异构智驾soc平台使用的通信技术。
技术实现思路
1、本发明的目的在于提出一种用于车辆智驾的多核异构通信方法与系统、计算机存储介质,以实现车辆智驾方面信息的跨核传输的高效率性和低时延性,适用于大型的多核异构智驾soc平台使用。
2、本发明的实施例提出一种用于车辆智驾的多核异构通信方法,包括:
3、所述多核包括一个主核和多个从核;所述主核与所述多个从核之间均设置有数据通道,且每一所述数据通道均设置有多个循环缓冲区;所述数据通道用于所述从核向所述主核发送数据,所述循环缓冲区用于存储所述数据通道中正在发送的数据;
4、所述方法包括:
5、所述主核启动ipc-adapter-svc进程;
6、所述多个从核分别接收不同的车辆内部数据或车辆外部数据;并将所述车辆内部数据或车辆外部数据投入其与所述主核之间的数据通道中的循环缓冲区;
7、所述ipc-adapter-svc进程获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据;并将所述车辆内部数据或车辆外部数据通过分布式中间件dds分发给所述主核运行的不同智驾进程。
8、优选地,其中,车辆的存储器存储有数据结构,所述数据结构至少包括多个vring结构体,所述多个vring结构体与多个数据通道一一对应,所述vring结构体至少包含可使用buffer索引;
9、其中,所述方法包括:
10、当任意一个从核将所述车辆内部数据或车辆外部数据放入其与所述主核之间的数据通道中的循环缓冲区时,该数据通道对应的vring结构体的可使用buffer索引的值加1,以指示该任意一个从核的当前工作位置;
11、其中,所述ipc-adapter-svc进程获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据,包括:
12、当所述ipc-adapter-svc进程从任意一个数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据时,读取该任意一个数据通道所对应的vring结构体的可使用buffer索引的值,根据该可使用buffer索引的值确定当前要提取数据的循环缓冲区的位置;并根据所述当前要提取数据的循环缓冲区的位置从对应循环缓冲区中提取所述车辆内部数据或车辆外部数据。
13、优选地,其中,每一个数据通道均设置有n个循环缓冲区;n大于0;
14、所述方法包括:
15、当任意一个vring结构体的可使用buffer索引的值加1时,若此时该任意一个vring结构体的可使用buffer索引的值等于n,则将该任意一个vring结构体的可使用buffer索引的值设置为1。
16、优选地,所述方法包括:
17、当任意一个从核将所述车辆内部数据或车辆外部数据放入其与所述主核之间的数据通道中的循环缓冲区时,读取该任意一个数据通道所对应的vring结构体的可使用buffer索引的值,根据该可使用buffer索引的值确定当前要存入数据的循环缓冲区的位置;并根据所述当前要存入数据的循环缓冲区的位置将待发送的车辆内部数据或车辆外部数据存入对应循环缓冲区。
18、优选地,其中,车辆的存储器存储有多个shmlovirtio结构,所述多个shmlovirtio结构与多个数据通道一一对应,每一个所述shmlovirtio结构中记录与其对应的数据通道的优先级以及循环缓冲区的个数和容量;
19、所述方法包括:
20、在执行所述主核启动ipc-adapter-svc进程的步骤之前,初始化ipc通道,配置每一所述数据通道的优先级以及循环缓冲区的个数和容量。
21、优选地,所述多个从核之间均设置有数据通道,且每一所述数据通道均设置有多个循环缓冲区;所述数据通道用于任意一个从核向另一个从核发送数据,所述循环缓冲区用于存储所述数据通道中正在发送的数据;所述多个从核至少包括第一从核和第二从核;
22、所述方法包括:
23、所述第一从核接收车辆内部数据或车辆外部数据;并将该车辆内部数据或车辆外部数据投入其与所述第二从核之间的数据通道中的循环缓冲区;
24、所述第二从核获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取该车辆内部数据或车辆外部数据。
25、优选地,所述多个从核至少包含一个用于系统扩展时使用的核。
26、本发明的实施例还提出一种用于车辆智驾的多核异构通信系统,包括一个主核和多个从核;所述主核与所述多个从核之间均设置有数据通道,且每一所述数据通道均设置有多个循环缓冲区;所述数据通道用于所述从核向所述主核发送数据,所述循环缓冲区用于存储所述数据通道中正在发送的数据;
27、所述主核用于运行ipc-adapter-svc进程;
28、所述多个从核分别用于接收不同的车辆内部数据或车辆外部数据;并将所述车辆内部数据或车辆外部数据投入其与所述主核之间的数据通道中的循环缓冲区;
29、所述ipc-adapter-svc进程用于获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据;并将所述车辆内部数据或车辆外部数据通过分布式中间件dds分发给所述主核运行的不同智驾进程。
30、优选地,其中,车辆的存储器存储有数据结构,所述数据结构至少包括多个vring结构体,所述多个vring结构体与多个数据通道一一对应,所述vring结构体至少包含可使用buffer索引;
31、其中,当任意一个从核将所述车辆内部数据或车辆外部数据放入其与所述主核之间的数据通道中的循环缓冲区时,该数据通道对应的vring结构体的可使用buffer索引的值加1,以指示该任意一个从核的当前工作位置;
32、其中,所述ipc-adapter-svc进程具体用于当其从任意一个数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据时,读取该任意一个数据通道所对应的vring结构体的可使用buffer索引的值,根据该可使用buffer索引的值确定当前要提取数据的循环缓冲区的位置;并根据所述当前要提取数据的循环缓冲区的位置从对应循环缓冲区中提取所述车辆内部数据或车辆外部数据。
33、优选地,其中,每一个数据通道均设置有n个循环缓冲区;n大于0;
34、当任意一个vring结构体的可使用buffer索引的值加1时,若此时该任意一个vring结构体的可使用buffer索引的值等于n,则将该任意一个vring结构体的可使用buffer索引的值设置为1。
35、优选地,其中,车辆的存储器存储有多个shmlovirtio结构,所述多个shmlovirtio结构与多个数据通道一一对应,每一个所述shmlovirtio结构中记录与其对应的数据通道的优先级以及循环缓冲区的个数和容量;
36、所述主核启动ipc-adapter-svc进程之前,初始化ipc通道,配置每一所述数据通道的优先级以及循环缓冲区的个数和容量。
37、优选地,所述多个从核之间均设置有数据通道,且每一所述数据通道均设置有多个循环缓冲区;所述数据通道用于任意一个从核向另一个从核发送数据,所述循环缓冲区用于存储所述数据通道中正在发送的数据;所述多个从核至少包括第一从核和第二从核;
38、所述第一从核用于接收车辆内部数据或车辆外部数据;并将该车辆内部数据或车辆外部数据投入其与第二从核之间的数据通道中的循环缓冲区;
39、所述第二从核用于获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取该车辆内部数据或车辆外部数据。
40、本发明的实施例还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例的用于车辆智驾的多核异构通信方法的步骤。
41、本发明的各实施例至少具有以下有益效果:
42、对主核与多个从核之间的数据通道分别赋予优先级,主核设置ipc-adapter-svc进程,所述ipc-adapter-svc进程获取每一数据通道的优先级,并按优先级排序依次分别从每一数据通道中的循环缓冲区提取所述车辆内部数据或车辆外部数据;并将所述车辆内部数据或车辆外部数据通过分布式中间件dds分发给所述主核运行的不同智驾进程。在本发明的各实施例中,每个核之间的数据传输通道可以由各个核单独设计优先级,这样可以保证不同的信号之间可以按照实时性要求的高低进行通道优先级排序,通过调试可以找到一个合理的优先级顺序,以满足不同的信号在智驾应用的实时性要求,实现车辆智驾方面信息的跨核传输的低时延性。而且,目前相关的现有通信方法,只使用一种通信方式,比如单一的dds通信或者单一的某种核间通信方式,而本发明的各实施例将ipc核间通信技术和分布式中间件dds技术相结合,能够实现车辆智驾方面信息的跨核传输的高效率性,适用于大型的多核异构智驾soc平台使用。
43、本发明的实施例的其它特征和优点将在随后的说明书中阐述。