System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种固件加载方法、启动方法、嵌入式设备及存储介质技术_技高网

一种固件加载方法、启动方法、嵌入式设备及存储介质技术

技术编号:41217897 阅读:3 留言:0更新日期:2024-05-09 23:39
一种固件加载方法,包括:获取启动状态信息并进行校验;若校验有效,则基于启动状态信息获取固件并进行加载;若启动状态信息校验无效,则获取第一存储区标头信息和第二存储区标头信息,并基于固件第一存储区的固件对第一存储区标头信息进行校验,以及基于固件第二存储区的固件对第二存储区标头信息进行校验;若均校验有效,则基于第一存储区标头信息和第二存储区标头信息获取固件并进行加载;若非均校验有效,则获取校验有效所对应的固件并进行加载。由于启动状态信息校验有效时,使得基于启动状态信息可以快速的实现固件加载。本申请还提供一种固件启动方法、嵌入式设备及存储介质。

【技术实现步骤摘要】

本申请涉及固件加载及嵌入式设备,具体涉及一种固件加载方法、启动方法、嵌入式设备及存储介质


技术介绍

1、嵌入式设备的内部一般会存储有固件,从而基于该固件实现嵌入式设备自身的功能。例如,对于gpu(graphics processing unit,图形处理器)来说,其固件存储于其中的flash存储器中,gpu安全启动时,直接从flash存储器中加载到固件,然后进行验证,验证通过后再执行固件启动操作。其中,安全启动的目的是为了限制消费者对原始设备制造商(oem)产品关键系统进行读写的能力,从而起到保护厂家知识产权的作用。

2、目前的技术方案中,gpu的固件往往存储在flash存储器中特定的一个区域,在固件升级的场景下,新版本固件则会覆盖旧版本固件,如果遇到新版本固件出现损坏、校验失败、被篡改等情形,则会影响固件正常启动,使得整体灵活性、可靠性和稳定性降低,从而需要更多的维护,增加维护成本。目前也有一些方案,固件存储在flash存储器中的多个区域,虽然多个区域可以避免旧版本固件直接被覆盖,但是在固件加载时,需要从多个区域中来确定所需的固件,从而导致固件加载的效率较低。因此,还需要提出新的技术方案。


技术实现思路

1、本申请主要解决的技术问题是固件的加载的效率较低。

2、根据第一方面,一种实施例中提供一种固件加载方法,应用于嵌入式设备,所述嵌入式设备至少具有固件第一存储区和固件第二存储区,所述固件第一存储区和固件第二存储区均用于存储固件,所述固件加载方法包括:p>

3、在启动阶段获取所存储的启动状态信息,并对所述启动状态信息进行校验;

4、若所述启动状态信息校验有效,则基于所述启动状态信息获取所述固件第一存储区或所述固件第二存储区中的固件,并进行加载;

5、若所述启动状态信息校验无效,则获取所存储的所述固件第一存储区的第一存储区标头信息和所述固件第二存储区的第二存储区标头信息,并基于所述固件第一存储区的固件对所述第一存储区标头信息进行校验,以及基于所述固件第二存储区的固件对所述第二存储区标头信息进行校验;

6、若所述第一存储区标头信息和所述第二存储区标头信息均校验有效,则基于所述第一存储区标头信息和所述第二存储区标头信息获取所述固件第一存储区或所述固件第二存储区中的固件,并进行加载;

7、若所述第一存储区标头信息和所述第二存储区标头信息非均校验有效,则获取所述第一存储区标头信息和所述第二存储区标头信息中校验有效所对应的存储区中的固件,并进行加载。

8、一些实施例中,所述基于所述启动状态信息获取所述固件第一存储区或所述固件第二存储区中的固件,包括:

9、获取所述启动状态信息中的固件配置区和校验次数;

10、若所述校验次数小于预设次数,则当所述固件配置区为所述固件第一存储区时,获取所述固件第一存储区中的固件;当所述固件配置区为所述固件第二存储区时,获取所述固件第二存储区中的固件;

11、若所述校验次数大于等于所述预设次数,则当所述固件配置区为所述固件第一存储区时,获取所述固件第二存储区中的固件;当所述固件配置区为所述固件第二存储区时,获取所述固件第一存储区中的固件。

12、一些实施例中,当所述固件第一存储区和固件第二存储区中均没有更新固件时,所述固件配置区为原始版本固件对应的存储区,当所述固件第一存储区或固件第二存储区有更新固件时,所述固件配置区为存储新版本固件对应的存储区。

13、一些实施例中,所述基于所述第一存储区标头信息和所述第二存储区标头信息获取所述固件第一存储区或所述固件第二存储区中的固件,包括:

14、分别获取所述第一存储区标头信息和所述第二存储区标头信息中的固件版本;

15、若所述第一存储区标头信息中的固件版本高于所述第二存储区标头信息,则获取所述固件第一存储区的固件;若所述第一存储区标头信息中的固件版本低于所述第二存储区标头信息,则获取所述固件第二存储区的固件。

16、一些实施例中,所述获取所述第一存储区标头信息和所述第二存储区标头信息中校验有效所对应的存储区中的固件,包括:

17、若所述第一存储区标头信息校验有效,则获取所述固件第一存储区的固件;若所述第一存储区标头信息校验无效,则获取所述固件第二存储区的固件;

18、若所述第二存储区标头信息校验有效,则获取所述固件第二存储区的固件;若所述第二存储区标头信息校验无效,则获取所述固件第一存储区的固件。

19、一些实施例中,所述固件第一存储区和固件第二存储区用于交替的存储新版本固件;

20、当所述固件第一存储区存储新版本的固件时,所述启动状态信息用于记录该新版本固件的固件配置区为所述固件第一存储区,所述第一存储区标头信息用于记录该新版本固件的版本信息;

21、当所述固件第二存储区存储新版本固件时,所述启动状态信息用于记录该新版本固件的固件配置区为所述固件第二存储区,所述第二存储区标头信息用于记录该新版本固件的版本信息。

22、根据第二方面,一种实施例中提供一种固件加载方法,应用于嵌入式设备,所述嵌入式设备至少具有固件第一存储区和固件第二存储区,所述固件第一存储区和固件第二存储区用于存储固件,所述固件加载方法包括:

23、在启动阶段获取所存储的启动状态信息,并对所述启动状态信息进行校验;

24、若所述启动状态信息校验有效,则基于所述启动状态信息获取所述固件第一存储区或所述固件第二存储区中的固件,并进行加载;

25、若所述启动状态信息校验无效,则获取所述启动状态信息中的异常存储区;

26、当所述异常存储区为所述固件第一存储区时,则获取所存储的所述固件第二存储区的第二存储区标头信息,基于所述固件第二存储区的固件对所述第二存储区标头信息进行校验,并在校验有效时加载所述固件第二存储区的固件;

27、当所述异常存储区为所述固件第二存储区时,则获取所存储的所述固件第一存储区的第一存储区标头信息,基于所述固件第一存储区的固件对所述第一存储区标头信息进行校验,并在校验有效时加载所述固件第一存储区的固件。

28、根据第三方面,一种实施例中提供一种固件启动方法,包括:

29、基于如第一方面或者第二方面所述的固件加载方法加载固件;

30、从电子熔断器中获取一级秘钥,基于对称加密算法对所述固件和该固件对应的标头信息进行解密,得到原始版本固件,以及该标头信息中的数字签名和二级秘钥;

31、将所述数字签名和二级秘钥基于非对称加密算法进行解密运算,得到第一解密信息,使用散列函数对所述原始版本固件进行运算,得到第二解密信息;

32、若所述第一解密信息和第二解密信息相同,则从所述电子熔断器中获取自身的身份信息,基于所述身份信息对所述原始版本固件进行校验,若所述校验通过,则基于所述固件执行启动操作。

33、根本文档来自技高网...

【技术保护点】

1.一种固件加载方法,其特征在于,应用于嵌入式设备,所述嵌入式设备至少具有固件第一存储区和固件第二存储区,所述固件第一存储区和固件第二存储区均用于存储固件,所述固件加载方法包括:

2.如权利要求1所述的固件加载方法,其特征在于,所述基于所述启动状态信息获取所述固件第一存储区或所述固件第二存储区中的固件,包括:

3.如权利要求2所述的固件加载方法,其特征在于,当所述固件第一存储区和固件第二存储区中均没有更新固件时,所述固件配置区为原始版本固件对应的存储区,当所述固件第一存储区或固件第二存储区有更新固件时,所述固件配置区为存储新版本固件对应的存储区。

4.如权利要求1-3中任一项所述的固件加载方法,其特征在于,所述基于所述第一存储区标头信息和所述第二存储区标头信息获取所述固件第一存储区或所述固件第二存储区中的固件,包括:

5.如权利要求1-3中任一项所述的固件加载方法,其特征在于,所述获取所述第一存储区标头信息和所述第二存储区标头信息中校验有效所对应的存储区中的固件,包括:

6.如权利要求1所述的固件加载方法,其特征在于,所述固件第一存储区和固件第二存储区用于交替的存储新版本固件;

7.一种固件加载方法,其特征在于,应用于嵌入式设备,所述嵌入式设备至少具有固件第一存储区和固件第二存储区,所述固件第一存储区和固件第二存储区用于存储固件,所述固件加载方法包括:

8.一种固件启动方法,其特征在于,包括:

9.一种嵌入式设备,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,所述介质上存储有程序,所述程序能够被处理器执行以实现如权利要求1-8中任一项所述的方法。

...

【技术特征摘要】

1.一种固件加载方法,其特征在于,应用于嵌入式设备,所述嵌入式设备至少具有固件第一存储区和固件第二存储区,所述固件第一存储区和固件第二存储区均用于存储固件,所述固件加载方法包括:

2.如权利要求1所述的固件加载方法,其特征在于,所述基于所述启动状态信息获取所述固件第一存储区或所述固件第二存储区中的固件,包括:

3.如权利要求2所述的固件加载方法,其特征在于,当所述固件第一存储区和固件第二存储区中均没有更新固件时,所述固件配置区为原始版本固件对应的存储区,当所述固件第一存储区或固件第二存储区有更新固件时,所述固件配置区为存储新版本固件对应的存储区。

4.如权利要求1-3中任一项所述的固件加载方法,其特征在于,所述基于所述第一存储区标头信息和所述第二存储区标头信息获取所述固件第一存储区或所述固件第二存储区...

【专利技术属性】
技术研发人员:张坚
申请(专利权)人:深流微智能科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1