System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种RomCode运行错误修复方法和装置制造方法及图纸_技高网

一种RomCode运行错误修复方法和装置制造方法及图纸

技术编号:40772473 阅读:5 留言:0更新日期:2024-03-25 20:20
本发明专利技术提供了一种RomCode运行错误修复方法和装置,该方法包括:当检测到RomCode运行错误时,解析闪存中的索引表,以获得所述闪存中的修复代码的存储位置和长度信息;根据所述存储位置和长度信息将所述修复代码搬移到RAM中,解析所述修复代码,当确定代码有效时,对所述修复代码进行鉴权;当所述修复代码鉴权通过时,将所述RomCode执行到待修复代码段,然后执行所述修复代码,以对所述RomCode中的待修复代码段进行修复。本发明专利技术的方案在不增加RomCode的大小的前提下提高了修复效率。

【技术实现步骤摘要】

本专利技术属于芯片安全,特别涉及一种romcode运行错误修复方法和装置。


技术介绍

1、rom(read only memory)如今是芯片安全启动的唯一介质。rom中存储的用于安全启动部分的代码通常被称为romcode。rom在出厂后具有只读特性,romcode代码一旦被烧录就无法修改。为了提高romcode具有的兼容性和容错率,相关技术采用flash进行地址重映射的方式,使用romcode引导闪存flash启动,这样就缩小了romcode的代码量,但是这降低了引导的执行效率,在部分工程使用中无法满足实时性要求。此外,如果使用uart升级等方式实现flash二级启动,则无法解决romcode本身出现错误问题。相关技术还采用otp(一次性可编程)的方式对romcode出现错误时进行修复,但由于otp是一次性的,所以在一次写入之后,修复代码(patch)无法再更新,如果patch存在错误,最终导致romcode错误无法修复,导致芯片开发成本增加。


技术实现思路

1、本专利技术的目的在于提供一种romcode运行错误修复方法和装置,旨在提高romcode修复效率。

2、根据本专利技术的第一方面,提供了一种romcode运行错误修复方法,包括:

3、当检测到romcode运行错误时,解析闪存中的索引表,以获得所述闪存中的修复代码的存储位置和长度信息;

4、根据所述存储位置和长度信息将所述修复代码搬移到ram中,解析所述修复代码,当确定代码有效时,对所述修复代码进行鉴权;

5、当所述修复代码鉴权通过时,将所述romcode执行到待修复代码段,然后执行所述修复代码,以对所述romcode中的待修复代码段进行修复。

6、优选地,所述解析闪存中的索引表,进一步包括:

7、读取闪存中的索引表,通过遍历该索引表以查找修复代码索引;

8、如果查找到修复代码索引,则根据查找到的修复代码索引地址,记录修复代码地址和长度。

9、如果未查找到修复代码索引,则遍历该索引表以查找备份分区的修复代码索引;

10、当查找到备份分区的修复代码索引时,记录修复代码地址和长度;

11、如果未查找到备份分区的修复代码索引,则记录romcode预埋的修复代码地址和长度。

12、优选地,所述对所述修复代码进行鉴权,进一步包括:

13、解析所述修复代码的头部信息中的地址和长度,并输入sm3摘要算法,计算得出散列值;

14、将所述散列值与所述头部信息中的公钥和签名一并输入sm2摘要算法,进行验签的鉴权,当鉴权通过时,进行修复代码的加载,如果鉴权不通过,则将修复代码丢弃。

15、优选地,所述执行所述修复代码,进一步包括:

16、如果判断所述修复代码有效并且存在修复代码指针,则查找所述修复代码指针指向的修复代码表,在所述修复代码表中查找修复函数,并执行该修复函数。

17、根据本专利技术的第二方面,提供了一种romcode运行错误修复装置,包括:

18、解析单元,用于当检测到romcode运行错误时,解析闪存中的索引表,以获得所述闪存中的修复代码的存储位置和长度信息;

19、鉴权单元,用于根据所述存储位置和长度信息将所述修复代码搬移到ram中,解析所述修复代码,当确定代码有效时,对所述修复代码进行鉴权;

20、执行单元,用于当所述修复代码鉴权通过时,将所述romcode执行到待修复代码段,然后执行所述修复代码,以对所述romcode中的待修复代码段进行修复。

21、相比于相关技术,本专利技术的技术方案具备以下优点:

22、通过将romcode的patch代码放置在外设flash中,实现了romcode错误的无限次修复;同时避免了在rom中额外增加大量代码量,有效控制了rom的成本。通过解析索引表flash_index_table来决定搬移patch的地址和长度,避免了flash因为长期使用而出现坏块引起的patch错误,增加了patch代码的灵活性和可靠性。通过解析patch header快速获取patch的一些有效信息,从而使romcode对patch进行高效识别;使用sm2/3对patch进行鉴权后再执行,提高了鉴权速度也保证了romcode执行的安全性。romcode代码以及patch全部在片内rom/ram上执行,显著提高了romcode的执行效率。

23、本专利技术的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。

本文档来自技高网...

【技术保护点】

1.一种RomCode运行错误修复方法,其特征在于,包括:

2.根据权利要求1所述的RomCode运行错误修复方法,其特征在于,所述解析闪存中的索引表,进一步包括:

3.根据权利要求2所述的RomCode运行错误修复方法,其特征在于,还包括:

4.根据权利要求1所述的RomCode运行错误修复方法,其特征在于,所述对所述修复代码进行鉴权,进一步包括:

5.根据权利要求1所述的RomCode运行错误修复方法,其特征在于,所述执行所述修复代码,进一步包括:

6.一种RomCode运行错误修复装置,其特征在于,包括:

7.根据权利要求6所述的RomCode运行错误修复装置,其特征在于,所述解析单元,进一步用于:

8.根据权利要求7所述的RomCode运行错误修复装置,其特征在于,所述解析单元,进一步用于:

9.根据权利要求6所述的RomCode运行错误修复装置,其特征在于,所述鉴权单元,进一步用于:

10.根据权利要求6所述的RomCode运行错误修复装置,其特征在于,所述执行单元,进一步用于:

...

【技术特征摘要】

1.一种romcode运行错误修复方法,其特征在于,包括:

2.根据权利要求1所述的romcode运行错误修复方法,其特征在于,所述解析闪存中的索引表,进一步包括:

3.根据权利要求2所述的romcode运行错误修复方法,其特征在于,还包括:

4.根据权利要求1所述的romcode运行错误修复方法,其特征在于,所述对所述修复代码进行鉴权,进一步包括:

5.根据权利要求1所述的romcode运行错误修复方法,其特征在于,所述执行所述修复代码,进一步包括:<...

【专利技术属性】
技术研发人员:董昀周雪锋强凯贾利辉张迪
申请(专利权)人:无锡众星微系统技术有限公司
类型:发明
国别省市:

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

1