基于多核SoC的CAN总线信号解析方法、装置和系统与流程

文档序号:31899826发布日期:2022-10-22 03:40阅读:142来源:国知局
基于多核soc的can总线信号解析方法、装置和系统
技术领域
:1.本技术涉及汽车电子电气
技术领域
:,尤其涉及一种基于多核soc的can总线信号解析方法、装置和系统。
背景技术
::2.随着汽车技术的发展,汽车在电气化、智能化、联网化等技术路线上飞速发展,汽车上需要处理的信号和执行的指令也越来越多,传统单核mcu(microcontrolunit,微控制器单元)的开发方法已经难以处理日益复杂的can(controllerareanetwork,控制器局域网络)总线数据和指令。技术实现要素:3.本技术提供一种基于多核soc的can总线信息解析方法、装置和系统,用以处理汽车电子电气系统中的can总线数据。4.第一方面,本技术提供了一种基于多核soc的can总线信号解析方法,包括:通过微控制单元mcu获取控制器局域网can总线的第一信号,其中,所述第一信号为can信号;通过所述mcu将所述第一信号转化为第二信号,其中,所述第二信号为以太网eth信号;将所述第二信号发送至微处理单元mpu;通过所述mpu对第二信号转化得到所述第一信号;通过所述mpu对所述第一信号解析,得到解析结果,其中,所述解析结果包括所述第一信号的信号值;将所述信号值更新至对应的信号值存储区。5.在一些可选的实施方式中,所述通过所述mcu将所述第一信号转化为第二信号,包括:由所述mcu根据预设的控制局域网-以太网can-eth路由表,将所述第一信号转化为所述第二信号。6.在一些可选的实施方式中,所述将所述第二信号发送至mpu,包括:所述mcu通过通信通道将所述第二信号发送至所述mpu。7.在一些可选的实施方式中,所述通过所述mpu对所述第一信号解析,得到解析结果,包括:确定所述第一信号的id与数据,根据所述第一信号的id对应信号解析映射表在所述第一信号的数据中确定所述第一信号的信号值。8.在一些可选的实施方式中,所述信号解析映射表为结构体数组,结构体数组的每一项包括can信号的id、信号起始字节、信号起始位、信号长度、信号值存储区索引及信号在信号值存储区的偏移量。9.在一些可选的实施方式中,所述根据所述第一信号的id对应信号解析映射表在所述第一信号的数据中确定所述第一信号的信号值,包括:通过所述mpu查找所述信号解析映射表的表项,根据表项中的信号起始字节、信号起始位及信号长度,解析所述第一信号的数据,得到所述信号值。10.在一些可选的实施方式中,所述将所述信号值更新至对应的信号值存储区,包括:根据表项中的信号值存储区索引、信号在信号值存储区的偏移量,将所述信号值存储到对应的信号值存储区。11.在一些可选的实施方式中,所述信号值存储区为结构体变量,结构体变量的结构体成员为需要存储的信号值,结构体对齐方式为字节对齐。12.第二方面,本技术提供了一种基于多核soc的can总线信号解析装置,包括:获取单元,被配置为通过mcu获取can总线的第一信号,其中,所述第一信号为can信号;第一转化单元,被配置为通过所述mcu将所述第一信号转化为第二信号,其中,所述第二信号为以太网eth信号;发送单元,被配置为将所述第二信号发送至mpu;第二转化单元,被配置为通过所述mpu对第二信号转化得到所述第一信号;解析单元,被配置为通过所述mpu对所述第一信号解析,得到解析结果,其中,所述解析结果包括所述第一信号的信号值;存储单元,被配置为将所述信号值更新至对应的信号值存储区。13.第三方面,本技术提供了一种基于多核soc的can总线信号解析系统,包括:can控制器和多核soc,所述多核soc包括mcu和mpu;其中,所述can控制器接收来自can总线的第一信号,将所述第一信号发送至所述mcu,其中,所述第一信号为can信号;所述mcu接收到所述第一信号,将所述第一信号转化为第二信号,其中,所述第二信号为以太网eth信号;所述mcu将所述第二信号发送至所述mpu;所述mpu对第二信号转化得到所述第一信号;所述mpu对所述第一信号解析,得到解析结果,其中,所述解析结果包括所述第一信号的信号值;所述mpu将所述信号值更新至对应的信号值存储区。14.本技术的实施例提供的基于多核soc的can总线信号解析方法,通过mcu获取can总线的第一信号,其中,第一信号为can信号;通过mcu将第一信号转化为第二信号,其中,第二信号为以太网eth信号;将第二信号发送至mpu;通过mpu对第二信号转化得到第一信号;通过mpu对第一信号解析,得到解析结果,其中,解析结果包括第一信号的信号值;将信号值更新至对应的信号值存储区。通过上述技术方案,将can数据的获取放在mcu上,将can数据的解析放在mpu上,mpu解析can数据中的信号值,并将信号值存储到对应的信号存储区,mpu的主频高于mcu,通过低主频的mcu处理can数据的接收,高主频的mpu处理can的解析,解决了现有mcu开发中can数据处理的性能瓶颈问题。附图说明15.附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。16.图1为根据本技术的一种基于多核soc的can总线信号解析方法的流程示意图;图2为根据本技术一种基于多核soc的can总线信号解析方法的又一个实施例的流程示意图;图3为根据本技术的一种基于多核soc的can总线信号解析装置的一个实施例的结构示意图;图4为根据本技术的一种基于多核soc的can总线信号解析系统的结构示意图。具体实施方式17.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。18.在本技术实施例记载中,需要说明的是,除非另有说明和限定,术语“连接”应做广义理解,例如,可以是电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。19.需要说明的是,本技术实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本技术的实施例可以除了在这里图示或描述的那些以外的顺序实施。20.本技术实施例中,多核soc(systemonchip,系统级芯片)包括一个以上mcu和对应的一个以上mpu(microprocessorunit,微处理器单元),其中,mcu与mpu之间可通过通信通道进行eth(ethernet,以太网)信号传输。本技术中对于通信通道的形式不作具体限定,在一些实施例中,通信通道例如可包括基于eth控制器提供的信道。21.参考图1,其示出了根据本技术的一种基于多核soc的can总线信号解析方法的一个实施例的流程100。该基于多核soc的can总线信号解析方法,可包括以下步骤:步骤101,通过mcu获取can总线的第一信号。22.其中,第一信号为can信号。23.这里,can信号为can总线信号。can总线信号是can总线中传输的帧,本技术对于can总线中的帧类型不做具体限定,例如可包括数据帧、远程帧、错误帧、过载帧及帧间隔。24.步骤102,通过mcu将第一信号转化为第二信号。25.其中,第二信号为eth信号。26.在一些可选的实施方式中,通过mcu将第一信号转化为第二信号,可以包括:由mcu根据预设的can-eth路由表,将第一信号转化为第二信号。27.步骤103,将第二信号发送至mpu。28.在一些可选的实施方式中,将第二信号发送至mpu,可以包括:mcu通过通信通道将第二信号发送至mpu。29.这里,通信通道例如可以包括由eth控制器控制的信道等。30.步骤104,通过mpu对第二信号转化得到第一信号。31.在一些可选的实施方式中,通过mpu对第二信号转化得到第一信号,可包括:由mpu根据预设的can-eth路由表,将第二信号转化为第一信号。32.步骤105,通过mpu对第一信号解析,得到解析结果。33.其中,解析结果包括第一信号的信号值。34.在一些可选的实施方式中,通过mpu对第一信号解析,得到解析结果,可以包括:确定第一信号的id与数据,根据第一信号的id对应信号解析映射表在第一信号的数据中确定第一信号的信号值。35.本技术实施例中,信号解析映射表为结构体数组,结构体数组的每一项包括can信号的id、信号起始字节、信号起始位、信号长度、信号值存储区索引及信号在信号值存储区的偏移量。36.在一些可选的实施方式中,根据第一信号的id对应信号解析映射表在第一信号的数据中确定第一信号的信号值,可以包括:通过mpu查找信号解析映射表的表项,根据映射表的表项中的信号起始字节、信号起始位及信号长度,解析第一信号的数据,得到信号值。37.在一些可选的实施方式中,通过mpu对第一信号解析,得到解析结果,可以包括:确定第一信号的结束字节和结束位;获取第一信号中起始字节到结束字节的数据;将起始字节的数据右移起始位长度,将移位后的数据存储到临时变量;将起始字节-1到结束字节的数据也存入临时变量,得到信号值。38.步骤106,将信号值更新至对应的信号值存储区。39.本技术实施例中,信号值存储区为结构体变量,结构体变量的结构体成员为需要存储的信号值,结构体对齐方式为字节对齐。40.在一些可选的实施方式中,将信号值更新至对应的信号值存储区,可以包括:根据表项中的信号值存储区索引、信号在信号值存储区的偏移量,将信号值存储到对应的信号值存储区。41.本技术通过上述实施例技术方案,将can数据的获取放在mcu上,将can数据的解析放在mpu上,mpu解析can数据中的信号值,并将信号值存储到对应的信号存储区,mpu的主频高于mcu,通过低主频的mcu处理can数据的接收,高主频的mpu处理can的解析,解决了现有mcu开发中can数据处理的性能瓶颈问题。42.下面参考图2,其示出了根据本技术一种基于多核soc的can总线信号解析方法的又一个实施例的流程200。该基于多核soc的can总线信号解析方法,可包括以下步骤:步骤201,定义信号值存储区和信号解析映射表。43.这里,示例性地,信号值存储区的定义如下:void*dc_data_mem_table[e_dc_total_data_mem]。[0044]示例性地,信号解析映射表定义如下:typedefstruct{ꢀꢀꢀintcan_id;//触发解析can_idꢀꢀꢀcharsig_byte;//相关的信号的起始字节ꢀꢀꢀcharsig_bit;//相关的信号的起始位ꢀꢀꢀcharsig_length;//信号的长度ꢀꢀꢀchardata_type;//数据存储类型ꢀꢀꢀintdata_mem_offset;//数据成员在数据类型中的偏移量}dc_signal_map_t。[0045]步骤202,mcu获取can消息,将can消息转化为eth消息发送给mpu。[0046]示例性地,mcu获取的can消息1为:canid1+candata1:0x30000000,0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08;mcu获取的can消息2为:canid2+candata2:0x30000001,0x10,0x12,0x13,0x14,0x15,0x16,0x17,0x18;mcu将接收到的can消息1和can消息2封装成以太网报文发送给mpu,eth数据包为:ethid1+ethdatelength1+ethdata1+ethid2+ethdatelength2+ethdata2:0x100,0x000x00,0x00,0x08,0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08,0x101,0x000x00,0x00,0x08,0x10,0x12,0x13,0x14,0x15,0x16,0x17,0x18。[0047]步骤203:mpu将eth消息映射为can消息,获取can消息的id与数据。[0048]示例性地,mpu收到的eth数据包为步骤202中的eth数据包,mpu解析出can消息1:0x30000000,0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08;can消息2:0x30000001,0x10,0x12,0x13,0x14,0x15,0x16,0x17,0x18。[0049]mpu获取到can消息1的id为0x30000000,数据为0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08。[0050]mpu获取到can消息2的id为0x30000001,数据为0x10,0x12,0x13,0x14,0x15,0x16,0x17,0x18。[0051]步骤204:mpu根据can消息的id查找信号解析映射表,解析出can消息中的信号值。[0052]示例性地,can消息1的信号映射表和can消息2的信号映射表如下定义所示:constdc_signal_map_tdc_signal_map_table[]={{0x30000000,0,0,8,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》vehicle_state)},//车辆启动状态;{0x30000000,1,0,8,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》run_mode)},//运行模式;{0x30000001,0,0,16,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》speed)},//车速;}。[0053]根据定义的信号解析映射表,mpu解析出来的can消息1中包含的信号值1为0x01,can消息1中包含的信号值2为0x02,can消息2中包含的信号值1为0x1012。[0054]步骤205:mpu将解析出来的信号值更新到对应的信号值存储区。示例性地,根据步骤201中定义的信号解析映射表和信号值存储区,mpu将can消息1中的信号值1存储在存储区dc_data_mem_table[e_dc_vehicle_data_mem_index]+(int)&(((dc_vehicle_data_t*)0)-》vehicle_state,将can消息1中的信号值2存储在信号值存储区dc_data_mem_table[e_dc_vehicle_data_mem_index]+(int)&(((dc_vehicle_data_t*)0)-》run_mode,将can消息2中的信号值1存储在信号值存储区dc_data_mem_table[e_dc_vehicle_data_mem_index]+(int)&(((dc_vehicle_data_t*)0)-》speed。[0055]下面参考图3,作为图1所示的方法的实现,本技术提供了一种基于多核soc的can总线信号解析装置的一个实施例。如图3所示,本实施例的基于多核soc的can总线信号解析装置300包括:获取单元301、第一转化单元302、发送单元303、第二转化单元304、解析单元305及存储单元306。其中,获取单元301,被配置为通过mcu获取can总线的第一信号,其中,第一信号为can信号;第一转化单元302,被配置为通过mcu将第一信号转化为第二信号,其中,第二信号为以太网eth信号;发送单元303,被配置为将第二信号发送至mpu;第二转化单元304,被配置为通过mpu对第二信号转化得到第一信号;解析单元305,被配置为通过mpu对第一信号解析,得到解析结果,其中,解析结果包括第一信号的信号值;存储单元306,被配置为将信号值更新至对应的信号值存储区。[0056]在本实施例中,基于多核soc的can总线信号解析装置300的获取单元301、第一转化单元302、发送单元303、第二转化单元304、解析单元305及存储单元306的具体处理及其所带来的技术效果可分别参考图1对应实施例中步骤101至步骤106的相关说明,在此不再赘述。[0057]在一些可选的实施方式中,第一转化单元302,被进一步配置为由mcu根据预设的can-eth路由表将第一信号转化为第二信号。[0058]在一些可选的实施方式中,发送单元303,被进一步配置为mcu通过通信通道将第二信号发送至mpu。[0059]这里,通信通道例如可以包括由eth控制器控制的信道等。[0060]在一些可选的实施方式中,第二转化单元304,被进一步配置为由mpu根据预设的can-eth路由表将第二信号转化为第一信号。[0061]在一些可选的实施方式中,解析单元305,被进一步配置为确定第一信号的id与数据,根据第一信号的id对应信号解析映射表在第一信号的数据中确定第一信号的信号值。[0062]本技术实施例中,信号解析映射表为结构体数组,结构体数组的每一项包括can信号的id、信号起始字节、信号起始位、信号长度、信号值存储区索引及信号在信号值存储区的偏移量。[0063]在一些可选的实施方式中,解析单元305,被进一步配置为通过mpu查找信号解析映射表的表项,根据表项中的信号起始字节、信号起始位及信号长度,解析第一信号的数据,得到信号值。[0064]在一些可选的实施方式中,通过mpu对第一信号解析,得到解析结果,可包括:确定第一信号的结束字节和结束位;获取第一信号中起始字节到结束字节的数据;将起始字节的数据右移起始位长度,将移位后的数据存储到临时变量;将起始字节-1到结束字节的数据也存入临时变量,得到信号值。[0065]本技术实施例中,信号值存储区为结构体变量,结构体变量的结构体成员为需要存储的信号值,结构体对齐方式为字节对齐。[0066]在一些可选的实施方式中,存储单元306,被进一步配置为根据表项中的信号值存储区索引、信号在信号值存储区的偏移量,将信号值存储到对应的信号值存储区。[0067]需要说明的是,本技术的实施例提供的基于多核soc的can总线信号解析装置中个单元的实现细节和技术效果可以参考本公开中其他实施例的说明,在此不再赘述。[0068]下面参考图4,其示出了根据本技术一种基于多核soc的can总线信号解析系统的一个实施例的系统结构400。该基于多核soc的can总线信号解析系统,可包括:can控制器401和多核soc402,其中,多核soc402包括mcu403和mpu404。[0069]该基于多核soc的can总线信号解析系统能够用于运行如图1所示的基于多核soc的can总线信号解析方法,示例地:can控制器401接收来自can总线的第一信号,将第一信号发送至mcu,其中,第一信号为can信号。[0070]mcu403接收到第一信号,将第一信号转化为第二信号,其中,第二信号为eth信号。[0071]mcu403将第二信号发送至mpu404。[0072]mpu404对第二信号转化得到第一信号。[0073]mpu404对第一信号解析,得到解析结果,其中,解析结果包括第一信号的信号值。[0074]mpu404将信号值更新至对应的信号值存储区。[0075]本实施例中,can控制器401可包括can控制器和收发器,can控制器401能够用于接收来自can总线的can信号,还能够用于向mcu403发送can信号。[0076]示例性地,当can控制器及收发器收到来自can总线的can信号id为0x30000000,can信号数据为0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08的can1消息时,将can1消息传输给mcu处理器。[0077]mcu处理器将can1消息转化为eth1消息,消息格式为eth1id+eth1datalength+eth1data,其中eth1id=0x100,eth1datalength=0x00000008,eth1data为0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08,mcu将转化得到的eth1消息封装成udp报文,通过eth控制器发送给mpu。[0078]mpu接收到来自eth控制器的udp报文,解析udp报文内包含的can消息,根据存储在mpu内存中的id映射表{0x30000000,0x100},将eth1id=0x100映射为can1id=0x30000000;解析udp报文中的eth1datalength=0x00000008得到can1dlc=8;解析udp报文中的eth1data,得到can1data为0x01,0x02,0x03,0x04,0x05,0x6,0x07,0x08。[0079]mpu根据解析得到的can1id查找信号映射表:constdc_signal_map_tdc_signal_map_table[]={{0x30000000,0,0,8,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》vehicle_state)},//车辆启动状态;{0x30000000,1,0,8,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》run_mode)},//运行模式;{0x30000001,0,0,16,e_dc_vehicle_data_mem_index,(int)&(((dc_vehicle_data_t*)0)-》speed)},//车速;}。[0080]解析can1消息中的信号值,解析算法如下:遍历dc_signal_map_table中的每一项,当can1id和dc_signal_map_table中某项的canid匹配时,从该项中得到待解析信号起始字节,起始位和信号长度。[0081]根据信号起始字节,起始位和信号长度,计算can1消息中包含的信号值1=0x01,信号值2=0x02。[0082]mpu将解析出来的can1消息的信号值1和信号值2更新到对应的信号存储区,更新算法如下:遍历dc_signal_map_table中的每一项,当can1id和dc_signal_map_table中某项的canid匹配时,从该项中得到待解析信号存储区索引和存储区偏移量。[0083]根据信号存储区索引和存储区偏移量,将信号值1存储到dc_data_mem_table[e_dc_vehicle_data_mem_index]+(int)&(((dc_vehicle_data_t*)0)-》vehicle_state,将信号值2存储dc_data_mem_table[e_dc_vehicle_data_mem_index]+(int)&(((dc_vehicle_data_t*)0)-》run_mode。[0084]本技术实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。[0085]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1