一种嵌入式系统启动方法及装置与流程

文档序号:15685432发布日期:2018-10-16 21:00阅读:177来源:国知局

本发明涉及嵌入式系统技术领域,尤其涉及一种嵌入式系统启动方法及装置。



背景技术:

随着科学技术的不断发展,嵌入式设备被广泛应用于人们的日常生活中。其中,嵌入式系统(embeddedsystem)是嵌入式设备的核心组成部分;所谓嵌入式系统,是一种完全嵌入受控器件内部,为特定应用而定制设计的专用计算机系统,嵌入式系统可用于控制、监视或辅助各种设备、机器或用于工厂运作的设备。嵌入式系统与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,相关设计人员可以对嵌入式系统进行优化,减小尺寸、降低成本。嵌入式系统通常会进行大量生产,所以单个的成本节约,可以能够随着产量的提升进行成倍的放大。

目前,嵌入式系统的引导程序仅支持启动一种模式的嵌入式系统,如:引导启动安全模式的嵌入式系统,或引导启动非安全模式的嵌入式系统。如果需要从启动一种模式的嵌入式系统切换至启动另一种模式的嵌入式系统,就需要相关人员重新编写启动代码并重新投片生产,将重新编写的启动代码写入嵌入式系统的相关芯片中,这样,显然会大大增加嵌入式系统的研发周期,耗费大量时间以及人力物力。



技术实现要素:

有鉴于此,本发明实施例期望提供一种嵌入式系统启动方法及装置,能由引导程序启动不同模式的嵌入式系统,更灵活方便的引导启动嵌入式系统。

为达到上述目的,本发明实施例提供了一种嵌入式系统启动方法,所述方法包括:

在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;所述方法还包括:

引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;

根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统。

上述方法中,所述配置信息设置于一次性可编程otp模块中。

上述方法中,所述根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统之前,所述方法还包括:

获取第一信息和第二信息,所述第一信息包括第一数字证书和第二验证数字证书;所述第二信息包括第二数字证书和操作系统程序。

上述方法中,所述配置信息还包括第一验证数字证书;

所述根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统,包括:

当所述系统启动方式对应的引导启动程序为对应于安全引导区的引导启动程序时,所述引导启动程序以所述第一验证数字证书为准,对所述第一信息中的第一数字证书进行第一次验证;

所述第一次验证通过后,以第一信息中的第二验证数字证书为准,对第二信息中的第二数字证书进行第二次验证;

所述第二次验证通过后,判断所述第二信息中的操作系统程序是否加密,确定操作系统程序被加密、且所述配置信息中还包括解密密钥时,使用所述解密密钥对所述操作系统程序进行解密;

所述操作系统程序解密成功后,启动安全引导区。

上述方法中,所述第一次验证包括:以所述配置信息中的第一验证数字证书为准,验证所述第一信息中的第一数字证书是否与所述第一验证数字证书相同,相同时,所述第一次验证通过;

所述第二次验证包括:以第一信息中的第二验证数字证书为准,验证所述第二信息中的第二数字证书是否与所述第二验证数字证书相同,相同时,所述第二次验证通过。

上述方法中,所述根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统,包括:

当所述系统启动方式对应的引导启动程序为对应于非安全引导区的引导程序时,所述引导程序直接启动非安全引导区。

本发明实施例还提供了一种嵌入式系统启动装置,所述装置包括:设置模块、读取模块、引导模块;其中,

设置模块,用于在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;

读取模块,用于在引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;

引导启动模块,用于根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统。

上述装置中,所述装置还包括:otp模块,用于存储所述配置信息。

上述装置中,所述读取模块还用于:获取第一信息和第二信息,所述第一信息包括第一数字证书和第二验证数字证书;所述第二信息包括第二数字证书和操作系统程序。

上述装置中,所述读取模块读取的配置信息还包括第一验证数字证书;

所述引导启动模块具体用于:

当所述系统启动方式对应的引导启动程序为对应于安全引导区的引导启动程序时,所述引导启动程序以所述第一验证数字证书为准,对所述第一信息中的第一数字证书进行第一次验证;

所述第一次验证通过后,以第一信息中的第二验证数字证书为准,对第二信息中的第二数字证书进行第二次验证;

所述第二次验证通过后,判断所述第二信息中的操作系统程序是否加密,确定操作系统程序被加密、且所述配置信息中还包括解密密钥时,使用所述解密密钥对所述操作系统程序进行解密;

所述操作系统程序解密成功后,启动安全引导区。

上述装置中,所述引导启动模块还具体用于:在第一次验证中,以所述配置信息中的第一验证数字证书为准,验证所述第一信息中的第一数字证书是否与所述第一验证数字证书相同,相同时,所述第一次验证通过;

在第二次验证中,以第一信息中的第二验证数字证书为准,验证所述第二信息中的第二数字证书是否与所述第二验证数字证书相同,相同时,所述第二次验证通过。

上述装置中,所述引导启动模块具体用于:当所述系统启动方式对应的引导启动程序为对应于非安全引导区的引导程序时,所述引导程序直接启动非安全引导区。

本发明实施例提供的嵌入式系统启动方法及装置,在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统。如此,可以通过引导启动程序引导启动安全引导区启动嵌入式系统、或引导启动非安全引导区启动嵌入式系统,使得嵌入式系统的应用更加广泛,更灵活方便的引导启动嵌入式系统;并且,由于不需要重新编写启动代码并重新投片生产,可以大大缩短嵌入式系统的研发周期,避免时间以及人力物力的耗费。

附图说明

图1为本发明实施例嵌入式系统启动方法的流程示意图;

图2为本发明实施例确定嵌入式系统启动方式的流程示意图;

图3为本发明实施例嵌入式系统启动方法的总流程示意图;

图4为本发明实施例确定嵌入式系统安全状态的流程示意图;

图5为本发明实施例启动嵌入式安全系统流程示意图;

图6为本发明实施例启动嵌入式安全系统详细示意图;

图7为本发明实施例启动嵌入式非安全系统示意图;

图8为本发明实施例嵌入式系统启动装置的组成结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明再作进一步详细说明。

图1为本发明实施例嵌入式系统启动方法的流程示意图,如图1所示,本发明实施例嵌入式系统启动方法包括:

步骤101:在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;

步骤102:引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;

其中,所述配置信息,所述配置信息设置于一次性可编程(otp,onetimeprogrammable)模块中。

步骤103:根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统。

上述步骤103之前,本发明实施例嵌入式系统的启动方法还包括:获取第一信息和第二信息,所述第一信息包括第一数字证书和第二验证数字证书;所述第二信息包括第二数字证书和操作系统程序;

其中,当所述系统启动方式对应的引导启动程序为对应于安全引导区的引导启动程序、且所述配置信息还包含第一验证数字证书时,所述引导启动程序以所述第一验证数字证书为准,对所述第一信息中的第一数字证书进行第一次验证;

所述第一次验证通过后,以第一信息中的第二验证数字证书为准,对第二信息中的第二数字证书进行第二次验证;

所述第二次验证通过后,判断所述第二信息中的操作系统程序是否加密,确定操作系统程序被加密、且配置信息中还包含解密密钥时,使用所述解密密钥对所述操作系统程序进行解密;

所述操作系统程序解密成功后,启动安全引导区。

当所述系统启动方式为对应于非安全引导区的引导程序时,所述引导程序直接启动非安全引导区。

下面以具体实施例对本发明嵌入式启动方法进行详细描述说明:

图2为本发明实施例确定嵌入式系统启动方式的流程示意图,本发明实施例中所述配置信息是预先设置的安全状态字段,如图2所示,本发明实施例确定嵌入式系统启动方式包括:

步骤201:读取嵌入式系统中otp中预先设置的安全状态字段;

在实际应用中,otp中预先设置的安全状态字段可以根据嵌入式系统实际应用场景进行设定,所述安全状态字段录入otp后即不可再次更改;

步骤202:确定嵌入式系统启动方式;

步骤203:如果确定为安全启动方式,则对嵌入式系统镜像文件进行验证签名和解密;

所述步骤203之前还包括:根据所述嵌入式系统芯片中的空片标志,确定出嵌入式系统芯片是否为空片,如果是空片,则停止启动嵌入式系统;

如果不是空片,则读取所述otp中的mk_en字段,根据所述mk_en字段判断是否存在mkid信息,如果所述mk_en为1,则确定存在mkid信息,判断所述mkid信息与第一级嵌入式系统镜像中的mkid信息是否一致,如果所述mkid不一致,则停止启动嵌入式系统;其中,所述mk_en字段表示otp中是否存储有嵌入式芯片身份识别信息,所述mkid为嵌入式芯片身份识别信息;

如果所述mkid一致,则进一步判断otp中的第一验证数字证书bl_key0是否与第一级嵌入式系统镜像中数字证书中的rsa密钥是否一致,如果bl_key0与rsa密钥不一致,则停止启动嵌入式系统;

如果bl_key与rsa密钥一致,则对第一级嵌入式系统镜像进行验证签名,如果验证签名不成功,则停止启动嵌入式系统;

如果验证签名成功,则判断第二验证数字证书bl_key1与第二级镜像中数字证书中的rsa密钥是否一致,如果bl_key1与第二级镜像中数字证书中的rsa密钥不一致,则停止启动嵌入式系统;

如果bl_key1与第二级镜像中数字证书中的rsa密钥一致,则对第二级镜像进行解密,如果对第二级镜像解密不成功,则停止启动嵌入式系统;

如果对第二级镜像解密成功,则引导启动安全引导区启动嵌入式系统;

步骤204:启动嵌入式系统,之后结束本次处理流程;

其中,运行通过验证签名和解密后的嵌入式系统镜像,启动安全嵌入式系统。

步骤205:如果确定为非安全启动方式,则以非安全模式启动嵌入式系统;

其中,如果确定嵌入式系统启动方式为非安全方式,表明嵌入式系统镜像不需要进行验证签名和解密即可运行,根据flash存储器中的空片标志,确定出嵌入式系统装置是否为空片,如果是空片,则停启动安全嵌入式系统;

如果不是空片,将所述flash存储器中的系统镜像存入嵌入式系统的ram存储器中,启动嵌入式系统。

上述步骤201之前,本发明实施例的方法还可以包括:执行固化程序及初始化的步骤,具体如图3所示。

图3为本发明实施例嵌入式系统启动方法的总流程示意图,如图3所示,本发明实施例嵌入式系统启动方法的处理流程包括:

步骤301:嵌入式系统上电后,执行固化在rom存储器中的程序;

在实际应用中,所述固化在rom存储器中的程序是bootloader程序,所述bootloader程序用于初始化嵌入式硬件设备、建立内存空间映射图,将嵌入式系统中软硬件环境调整至工作状态,为调用操作嵌入式系统内核准备好运行环境;所述bootloader程序根据嵌入式系统装置体系的不用而不同,同时bootloader程序也依赖于嵌入式硬件设备的配置,因此,bootloader程序并不通用,对于不同的嵌入式设备而言,即使不同的嵌入式设备使用一致的装置体系进行构建,如果正常运行在一种嵌入式设备上的bootloader程序需要在另一种嵌入式设备上正常运行,也通常需要对bootloader程序进行针对性修改。

步骤302:初始化配置,将flash存储器中嵌入式系统镜像文件存入ram存储器中;

步骤303:读取嵌入式系统中otp中预先设置的安全状态字段;

在实际应用中,otp中预先设置的安全状态字段可以根据嵌入式系统实际应用场景进行设定,所述安全状态字段录入otp后即不可再次更改;

步骤304:确定嵌入式系统启动方式,如果确定为安全启动方式,则执行步骤305,如果确定为非安全启动方式,则执行步骤307;

步骤305:对嵌入式系统镜像文件进行验证签名和解密;

步骤306:启动嵌入式系统,之后结束本次处理流程;

步骤307:以非安全模式启动嵌入式系统。

图4为本发明实施例确定嵌入式系统安全状态的流程示意图,如图4所示,在实际应用中,确定嵌入式安全状态流程具体包括以下步骤:

步骤401:读取otp中启动方式字段;

步骤402:当所述启动方式字段代码为1时,表示需要安全引导启动嵌入式系统,执行步骤404;如所述启动方式字段代码为0时,表示需要非安全引导启动嵌入式系统,执行步骤403;

步骤403:启动嵌入式系统,之后结束本次处理流程;

其中,将嵌入式系统镜像加载入嵌入式系统ram存储器后,以非安全引导程序引导启动嵌入式系统,无需对嵌入式系统镜像进行验证签名和解密;

步骤404:对嵌入式系统镜像验证签名和解密;

在实际应用中,当以安全引导方式启动嵌入式系统时,表明需要对嵌入式系统镜像进行验证签名和解密,只有当验证签名成功和解密成功同时完成后,再运行加载入ram存储器中的嵌入式系统镜像,完成启动嵌入式系统;如果所述验证签名和解密任意一个没有通过验证或解密失败,则停止启动当前嵌入式系统。

图5为本发明实施例启动嵌入式安全系统流程示意图,如图5所示,在实际应用中,启动安全嵌入式系统流程具体包括以下步骤:

步骤501:读取嵌入式系统芯片中的空片标志;

所述空片标志表征嵌入式系统装置是否已烧录入操作系统程序;

步骤502:判断嵌入式系统装置是否为空片,如果是空片,执行步骤513;如果不是空片,执行步骤503;

步骤503:读取otp中的mk_en字段,其中,mk_en字段表示是否存储有嵌入式芯片身份标识信息;

步骤504:判断mk_en字段是否等于1,如果等于1,确定存在mkid,执行步骤505;如果不等于1,确定不存在mkid,跳过步骤505,执行步骤506;

步骤505:判断otp中mkid是否与第一镜像中的mkid一致,如果一致,执行步骤506;如果不一致,执行步骤513;

其中,所述mkid为嵌入式系统芯片表示信息;

步骤506:判断otp中bl_key0是否与第一级嵌入式系统镜像数字证书中的rsa密钥一致,如果一致,执行步骤507;如果不一致,执行步骤513;

步骤507:对第一级嵌入式系统镜像进行验证签名;

步骤508:判断验证签名是否成功,如果成功,执行步骤509;如果不成功,执行步骤513;

步骤509:判断bk_key1是否与第二镜像数字证书中rsa密钥一致,如果一致,执行步骤510;如果不一致,执行步骤513;

步骤510:对第二级嵌入式系统镜像进行解密;

步骤511:判断第二镜像解密是否成功,如果成功,执行步骤512;如果不成功,执行步骤513;

步骤512:启动嵌入式系统,之后结束本次处理流程;

步骤513:停止启动嵌入式系统。

图6为本发明实施例启动嵌入式安全系统详细示意图,如图6所示,在实际应用中,嵌入式系统镜像进行验证签名和解密具体包括以下步骤:

步骤601:使用上一级代码中的第一数字证书或密钥key信息对嵌入式系统镜像的证书进行验证;对所述第一数字证书或密钥key信息进行hash运算,将获得的固定长度的二进制数值存入第一结果sign_hash1中;

其中,如果是对第一级嵌入式系统镜像进行验证签名,则使用otp中预设的key信息或第一数字证书对所述第一级嵌入式系统镜像证书进行验证签名;如对第二级嵌入式系统镜像进行验证签名,则使用第一级嵌入式系统镜像中的key信息或第一数字证书对第二级嵌入式系统镜像证书进行验证签名,以此类推;

步骤602:对步骤601中所述嵌入式系统镜像证书或key信息进行hash运算,将获得的固定长度的二进制数值存入第二结果sign_hash2中;

步骤603:判断sign_hash1和sign_hash2是否相等,如果相等,执行步骤604;如果不相等,执行步骤610;

步骤604:对嵌入式系统镜像代码进行hash运算,将获得的固定长度的二进制数值存入系统镜像代码结果code_hash1中;

步骤605:判断嵌入式系统镜像证书中预存的系统镜像代码验证信息code_hash与code_hash1是否相等,如果相等,执行步骤607;如果不相等,执行步骤610;

步骤606:判断嵌入式系统镜像是否加密,如果加密,执行步骤607;如果未加密,执行步骤609;

步骤607:用otp中的密钥对嵌入式系统镜像进行解密;

步骤608:判断解密是否成功,如果成功,执行步骤609;如果不成功,执行步骤610;

步骤609:运行解密后的嵌入式系统镜像,启动嵌入式系统,之后结束本次处理流程;

步骤610:停止启动嵌入式系统。

图7为本发明实施例启动嵌入式非安全系统示意图,如图7所示,确定嵌入式系统为非安全状态,启动非安全嵌入式系统包括以下步骤:

步骤701:读取嵌入式系统芯片空片标志;

步骤702:判断嵌入式系统装置是否是空片,如果是空片,执行步骤703;如果不是空片,执行步骤704;

步骤703:停止启动嵌入式系统,之后结束本次处理流程;

步骤704:运行ram存储器中嵌入式系统镜像,启动嵌入式系统。

图8为本发明实施例嵌入式系统启动装置的结构示意图,如图8所示,本发明实施例嵌入式系统启动装置包括:

设置模块801,用于在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;

读取模块802,用于在引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;

引导启动模块803,用于根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统;

其中,所述装置还包括:otp模块804,用于存储所述配置信息;

所述读取模块802,还用于:获取第一信息和第二信息,所述第一信息包括第一数字证书和第二验证数字证书;所述第二信息包括第二数字证书和操作系统程序;

所述引导启动模块803具体用于:

当所述系统启动方式对应的引导启动程序为对应于安全引导区的引导启动程序时,所述引导启动程序以所述第一验证数字证书为准,对所述第一信息中的第一数字证书进行第一次验证;

所述第一次验证通过后,以第一信息中的第二验证数字证书为准,对第二信息中的第二数字证书进行第二次验证;

所述第二次验证通过后,判断所述第二信息中的操作系统程序是否加密,确定操作系统程序被加密、且所述配置信息中还包括解密密钥时,使用所述解密密钥对所述操作系统程序进行解密;

所述操作系统程序解密成功后,启动安全引导区;

其中,所述第一次验证包括:以所述配置信息中的第一验证数字证书为准,验证所述第一信息中的第一数字证书是否与所述第一验证数字证书相同,相同时,所述第一次验证通过;

所述第二次验证包括:以第一信息中的第二验证数字证书为准,验证所述第二信息中的第二数字证书是否与所述第二验证数字证书相同,相同时,所述第二次验证通过;

所述引导启动模块803还具体用于:当所述系统启动方式对应的引导启动程序为对应于非安全引导区的引导程序时,所述引导程序直接启动非安全引导区。

在实际应用中,所述设置模块801、读取模块802、引导启动模块803均可由嵌入式系统中的中央处理器(cpu,centralprocessingunit)、微处理器(mpu,microprocessorunit)、数字信号处理器(dsp,digitalsignalprocessor)、或现场可编程门阵列(fpga,fieldprogrammablegatearray)等实现。

如上所述,本发明实施例提供的嵌入式系统启动方法及装置,在嵌入式系统芯片上设置安全引导区和非安全引导区,所述安全引导区和非安全引导区各自对应不同的引导启动程序;引导加载程序运行完成后,读取预设的配置信息,所述配置信息至少包括系统启动方式;根据所述系统启动方式执行所述系统启动方式对应的引导启动程序,引导启动对应的引导区启动嵌入式系统。如此,本发明实施例提供的嵌入式启动方法及装置可以同时兼容启动安全嵌入式系统和非安全嵌入式系统,当用户需要启动另一种嵌入式系统时,不必修改启动嵌入式的引导程序或重新开发新的装置,降低研发周期,节省人力物力。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1