电子装置及代码修补方法制造方法及图纸

技术编号:38431096 阅读:11 留言:0更新日期:2023-08-11 14:18
本发明专利技术提出一种电子装置及代码修补方法。电子装置包括处理器、主只读存储器及增补只读存储器。主只读存储器储存一启动代码,启动代码包括至少一检查点代码段。增补只读存储器储存至少一修补代码。处理器执行启动代码并在执行到检查点代码段时,查询增补只读存储器中是否存在相对应的修补代码,若是,则执行对应的修补代码。修补代码。修补代码。

【技术实现步骤摘要】
电子装置及代码修补方法


[0001]本专利技术是有关于电子装置,特别是指一种电子装置及代码修补方法。

技术介绍

[0002]目前系统单晶片在开机上电后会先执行启动程序,以初始化硬件设备、建立存储器空间的对映图,以将系统的软硬件环境设置成适当状态,以利后续调用操作系统核心。基于安全考量,启动程序的代码被储存在只读存储器中,以避免代码遭到窜改。然而,当系统单晶片生产之后,若发现储存在只读存储器中启动代码中有错误、漏洞(BUG),便只能重新生产新版本的系统单晶片,消耗大量时间与金钱等资源。

技术实现思路

[0003]本专利技术一实施例提出一种电子装置,包括:处理器、主只读存储器及增补只读存储器。主只读存储器储存一启动代码,启动代码包括至少一检查点代码段。增补只读存储器储存至少一修补代码。处理器耦接主只读存储器及增补只读存储器,配置为执行主只读存储器的启动代码以执行电子装置的启动程序,并在该启动程序中在处理器执行到检查点代码段时,查询增补只读存储器中是否存在与所执行到的检查点代码段相对应的修补代码,在与该检查点代码段相对应的该修补代码存在于该增补只读存储器时,执行对应的修补代码。
[0004]本专利技术一实施例提出一种代码修补方法,由一电子装置的一处理器执行。代码修补方法包括:读取并载入储存在主只读存储器的启动代码以执行电子装置的启动程序,其中启动代码包括至少一检查点代码段;在该启动程序中在处理器执行到检查点代码段时,查询增补只读存储器中是否存在与所执行到的检查点代码段相对应的修补代码;及在与所执行到的该检查点代码段相对应的该修补代码存在于该增补只读存储器中时,执行该增补只读存储器中对应的修补代码。
[0005]根据本专利技术一些实施例的电子装置及代码修补方法,可对储存在主只读存储器的启动代码进行修补,特别是可修补硬件初始化代码段之前的代码段。
附图说明
[0006]下面,将结合附图对本专利技术的优选实施方式进行进一步详细的说明,其中:
[0007][图1]是为本专利技术一实施例的电子装置的示意图。
[0008][图2]是为本专利技术一实施例的代码修补方法流程图。
[0009][图3]是为本专利技术一实施例的代码示意图。
[0010][图4]是为本专利技术一实施例的启动程序流程图。
具体实施方式
[0011]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例
中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0012]在以下的详细描述中,可以参看作为本申请一部分用来说明本申请的特定实施例的各个说明书附图。在附图中,相似的附图标记在不同图式中描述大体上类似的组件。本申请的各个特定实施例在以下进行了足够详细的描述,使得具备本领域相关知识和技术的普通技术人员能够实施本申请的技术方案。应当理解,还可以利用其它实施例或者对本申请的实施例进行结构、逻辑或者电性的改变。
[0013]参照图1,是为本专利技术一实施例的电子装置的示意图。电子装置可为系统单晶片(system on chip,SOC)或包括此系统单晶片的电子装置。电子装置包括处理器10、主只读存储器20、增补只读存储器(supplementary ROM)30及汇流排40。处理器10经由汇流排40耦接主只读存储器20与增补只读存储器30。主只读存储器20储存一启动代码(boot code)。启动代码包括至少一检查点代码段。增补只读存储器30供储存至少一修补代码。也就是说,程序编写者预先在启动代码中的一个或多个位置放入检查点代码段。当程序编写者发现启动代码中的某一段程序有需要进行修正时,程序编写者可编写修补代码并储存在增补只读存储器30中。该修补代码是用以修正该启动代码中的部份程序。换言之,该增补只读存储器30与该启动代码被设置成共同配合以可执行后续被储存入增补只读存储器30的修补代码。也就是说,当该电子装置被设计完成时,该增补只读存储器30尚未储存有该修补代码,但该启动代码已包括有检查点代码段以查询修补代码是否存在于增补只读存储器30。
[0014]在一些实施例中,主只读存储器20为只读存储器(ROM)。
[0015]在一些实施例中,增补只读存储器30为一次性可编程(one time programmable)只读存储器。
[0016]在一些实施例中,处理器10、主只读存储器20及增补只读存储器30位于一系统单晶片(System On Chip,SOC)中。参照图2,是为本专利技术一实施例的代码修补方法流程图,由处理器10执行。首先,处理器10读取并载入储存在主只读存储器20的启动代码以执行电子装置的启动程序(步骤S410)。在步骤S420中,在启动程序中在处理器10执行到检查点代码段时,处理器10查询增补只读存储器30中是否存在与所执行到的检查点代码段相对应的修补代码。若是(即在与检查点代码段相对应的修补代码存在于增补只读存储器30时),则执行增补只读存储器30中的对应的修补代码(步骤S430),执行完修补代码之后,将返回继续执行启动代码;若否,则继续步骤S430,执行此检查点代码段之后的启动代码段。藉此,可对于储存在主只读存储器20中的启动代码里面的错误码段进行修补(即错误码段会被跳过而不执行)。
[0017]参照图3,是为本专利技术一实施例的代码示意图。在此,示例主只读存储器20中储存的启动代码,呈现主只读存储器20的储存位址21上的代码段22。处理器10会从起始位址(在此为0000000)开始执行启动代码,依序往下执行。当执行到第一个检查点代码段(checkpoint(ID1))时,将查询增补只读存储器30是否存在对应的修补代码。具体来说,增补只读存储器30包括第一储存区域31及一第二储存区域32。第一储存区域31储存有查找表,第二储存区域32储存修补代码。查找表包括至少一第一识别符及相对应的至少一第一位址。于此,是示例为「ID1」的第一识别符及为「位址B」的第一位址。而前述第一个检查点代
码段指示有第二识别符(在此为ID1)。因此,处理器10在查找表中查询到与第二识别符相对应的第一识别符(在此均为ID1),则获得与此第一识别符相对应的第一位址(即位址B)。接着,处理器10至增补只读存储器30的该第一位址(即位址B)执行对应的修补代码(在此为取出堆叠的资料为例)。此第一位址是位于第二储存区域32。修补代码包括主只读存储器20的一返回位址(在此为00000018)并将程序计数器(program counter)设置为此返回位址,使得处理器10至主只读存储器20的返回位址之后继续执行启动代码。从而,可跳过启动代码中具有错误的代码段,至指定的返回位址继续执行。例如,在此是跳过位址00000010与位址00000014的代码段。也就是说,依据至少一检查点代码段与修补代码,启动代码中的部分代码被跳本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种电子装置,包括:一主只读存储器,储存一启动代码,该启动代码包括至少一检查点代码段;一增补只读存储器;及一处理器,耦接该主只读存储器及该增补只读存储器,配置为执行该主只读存储器的该启动代码以执行该电子装置的一启动程序,并在该启动程序中在该处理器执行到该至少一检查点代码段时,查询该增补只读存储器中是否存在与所执行到的该检查点代码段相对应的一修补代码,在与该检查点代码段相对应的该修补代码存在于该增补只读存储器时,执行对应的该修补代码。2.如权利要求1所述的电子装置,其中该增补只读存储器储存一查找表,该查找表包括至少一第一识别符及相对应的至少一第一位址,每一该检查点代码段指示有一第二识别符,该处理器查询该查找表中是否有与该第二识别符相对应的该第一识别符,若有,则从该增补只读存储器的与所查询到的该第一识别符相对应的该第一位址执行该修补代码。3.如权利要求2所述的电子装置,其中该增补只读存储器区分成一第一储存区域及一第二储存区域,其中该查找表储存在该第一储存区域,该至少一修补代码储存在该第二储存区域。4.如权利要求1、或2所述的电子装置,其中该启动代码还包括由该处理器执行的一硬件初始化代码段,其中由该处理器执行的至少一个该检查点代码段在该硬件初始化代码段之前。5.如权利要求4所述的电子装置,其中该硬件初始化代码段包括一中断初始化代码段。6.如权利要求1、或2所述的电子装置,其中该主只读存储器、该增补只读存储器及该处理器位于一系统单晶片中。7.如权利要求1、或2所述的电子装置,其中依据该至少一检查点代码段与该修补代码,该启动代码中的部分代码被跳过而不被该处理器执行。8.一种代码修补方法,由一电子装置的一处理器执行,该代码修补方法包括:读取并载入储存在一主只读存储器的一启动代码以执行该电子装置之一启动程序,其中该启动代码...

【专利技术属性】
技术研发人员:亚历山大
申请(专利权)人:瑞昱新加坡有限公司
类型:发明
国别省市:

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

1