CN111736911A - 嵌入式芯片的验证方法及引导加载方法 - Google Patents
嵌入式芯片的验证方法及引导加载方法 Download PDFInfo
- Publication number
- CN111736911A CN111736911A CN202010775733.8A CN202010775733A CN111736911A CN 111736911 A CN111736911 A CN 111736911A CN 202010775733 A CN202010775733 A CN 202010775733A CN 111736911 A CN111736911 A CN 111736911A
- Authority
- CN
- China
- Prior art keywords
- embedded chip
- flow
- configuration data
- time programmable
- programmable memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及集成电路芯片领域,公开一种嵌入式芯片的验证方法与引导加载方法。该嵌入式芯片被配置有:用于存储第一流程标识的第一一次性可编程存储器、用于存储第二流程标识及与用于验证该嵌入式芯片的验证流程相关的配置数据的第二一次性可编程存储器。该验证方法包括:判断所述第一一次性可编程存储器内的流程标识的类型;在所述第一一次性可编程存储器内的流程标识为快速分支标识的情况下,对所述第二一次性可编程存储器执行初始化;将所述嵌入式芯片切换到测试下载模式;及基于所述第二一次性可编程存储器内的配置数据与验证流程,对所述嵌入式芯片执行验证过程。本发明可跳过芯片的安全自检阶段并快速进入验证过程,从而增加芯片的可测试性。
Description
技术领域
本发明涉及集成电路芯片领域,具体地涉及一种嵌入式芯片的引导加载方法。
背景技术
在嵌入式系统中,整个系统的加载启动任务就完全由BootLoader来完成。比如大部分的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
简单地说,BootLoader就是在用户程序运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、初始化内存空间,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,仍然可以对BootLoader归纳出一些通用性的东西,以指导用户特定的BootLoader设计与实现。
比如在大部分芯片上电流程中BootLoader依次完成以下工作:(1)对使用的RAM区域进行初始化;(2)根据一次性可编程存储器区域(一次性可编程模块)的配置值对CPU相关的硬件寄存器进行初始化;(3)不可逆的跳转到用户区执行用户程序。若安全芯片对自身的安全性提出更高的要求,往往需要对一些关键区域和关键模块进行额外的安全校验,比如在上面流程(1)和(2)之间增加一次性可编程存储器区域的数据的合法性校验;在流程(2)和(3)之间增加芯片特定模块(例如,随机数模块、传感器(sensor)信号检测模块等)的安全自检等。
此外,为了方便对封装好的样品芯片进行样品验证测试,往往会在添加一套样品验证的测试指令集,并将该测试指令集和bootloader代码一起放在BootRom(保存bootloader等启动代码的存储区)中。样品验证工程师通过该测试指令集对芯片所支持的功能进行确认性验证。
但是,由于芯片安全自检的特殊性,在自检阶段容易出现问题,自检失败芯片将进入沉默状态,除了能返回特定错误外不能再进行任何操作。这样的设计方式保证了芯片运行状态的安全可靠,但丧失了对样品验证测试的可能性,从而导致问题隐藏。
发明内容
本发明的目的是针对现有的安全自检阶段出错导致丧失样品验证的可能性的缺陷,提供一种嵌入式芯片的验证方法及引导加载方法,其可跳过芯片的安全自检阶段并快速进入样品验证过程,从而增加芯片的可测试性。
为了实现上述目的,本发明一方面提供一种嵌入式芯片的验证方法,所述嵌入式芯片被配置有:用于存储第一流程标识的第一一次性可编程存储器、用于存储第二流程标识及与用于验证该嵌入式芯片的验证流程相关的配置数据的第二一次性可编程存储器,该验证方法包括:判断所述第一一次性可编程存储器内的所述第一流程标识的类型;在所述第一流程标识为快速分支标识的情况下,对所述第二一次性可编程存储器执行初始化;将所述嵌入式芯片切换到测试下载模式;以及在所述测试下载模式下,基于所述第二一次性可编程存储器内的配置数据与所述验证流程,对所述嵌入式芯片执行验证过程。
优选地,该验证方法还包括:在执行所述将所述嵌入式芯片切换到所述测试下载模式的步骤之后,对所述第二一次性可编程存储器内的配置数据的正确性进行校验;以及在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,执行所述对所述嵌入式芯片执行验证过程的步骤。
优选地,该验证方法还包括:在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,判断所述第二一次性可编程存储器内的所述第二流程标识的类型;以及在所述第二流程标识为验证标识的情况下,执行所述对所述嵌入式芯片执行验证过程的步骤。
优选地,所述第一一次性可编程存储器还用于存储与用于配置该嵌入式芯片的寄存器的配置流程相关的配置数据,相应地,所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述验证流程的第二ROM,所述对所述第二一次性可编程存储器内的配置数据的正确性进行校验:响应于指令指针由所述第一ROM跳转到所述第二ROM,对所述第二一次性可编程存储器内的配置数据的正确性进行校验,相应地,该验证方法还包括:在执行所述判断所述第一一次性可编程存储器内的所述第一流程标识的类型的步骤之前,对所述第一ROM所需的RAM区进行初始化;以及在执行所述对所述第二一次性可编程存储器内的配置数据的正确性进行校验的步骤之前,对所述第二ROM所需的RAM区进行初始化。
优选地,所述嵌入式芯片还被配置有:用于存储所述验证流程的ROM,相应地,在执行所述判断所述第一一次性可编程存储器内的所述第一流程标识的类型的步骤之前,该验证方法还包括:对所述ROM所需的RAM区进行初始化。
通过上述技术方案,本发明创造性地首先判断第一流程标识的类型,并当该第一流程标识为快速分支标识时对第二一次性可编程存储器执行初始化;然后将嵌入式芯片切换到测试下载模式;之后在测试下载模式下基于第二一次性可编程存储器内的配置数据与验证流程,对嵌入式芯片执行验证过程,从而可跳过芯片的安全自检阶段并快速进入样品验证过程,从而增加芯片的可测试性。
本发明第二方面提供一种嵌入式芯片的引导加载方法,所述嵌入式芯片被配置有:用于存储与用于配置该嵌入式芯片的寄存器的配置流程相关的配置数据的第一一次性可编程存储器;以及用于存储与用户程序的引导流程相关的配置数据的第二一次性可编程存储器,该引导加载方法包括:根据所述的嵌入式芯片的验证方法获取与所述配置流程相关的配置数据及与所述引导流程相关的配置数据;采用所述与所述配置流程相关的配置数据并按照所述配置流程,对所述嵌入式芯片的寄存器进行配置;以及采用所述与所述引导流程相关的配置数据并按照所述引导流程,执行相应的用户程序的引导操作。
优选地,所述对所述嵌入式芯片的寄存器进行配置包括:采用所述与所述配置流程相关的配置数据对所述第一一次性可编程存储器执行初始化;判断所述第一一次性可编程存储器内的第一流程标识的类型;在所述第一流程标识为标准分支标识的情况下,根据所述第一一次性可编程存储器内的配置数据及所述配置流程对所述寄存器进行配置;以及将所述嵌入式芯片切换到测试下载模式。
优选地,所述对所述嵌入式芯片的寄存器进行配置还包括:在所述第一一次性可编程存储器内的第一流程标识为标准分支标识的情况下,对所述第一一次性可编程存储器内的配置数据的正确性进行校验;以及在所述配置数据的正确性通过校验的情况下,执行所述对所述寄存器进行配置的步骤。
优选地,在执行所述对所述嵌入式芯片的寄存器进行配置的步骤之后,该引导加载方法还包括:按照已配置的寄存器对所述嵌入式芯片的相应功能模块进行自检;以及在所述相应功能模块通过自检的情况下,执行所述将所述嵌入式芯片切换到测试下载模式的步骤。
优选地,所述执行相应的用户程序的引导操作包括:采用所述与所述引导流程相关的配置数据对所述第二一次性可编程存储器执行初始化;判断所述第二一次性可编程存储器内的第二流程标识的类型;以及在所述第二流程标识为用户标识的情况下,响应于指令指针跳转到用户区,执行用户区内的用户程序。
优选地,在执行所述对所述第二一次性可编程存储器执行初始化的步骤之后,所述执行相应的用户程序的引导操作还包括:对所述第二一次性可编程存储器内的配置数据的正确性进行校验,并在所述配置数据的正确性通过校验的情况下,执行所述判断所述第二一次性可编程存储器内的第二流程标识的类型的步骤。
优选地,在执行所述执行用户区内的用户程序的步骤之前,所述执行相应的用户程序的引导操作还包括:设置所述第二一次性可编程存储器的访问模式为不可写模式。
优选地,所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述引导流程的第二ROM,所述执行相应的用户程序的引导操作包括:响应于指令指针由所述第一ROM跳转到所述第二ROM,采用所述与所述引导流程相关的配置数据并按照所述引导流程,执行相应的用户程序的引导操作,相应地,在执行所述判断所述第一一次性可编程存储器内的第一流程标识的类型的步骤之前,所述对所述嵌入式芯片的寄存器进行配置还包括:对所述第一ROM所需的RAM区进行初始化;以及在执行所述判断所述第二一次性可编程存储器内的第二流程标识的类型的步骤之前,所述执行相应的用户程序的引导操作还包括:对所述第二ROM所需的RAM区进行初始化。
优选地,在执行所述将所述嵌入式芯片切换到所述测试下载模式的步骤之后,该引导加载方法还包括:设置所述第一ROM、所述第一一次性可编程存储器及已配置的寄存器的访问模式为不可写模式。
优选地,所述第一ROM的安全性高于所述第二ROM。
所述嵌入式芯片还被配置有:用于存储所述配置流程及所述引导流程的ROM,相应地,在执行所述判断所述第一一次性可编程存储器内的第一流程标识的类型的步骤之前,所述对所述嵌入式芯片的寄存器进行配置还包括:对所述ROM所需的RAM区进行初始化。
通过上述技术方案,本发明创造性地首先根据上述的嵌入式芯片的验证方法获取与配置流程相关的配置数据及与用户程序的引导流程相关的配置数据;然后采用与配置流程相关的配置数据并按照配置流程,对嵌入式芯片的寄存器进行配置;最后采用与引导流程相关的配置数据并按照引导流程,执行相应的用户操作。由此,本发明可通过跳过芯片的安全自检阶段并快速进入样品验证过程获取与配置流程及引导流程相关的配置数据,并基于所获取的配置数据分别执行寄存器的配置流程及引导流程,从而在增加芯片的可测试性的基础上,快速高效地完成引导加载过程。
本发明第三方面提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行上述的嵌入式芯片的验证方法和上述的嵌入式芯片的引导加载方法。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1是本发明实施例提供的嵌入式芯片的验证方法的流程图;
图2是本发明实施例提供的嵌入式芯片的验证过程的流程图;
图3是本发明实施例提供的嵌入式芯片的引导加载方法的流程图;
图4是本发明实施例提供的对所述嵌入式芯片的寄存器进行配置的流程图;
图5是本发明实施例提供的执行相应的用户程序的引导操作的流程图;
图6是本发明实施例提供的嵌入式芯片的引导加载方法的流程图;以及
图7是本发明实施例提供的嵌入式芯片的验证过程及引导加载过程的流程图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
在常规引导加载流程中,首先需要按照一次性可编程(OTP)存储器内的配置数据对芯片的寄存器进行配置;然后需要按照已配置的寄存器(即芯片的安全要求以被配置在该寄存器内)进行芯片自身的特殊模块进行安全自检;最后在自检成功的情况下对芯片进行样品验证。其中某些检测的边界值依赖于OTP存储器内的某数据的读入,在芯片制作完毕时,如果OTP存储器内的某数据不存在,那么就会导致安全自检失败,继而不能进入样品验证过程。这是由于样品验证的进行严重依赖于OTP存储器内的配置数据,且样品验证过程又比较复杂,样品验证的过程会受到严重限制而无法执行。此外,由于芯片的安全自检的特殊性,在此阶段更容易出现问题,导致后续样品验证无法执行。针对上述缺陷,本发明加入快速分支标识,会跳过寄存器的配置和芯片的安全自检,按照寄存器默认配置进入样品验证指令系统,从而能够帮助样品验证提高工作效率,增加发现隐藏问题的几率。
具体地,样品验证过程是指对嵌入式芯片内的功能进行验证以确定其是否满足设计需求,从而可防止被恶意攻击之后配置区OTP内的配置数据被修改或被删除,进而该配置区OTP存储器内的正确且完整的配置数据可确保后续用户系统内的用户程序(在测试下载模式下,所述用户程序可通过第一测试下载指令被写入用户区)能够安全正常地运行。而用户程序的引导流程是指用于将嵌入式芯片的执行流程引导进入用户系统中的用户程序的流程。
图1是本发明一实施例提供的嵌入式芯片的验证方法的流程图。所述嵌入式芯片被配置有:所述嵌入式芯片被配置有:用于存储第一流程标识的第一一次性可编程存储器、用于存储第二流程标识及与用于验证该嵌入式芯片的验证流程相关的配置数据的第二一次性可编程存储器。如图1所示,所述验证方法可包括以下步骤S101-S104。
步骤S101,判断所述第一一次性可编程存储器内的所述第一流程标识的类型。
所述第一流程标识的类型与第一一次性可编程(OTP)存储器(例如,配置区OTP存储器)内的配置数据的具体情况相关。具体地,当所述配置区OTP存储器未被初始化时,所述第一流程标识可通过默认的配置数据的具体情况被判定为快速分支标识;当所述配置区OTP存储器已被初始化时,所述第一流程标识可通过相应的配置数据的具体情况被判定为标准分支标识。
需说明的是,所述嵌入式芯片还可被配置有:用于存储该嵌入式芯片的验证流程的ROM。为了保证程序运行的初始状态,在执行步骤S101之前,所述验证方法还可包括:对所述ROM所需的RAM区及栈空间进行初始化。具体地,响应于所述嵌入式芯片被供电,从ROM的0地址处开始执行对所述RAM区及所述栈空间的初始化,以保证下述样品验证过程能够正常执行。
步骤S102,在所述第一流程标识为快速分支标识的情况下,对所述第二一次性可编程存储器执行初始化。
为了能够跳过嵌入式芯片(具体为关键寄存器)的主要功能的自检过程,而直接对该芯片执行验证过程,可在第一一次性可编程(OTP)存储器中设置两个不同类型的第一流程标识(例如,快速分支标识与标准分支标识),来指示下一步应该进入哪个流程。当所述第一流程标识为快速分支标识时,可绕过自检过程而直接进入验证过程;当所述第一流程标识为标准分支标识时,按照正常流程进行自检过程(将于下文进行详细说明)。由此,可通过步骤S101及步骤S102确定第一流程标识为快速分支标识时,对第二OTP存储器(例如,用户区OTP存储器)执行初始化,以获取该第二OTP存储器内的配置数据。
步骤S103,将所述嵌入式芯片切换到测试下载模式。
由于一次性可编程(OTP)存储器所存储的数据是ROM运行的关键数据,且验证流程依赖于第二OTP存储器(例如,用户区OTP存储器)内的配置数据,故为了保证验证流程执行的正确性,在执行所述步骤S103之后,所述验证方法还可包括:对所述第二一次性可编程存储器内的配置数据的正确性进行校验;以及在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,执行所述步骤S104。比如,在提前写入配置数据的循环冗余校验(CRC)值的情况下,对配置数据的CRC值的正确性进行校验。
另外,在嵌入式芯片切换到测试下载模式的情况下,流程可能跳转至验证流程或用户程序的引导流程,由此可在第二OTP存储器中设置两个不同类型的第二流程标识(例如,用户标识与验证标识),来指示下一步应该进入哪个流程。其中,所述第二流程标识可通过测试下载模式下的第二测试下载指令被设置。当所述第二流程标识为验证标识时,可直接跳转至验证过程;当所述第二流程标识为用户标识时,按照正常流程进行自检过程(将于下文进行详细说明)。在执行步骤S103的同时或之前,可将第二OTP存储器(例如,用户区OTP存储器)内的第二流程标识设置为验证标识。由此,在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,可以先判断所述第二一次性可编程存储器内的第二流程标识的类型;然后在所述第二流程标识为验证标识的情况下,才执行所述步骤S104。
步骤S104,在所述测试下载模式下,基于所述第二一次性可编程存储器内的配置数据与所述验证流程,对所述嵌入式芯片执行验证过程。
该验证过程不是本发明的改进点,具体内容可参见现有技术中公开的验证过程,于此不再赘述。
在下文介绍的具体实施例中,考虑到寄存器的配置流程具有一定的敏感性,而芯片的验证流程的安全性要求较低,故可按照安全性和关联性将寄存器配置和安全检测放在安全级别较高的第一ROM(例如,ROM1)中,及将芯片的验证流程放到第二ROM(例如,ROM2)中。由此,可降低不同流程中的代码的耦合性,且能更有针对性地保护敏感数据不被随意读写,从而提高芯片的安全性。
所述第一一次性可编程存储器还用于存储与用于配置所述嵌入式芯片的寄存器的配置流程相关的配置数据,所述第二一次可编程存储器还用于存储与对所述嵌入式芯片进行验证的验证流程相关的配置数据。并且,所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述验证流程的第二ROM。相应地,所述验证方法还可包括:在执行所述步骤S101之前,对所述第一ROM所需的RAM区进行初始化;以及在执行所述对所述第二一次性可编程存储器内的配置数据的正确性进行校验的步骤之前,对所述第二ROM所需的RAM区进行初始化。
具体而言,以设置有两个ROM(ROM1与ROM2)的情况为例对嵌入式芯片(以下简称为芯片)的验证过程进行详细地解释和说明,具体包括以下步骤S201-S208,如图2所示。并且,可提前将第二OTP存储器(例如,用户区OTP存储器)内的第二流程标识设置为验证标识。
步骤S201,响应于芯片被供电,对ROM1所需的RAM区及栈空间进行初始化。
步骤S202,判断配置区OTP存储器内的第一流程标识是否为快速分支标识,若是,则执行步骤S203;否则,执行标准分支流程(将于下文进行详细说明)。
步骤S203,对用户区OTP存储器执行初始化。
步骤S204,将芯片切换到测试下载模式。
与此同时,可将指令指针设置为由ROM1跳转到ROM2。
步骤S205,响应于指令指针由ROM1跳转到ROM2,对ROM2所需的RAM区及栈空间进行初始化。
步骤S206,判断用户区OTP存储器内的配置数据的正确性校验是否成功,若成功,则执行步骤S207;否则,芯片进入沉默状态。
步骤S207,判断用户区OTP存储器内的第二流程标识是否为验证标识,若是,则执行步骤S208;否则,执行用户程序的引导流程(将于下文进行详细说明)。
步骤S208,对芯片执行验证过程。
在验证成功的条件下,可将用户区OTP存储器内的第二流程标识设置为用户标识,以便于执行下述的芯片的引导加载流程。
综上所述,本发明创造性地首先判断第一一次性可编程存储器内的第一流程标识的类型,并当该第一流程标识为快速分支标识时对第二一次性可编程存储器执行初始化;然后将嵌入式芯片切换到测试下载模式;之后在测试下载模式下基于第二一次性可编程存储器内的配置数据与验证流程,对嵌入式芯片执行验证过程,从而可跳过芯片的安全自检阶段并快速进入样品验证过程,从而增加芯片的可测试性。
图3是本发明一实施例提供的嵌入式芯片的引导加载方法的流程图。所述嵌入式芯片被配置有:用于存储与用于配置该嵌入式芯片的寄存器的配置流程相关的配置数据的第一一次性可编程存储器;以及用于存储与用户程序的引导流程相关的配置数据的第二一次性可编程存储器,如图3所示,所述引导加载方法可包括以下步骤S301-S303。
步骤S301,根据所述的嵌入式芯片的验证方法获取与所述配置流程相关的配置数据及与所述引导流程相关的配置数据。
步骤S302,采用所述与所述配置流程相关的配置数据并按照所述配置流程,对所述嵌入式芯片的寄存器进行配置。
对于步骤S302,如图4所示,所述对所述嵌入式芯片的寄存器进行配置可包括以下步骤S401-S404。
步骤S401,采用所述与所述配置流程相关的配置数据对所述第一一次性可编程存储器执行初始化。
步骤S402,判断所述第一一次性可编程存储器内的第一流程标识的类型。
需要说明的是,所述嵌入式芯片还可被配置有:用于存储所述配置流程及所述用户程序的引导流程的ROM,相应地,在执行步骤S402之前,所述对所述嵌入式芯片的寄存器进行配置还可包括:对所述ROM所需的RAM区进行初始化。
步骤S403,在所述第一流程标识为标准分支标识的情况下,根据所述第一一次性可编程存储器内的配置数据及所述配置流程对所述寄存器进行配置。
由于一次性可编程(OTP)存储器所存储的数据是ROM运行的关键数据,且嵌入式芯片的关键寄存器的值也是通过OTP存储器读入,故为了保证所述与引导加载过程相关的流程执行的正确性,所述对所述嵌入式芯片的寄存器进行配置还可包括:在所述第一一次性可编程存储器内的第一流程标识为标准分支标识的情况下,对所述第一一次性可编程存储器内的配置数据的正确性进行校验;以及在所述配置数据的正确性通过校验的情况下,执行步骤S403。比如,在提前写入配置数据的循环冗余校验(CRC)值的情况下,对配置数据的CRC值的正确性进行校验。
在执行所述步骤S403之后,所述对所述嵌入式芯片的寄存器进行配置还可包括:按照已配置的寄存器对所述嵌入式芯片的相应功能模块进行自检;以及在所述相应功能模块通过自检的情况下,执行步骤S404。其中,所述嵌入式芯片的相应功能模块可为算法模块、随机数模块或传感器模块等。
步骤S404,将所述嵌入式芯片切换到测试下载模式。
在所述嵌入式芯片切换到测试下载模式之后,基于与引导流程相关的配置数据并按照引导流程执行用户程序的引导操作,具体内容如步骤S303所述。
步骤S303,采用所述与所述引导流程相关的配置数据并按照所述引导流程,执行相应的用户程序的引导操作。
对于步骤S303,如图5所示,所述执行相应的用户程序的引导操作可包括以下步骤S501-S503。
步骤S501,采用所述与所述引导流程相关的配置数据对所述第二一次性可编程存储器执行初始化。
由于用户程序的引导流程也依赖于用户区OTP存储器内的配置数据,故为了保证所述引导流程执行的正确性,在执行所述步骤S501之后,所述执行相应的用户操作还可包括:对所述第二一次性可编程存储器内的配置数据的正确性进行校验,并在所述配置数据的正确性通过校验的情况下,执行步骤S502。比如,在提前写入配置数据的循环冗余校验(CRC)值的情况下,对配置数据的CRC值的正确性进行校验。
步骤S502,判断所述第二一次性可编程存储器内的第二流程标识的类型。
步骤S503,在所述第二流程标识为用户标识的情况下,响应于指令指针跳转到用户区,执行用户区内的用户程序。
在执行所述步骤S503之前,所述执行相应的用户操作还可包括:设置所述第二一次性可编程存储器的访问模式为不可写模式。例如,可通过专用的第一设置寄存器将用户区OTP存储器设置为不可写状态,从而可屏蔽对用户区OTP存储器的恶意修改,进而提高系统的安全性。
在下文介绍的具体实施例中,考虑到寄存器的配置流程具有一定的敏感性,而芯片的用户程序的引导流程的安全性要求较低,故可按照安全性和关联性将寄存器配置和安全检测放在安全级别较高的第一ROM(例如,ROM1)中,及将所述引导流程放到第二ROM(例如,ROM2)中。由此,可降低不同流程中的代码的耦合性,且能更有针对性地保护敏感数据不被随意读写,从而提高芯片的安全性。
所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述引导流程的第二ROM,相应地,在执行所述步骤S402之前,所述对所述嵌入式芯片的寄存器进行配置还可包括:对所述第一ROM所需的RAM区进行初始化;以及在执行所述步骤S502之前,所述执行相应的用户操作还可包括:对所述第二ROM所需的RAM区进行初始化。
具体而言,以设置有两个ROM(ROM1与ROM2)的情况为例对嵌入式芯片(以下简称为芯片)的引导加载过程进行详细地解释和说明,具体包括以下步骤S601-S613,如图6所示。并且,已提前将第二OTP存储器(例如,用户区OTP存储器)内的第二流程标识设置为用户标识。
步骤S601,对配置区OTP存储器与用户区OTP存储器执行初始化。
步骤S602,对ROM1所需的RAM区及栈空间进行初始化。
步骤S603,判断配置区OTP存储器内的第一流程标识的类型。
步骤S604,在所述第一流程标识为标准分支标识的情况下,判断配置区OTP存储器内的配置数据的正确性的校验是否成功,若成功,则执行步骤S605;否则,芯片进入沉默状态。
步骤S605,根据配置区OTP存储器内的配置数据对与芯片的寄存器进行配置。
步骤S606,判断各个自检标识是否生效,若生效,则执行步骤S607;否则,执行步骤S608。
步骤S607,判断各个自检过程是否均成功,若成功,执行步骤S608;否则,芯片进入沉默状态。
步骤S608,将芯片切换到测试下载模式。
在执行所述步骤S608之后,该引导加载方法还可包括:设置所述第一ROM、所述第一一次性可编程存储器及已配置的寄存器的访问模式为不可写模式。具体地,可通过专用的第二设置寄存器设置所述ROM1、所述配置区OTP存储器及所述寄存器为不可写状态。由此,可屏蔽对ROM1、所述配置区OTP存储器及所述寄存器的恶意修改,从而提高系统的安全性。
与此同时,可将指令指针设置为由ROM1跳转到ROM2。
步骤S609,响应于指令指针由ROM1跳转到ROM2,对ROM2所需的RAM区及栈空间进行初始化。
步骤S610,判断用户区OTP存储器内的配置数据的正确性的校验是否成功,若成功,则执行步骤S611;否则,芯片进入沉默状态。
步骤S611,判断用户区OTP存储器内的第二流程标识的类型。
步骤S612,在所述第二流程标识为用户标识的情况下,设置用户区OTP存储器的访问模式为不可写模式。
步骤S613,响应于指令指针跳转到用户区,执行用户区内的用户程序。
在实际应用中,对于一个嵌入式芯片而言,其配置区OTP存储器可能已被初始化或者可能未被初始化。在配置区OTP存储器已被初始化的情况下,可认为该芯片已完成验证过程,并可判定第一流程标识为标准流程分支,然后执行标准流程分支的流程进入用户系统;而在配置区OTP存储器可能未被初始化的情况下,可判定第一流程标识为快速流程分支,然后通过快速流程分支的流程执行芯片的验证流程,再通过标准流程分支的流程进入用户系统。
具体而言,以设置有两个ROM(ROM1与ROM2)的情况为例对嵌入式芯片(以下简称为芯片)的引导加载过程进行详细地解释和说明,具体包括以下步骤S701-S715,如图7所示。
步骤S701,对ROM1所需的RAM区及栈空间进行初始化。
步骤S702,判断配置区OTP存储器内的第一流程标识是否为快速分支标识,若是,执行步骤S703;否则,执行步骤S710。
步骤S703,对用户区OTP存储器执行初始化。
与此同时,可将第二OTP存储器(例如,用户区OTP存储器)内的第二流程标识设置为验证标识。
步骤S704,将芯片切换到测试下载模式。
与此同时,可将指令指针设置为由ROM1跳转到ROM2。
步骤S705,响应于指令指针由ROM1跳转到ROM2,对ROM2所需的RAM区及栈空间进行初始化。
步骤S706,判断用户区OTP存储器内的配置数据的正确性的校验是否成功,若成功,则执行步骤S707;否则,芯片进入沉默状态。
步骤S707,判断用户区OTP存储器内的第二流程标识是否为验证标识,若是,执行步骤S708;否则,执行步骤S714。
步骤S708,对芯片执行验证过程,并在验证成功的条件下,将用户区OTP存储器内的第二流程标识设置为用户标识,并执行步骤S709。
步骤S709,对配置区OTP存储器与用户区OTP存储器执行初始化,并执行步骤S701。
经过步骤S701-S702,当判断得到配置区OTP存储器内的第一流程标识不为快速分支标识(即第一流程标识为标准分支标识)时,执行步骤S710。
步骤S710,判断配置区OTP存储器内的配置数据的正确性的校验是否成功,若成功,则执行步骤S711;否则,芯片进入沉默状态。
步骤S711,根据配置区OTP存储器内的配置数据对与芯片的寄存器进行配置。
步骤S712,判断各个自检标识是否生效,若生效,则执行步骤S713;否则,执行步骤S704。
步骤S713,判断各个自检过程是否均成功,若成功,执行步骤S704;否则,芯片进入沉默状态。
经过步骤S704-S707,当判断得到用户区OTP存储器内的第二流程标识不为验证标识(即第二流程标识为用户标识)时,执行步骤S714。
步骤S714,设置用户区OTP存储器的访问模式为不可写模式。
步骤S715,响应于指令指针跳转到用户区,执行用户区内的用户程序。
当然,本发明实施例并不限于采用由上述的嵌入式芯片的验证方法所获取的与配置流程及用户程序的引导流程相关的配置数据分别对配置区OTP存储器及用户区OTP存储器进行初始化,也可以采用通过其他方式获取的与配置流程及引导流程相关的配置数据分别对配置区OTP存储器及用户区OTP存储器进行初始化。另外,还可基于已经完成初始化的配置区OTP存储器及用户区OTP存储器,并结合两个不同安全级别的ROM分别存储配置流程、及验证流程与用户程序的引导流程,来完成嵌入式芯片的引导加载过程。
综上所述,本发明创造性地首先根据上述的嵌入式芯片的验证方法获取与配置流程相关的配置数据及与用户程序的引导流程相关的配置数据;然后采用与配置流程相关的配置数据并按照配置流程,对嵌入式芯片的寄存器进行配置;最后采用与用户程序的引导流程相关的配置数据并按照引导流程,执行相应的用户程序的引导操作。由此,本发明可通过跳过芯片的安全自检阶段并快速进入样品验证过程获取与配置流程及用户程序的引导流程相关的配置数据,并基于所获取的配置数据分别执行寄存器的配置流程及引导流程,从而在增加芯片的可测试性的基础上,快速高效地完成引导加载过程。
相应地,本发明实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行上述的嵌入式芯片的验证方法和上述的嵌入式芯片的引导加载方法。
所述机器可读存储介质包括但不限于相变内存 (相变随机存取存储器的简称,Phase Change Random Access Memory,PRAM,亦称为RCM/PCRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器(ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体(Flash Memory)或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备等各种可以存储程序代码的介质。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (17)
1.一种嵌入式芯片的验证方法,其特征在于,所述嵌入式芯片被配置有:用于存储第一流程标识的第一一次性可编程存储器、用于存储第二流程标识及与用于验证该嵌入式芯片的验证流程相关的配置数据的第二一次性可编程存储器,该验证方法包括:
判断所述第一一次性可编程存储器内的所述第一流程标识的类型;
在所述第一流程标识为快速分支标识的情况下,对所述第二一次性可编程存储器执行初始化;
将所述嵌入式芯片切换到测试下载模式;以及
在所述测试下载模式下,基于所述第二一次性可编程存储器内的配置数据与所述验证流程,对所述嵌入式芯片执行验证过程。
2.根据权利要求1所述的嵌入式芯片的验证方法,其特征在于,该验证方法还包括:
在执行所述将所述嵌入式芯片切换到所述测试下载模式的步骤之后,对所述第二一次性可编程存储器内的配置数据的正确性进行校验;以及
在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,执行所述对所述嵌入式芯片执行验证过程的步骤。
3.根据权利要求2所述的嵌入式芯片的验证方法,其特征在于,该验证方法还包括:
在所述第二一次性可编程存储器内的配置数据的正确性通过校验的情况下,判断所述第二一次性可编程存储器内的第二流程标识的类型;以及
在所述第二流程标识为验证标识的情况下,执行所述对所述嵌入式芯片执行验证过程的步骤。
4.根据权利要求2所述的嵌入式芯片的验证方法,其特征在于,所述第一一次性可编程存储器还用于存储与用于配置该嵌入式芯片的寄存器的配置流程相关的配置数据,相应地,所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述验证流程的第二ROM,所述对所述第二一次性可编程存储器内的配置数据的正确性进行校验:响应于指令指针由所述第一ROM跳转到所述第二ROM,对所述第二一次性可编程存储器内的配置数据的正确性进行校验,
相应地,该验证方法还包括:在执行所述判断所述第一一次性可编程存储器内的所述第一流程标识的类型的步骤之前,对所述第一ROM所需的RAM区进行初始化;以及在执行所述对所述第二一次性可编程存储器内的配置数据的正确性进行校验的步骤之前,对所述第二ROM所需的RAM区进行初始化。
5.根据权利要求1所述的嵌入式芯片的验证方法,其特征在于,所述嵌入式芯片还被配置有:用于存储所述验证流程的ROM,相应地,在执行所述判断所述第一一次性可编程存储器内的所述第一流程标识的类型的步骤之前,该验证方法还包括:对所述ROM所需的RAM区进行初始化。
6.一种嵌入式芯片的引导加载方法,其特征在于,所述嵌入式芯片被配置有:用于存储与用于配置该嵌入式芯片的寄存器的配置流程相关的配置数据的第一一次性可编程存储器;以及用于存储与用户程序的引导流程相关的配置数据的第二一次性可编程存储器,该引导加载方法包括:
根据权利要求1-5中任一项权利要求所述的嵌入式芯片的验证方法获取与所述配置流程相关的配置数据及与所述引导流程相关的配置数据;
采用所述与所述配置流程相关的配置数据并按照所述配置流程,对所述嵌入式芯片的寄存器进行配置;以及
采用所述与所述引导流程相关的配置数据并按照所述引导流程,执行相应的用户程序的引导操作。
7.根据权利要求6所述的嵌入式芯片的引导加载方法,其特征在于,所述对所述嵌入式芯片的寄存器进行配置包括:
采用所述与所述配置流程相关的配置数据对所述第一一次性可编程存储器执行初始化;
判断所述第一一次性可编程存储器内的第一流程标识的类型;
在所述第一流程标识为标准分支标识的情况下,根据所述第一一次性可编程存储器内的配置数据及所述配置流程对所述寄存器进行配置;以及
将所述嵌入式芯片切换到测试下载模式。
8.根据权利要求7所述的嵌入式芯片的引导加载方法,其特征在于,所述对所述嵌入式芯片的寄存器进行配置还包括:
在所述第一流程标识为标准分支标识的情况下,对所述第一一次性可编程存储器内的配置数据的正确性进行校验;以及在所述配置数据的正确性通过校验的情况下,执行所述对所述寄存器进行配置的步骤。
9.根据权利要求7所述的嵌入式芯片的引导加载方法,其特征在于,在执行所述将所述嵌入式芯片切换到测试下载模式的步骤之前,所述对所述嵌入式芯片的寄存器进行配置还包括:
按照已配置的寄存器对所述嵌入式芯片的相应功能模块进行自检;以及
在所述相应功能模块通过自检的情况下,执行所述将所述嵌入式芯片切换到测试下载模式的步骤。
10.根据权利要求7所述的嵌入式芯片的引导加载方法,其特征在于,所述执行相应的用户程序的引导操作包括:
采用所述与所述引导流程相关的配置数据对所述第二一次性可编程存储器执行初始化;
判断所述第二一次性可编程存储器内的第二流程标识的类型;以及
在所述第二流程标识为用户标识的情况下,响应于指令指针跳转到用户区,执行用户区内的用户程序。
11.根据权利要求10所述的嵌入式芯片的引导加载方法,其特征在于,在执行所述对所述第二一次性可编程存储器执行初始化的步骤之后,所述执行相应的用户程序的引导操作还包括:对所述第二一次性可编程存储器内的配置数据的正确性进行校验,并在所述配置数据的正确性通过校验的情况下,执行所述判断所述第二一次性可编程存储器内的第二流程标识的类型的步骤。
12.根据权利要求10所述的嵌入式芯片的引导加载方法,其特征在于,在执行所述执行用户区内的用户程序的步骤之前,所述执行相应的用户程序的引导操作还包括:设置所述第二一次性可编程存储器的访问模式为不可写模式。
13.根据权利要求10所述的嵌入式芯片的引导加载方法,其特征在于,所述嵌入式芯片还被配置有:用于存储关于所述配置流程的第一ROM;以及用于存储关于所述引导流程的第二ROM,
所述执行相应的用户程序的引导操作包括:响应于指令指针由所述第一ROM跳转到所述第二ROM,采用所述与所述引导流程相关的配置数据并按照所述引导流程,执行相应的用户程序的引导操作,
相应地,在执行所述判断所述第一一次性可编程存储器内的第一流程标识的类型的步骤之前,所述对所述嵌入式芯片的寄存器进行配置还包括:对所述第一ROM所需的RAM区进行初始化;以及
在执行所述判断所述第二一次性可编程存储器内的第二流程标识的类型的步骤之前,所述执行相应的用户程序的引导操作还包括:对所述第二ROM所需的RAM区进行初始化。
14.根据权利要求13所述的嵌入式芯片的引导加载方法,其特征在于,在执行所述将所述嵌入式芯片切换到所述测试下载模式的步骤之后,该引导加载方法还包括:设置所述第一ROM、所述第一一次性可编程存储器及已配置的寄存器的访问模式为不可写模式。
15.根据权利要求13所述的嵌入式芯片的引导加载方法,其特征在于,所述第一ROM的安全性高于所述第二ROM。
16.根据权利要求7所述的嵌入式芯片的引导加载方法,其特征在于,所述嵌入式芯片还被配置有:用于存储所述配置流程及所述引导流程的ROM,
相应地,在执行所述判断所述第一一次性可编程存储器内的第一流程标识的类型的步骤之前,所述对所述嵌入式芯片的寄存器进行配置还包括:对所述ROM所需的RAM区进行初始化。
17.一种机器可读存储介质,其特征在于,所述机器可读存储介质上存储有指令,该指令用于使得机器执行上述权利要求1-5中任一项所述的嵌入式芯片的验证方法和上述权利要求6-16中任一项所述的嵌入式芯片的引导加载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010775733.8A CN111736911B (zh) | 2020-08-05 | 2020-08-05 | 嵌入式芯片的验证方法及引导加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010775733.8A CN111736911B (zh) | 2020-08-05 | 2020-08-05 | 嵌入式芯片的验证方法及引导加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111736911A true CN111736911A (zh) | 2020-10-02 |
CN111736911B CN111736911B (zh) | 2021-01-22 |
Family
ID=72657960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010775733.8A Active CN111736911B (zh) | 2020-08-05 | 2020-08-05 | 嵌入式芯片的验证方法及引导加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111736911B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050030904A (ko) * | 2005-01-31 | 2005-03-31 | (주)웰슨엠 | SoC 개발을 위한 통합 디지털 시스템 개발 장치 |
CN106095691A (zh) * | 2016-06-28 | 2016-11-09 | 国营芜湖机械厂 | 一种应用于机载处理器模块的软件替代测试方法 |
CN110275845A (zh) * | 2019-06-29 | 2019-09-24 | 江苏芯盛智能科技有限公司 | 存储器控制方法、装置及电子设备 |
CN111143854A (zh) * | 2019-12-25 | 2020-05-12 | 眸芯科技(上海)有限公司 | 芯片的安全下载启动装置、系统及方法 |
-
2020
- 2020-08-05 CN CN202010775733.8A patent/CN111736911B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050030904A (ko) * | 2005-01-31 | 2005-03-31 | (주)웰슨엠 | SoC 개발을 위한 통합 디지털 시스템 개발 장치 |
CN106095691A (zh) * | 2016-06-28 | 2016-11-09 | 国营芜湖机械厂 | 一种应用于机载处理器模块的软件替代测试方法 |
CN110275845A (zh) * | 2019-06-29 | 2019-09-24 | 江苏芯盛智能科技有限公司 | 存储器控制方法、装置及电子设备 |
CN111143854A (zh) * | 2019-12-25 | 2020-05-12 | 眸芯科技(上海)有限公司 | 芯片的安全下载启动装置、系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111736911B (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10509568B2 (en) | Efficient secure boot carried out in information processing apparatus | |
US8001432B2 (en) | Uninitialized memory detection using error correction codes and built-in self test | |
RU2254608C2 (ru) | Способ защиты хода выполнения программы | |
CN112083961B (zh) | 嵌入式芯片的引导加载方法 | |
CN107729198B (zh) | 一种Android系统固件校验方法及装置 | |
CN112231136A (zh) | SoC芯片、获取修复信息的方法、存储介质及电子设备 | |
US20060253764A1 (en) | Computer system and method for redundancy repair of memories installed in computer system | |
JP7087142B2 (ja) | マルチスレショルド供給電圧検出を用いたライフサイクル状態メモリの完全性検証 | |
CN112016092A (zh) | 一种基于tpm服务器资产信息多层保护的装置及方法 | |
US20210397718A1 (en) | Secure Code Jump and Execution Gating | |
CN105893877B (zh) | 安全数据读取的方法和数据处理系统 | |
CN111736911B (zh) | 嵌入式芯片的验证方法及引导加载方法 | |
US6539338B1 (en) | Self-diagnostic testing of a network interface adapter | |
WO2017143513A1 (zh) | 一种启动Boot的方法、CPU及单板 | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
US20060090105A1 (en) | Built-in self test for read-only memory including a diagnostic mode | |
CN112052112A (zh) | 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质 | |
CN113297010A (zh) | 基于片上系统的固件恢复方法、装置、系统及存储介质 | |
CN112114908A (zh) | 硬件平台及其启动方法、装置和电子设备 | |
JP2007064762A (ja) | 半導体装置、テストモード制御回路 | |
US20240176886A1 (en) | Memory device, operation method of memory device, and authentication system of memory device | |
CN111506178B (zh) | 芯片上电复位方法及芯片 | |
US10749547B2 (en) | Error detector and/or corrector checker method and apparatus | |
CN117609984A (zh) | 基于risc-v架构的代码校验方法及装置 | |
CN115686905A (zh) | 一种内存储器spd信息恢复方法、装置及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |