芯片状态检测方法和系统、电子设备及可读存储介质与流程

专利2022-05-10  23

1.本发明涉及自动驾驶
技术领域
:,尤其涉及一种芯片状态检测方法和系统、电子设备及可读存储介质。
背景技术
::2.自动驾驶的控制器因为要应对多种传感器(激光雷达,摄像头和毫米波雷达)信号的输入,解析和计算,单芯片无法达到算力的要求,因此,往往会在自动驾驶控制器内部配置多颗芯片,用来进行算力的分配。按照以往的单芯片控制器,只要在单颗芯片内部内置状态检测机制就可以简单地获取芯片的运行状态。但是,在引入多颗芯片以后,如何用主芯片来统筹的管理整个控制器中多个芯片的运行状态,成为一个新的问题。3.常用从芯片功能架构如下:应用层软件用以完成自动驾驶相关的逻辑运算,如原始的感知结果输入,数据的处理,控制逻辑运算等。应用层软件监控模块负责监控应用层软件的输出。软件运行和硬件设备监控层负责监控单元的自诊断、硬件环境的检测、软件运行状态监控等。主芯片作为两个从芯片的后续工作芯片,以主芯片的身份存在。在主芯片或从芯片进行后续工作前,需要知道从主芯片或从芯片传送过来的信号是否存在问题。传统的做法是主芯片或从芯片的供应商会在主芯片或从芯片的底层软件做相应的自检机制,并将状态实时地存入状态寄存器,供主芯片或从芯片进行读取。但是因为国内外芯片供应商良莠不齐,并且主芯片或从芯片的供应商不会开放主芯片或从芯片的自检机制,此处就存在浑水摸鱼的可能性,而且即使状态寄存器也存在失效的可能性,有可能会导致主芯片或从芯片已经处于失效的状态,但是状态寄存器存储的运行状态依然为良好。技术实现要素:4.本发明提供一种芯片状态检测方法和系统、电子设备及可读存储介质,用以解决现有技术中存在的技术缺陷。5.本发明提供一种芯片状态检测方法,包括:6.s1、在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;7.s2、接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;8.s3、在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;9.s4、若相同,则将下一个预设控制周期作为预设控制周期并返回所述s1;10.s5、若不相同,则检测出所述第二芯片出错。11.根据本发明所述的芯片状态检测方法,所述将采用随机数产生方法产生的随机数发送给第二芯片,包括:12.调用所述第一芯片内置的时间获取函数,将时间获取函数所获取的系统时间对应的数值定为随机数初始值;13.用所述随机数初始值对所述第一应答表的表长取余,将余数作为最终的随机数;14.将所述随机数发送给第二芯片。15.根据本发明所述的芯片状态检测方法,所述采用随机数产生方法产生的随机数不大于所述第一应答表的表长。16.根据本发明所述的芯片状态检测方法,所述在第一芯片的第一应答表中读取到第一应答数以及在第二芯片的第二应答表中读取到第二应答数均采用读取应答数方法实现,所述读取应答数方法包括:17.将预设应答表的首地址赋值给一个数组指针,作为其初始值;18.将采用随机数产生方法产生的随机数作为索引,在所述数组指针中读取相应的值作为新的索引号;19.基于所述新的索引号,在所述数组指针中读取对应的值作为第一应答数或第二应答数。20.根据本发明所述的芯片状态检测方法,所述接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数包括:21.通过与所述第一芯片与第二芯片之间的spi通信,接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数。22.根据本发明所述的芯片状态检测方法,所述s4包括:23.若相同,则在控制器下电前将下一个预设控制周期作为预设控制周期并返回所述s1。24.根据本发明所述的芯片状态检测方法,所述s5之后,所述方法还包括:25.基于检测出所述第二芯片的出错,进行错误处理。26.本发明还提供了一种芯片状态检测系统,包括:27.第一应答数读取模块,用于在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;28.第二应答数读取模块,用于接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;29.应答数对比模块,用于在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;30.循环检测模块,用于若第一应答数和接收到的第二应答数相同,则将下一个预设控制周期作为预设控制周期并返回所述第一应答数读取模块;31.检错模块,用于若第一应答数和接收到的第二应答数不相同,则检测出所述第二芯片出错。32.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述芯片状态检测方法的步骤。33.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述芯片状态检测方法的步骤。34.本发明提供的芯片状态检测方法和系统、电子设备及可读存储介质基于所述随机数,在第一芯片的第一应答表中读取到第一应答数,并接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;通过比对所述第一应答数和接收到的第二应答数是否相同来检测第二芯片的状态,可以实现在引入多颗芯片以后,用其中的第一芯片来统筹的管理整个控制器中其他第二芯片的运行状态,能够更加全面、精准的检测芯片。附图说明35.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。36.图1是本发明提供的芯片状态检测方法的流程示意图;37.图2是本发明提供的芯片状态检测系统的结构示意图;38.图3是本发明提供的电子设备的结构示意图。具体实施方式39.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。40.下面结合图1描述本发明的一种芯片状态检测方法,该方法的执行主体是第一芯片,该方法包括:41.s1、在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;42.预设控制周期可以设置为10ms,10ms是一般芯片典型的控制周期,第一芯片作为执行主体,可以是自动驾驶控制器中内置的主芯片或者从芯片,第一芯片的数量可以是多片,也可以是一片,一般情况下,是一片主芯片或者多片从芯片。在自动驾驶控制器中,感知传感器单元分别可以由多种传感器组合配置而成,多片从芯片作为众多传感器信号接收,解析和计算方使用。基于所述随机数,在第一芯片的第一应答表中读取到第一应答数是通过读取应答数方法实现。理论上,主从芯片在检测机制上是一样的,对称的,所以可以相互检测。第一应答数可以存储为result,就是写代码的时候,需要用一个变量来代表这个第一应答数,这里给这个变量取名为result。43.读取应答数方法的程序如下:44.uintalgorithmx(uintinput)45.{46.int*table=&β;47.intconvertnum=0;48.convertnum=table[input];[0049]return(table[convertnum]);[0050]}[0051]s2、接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;[0052]第二芯片的第二应答表中读取第二应答数也是通过读取应答数方法实现。第二芯片读取第二应答数基于的随机数与第一芯片读取第一应答数的随机数是同一个随机数,该随机数都是通过随机数产生方法产生的。第二应答表与第一应答表是相同的,都是采用预设应答表。随机数其实就是个编号,也就是通过随机数进行抽签,抽到应答数表里面的第几号,则将第几号作为第一应答数或第二应答数。[0053]预设应答表可以如下表1所示,表中的数字可以随意更改,但是不能大于表的长度。[0054]表1[0055]序号12345678910111213141516表值16812510791516111442313[0056]随机数产生方法对应的程序如下:[0057]uintrandom(uinttablelen)[0058]{[0059]uintrandom;[0060]random=gettime();//gettime可取芯片内置的时间获取函数[0061]random=random%tablelen;//对产生的随机数取余,获取不大于问题表β的值[0062]return(random);[0063]s3、在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;[0064]在下一个预设控制周期的任务中,对第一应答数和接收到的第二应答数进行比较。在被检测芯片正常工作的情况下,第二应答数应当与第一应答数是相同的。[0065]s4、若相同,则将下一个预设控制周期作为预设控制周期并返回所述s1;[0066]若所述第一应答数和接收到的第二应答数相同,则说明被检测的第二芯片没有问题,则需要循环继续检测下一个预设控制周期的任务,因为有可能这一个预设控制周期没错误,下一预设控制周期会产生错误,所以检测需要一直循环。[0067]s5、若不相同,则检测出所述第二芯片出错。[0068]若所述第一应答数和接收到的第二应答数不相同,则说明第二芯片传送回来的信号出现问题,说明第二芯片出错。[0069]本发明提供的芯片状态检测方法和系统、电子设备及可读存储介质基于所述随机数,在第一芯片的第一应答表中读取到第一应答数,并接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;通过比对所述第一应答数和接收到的第二应答数是否相同来检测第二芯片的状态,可以实现在引入多颗芯片以后,用其中的第一芯片来统筹的管理整个控制器中其他第二芯片的运行状态,能够更加全面、精准的检测芯片。[0070]根据本发明所述的芯片状态检测方法,所述将采用随机数产生方法产生的随机数发送给第二芯片,包括:[0071]调用所述第一芯片内置的时间获取函数,将时间获取函数所获取的系统时间对应的数值定为随机数初始值;[0072]时间获取函数是现有技术,一般芯片都会自带时间获取函数,时间获取函数获取的是系统时间,在计算机表示中其实就是一个整数,把这个整数作为随机数的第一个值,也就是所获取的系统时间对应的数值,将该数值作为随机数初始值,具备更好的随机性。[0073]用所述随机数初始值对所述第一应答表的表长取余,将余数作为最终的随机数。该随机数用于在预设应答表中随机读取应答数;[0074]将所述随机数发送给第二芯片。[0075]根据本发明所述的芯片状态检测方法,所述采用随机数产生方法产生的随机数不大于所述第一应答表的表长。是由于需要用所述随机数初始值对所述第一应答表的表长取余,因此需要随机数不大于所述第一应答表的表长。[0076]根据本发明所述的芯片状态检测方法,所述在第一芯片的第一应答表中读取到第一应答数以及在第二芯片的第二应答表中读取到第二应答数均采用以下方式包括:[0077]将预设应答表的首地址赋值给一个数组指针,作为其初始值;[0078]将采用随机数产生方法产生的随机数作为索引,在所述数组指针中读取相应的值作为新的索引号;[0079]基于所述新的索引号,在所述数组指针中读取对应的值作为第一应答数或第二应答数。[0080]根据本发明所述的芯片状态检测方法,所述接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数包括:[0081]通过与所述第一芯片与第二芯片之间的spi通信,接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数。[0082]spi(serialperipheralinterface),就是串行外围设备接口,spi分为主、从两种模式,一个spi通讯系统需要包含一个(且只能是一个)主设备(也就是主芯片),一个或多个从设备(也就是从芯片)。spi接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。支持全双工通信、通信简单、数据传输速率快。[0083]根据本发明所述的芯片状态检测方法,所述s4包括:[0084]若相同,则在控制器下电前将下一个预设控制周期作为预设控制周期并返回所述s1。检测控制器下电之前的第二芯片是否出错,当控制器下电之后,就不需要检测。[0085]根据本发明所述的芯片状态检测方法,所述s5之后,所述方法还包括:[0086]基于检测出所述第二芯片的出错,进行错误处理。[0087]参见图2,下面对本发明提供的芯片状态检测系统进行描述,下文描述的芯片状态检测系统与上文描述的芯片状态检测方法可相互对应参照。[0088]第一应答数读取模块10,用于在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;[0089]预设控制周期可以设置为10ms,10ms是一般芯片典型的控制周期,第一芯片作为执行主体,可以是自动驾驶控制器中内置的主芯片或者从芯片,第一芯片的数量可以是多片,也可以是一片,一般情况下,是一片主芯片或者多片从芯片。在自动驾驶控制器中,感知传感器单元分别可以由多种传感器组合配置而成,多片从芯片作为众多传感器信号接收,解析和计算方使用。基于所述随机数,在第一芯片的第一应答表中读取到第一应答数是通过读取应答数方法实现。理论上,主从芯片在检测机制上是一样的,对称的,所以可以相互检测。第一应答数可以存储为result,就是写代码的时候,需要用一个变量来代表这个第一应答数,这里给这个变量取名为result。[0090]第二应答数读取模块20,用于接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;[0091]第二芯片读取第二应答数基于的随机数与第一芯片读取第一应答数的随机数是同一个随机数,该随机数都是通过随机数产生方法产生的。第二应答表与第一应答表是相同的,都是采用预设应答表。随机数其实就是个编号,也就是通过随机数进行抽签,抽到应答数表里面的第几号,则将第几号作为第一应答数或第二应答数。[0092]应答数对比模块30,用于在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;[0093]在下一个预设控制周期的任务中,对第一应答数和接收到的第二应答数进行比较。在被检测芯片正常工作的情况下,第二应答数应当与第一应答数是相同的。[0094]循环检测模块40,用于若第一应答数和接收到的第二应答数相同,则将下一个预设控制周期作为预设控制周期并返回所述第一应答数读取模块;[0095]若所述第一应答数和接收到的第二应答数相同,则说明被检测的第二芯片没有问题,则需要循环继续检测下一个预设控制周期的任务,因为有可能这一个预设控制周期没错误,下一预设控制周期会产生错误,所以检测需要一直循环。[0096]检错模块50,用于若第一应答数和接收到的第二应答数不相同,则检测出所述第二芯片出错。[0097]若所述第一应答数和接收到的第二应答数不相同,则说明第二芯片传送回来的信号出现问题,说明第二芯片出错。[0098]根据本发明所述的芯片状态检测系统,所述将采用随机数产生方法产生的随机数发送给第二芯片,包括:[0099]调用所述第一芯片内置的时间获取函数,将时间获取函数所获取的系统时间对应的数值定为随机数初始值;[0100]时间获取函数是现有技术,一般芯片都会自带时间获取函数,时间获取函数获取的是系统时间,在计算机表示中其实就是一个整数,把这个整数作为随机数的第一个值,也就是所获取的系统时间对应的数值,将该数值作为随机数初始值,具备更好的随机性。[0101]用所述随机数初始值对所述第一应答表的表长取余,将余数作为最终的随机数。该随机数用于在预设应答表中随机读取应答数;[0102]将所述随机数发送给第二芯片。[0103]根据本发明所述的芯片状态检测系统,所述采用随机数产生方法产生的随机数不大于所述第一应答表的表长。是由于需要用所述随机数初始值对所述第一应答表的表长取余,因此需要随机数不大于所述第一应答表的表长。[0104]根据本发明所述的芯片状态检测系统,所述在第一芯片的第一应答表中读取到第一应答数以及在第二芯片的第二应答表中读取到第二应答数均采用读取应答数方法实现,所述读取应答数方法包括:[0105]将预设应答表的首地址赋值给一个数组指针,作为其初始值;[0106]将采用随机数产生方法产生的随机数作为索引,在所述数组指针中读取相应的值作为新的索引号;[0107]基于所述新的索引号,在所述数组指针中读取对应的值作为第一应答数或第二应答数。[0108]根据本发明所述的芯片状态检测系统,所述接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数包括:[0109]通过与所述第一芯片与第二芯片之间的spi通信,接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数。[0110]根据本发明所述的芯片状态检测系统,所述循环检测模块40用于:[0111]若第一应答数和接收到的第二应答数相同,则在控制器下电前将下一个预设控制周期作为预设控制周期并返回所述第一应答数读取模块10。检测控制器下电之前的第二芯片是否出错,当控制器下电之后,就不需要检测。[0112]根据本发明所述的芯片状态检测方法,所述系统还包括:[0113]错误处理模块,用于基于检测出所述第二芯片的出错,进行错误处理。[0114]图3示例了一种电子设备的实体结构示意图,该电子设备可以包括:处理器(processor)310、通信接口(communicationsinterface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行芯片状态检测方法,该方法包括:[0115]s1、在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;[0116]s2、接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;[0117]s3、在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;[0118]s4、若相同,则将下一个预设控制周期作为预设控制周期并返回所述s1;[0119]s5、若不相同,则检测出所述第二芯片出错。[0120]此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read‑onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。[0121]另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的芯片状态检测方法,该方法包括:[0122]s1、在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;[0123]s2、接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;[0124]s3、在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;[0125]s4、若相同,则将下一个预设控制周期作为预设控制周期并返回所述s1;[0126]s5、若不相同,则检测出所述第二芯片出错。[0127]又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的芯片状态检测方法,该方法包括:[0128]s1、在预设控制周期的任务中,将采用随机数产生方法产生的随机数发送给第二芯片,基于所述随机数,在第一芯片的第一应答表中读取到第一应答数;[0129]s2、当所述第二芯片收到随机数后,接收由所述第二芯片基于所述随机数、在第二芯片的第二应答表中读取到的第二应答数;其中,所述第二应答表与第一应答表采用内容相同的预设应答表;[0130]s3、在下一个预设控制周期的任务中,比较所述第一应答数和接收到的第二应答数是否相同;[0131]s4、若相同,则将下一个预设控制周期作为预设控制周期并返回所述s1;[0132]s5、若不相同,则检测出所述第二芯片出错。[0133]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。[0134]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。[0135]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
转载请注明原文地址:https://doc.8miu.com/index.php/read-1722471.html

最新回复(0)