发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于芯片验证的方法及装置、电子设备、存储介质,以在主控芯片对多个待测芯片进行验证的情况下,提高主控芯片的验证效率。
在一些实施例中,用于芯片验证的方法,应用于主控芯片侧,包括:将应用固件和应用固件的长度写入多个待测芯片;将校验固件写入多个所述待测芯片的随机存取存储器区,触发各所述待测芯片按照所述校验固件运行;所述校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值;分别获取各所述校验值;根据各所述校验值分别确定各所述待测芯片下载的应用固件是否正确。
在一些实施例中,将应用固件和应用固件的长度写入待测芯片,包括:
获取应用固件和应用固件的长度;将应用固件写入待测芯片的闪存;将应用固件的长度写入待测芯片中预设的第一寄存器。
在一些实施例中,触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值包括:将闪存中存储的数据确定为备选数据;对备选数据执行预设操作,直至总字长等于应用固件的长度;所述预设操作包括按照存储应用固件的顺序读取一个字长的备选数据作为待计算数据,并将除待计算数据外的备选数据作为新的备选数据,利用预设校验算法计算待计算数据获得备选验证值,累计待计算数据的总字长;在总字长等于应用固件的长度的情况下,将备选验证值确定为应用固件的校验值。
在一些实施例中,所述校验固件还用于在获得应用固件的校验值后,触发待测芯片将校验值和预设的校验完成标志存储到待测芯片中预设的第二寄存器。
在一些实施例中,根据校验值确定待测芯片下载的应用固件是否正确,包括:将所述校验值与预设数值进行比较,获得比较结果;根据所述比较结果确定待测芯片下载的应用固件是否正确。
在一些实施例中,根据所述比较结果确定待测芯片下载的应用固件是否正确,包括:在校验值等于预设数值的情况下,确定待测芯片下载的应用固件正确;和/或,在校验值不等于预设数值的情况下,确定待测芯片下载的应用固件不正确。
在一些实施例中,根据各所述校验值分别确定各所述待测芯片下载的应用固件是否正确后,还包括:对各所述待测芯片进行掉电操作,使各所述待测芯片的校验固件丢失。
在一些实施例中,用于芯片验证的装置,应用于主控芯片侧,包括:写入模块,被配置为将应用固件和应用固件的长度写入多个待测芯片;触发模块,被配置为将校验固件写入多个所述待测芯片的随机存取存储器区,触发各所述待测芯片按照所述校验固件运行;所述校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值;读取模块,被配置分别获取各所述校验值;确定模块,被配置为根据各所述校验值分别确定各所述待测芯片下载的应用固件是否正确。
在一些实施例中,所述电子设备,包括处理器和存储有程序指令的存储器,所述处理器被配置为在执行所述程序指令时,执行上述的用于芯片验证的方法。
在一些实施例中,所述存储介质,存储有程序指令,所述程序指令在运行时,执行上述的用于芯片验证的方法。
本公开实施例提供的用于芯片验证的方法及装置、电子设备、存储介质,可以实现以下技术效果:通过将应用固件和应用固件的长度写入多个待测芯片。将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行。校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。分别获取各校验值。根据各校验值分别确定各待测芯片下载的应用固件是否正确。这样,通过主控芯片触发各待测芯片,使各待测芯片自行根据校验固件计算校验值。主控芯片只需要读取校验值进行比较,便能确定待测芯片下载的应用固件是否正确,能够提高主控芯片验证各待测芯片的效率。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
在一些实施例中,图1为本申请提供的用于芯片验证的结构的示意图。如图1所示,主控芯片1的一根下载线2连接连接单元3中的多个开关4的一端;多个开关4的另一端通过多根下载线2分别连接夹具连接孔5;夹具连接孔5连接芯片夹具6;芯片夹具用于将待测芯片各个管脚引出以便于连接。主控芯片1通过多根开关控制线7分别连接连接单元3中的多个开关4。开关控制线用于控制开关闭合或断开。在开关闭合的情况下,开关连接的下载线导通,主控芯片与该开关对应的待测芯片之间实现数据传输。在开关断开的情况下,开关连接的下载线断开,主控芯片与该开关对应的待测芯片之间不能进行数据传输。其中,开关控制线的数量与芯片夹具的数量一致,一根开关控制线控制一个开关的闭合或断开。
在一些实施例中,本申请中的待测芯片为空白芯片。
结合图2所示,本公开实施例提供第一种用于芯片验证的方法,应用于主控芯片侧,包括:
步骤S201,主控芯片将应用固件和应用固件的长度写入多个待测芯片。
步骤S202,主控芯片将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行;校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。
步骤S203,主控芯片分别获取各校验值。
步骤S204,主控芯片根据各校验值分别确定各待测芯片下载的应用固件是否正确。
采用本公开实施例提供的用于芯片验证的方法,通过将应用固件和应用固件的长度写入多个待测芯片。将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行。校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。分别获取各校验值。根据各校验值分别确定各待测芯片下载的应用固件是否正确。这样,通过主控芯片触发各待测芯片,使各待测芯片自行根据校验固件计算校验值。主控芯片只需要读取校验值进行比较,便能确定待测芯片下载的应用固件是否正确,能够提高主控芯片验证各待测芯片的效率。
可选地,将应用固件和应用固件的长度写入待测芯片,包括:获取应用固件和应用固件的长度;将应用固件写入待测芯片的闪存;将应用固件的长度写入待测芯片中预设的第一寄存器。这样,由于闪存中存储的数据能够进行修改。将应用固件写入待测芯片的闪存,便于后续对应用固件进行维护。
在一些实施例中,应用固件即应用程序,从闪存的起始地址开始写入应用固件。
可选地,将应用固件和应用固件的长度写入待测芯片,包括:获取应用固件和应用固件的长度;将应用固件写入待测芯片的ROM(Read-OnlyMemory,只读内存)区;将应用固件的长度写入待测芯片中预设的第一寄存器。
可选地,触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值包括:将闪存中存储的数据确定为备选数据;对备选数据执行预设操作,直至总字长等于应用固件的长度;预设操作包括按照存储应用固件的顺序读取一个字长的备选数据作为待计算数据,并将除待计算数据外的备选数据作为新的备选数据,利用预设校验算法计算待计算数据获得备选验证值,累计待计算数据的总字长;在总字长等于应用固件的长度的情况下,将备选验证值确定为应用固件的校验值。其中,预设校验算法为CRC-32(Acyclic redundancy check 32,循环冗余校验)算法。这样,通过待测芯片计算应用固件的校验值,能够减轻主控芯片的计算压力,从而提高主控芯片验证多个待测芯片的效率。
结合图3所示,本公开实施例提供一种用于待测芯片计算校验值的方法,包括:
步骤S301,待测芯片获取应用固件的长度,然后执行步骤S302。
步骤S302,待测芯片将闪存中存储的数据确定为备选数据,然后执行步骤S303。
步骤S303,待测芯片按照存储应用固件的顺序读取一个字长的备选数据作为待计算数据,将除待计算数据外的备选数据作为新的备选数据,然后执行步骤S304。
步骤S304,待测芯片利用预设校验算法计算待计算数据,获得备选验证值,然后执行步骤S305。
步骤S305,待测芯片累计待计算数据的总字长,然后执行步骤S306。
步骤S306,待测芯片判断总字长是否等于应用固件的长度;在总字长等于应用固件的长度的情况下,执行步骤S307;在总字长不等于应用固件的长度的情况下,执行步骤S303。
步骤S307,待测芯片将备选验证值确定为应用固件的校验值。
采用本公开实施例提供的用于待测芯片计算校验值的方法,通过待测芯片获取应用固件的长度,将闪存中存储的数据确定为备选数据。按照存储应用固件的顺序读取一个字长的备选数据作为待计算数据,将除待计算数据外的备选数据作为新的备选数据;利用预设校验算法计算待计算数据,获得备选验证值;累计待计算数据的总字长,直到总字长等于应用固件的长度的情况下,将最后一次计算获得的备选验证值确定为应用固件的校验值。这样,通过待测芯片计算应用固件的校验值,能够便于减轻主控芯片的计算压力,从而提高主控芯片验证各待测芯片的效率。同时,通过待测芯片计算应用固件的校验值,能够使各待测芯片使用复杂的校验算法以更准确的计算校验值,同时还能保证主控芯片验证各待测芯片的效率。
可选地,校验固件还用于在获得应用固件的校验值后,触发待测芯片将校验值和预设的校验完成标志存储到待测芯片中预设的第二寄存器。这样,通过将预设的校验完成标志存储到待测芯片中预设的第二寄存器,能够便于主控芯片判断待测芯片是否完成校验值的计算。从而便于主控芯片快速的读取正确的校验值。
可选地,分别获取各校验值,包括:在待测芯片中预设的第二寄存器存储有校验完成标志的情况下,获取待测芯片的校验值;直到获取全部待测芯片的校验值。
可选地,根据校验值确定待测芯片下载的应用固件是否正确,包括:将校验值与预设数值进行比较,获得比较结果;根据比较结果确定待测芯片下载的应用固件是否正确。这样,将校验值与预设数值进行比较,能够便捷准确的判断待测芯片下载的应用固件是否正确。
进一步的,根据比较结果确定待测芯片下载的应用固件是否正确,包括:在校验值等于预设数值的情况下,确定待测芯片下载的应用固件正确;和/或,在校验值不等于预设数值的情况下,确定待测芯片下载的应用固件不正确。这样,主控芯片只需要进行数值比较就能够准确的确定各待测芯片下载的应用固件是否正确,便于提高主控芯片的测试效率。
可选地,根据各校验值分别确定各待测芯片下载的应用固件是否正确后,还包括:对各待测芯片进行掉电操作,使各待测芯片的校验固件丢失。这样,由于校验固件只是用于辅助验证待测芯片下载的应用固件是否正确。因此,即便校验固件删除,也不影响待测芯片的运行。由于随机存取存储器区中存储的数据的特点就是数据掉电会丢失。将校验固件写入随机存取存储器区,能够在待测芯片中快速下载和验证应用固件,同时避免占用待测芯片中额外的存储空间。
结合图4所示,本公开实施例提供第二种用于芯片验证的方法,包括:
步骤S401,主控芯片将应用固件和应用固件的长度写入多个待测芯片。
步骤S402,主控芯片将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行;校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值;将校验值和预设的校验完成标志存储到待测芯片中预设的第二寄存器。
步骤S403,主控芯片在各第二寄存器中均存储有校验完成标志的情况下,分别获取各校验值。
步骤S404,主控芯片根据各校验值分别确定各待测芯片下载的应用固件是否正确。
步骤S405,主控芯片对各待测芯片进行掉电操作,使各待测芯片的校验固件丢失。
采用本公开实施例提供的第二种用于芯片验证的方法,通过将应用固件和应用固件的长度写入多个待测芯片。将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行。校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。将校验值和预设的校验完成标志存储到待测芯片中预设的第二寄存器。主控芯片在各第二寄存器中均存储有校验完成标志的情况下,分别获取各校验值。根据各校验值分别确定各待测芯片下载的应用固件是否正确。对各待测芯片进行掉电操作,使各待测芯片的校验固件丢失。这样,通过主控芯片触发各待测芯片,使各待测芯片自行根据校验固件计算校验值。主控芯片只需要读取校验值进行比较,便能确定待测芯片下载的应用固件是否正确,能够提高主控芯片验证各待测芯片的效率。
在一些实施例中,通过开关控制线控制连接单元的所有开关闭合,使所有并行的芯片夹具上的下载线与主控芯片的下载线进行导通。然后通过主控芯片的下载线进行固件数据的写入。由于所有并行芯片夹具上的下载线均处于导通的状态。因此,芯片夹具上连接的所有待测芯片均会同时进行固件数据的写入过程,直至固件数据写入完成。其中,固件数据包括应用固件和应用固件的长度。在固件数据写入之后,为了确保固件数据的准确性。通过主控芯片的下载线将校验固件写入各待测芯片的RAM(randomaccess memory,随机存取存储器)区。然后触发各待测芯片从RAM区启动运行,并使各待测芯片按照校验固件运行以获得应用固件的校验值,又由待测芯片将校验值和预设的校验完成标志存储到待测芯片中预设的第二寄存器。在主控芯片读取到第二寄存器存储有校验完成标志的情况下,主控芯片通过连接单元依次选通各个芯片夹具的下载线,依次读取并判断待测芯片的校验值,从而依次确定各待测芯片下载的应用固件是否正确。
在一些实施例中,主控芯片将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行;即,主控芯片将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片从RAM区启动,并按照校验固件运行。
结合图5所示,本公开实施例提供一种用于芯片验证的装置8,包括:写入模块9、触发模块10、读取模块11和确定模块12。写入模块9,被配置为将应用固件和应用固件的长度写入多个待测芯片;触发模块10,被配置为将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行;校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值;读取模块11,被配置分别获取各校验值;确定模块12,被配置为根据各校验值分别确定各待测芯片下载的应用固件是否正确。
采用本公开实施例提供的用于芯片验证的装置,通过写入模块将应用固件和应用固件的长度写入多个待测芯片。触发模块将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行。校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。读取模块分别获取各校验值。确定模块根据各校验值分别确定各待测芯片下载的应用固件是否正确。这样,通过主控芯片触发各待测芯片,使各待测芯片自行根据校验固件计算校验值。主控芯片只需要读取校验值进行比较,便能确定待测芯片下载的应用固件是否正确,能够提高主控芯片验证各待测芯片的效率。
结合图6所示,本公开实施例提供一种电子设备13,包括处理器(processor)14和存储器(memory)15。可选地,该装置还可以包括通信接口(CommunicationInterface)16和总线17。其中,处理器14、通信接口16、存储器15可以通过总线17完成相互间的通信。通信接口16可以用于信息传输。处理器14可以调用存储器15中的逻辑指令,以执行上述实施例的用于芯片验证的方法。
可选地,电子设备为计算机。
采用本公开实施例提供的电子设备,通过将应用固件和应用固件的长度写入多个待测芯片。将校验固件写入多个待测芯片的随机存取存储器区,触发各待测芯片按照校验固件运行。校验固件用于触发待测芯片根据应用固件的长度在待测芯片中读取并计算应用固件,获得应用固件的校验值。分别获取各校验值。根据各校验值分别确定各待测芯片下载的应用固件是否正确。这样,通过主控芯片触发各待测芯片,使各待测芯片自行根据校验固件计算校验值。主控芯片只需要读取校验值进行比较,便能确定待测芯片下载的应用固件是否正确,能够提高主控芯片验证各待测芯片的效率。
此外,上述的存储器15中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器15作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器14通过运行存储在存储器15中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中用于芯片验证的方法。
存储器15可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器15可以包括高速随机存取存储器,还可以包括非易失性存储器。
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于芯片验证的方法。
本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于芯片验证的方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。