一种芯片启动方法及一种芯片
文献发布时间:2024-04-18 19:58:26
技术领域
本公开涉及计算机技术领域,尤其涉及一种芯片启动方法及一种芯片。
背景技术
目前,SOC(系统级芯片)等芯片上部署有启动ROM,启动ROM中存储有启动固件,在芯片上电后,芯片上的处理器(CPU或者MCU)可以基于该启动固件对芯片进行启动,其中对芯片进行启动是指对芯片上的硬件系统初始化等操作。
如果该启动固件损坏,则可能导致芯片在启动后无法实现某些功能。然而芯片在启动后虽然有某些功能无法实现,但是如果不使用该功能则不能及时发现问题,另外,即使发现了某些功能无法实现,但也无法直接判定是启动固件损坏导致的还是其他固件或者硬件损坏导致的,因此技术人员需要逐一排查故障的原因,会消耗大量的人力与时间成本。
发明内容
针对上述技术问题,本公开提供一种芯片启动方法及一种芯片,技术方案如下。
根据本公开的第一方面,提供一种芯片启动方法,所述芯片包括启动控制模块、校验模块、启动ROM以及处理器,所述启动ROM中存储有启动固件以及用于校验所述启动固件的校验信息;所示方法包括:
所述启动控制模块释放校验模块的复位信号;
所述校验模块从所述启动ROM中读取所述启动固件以及所述校验信息,基于所述校验信息对所述启动固件进行校验,将校验结果传递至所述启动控制模块;
所述启动控制模块在确定所述校验结果用于表征校验通过的情况下,释放处理器的复位信号,以使所述处理器读取所述启动固件并基于所述启动固件启动芯片;在确定所述校验结果用于表征校验不通过的情况下,向报警模块发送指示信号以使所述报警模块进行报警。
在一个实施例中,所述校验信息为:启动固件的哈希值;所述基于所述校验信息对所述启动固件进行校验,包括:
采用预设的哈希算法对所读取的启动固件进行计算,得到待校验哈希值;将待校验哈希值与启动固件的哈希值进行匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,所述启动固件的哈希值为:进行扰码处理后的启动固件的哈希值;所述将待校验哈希值与启动固件的哈希值进行匹配,包括:对扰码处理后的启动固件的哈希值进行整型处理,得到整型后的启动固件的哈希值;将待校验哈希值与整型后的启动固件的哈希值进行匹配。
在一个实施例中,所述扰码包括:改变哈希字符串的顺序和/或改变哈希字符串的字符。
在一个实施例中,所述扰码为:改变哈希字符串的顺序;
所述对扰码处理后的启动固件的哈希值进行整型处理,包括:
按照预设的序列对扰码处理后的启动固件的哈希值进行排序,得到有序的启动固件的哈希值。
在一个实施例中,所述扰码为:改变哈希字符串的字符;
所述对扰码处理后的启动固件的哈希值进行整型处理,包括:
按照预设复原策略对扰码处理后的启动固件的哈希值进行复原,得到完整的启动固件的哈希值。
在一个实施例中,所述校验信息为:采用预设的加密算法对启动固件进行加密后的密文;
所述基于所述校验信息对所述启动固件进行校验,包括:
启动控制模块采用对应于所述预设的加密算法的解密算法,对校验信息进行解密,得到启动固件;将读取的启动固件与解密得到启动固件进匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,方法还包括:在校验不通过的情况下,所述启动控制模块向所述校验模块发送指示信息,所述校验模块基于所述指示信息从其他存储器获取校验信息,并基于获取的校验信息对所述启动固件进行二次校验;
在二次校验通过的情况下,所述启动控制模块释放处理器的复位信号以使所述处理器读取所述启动固件并基于所述启动固件启动芯片。
根据本公开的第二方面,提供一种芯片,包括启动控制模块、校验模块、启动ROM以及处理器,所述启动ROM中存储有启动固件以及用于校验所述启动固件的校验信息;
所述启动控制模块,用于释放校验模块的复位信号;
所述校验模块,用于从所述启动ROM中读取所述启动固件以及所述校验信息,基于所述校验信息对所述启动固件进行校验,将校验结果传递至所述启动控制模块;
所述启动控制模块,还用于在确定所述校验结果用于表征校验通过的情况下,释放处理器的复位信号,以使所述处理器读取所述启动固件并基于所述启动固件启动芯片;在确定所述校验结果用于表征校验不通过的情况下,向报警模块发送指示信号以使所述报警模块进行报警。
在一个实施例中,所述校验信息为:启动固件的哈希值;
所述校验模块,具体用于启动控制模块采用预设的哈希算法对所读取的启动固件进行计算,得到待校验哈希值;将待校验哈希值与启动固件的哈希值进行匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,所述启动固件的哈希值为:进行扰码处理后的启动固件的哈希值;所述校验模块,具体用于对扰码处理后的启动固件的哈希值进行整型处理,得到整型后的启动固件的哈希值;将待校验哈希值与整型后的启动固件的哈希值进行匹配。
在一个实施例中,所述扰码包括:改变哈希字符串的顺序和/或改变哈希字符串的字符。
在一个实施例中,所述扰码为:改变哈希字符串的顺序;
所述校验模块,具体用于按照预设的序列对扰码处理后的启动固件的哈希值进行排序,得到有序的启动固件的哈希值。
在一个实施例中,所述扰码为:改变哈希字符串的字符;
所述校验模块,具体用于按照预设复原策略对扰码处理后的启动固件的哈希值进行复原,得到完整的启动固件的哈希值。
在一个实施例中,所述校验信息为:采用预设的加密算法对启动固件进行加密后的密文;
所述校验模块,具体用于采用对应于所述预设的加密算法的解密算法,对校验信息进行解密,得到启动固件;将读取的启动固件与解密得到启动固件进匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,所述启动控制模块,还用于在确定校验不通过的情况下,向所述校验模块发送指示信息;所述校验模块基于所述指示信息从其他存储器获取校验信息,并基于获取的校验信息对所述启动固件进行二次校验;在二次校验通过的情况下,释放处理器的复位信号以使所述处理器读取所述启动固件并基于所述启动固件启动芯片。
根据本公开的第三方面,提供一种电子设备,承载有上述芯片。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本公开实施例的一种芯片的结构示意图;
图2为本公开实施例的一种芯片启动方法的流程示意图;
图3为本公开实施例的另一种芯片启动方法的流程示意图;
图4为本公开实施例的另一种启动ROM的存储结构示意图;
图5为本公开实施例的一种GPU芯片的结构示意图。
具体实施方式
为了使本公开实施例中的技术方案及优点更加清楚明白,下面将结合附图对本公开实施例中的技术方案及优点进一步详细的说明,显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例,需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合,基于本公开中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
在本公开中使用的术语是仅仅是为了描述特定实施例,而非为了限制申请的保护范围。在本公开中,除非上下文清楚地表示其他含义,否则所使用的单数形式的“一种”、“所述”和“该”也包括复数形式。还应当理解,本文中使用的术语“和/或”包括列出的多个相关联项目的任意或所有可能组合。
应当理解,尽管在本公开可能采用术语“第一”、“第二”等等来描述各种信息,但是这些信息不应当受这些术语限制。这些术语仅用来将一种类型的信息与另一种类型的信息区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果、例如”可以被解释成为“在……时”或“当……时”或“响应于确定”。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
SOC(System on Chip,系统级芯片)、MCU等芯片上,通常部署有启动ROM也叫BOOTROM,启动ROM中存储有处理器在上电或者复位时执行的第一个代码,该第一个代码即为启动固件,芯片上的处理器可以基于该启动固件对芯片的硬件系统进行初始化等工作以对芯片进行启动,即该启动固件包括用于对芯片硬件系统进行初始化的程序。因此,存储在启动ROM中的启动固件对于芯片而言十分重要,保证芯片能够按照启动固件正常的进行启动也是非常必要的。
启动ROM作为只读存储器只能被烧写一次,即在生产芯片时将启动固件烧写入启动ROM中,存储在其中的启动固件通常情况下无法通过被再次烧写的方式进行更改,在一定层面上保证了启动固件的安全性。因此,目前业界通常也默认启动固件不会发生更改,更不会主动对启动ROM中的启动固件进行验证。但是,作恶者可以仍然通过如物理辐射等其他手段对存储在启动ROM中的启动固件进行篡改,并且随着芯片使用时长的增加,启动ROM的老化也可能会导致存储在启动ROM中的启动固件发生损坏(代码缺失)。
芯片上的处理器如果基于损坏或被篡改的启动固件进行启动,则会导致芯片无法按照预定的方式进行启动,进而会影响芯片启动后的正常使用,如芯片的某些硬件没有被初始化,芯片则无法实现该硬件所对应的功能。在一些具体的场景中,例如在PC机等设备中的芯片如果不能正常启动,则会导致该设备的部分功能不可用,例如导致PC机USB口等硬件的功能不可用,在自动驾驶、航天航空等安全性要求更高的场景中,如果车载芯片或机载芯片不能正常启动以及使用,则可能会导致安全事故。
然而,芯片在启动后虽然有某些功能无法实现,但是如果不使用该功能则可能无法及时发现该功能无法实现,即启动固件损坏带来的问题可能是隐性的,如不使用PC机的USB口,则无法发现其无法使用;另外,即使发现了某些功能无法实现,但也无法直接判定是启动固件损坏导致的还是其他固件或者硬件损坏导致的,如USB口硬件故障也会造成USB口无法使用。因此,在发现功能无法使用后技术人员需要逐一排查故障的原因,另外,在检测启动固件是否损坏或被篡改时,也需要使用专业的设备将启动固件从启动ROM中读取出来并进行分析,上述排查故障的过程以及对启动固件进行检测分析的过程也会消耗大量的人力成本与时间成本。
基于上述问题,本公开提出一种芯片启动方法,在芯片启动前,先对启动ROM中的启动固件进行校验,在校验通过的情况下,处理器再基于校验通过的启动固件对芯片进行启动,在检验不通过的情况下不基于该启动固件对芯片进行启动,并通过报警模块进行报警。从而可以在启动固件被执行前即芯片启动前就及时发现启动固件损坏,并且可以确保芯片能够按照正确的启动固件进行启动,避免基于损坏的启动固件进行启动带来的故障排查困难的问题。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
如图1所示,为本公开提出的一种芯片的结构示意图,其中包括启动控制模块110、检验模块120、启动ROM130、以及处理器140。
其中,启动控制模块110和校验模块120可以是由多种元器件组成的电路,该启动控制模块可以由硬件电路组成。可以理解的是,启动控制模块作为预先设计好的硬件电路,其可以按照设计好的逻辑信息执行特定的处理功能,可以理解的是,上述所提到的启动控制模块具体可以是PMU(电源管理单元、Power Management Unit),本说明书对此不进行限定。
启动ROM130中除了存储有启动固件之外,还存储有用于校验启动固件的校验信息。可以是在生产芯片时,将启动固件以及校验信息写入进启动ROM的预设存储区域中,启动固件可以存储在启动ROM中的第一存储区域,校验信息可以存储在启动ROM中的第二存储区域,例如,可以将启动固件存储在启动ROM存储区域的头部,将校验信息存储在启动ROM存储区域的尾部,本公开对于两者的存储区域不进行限定。
基于该芯片,如图2所示,本公开提供了一种芯片启动方法,该方法包括:
S201,启动控制模块释放校验模块的复位信号。
在芯片上电或总的复位释放后,启动控制模块开始进行工作,启动控制模块可以理解为芯片上的后第一个执行工作的模块,其需要控制各个硬件模块进行复位和启动,释放校验模块的复位信号可以使校验模块进行复位(启动)。
S202,校验模块读取并基于校验信息对启动固件进行校验。
校验模块在复位后开始执行工作,其可以从启动ROM中的第一存储区域读取启动固件,以及从启动ROM中的第二存储区域读取校验信息,基于所述校验信息对所述启动固件进行校验,将校验结果传递至所述启动控制模块。
其中校验信息的具体形式以及基于校验信息进行校验的具体方式,可以参照下文,这里先不进行详述。在校验完成后,可以将校验结果传递至启动控制模块。
S203,启动控制模块根据校验结果进行控制。
本步骤中,启动控制模块在确定所述校验结果用于表征校验通过的情况下,释放处理器的复位信号,以使所述处理器读取所述启动固件并基于所述启动固件启动芯片;在确定所述校验结果用于表征校验不通过的情况下,向报警模块发送指示信号以使所述报警模块进行报警。
在本步骤中,启动控制模块可以根据校验模块发送的校验结果确定是否允许处理器读取启动固件。即,在校验结果表征校验通过的情况下,释放处理器的复位信号,处理器复位后开始执行工作,即读取并基于启动固件启动芯片。在校验结果表征校验不通过的情况下,不允许处理器读取启动固件。另外,在校验不通过的情况下,启动控制模块可以向报警模块发送指示信息,指示报警模块发出报警信号,报警模块具体可以是蜂鸣器或者LED灯等,蜂鸣器可以发出报警音,LED灯可以点亮以提示相关人员芯片启动失败,以及启动ROM故障。其中,报警模块可以部署在芯片上也可以部署在芯片外,本公开对此不进行限定。在上述描述中,校验模块用0和1分别表示校验结果,在启动控制模块中预设有校验结果寄存器,将校验结果写入该校验结果寄存器中,启动控制模块基于该校验结果寄存器中的值,确定校验结果所表征的结果,如,启动控制模块在确定校验结果寄存器中的值为1时确定校验通过,为0时确定校验不通过。另外,在芯片下电时,可以将该寄存器清空。
如图3所示,为本说明书提出的一种具体的芯片启动方法的流程示意图,S301,芯片上电或复位时,启动控制模块开始工作;S302,校验模块从启动ROM中读取启动固件和校验信息进行校验;S303,启动控制模块确定是否校验通过;如果校验不通过则执行S304,如果校验通过则执行S305;S304,启动报警模块进行报警;S305,处理器从启动ROM中读取启动固件进行芯片启动。
采用上述方式,由于在启动ROM中不仅存储有启动固件,还存储有用于对启动固件进行校验的校验信息,在芯片上电或者复位时,处理器不是直接基于启动固件对芯片进行启动,而是由启动控制模块利用校验信息对启动固件进行校验,在校验通过即确定启动固件正确有效的情况下,才允许处理器基于该启动固件对芯片进行启动,因此在启动固件被执行前即芯片启动前就可以及时发现启动固件损坏,并且可以确保芯片能够按照正确的启动固件进行启动,避免了基于损坏的启动固件进行启动带来的故障排查困难的问题。另外,将启动固件的检验信息也存储在启动ROM中,无需在占用芯片上其他存储器的存储空间。
下面对上述校验信息的具体形式,以及基于校验信息进行校验的具体方式进行介绍说明:
在一个实施方式中,校验信息可以是基于预设哈希算法对启动固件进行哈希计算后的哈希值。预设的哈希算法可以是SHA-256、SM2等,本说明书对该哈希算法不进行限定,哈希算法为可以将不同长度的原数据映射为固定长度的字符串的算法,例如SHA-256可以将原数据映射为256bit的字符串,并且不同的原数据映射出的字符串一定是不同的,即一旦原数据发生变化那么其对应的字符串一定也会发生变化。
以启动固件为a,对应的校验信息为采用预设的哈希算法对a进行哈希计算后的哈希值为Ha为例,在生产芯片时,将a与Ha存储在启动ROM中。
校验模块基于校验信息对启动固件进行校验的方式具体可以是:
采用预设的哈希算法对所读取的启动固件进行计算,得到待校验哈希值;将待校验哈希值与启动固件的哈希值进行匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
例如,启动控制模块读取的启动固件为a’,利用预设的哈希算法对a’进行计算后得到哈希值Ha’,将Ha’与读取到的校验信息即启动固件的哈希值Ha进行匹配,这里的匹配是指确定两者是否相同,如果相同则确定匹配成功,如果不同,则确定匹配失败。
由于如果启动固件发生了更改,那么其对应的哈希值一定也会发生更改,因此计算读取到的启动固件的哈希值,并将计算出的哈希值与预存的启动固件的哈希值即校验信息进行匹配,在匹配成功的情况下,可以确保该启动固件并未发生更改,进而处理器基于该启动固件可以对芯片进行正常启动。
考虑到作恶者如果能够篡改启动固件,那么其也可能会对校验信息进行相应的篡改,例如,作恶者获取了启动固件以及校验信息在启动ROM中的存储位置,可以基于存储位置从启动ROM中读取启动固件以及校验信息,通过计算破解了具体的哈希算法,那么其对启动固件进行篡改后,可以使用相同的哈希算法计算篡改后的启动固件的哈希值,并且将校验信息也修改为篡改后的哈希值。
出于上述考虑,为了进一步提升安全性,存储的校验信息也可以是进行扰码处理后的启动固件的哈希值。相应的,校验模块在读取了扰码处理后的启动固件的哈希值后,可以对其进行整型处理,得到整型后的启动固件的哈希值;将待校验哈希值与整型后的启动固件的哈希值进行匹配,进而确定是否匹配成功。
其中,扰码可以是改变哈希字符串的顺序和/或改变哈希字符串的字符。
如采用预设的哈希算法对a进行哈希计算的哈希值Ha为256bit的字符串。
改变该256bit的字符串的顺序,可以是以预设长度的字符串为一字符块,将该256bit的字符串拆分为若干字符块,并打乱各个字符块的顺序。如,以8bit的字符串为一字符块,可以将该256bit的字符串拆分为32个字符块,并对这32个字符块进行乱序处理,将乱序处理后的32块作为校验信息存储在启动ROM中。
如图4所示为一种具体的存储方式,其中展示了启动ROM中地址为0*0到0*FC的存储空间所存储的信息,其中0*0到0*DC存储的为启动固件信息,0*E0到0*FC存储的为校验信息,其中每行可以存储32bit,即四个字节的数据。如,在0*E0-0*E3,即图中示出的存储校验信息的第一行,其存储了:Golden_Hash[63:56]、Golden_Hash[199:192]、Golden_Hash[191:184]、Golden_Hash[71:64],为哈希值的第56-63bit,192-199bit,184-191bit以及64-71bit的数据,即将改变了顺序的哈希值字符串存储在了启动ROM中的0*E0到0*FC中。可以理解的是,图3所示出的乱序方式以及存储位置仅是示意性的,本领域技术人员可以根据实际需求进行处理。
对应于上述校验信息的形式,校验模块从启动ROM中读取了扰码处理后的启动固件的哈希值,即改变了顺序的哈希字符串后,可以按照预设的序列对扰码处理后的启动固件的哈希值进行排序,得到有序的启动固件的哈希值,即将乱序的哈希字符串恢复为有序的哈希字符串。
上面介绍了改变哈希字符串顺序的方式,下面介绍改变哈希字符串的字符的方式。
改变哈希字符串的字符,具体可以是向哈希字符串预定位置添加预定字符、将预定位置的字符进行替换和/或将预定位置的字符进行删除。
例如,哈希字符串为256bit的字符串,具体为001010101010…111(共256bit)。可以是将预定的字符如a添加到该字符串的某个位置中,如添加到108位和109位之间,也可以是删除该字串中某个字符,如删除第200位的字符,还可以是将某个字符更改,如将第308位的字符替换为其他任意字符。
对应于上述校验信息的形式,校验模块从启动ROM中读取了扰码处理后的启动固件的哈希值,即改变了字符的哈希字符串后,可以按照预设复原策略对扰码处理后的启动固件的哈希值进行复原,得到完整的启动固件的哈希值。具体的,可以是将删除的字符进行补充,将添加的字符进行删除,将替换的字符进行反替换,以将更改字符的哈希字符串恢复为正确的哈希字符串。
当然,为了进一步提升安全性还可以是既对哈希字符串的顺序进行更改,也对哈希字符串的字符进行更改。校验模块从启动ROM中读取了扰码处理后的启动固件的哈希值后,可以对扰码后的哈希值进行处理,以恢复其顺序并恢复其字符。
采用上述扰码处理的方式对哈希值进行处理,即使作恶者读取了存储在启动ROM中的校验信息,也无法推测出校验信息的实际意义,更无法伪造对应于启动固件的校验信息,进而提升了安全性。
上述方案中介绍的是采用预设的哈希算法对启动固件进行计算得到哈希值,以该哈希值或者扰码后的哈希值作为校验信息。
除此之外,本公开提出还可以采用预设的可解密的加密算法对启动固件进行加密处理生成密文,以该密文作为校验信息。例如,可解密的加密算法可以是对称加密算法或非对称加密算法。
校验模块从启动ROM中读取了校验信息后,可以采用对应于该预设的加密算法的解密算法,对校验信息进行解密,得到启动固件;将读取的待验证启动固件与解密得到的启动固件进行匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。采用该方式,也可以确定启动固件的完整性和有效性。当然,出于相同原因,也可以对密文进行扰码处理,将扰码处理后的密文存储在启动ROM中,在需要对启动固件进行校验时,可以对扰码处理后的密文进行恢复,并对恢复后的密文进行解密得到启动固件用于校验。在采用对称加密或者非对称加密时,可以将解密所需的密钥存储在其他非易失性存储器中,以便于校验模块从中获取。
考虑到启动ROM老化等原因可能会造成存储在启动ROM中的校验信息损坏,那么在启动ROM中的启动固件无误的情况下,仍然可能会造成校验失败,从而导致芯片无法启动。
基于该问题,本公开提出启动控制模块可以在校验不通过的情况下,对启动固件进行二次校验。具体的,启动控制模块可以向校验模块发送二次校验的信号,校验模块可以从不同于启动ROM的其他存储器获取校验信息,例如可以从芯片上的一次性可编程存储器等存储器获取校验信息,并基于获取的校验信息对启动固件再次进行校验,即进行二次校验,在二次校验通过的情况下释放处理器的复位信号,处理器读取所述启动固件并基于所述启动固件启动芯片,在二次校验不通过的情况下,不释放处理器的复位信号,即不允许处理器读取启动固件。
采用上述方式,在启动ROM中存储的启动固件有效,但校验信息损坏的情况下,仍然可以使芯片正常启动,避免发生因为启动ROM中的校验信息损坏无法启动芯片的情况。另外,在二次校验失败的情况下,启动控制模块还可以向报警模块发送指示信息,指示报警模块发出不同于用于指示一次校验失败的其他报警信号。
如报警模块为LED灯,如果一次校验失败,则发送指示LED灯长时间点亮的指示信息,那么在二次校验通过后芯片会正常启动,但是LED灯长时间点亮相关人员观察到后确定启动ROM中的校验信息损坏,但是启动固件未损坏;如果二次校验失败,则发送指示LED灯连续闪烁预设次数的指示信息,相关人员在看到LED灯从长时间点亮到连续闪烁预设次数后,可以得知存储在启动ROM中的启动固件损坏。
基于上述图1,本公开还提出一种芯片,包括启动控制模块110、校验模块120、启动ROM130以及处理器140,所述启动ROM130中存储有启动固件以及用于校验所述启动固件的校验信息;
所述启动控制模块,用于释放校验模块的复位信号;
所述校验模块,用于从所述启动ROM中读取所述启动固件以及所述校验信息,基于所述校验信息对所述启动固件进行校验,将校验结果传递至所述启动控制模块;
所述启动控制模块,还用于在确定所述校验结果用于表征校验通过的情况下,释放处理器的复位信号,以使所述处理器读取所述启动固件并基于所述启动固件启动芯片;在确定所述校验结果用于表征校验不通过的情况下,向报警模块发送指示信号以使所述报警模块进行报警。
在一个实施例中,所述校验信息为:启动固件的哈希值;
所述校验模块120,具体用于启动控制模块采用预设的哈希算法对所读取的启动固件进行计算,得到待校验哈希值;将待校验哈希值与启动固件的哈希值进行匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,所述启动固件的哈希值为:进行扰码处理后的启动固件的哈希值;所述校验模块120,具体用于对扰码处理后的启动固件的哈希值进行整型处理,得到整型后的启动固件的哈希值;将待校验哈希值与整型后的启动固件的哈希值进行匹配。
在一个实施例中,所述扰码包括:改变哈希字符串的顺序和/或改变哈希字符串的字符。
在一个实施例中,所述扰码为:改变哈希字符串的顺序;
所述校验模块120,具体用于按照预设的序列对扰码处理后的启动固件的哈希值进行排序,得到有序的启动固件的哈希值。
在一个实施例中,所述扰码为:改变哈希字符串的字符;
所述校验模块120,具体用于按照预设复原策略对扰码处理后的启动固件的哈希值进行复原,得到完整的启动固件的哈希值。
在一个实施例中,所述校验信息为:采用预设的加密算法对启动固件进行加密后的密文;
所述校验模块120,具体用于采用对应于所述预设的加密算法的解密算法,对校验信息进行解密,得到启动固件;将读取的启动固件与解密得到启动固件进匹配,在匹配成功的情况下,确定校验通过;在匹配失败的情况下,确定校验不通过。
在一个实施例中,所述启动控制模块110,还用于在校验不通过的情况下,指示所述校验模块120从其他存储器获取校验信息,并基于获取的校验信息对所述启动固件进行二次校验;在二次校验通过的情况下,释放处理器的复位信号以使处理器读取所述启动固件并基于所述启动固件启动芯片。
在一个具体的实施例中,本公开中所描述的芯片可以是GPU芯片,如图5所示,其至少包括:
GPU core,用来处理命令,例如处理画图的命令,根据画图命令,执行图像渲染的Pipeline。其中,GPU core里面主要包含了计算单元,用于执行shader编译后的指令,属于可编程模块,由大量的ALU组成;Cache(存储器),用于缓存GPU core的数据,以减少对内存的访问;控制器(图中未示出)另外,GPU core还具有多种功能模块,例如光栅化(3D渲染管线的一个固定的阶段)、Tilling(TBR和TBDR GPU架构中对一帧进行划片处理)、裁剪(3D渲染管线的一个固定的阶段,裁剪掉观察范围外,或者背面不显示的图元)、后处理(对画完的图进行缩放,裁剪,旋转等操作)等。
通用DMA,用于执行主机内存到GPU显卡内存之间的数据搬移,例如,用于3D画图的vertex数据,通用DMA将vertex数据从主机内存搬到GPU显卡内存;
片上网络,用于SOC上各个master和salve之间的数据交换;
应用处理器,用于SOC上各个模块任务的调度,例如GPU渲染完一帧图后通知应用处理器,应用处理器再启动显示控制器将GPU画完的图显示到屏幕上;
PCIe控制器,用于和主机通信的接口,实现PCIe协议,使GPU显卡通过PCIe接口连接到主机上。主机上运行了图形API,以及显卡的驱动等程序;
内存控制器,用于连接内存设备,用于保存SOC上的数据;
显示控制器,用于控制将内存里的frame buffer以显示接口(HDMI,DP等)输出到显示器上;
视频解码器,用于将主机硬盘上的编码的视频解码成能显示的画面。
视频编码器,用于将主机硬盘上原始的视频码流编码成指定的格式返回给主机。
如图所示,处理器即为应用处理器,芯片上电后,启动控制模块对触发校验模块对启动ROM中的启动固件进行校验,在校验通过后,启动处理器,处理器基于启动固件对GPUSOC芯片进行启动。
以上尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改,本领域的技术人员在不脱离本公开的精神和范围的前提下,做出的变更和修改也应视为本公开实施例的保护范围。
- 一种芯片加工方法和芯片拼板
- 一种芯片的FLASH加密保护方法、装置、FLASH控制器及芯片
- 一种NTC芯片电极浆料及使用该浆料的NTC芯片的制备方法
- 一种用于无创产前检测双侧杯状耳畸形的基因芯片、试剂盒及基因芯片的应用方法
- 一种用于无创产前评估半侧颜面短小综合征的基因芯片、试剂盒及基因芯片的应用方法
- 一种芯片内嵌的flash存储器、芯片以及芯片的启动方法
- 芯片的启动电路、LED驱动器、LED驱动电路及芯片的启动方法