半导体系统及操作半导体装置的方法与流程

文档序号:15115570发布日期:2018-08-07 19:59阅读:166来源:国知局

本发明涉及一种半导体系统及操作与半导体系统相关联的半导体装置的方法。



背景技术:

在包括半导体系统的电子系统(例如,采用应用处理器(applicationprocessor,ap)的系统)的引导过程期间可能会出现各种问题。如果确定存在与内部只读存储器(internalread-onlymemory,irom)的引导代码相关联的问题(例如,与引导过程相关联的问题),则重新制造内部只读存储器可为耗时且成本高昂的。举例来说,用于对引导代码问题进行定址的代码模拟及验证过程以及基于经过修改的引导代码对内部只读存储器进行的重新制造可消耗资源。另外,在对掩模式只读存储器(read-onlymemory,rom)进行修改以制造内部只读存储器时会额外地消耗成本及资源。



技术实现要素:

本发明的各个方面提供一种能够在改变内部只读存储器的引导代码的运行的同时节约时间及成本的半导体系统。

在本发明的一些实施例中,提供一种用于操作半导体系统的方法,所述方法能够在解决与内部只读存储器的引导代码相关联的问题的同时节约时间及成本。

然而,所属领域中的普通技术人员将理解,本发明的各个方面并非仅限于本文所述的方面且存在许多其他实施例。通过参照说明书、权利要求书、及随附图式,对本发明实施例所属领域中的普通技术人员来说本发明的各个方面将变得更显而易见。

根据本发明的一方面,提供一种半导体系统,所述半导体系统包括:非易失性存储器,存储补丁代码,所述补丁代码包括唯一识别符(uniqueidentifier,id);内部只读存储器(irom),存储引导代码,所述引导代码包括用于执行所述补丁代码的补丁代码执行功能及用于规定将要执行的所述补丁代码的存储位置的链接寄存器(linkedregister,lr)地址;静态随机存取存储器(staticrandommemory,sram),在所述存储位置处存储所述补丁代码的副本,所述补丁代码的所述副本包括唯一识别符;以及处理器,从所述存储位置执行所述补丁代码的所述副本,其中当执行所述补丁代码执行功能时,所述补丁代码执行功能利用比较来将存储在所述非易失性存储器中的所述补丁代码的所述唯一识别符与从所述引导代码提供的所述链接寄存器地址进行比较,且其中所述处理器根据所述比较结果来执行存储在所述静态随机存取存储器中的所述存储位置处的所述补丁代码的所述副本。

根据本发明的另一方面,提供一种半导体系统,所述半导体系统包括:非易失性存储器,存储补丁代码,所述补丁代码包括唯一识别符(id);内部只读存储器(irom),存储引导代码,所述引导代码包括用于执行所述补丁代码的补丁代码执行功能及用于规定将要执行所述补丁代码的存储位置的链接寄存器(lr)地址;以及处理器,其中当执行所述补丁代码执行功能时,所述补丁代码执行功能将存储在所述非易失性存储器中的所述补丁代码的所述唯一识别符与从所述引导代码提供的所述链接寄存器地址进行比较,且其中所述处理器根据所述比较结果来执行所述补丁代码。

根据本发明的再一方面,提供一种操作半导体系统的方法,所述方法包括:提供非易失性存储器,所述非易失性存储器存储包括唯一识别符(id)的补丁代码;提供存储引导代码的内部只读存储器(irom),所述引导代码包括用于执行所述补丁代码的补丁代码执行功能及用于规定将要执行的所述补丁代码的存储位置的链接寄存器(lr)地址;提供静态随机存取存储器(sram),所述静态随机存取存储器在所述存储位置处存储所述补丁代码的副本,所述补丁代码的所述副本包括所述唯一识别符;当执行所述补丁代码执行功能时,将存储在所述非易失性存储器中的所述补丁代码的所述唯一识别符与从所述引导代码提供的所述链接寄存器地址进行比较;以及根据所述比较结果来执行存储在所述静态随机存取存储器中的所述补丁代码的所述副本。

根据本发明的再一方面,提供一种操作半导体系统的方法。所述方法包括提供其中存储有补丁代码的非易失性存储器,所述补丁代码包括唯一识别符(id)。内部只读存储器存储引导代码,所述引导代码包括用于执行所述补丁代码的补丁代码执行功能且进一步存储用于规定将要执行的所述补丁代码的存储位置的链接寄存器地址。将所述补丁代码的副本存储在随机存取存储器中的存储位置处,所述补丁代码的所述副本包括所述唯一识别符。响应于对所述唯一识别符与所述链接寄存器地址进行的比较来执行存储在所述存储位置处的所述补丁代码的所述副本。

附图说明

通过参照附图详细阐述本发明的示例性实施例,本发明的这些及其它方面及特征将变得显而易见,在附图中:

图1是说明根据本发明一些实施例的半导体系统的示意图。

图2是表示根据本发明一些实施例的半导体系统中所使用的引导代码的示意图。

图3是表示根据本发明一些实施例的半导体系统的操作的实例的示意图。

图4是表示根据本发明一些实施例的半导体系统的操作的实例的示意图。

图5是说明根据本发明一些实施例的操作半导体装置的方法的流程图。

图6是说明根据本发明一些实施例的操作半导体装置的方法的流程图。

[符号的说明]

1:半导体系统;

10:处理器;

20:内部只读存储器;

30:静态随机存取存储器;

31:副本;

33:唯一识别符;

35:逻辑部分;

40:一次性可编程存储器;

41:补丁代码;

50:总线;

60:链接寄存器地址;

100:传统引导代码/引导代码;

200:本发明引导代码/引导代码;

s501、s503、s505、s507、s509、s511、s601、s603、s605、s607、s609:步骤。

具体实施方式

图1是说明根据本发明一些实施例的半导体系统的示意图。

参照图1,根据本发明一些实施例的半导体系统1包括处理器10、内部只读存储器(irom)20、静态随机存取存储器(sram)30、及一次性可编程存储器(one-timeprogrammablememory,otp)40。处理器10、内部只读存储器20、静态随机存取存储器30及一次性可编程存储器40可沿着总线50彼此交换数据、地址及命令。

处理器10被配置成执行程序代码以控制半导体系统1。在本发明的一些实施例中,处理器10可包括中央处理器(centralprocessingunit,cpu)、图形处理器(graphicprocessingunit,gpu)、应用处理器(applicationprocessor,ap)、数字信号处理器(digitalsignalprocessor,dsp)及所属领域中的普通技术人员所知的其他类型的处理器。本发明的范围并非仅限于此处作为示例性处理器类型所列出的这些处理器类型。

内部只读存储器20包括存储在内部只读存储器20中的程序代码。在半导体系统1运行期间可利用程序代码。一般来说,存在于内部只读存储器中的程序代码保持静态且不会在运行期间改变。在本发明中,内部只读存储器被用于操作性用途。举例来说,如本文所公开,内部只读存储器20可包括与半导体系统1的引导步骤相关的程序代码(也被称为引导代码)。内部只读存储器20在已被制造成产品时通常无法改变其内容。

如图中所示,静态随机存取存储器30是在操作期间可存储例如由处理器10执行的程序编码等数据的位置的实例。静态随机存取存储器的内容在操作期间可有所变化,例如作为由处理器10执行的读取/写入/命令指令的结果。尽管本实施例中示出静态随机存取存储器30,然而本发明的范围并非仅限于此,且举例来说,可在静态随机存取存储器30的位置使用动态随机存取存储器(dynamicrandomaccessmemory,dram)或者允许对电子数据进行读取及写入的其他存储装置。

一次性可编程存储器40是仅可进行单次编程的存储器装置,因此一旦对其写入数据,存储在其中的数据值便无法改变。在此实施例中,说明了一次性可编程存储器40,然而本发明的范围并非仅限于此。对所属领域中的普通技术人员来说显而易见的是各种类型的非易失性存储器装置均可被用作一次性可编程存储器40。

当在处理器10的引导过程期间出现问题或错误时,这可能存在各种原因。然而,如果发现所述问题的原因在于存储在内部只读存储器20中的引导代码,则修改内部只读存储器20的引导代码可为耗时且成本高昂的,这是因为无法在操作期间改变存储在内部只读存储器中的代码/数据。为了修正或修改存储在内部只读存储器中的代码/数据,有必要准备经过修改的引导代码、执行模拟以验证经过修改的引导代码、制造用于反映经验证的引导代码的经更新的掩模只读存储器(rom)、且使用经更新的掩模只读存储器制造内部只读存储器。此过程通常可需要制造商花费大量时间及成本。

本发明概念的实施例会解决这些限制。举例来说,根据本文所述本发明的实施例,在克服此耗时且成本高昂的缺陷时,会执行补丁代码。以这种方式执行补丁代码会防止由于引导代码中的缺陷而出现的故障,而无须直接修改内部只读存储器20。具体来说,根据本发明的实施例中的一些实施例,可执行补丁代码,所述补丁代码能够执行用户所期望的期望操作,同时维持引导代码复杂度方面的相对简单性。

图2是表示根据本发明一些实施例的半导体系统中所使用的引导代码的示意图。

参照图2,说明了传统引导代码100及根据本发明概念而构成的本发明引导代码200。如本文所述,本发明引导代码200可用于根据本发明实施例的半导体系统1中。

当在本文中提及引导代码100、200中的逻辑运算及指令时,逻辑运算是通过大写字母a、b、c、d、...等表现形式来表示,而指令是通过小写字母a、b、c、d、...等表现形式来表示。

根据传统引导代码100,依序执行逻辑运算a、逻辑运算b、指令a、指令b、逻辑运算c、逻辑运算d及指令c。此处,逻辑是指用于以一定的逻辑顺序执行包括多个指令的一系列操作的代码。

在引导代码200的情形中,如目前所公开,在引导代码中在某些代码操作之间可插入一个或多个补丁代码执行功能(补丁运行程序(patchrun))。举例来说,补丁代码执行功能(补丁运行程序)可被插入于以下操作之间:逻辑运算a、逻辑运算b、指令a、指令b、逻辑运算c、逻辑运算d、及指令c。在一些实施例中,补丁代码执行功能(补丁运行程序)从引导代码200接收链接寄存器(linkedregister,lr)地址(即,用于在执行补丁代码执行功能之后进行返回的返回地址(returnaddress))。也就是说,链接寄存器地址使得可对引导代码200中的将要执行的补丁代码的位置进行规定。在本发明的一些实施例中,链接寄存器(lr)可为当在执行程序期间调用某功能(子例程(sub-routine))时存储执行程序的处理器中的返回地址的寄存器。

应注意,由补丁代码执行功能(补丁运行程序)从引导代码200接收的链接寄存器地址可视需要以不同的方式设定。举例来说,根据在内部只读存储器20的引导代码上可出现的各种状况,可在适当的位置处执行各种补丁代码以克服可能会使引导代码200出现问题的各种状况。

举例来说,如果存在要在执行逻辑运算a之前提前进行处理的任务,则可通过在执行逻辑运算a之前调用补丁代码执行功能(补丁运行程序)来执行所述任务。在这种情形中,由补丁代码执行功能(补丁运行程序)接收的链接寄存器地址可包括逻辑运算a开始的地址。因此,在完成执行补丁代码执行功能(补丁运行程序)之后,可执行逻辑运算a。在一些实施例中,可存在补丁运行程序在执行某些逻辑运算(a、b、c或d)之后出现的某种顺序或次序。

作为另一实例,如果期望由另一个逻辑运算e来取代逻辑运算b(举例来说,这是因为确定逻辑运算b含有严重错误),则可通过在执行逻辑运算b之前调用补丁代码执行功能(补丁运行程序)来执行逻辑运算e而不执行逻辑运算b。在这种情形中,由补丁代码执行功能(补丁运行程序)接收的链接寄存器地址可包括逻辑运算b之后的地址(例如,指令a的地址)。因此,在完成执行补丁代码执行功能(补丁运行程序)之后可恰当地省略逻辑运算b的执行,且可调用逻辑运算e的执行来取代逻辑运算b。此实例说明其中可执行补丁运行程序以防止出现错误的逻辑运算(即,逻辑运算b)的运行的实施例。

在另一个示例性实施例中,可采用补丁运行程序操作以在逻辑运算c与逻辑运算d之间插入可选的延迟操作。具体来说,在模拟电路的情形中,为稳定地确定电路节点处的值,可考虑因电路特性引起的时间差(例如,传播延迟)、偶尔的因电路元件及设计特性引起的时间差、或者所属领域中的普通技术人员所知的其他时间相关特性。为此,通过在执行逻辑运算d之前、在执行逻辑运算c之后调用补丁代码执行功能(补丁运行程序),可能使得能够在逻辑运算c与逻辑运算d之间执行延迟逻辑。在这种情形中,由补丁代码执行功能(补丁运行程序)接收到的链接寄存器地址可包括逻辑运算d的地址。因此,在完成执行逻辑运算c之后,可使得能够出现延迟,其中所述延迟的长度是由补丁代码执行功能(补丁运行程序)界定。在延迟操作之后,可开始执行逻辑运算d。

在另一个示例性实施例中,可期望改变逻辑运算a及逻辑运算b的执行顺序。为此,可通过在执行逻辑运算a之前调用具有包括逻辑运算b的地址的链接寄存器地址的补丁代码执行功能(补丁运行程序)来首先执行逻辑运算b。在此实例中,接下来,在执行逻辑运算b之后,可通过调用具有包括逻辑运算a的地址的链接寄存器地址的补丁代码执行功能(补丁运行程序)来执行逻辑运算a。在这种情形中,将插入适当的代码以确保程序运行不会因执行补丁代码而陷入死循环(infiniteloop)。

因此,补丁代码执行功能(补丁运行程序)使得能够执行可执行用户所需要的任意数目的操作的补丁代码,同时将引导代码的复杂度保持为相对简单。这使得能够实现符合半导体系统的各种需要的多种变化,且使得能够实现在初始制造之后对系统进行后期修改的一定的灵活性。

图3是表示根据本发明一些实施例的半导体系统的操作的实例的示意图。

参照图3,一次性可编程存储器40可被配置成存储补丁代码41。换句话说,补丁代码41可被编程到一次性可编程存储器40中,一次性可编程存储器40依次与内部只读存储器20、处理器10、及静态随机存取存储器30共享总线50。在一些实施例中,出于将要进行判断的目的,补丁代码41可包括唯一识别符(identifier,id)。在本发明的一些实施例中,唯一识别符可包括与本文所述链接寄存器地址相同的地址值。

在本发明的一些实施例中,一次性可编程存储器40可原样地存储补丁代码。具体来说,一次性可编程存储器40可如在传统情形的故障中一样,包含可根据在引导操作期间可能出现的故障类型来选择性地执行的补丁代码操作。然而,在一些实施例中,一次性可编程存储器40可包括补丁代码本身,所述补丁代码包括用户所需的任意指令,而不论在引导期间可能出现何种故障类型。举例来说,如本文所述,可对独立操作进行编程及调用来实现具体逻辑运算(a、b、c、d)的取代、逻辑运算的重新排序(a<>b)、延迟操作等。这种补丁代码操作使得一次性可编程存储器即使在系统1寿命的后期才会被调用但在被编程之后便保持有用,这是因为稍后可对补丁运行程序进行存取。在一些情形中,当出现故障时,如果所述故障对应于特定类型的故障,则可能克服所述故障。在一些情形中,可能使补丁代码操作在引导操作期间为有用的以在稍后提供解决方案来处理在各种不同的处理点处的任意类型的故障。

静态随机存取存储器30可被配置成例如在特定地址处存储补丁代码的副本31。在一些实施例中,由于静态随机存取存储器30存储在一次性可编程存储器40中存储的补丁代码的副本31,因此存储在静态随机存取存储器30中的补丁代码的副本31也包括具有与一次性可编程存储器40的唯一识别符相同的值的唯一识别符。在一些示例性实施例中,可由数据值(例如,数据值‘0’)来表示唯一识别符。

存储在一次性可编程存储器40中的补丁代码41可在半导体系统1的引导阶段处被复制到静态随机存取存储器30。这种情况是其中通过静态随机存取存储器30执行补丁代码的情形。

作为另外一种选择,如果存储在一次性可编程存储器40中的补丁代码41的唯一识别符是‘0’,则补丁代码41不被复制到静态随机存取存储器30,且‘0’可被记录在静态随机存取存储器30的唯一身份区域中。举例来说,如果引导操作按照计划继续进行而不需要补丁代码,则可记录‘0’。在这种情形中,确定在执行存在于内部只读存储器20中的引导代码期间不执行补丁代码。另一方面,当存在补丁代码的另一唯一识别符时(例如,数据值‘1’),则使得可执行补丁代码。

在本实施例中,为使说明简单,将‘0’记录为唯一识别符以便不执行补丁代码,但本发明的范围并非仅限于此。对所属领域中的普通技术人员显而易见的是,与补丁代码的不执行(non-performance)相关联的值可为除了‘0’之外的值,例如,为值‘1’或者除了‘1’或‘0’之外的某个值。

在本发明的一些实施例中,静态随机存取存储器30可被配置成或以其他方式被编程为额外地存储返回指令(ret指令)作为在执行补丁代码的副本31中所含有的指令之后将要执行的下一指令。

图4是表示根据本发明实施例的半导体系统的操作的实例的示意图。

参照图4,在其中静态随机存取存储器30中所含有的补丁代码的副本31的唯一识别符33是‘0’的情形中,处理器10(参见图1)以不执行补丁代码来作为回应。在这种情形中,引导过程被视为正在正确地运行。

在本实施例中,为使说明简单,将为‘0’的唯一识别符确定为与补丁代码的不执行(non-execution)相关联,但本发明的范围并非仅限于此。对所属领域中的普通技术人员显而易见的是,不执行值可变为除了‘0’之外的值。

在本实施例中,当使用补丁代码执行功能时,如果确定存储在静态随机存取存储器30中的补丁代码的副本31的唯一识别符33与由引导代码200提供的链接寄存器地址60相同,则处理器10执行补丁代码的逻辑部分35。这种逻辑运算适用于修正在引导过程中出现的缺陷。

此处,当根据由半导体系统采用的架构调用补丁代码执行功能时,在系统中可自动地确认链接寄存器地址60。

另一方面,当执行补丁代码执行功能时,如果确定存储在静态随机存取存储器30中的补丁代码的副本31的唯一识别符33与从引导代码200提供的链接寄存器地址60不同,则处理器10可被配置成不执行补丁代码的逻辑部分35。

在此实施例中,如本文中所说明,存储在静态随机存取存储器30中的补丁代码的副本31是响应于存储在静态随机存取存储器30中的唯一识别符33与补丁代码执行功能的链接寄存器地址60进行的比较来执行。显而易见的是,如所属领域中的普通技术人员所理解般本发明的范围并非仅限于此。

在本发明的一些实施例中,存储在一次性可编程存储器40中的补丁代码41可响应于存储在一次性可编程存储器40中的唯一识别符与补丁代码执行功能的链接寄存器地址60进行的比较来执行。

在这种情形中,如果一次性可编程存储器40的补丁代码41的唯一识别符是‘0’,则处理器10以不执行补丁代码来作为回应。

在本实施例中,为使说明简单,将‘0’确定为与补丁代码的不执行相关联的唯一识别符,然而,本发明的范围并非仅限于此。对所属领域中的普通技术人员显而易见的是,与补丁代码的不执行相关联的值可被确定为除了‘0’之外的值,例如,‘1’或者某个其他值。

当执行补丁代码执行功能时,如果存储在一次性可编程存储器40中的补丁代码41的唯一识别符与从引导代码200提供的链接寄存器地址60相同,则处理器10以执行补丁代码41的逻辑部分作为回应。

另一方面,当执行补丁代码执行功能时,在其中存储在一次性可编程存储器40中的补丁代码41的唯一识别符与从引导代码200提供的链接寄存器地址60不同的情形中,处理器10可以不执行补丁代码41的逻辑部分作为回应。

再次参照图2,将阐述其中将要改变或更改逻辑运算a及逻辑运算b的执行顺序以满足引导过程的需要的情形。

补丁代码41的唯一识别符被存储在一次性可编程存储器40中。存储在一次性可编程存储器40中的补丁代码41被复制到静态随机存取存储器30且接着在执行在执行逻辑运算a之前调用的补丁代码执行功能(补丁运行程序)时被用于与从引导代码200提供的链接寄存器地址进行比较。如果在执行逻辑运算a之前调用的补丁代码执行功能(补丁运行程序)已被执行且静态随机存取存储器30的唯一识别符33与链接寄存器地址相同,则执行存储在静态随机存取存储器30中的补丁代码的副本31(具体来说,逻辑部分35)。

存储在静态随机存取存储器30中的补丁代码的副本31会改变唯一识别符33以使得补丁代码能够由在执行逻辑运算b之后调用的补丁代码执行功能(补丁运行程序)来执行,且副本31会进行跳转,以使得逻辑运算b可在执行逻辑运算a之前立即执行。

在执行逻辑运算b之后,当由在执行逻辑运算b之后再次调用的补丁代码执行功能(补丁运行程序)从引导代码200接收的链接寄存器地址与静态随机存取存储器30的唯一识别符33相同以使得补丁代码的副本31(具体来说,逻辑部分35)被执行时,可从补丁代码调用逻辑运算a并执行逻辑运算a。接着,可根据引导代码的运行来执行指令a。

图5是说明根据本发明一些实施例的操作半导体装置的方法的流程图。

参照图5,根据本发明一些实施例的操作半导体装置的方法可包括以下步骤。尽管出于说明目的将图中所示步骤绘示为具体顺序,然而各步骤的排序并非仅限于此而可采用其他顺序。

在此实施例中,步骤s501至s511说明初始化步骤。

在此实施例中,大写字母s表示‘步骤’这一用语,举例来说,s501表示步骤501。另外,字母y及n分别表示对判断步骤的应答‘是’及‘否’。

在步骤s501中,判断是否使用补丁代码执行功能以执行及采用在半导体系统中。如果补丁代码执行功能在半导体系统1中被禁用(在s501中为y),则过程返回(s511)。

另一方面,在其中在半导体系统1中补丁代码执行功能被启用的情形中(s501,n),过程前进至步骤s503。在步骤503处,判断一次性可编程存储器40的唯一识别符(uniqueid,uid)是否是‘0’。

在其中唯一识别符uid对应于‘0’的情形中(在s503中为y),静态随机存取存储器30的唯一识别符在步骤s505中也被记录为‘0’且接着所述过程返回(s511)。

另一方面,如果唯一识别符不对应于‘0’(在s503中为n),则在步骤s507中将补丁代码从一次性可编程存储器40复制到静态随机存取存储器30。

在本发明各实施例中的一些实施例中,为说明简单,将‘0’记录为唯一识别符以对应于补丁代码的不执行。然而,如本文所述,本发明的范围并非仅限于此。对所属领域中的普通技术人员显而易见的是,与不执行相关联的值可被改变为除了‘0’之外的值,例如,‘1’或者某个其他合适的值。

之后,在步骤509(s509)中,在补丁代码的副本31之后额外地存储返回指令(ret指令)。在这之后,所述过程返回(s511)。

综上所述,首先判断补丁代码是被启用还是被禁用。如果补丁代码被禁用,则所述程序返回。如果补丁代码被启用,则判断唯一识别符是否等于预定值(例如,‘0’)。如果等于‘0’,则将静态随机存取存储器的唯一识别符写入到‘0’且所述程序返回。

如果一次性可编程存储器的唯一识别符不等于预定值‘0’,则将补丁代码从一次性可编程存储器复制到静态随机存取存储器。在一些实施例中,可将返回指令ret添加到补丁代码的末尾。

图6是说明根据本发明一些实施例的操作半导体装置的方法的流程图。

参照图6,根据本发明实施例的操作半导体装置的方法可包括以下步骤。

在此实施例中,步骤s601至s609表示初始化步骤之后的步骤。

在此实施例中,大写字母s表示‘步骤’这一用语,例如s601表示步骤601。另外,字母y及n分别表示对判断步骤的应答‘是’及‘否’。

在步骤s601处,判断是否在半导体系统中使用补丁代码执行功能以执行所述补丁代码。如果设定在半导体系统1中禁用补丁代码执行功能(在s601中为y),则所述过程返回(s609)。

作为另外一种选择,如果设定在半导体系统1中启用补丁代码执行功能(在s601中为n),则在步骤s603中判断静态随机存取存储器30的唯一识别符是否是‘0’或者判断唯一识别符是否被设定为除了‘0’之外的一些值。如果唯一识别符对应于‘0’(在s603中为y),则所述过程返回(s609)。

在本实施例中,为使说明简单,将‘0’记录为唯一识别符以使补丁代码不被执行;然而本发明的范围并非仅限于此。对所属领域中的普通技术人员显而易见的是,对应于不执行的值可被改变为除了‘0’之外的预定值(例如,‘1’)或者某个其他值。

另一方面,如果静态随机存取存储器的唯一识别符不对应于‘0’(在s603中为n),则在步骤s605处判断静态随机存取存储器30的唯一识别符是否与链接寄存器地址60相同。

如果静态随机存取存储器30的唯一识别符与链接寄存器地址60不同(在s605中为n),则所述过程返回(s607)。

另一方面,如果静态随机存取存储器30的唯一识别符与链接寄存器地址60相同(在s605中为y),则执行存储在静态随机存取存储器30中的补丁代码(s609)。

另外,根据本发明实施例的操作半导体装置的方法可包括提供非易失性存储器,所述非易失性存储器存储包括唯一识别符的补丁代码,以及提供存储引导代码的内部只读存储器。在此实施例中,引导代码可包括用于执行补丁代码的补丁代码执行功能及用于规定将要执行及运行的补丁代码的位置的链接寄存器地址。

此实施例可进一步包括提供静态随机存取存储器,所述静态随机存取存储器存储所述补丁代码的副本。此处,补丁代码的副本可包括唯一识别符。

所述方法可进一步包括当执行补丁代码执行功能时,将存储在非易失性存储器中的补丁代码的唯一识别符与从引导代码提供的链接寄存器地址进行比较,以及根据比较结果来执行存储在静态随机存取存储器中的补丁代码。

综上所述,首先判断针对补丁代码的使用及运行而调用的功能是否是被禁用的功能。如果是被禁用的,则程序返回。如果不是被禁用的,则判断静态随机存取存储器的唯一识别符是否是预定值(例如‘0’)。如果唯一识别符是‘0’,则程序返回。如果不是被禁用的,则判断静态随机存取存储器的唯一识别符是否与链接寄存器地址相同。如果相同,则操作跳转到静态随机存取存储器的补丁代码。如果不相同,则程序运行返回。

根据本发明的各种实施例,执行补丁代码来防止因引导代码中的缺陷而导致的故障而不直接修改内部只读存储器20。具体来说,根据本发明的实施例,可执行补丁代码,所述补丁代码能够执行用户所期望的任意数目的操作,同时维持引导代码复杂度方面的相对简单性。因此,可在解决存在于内部只读存储器的引导代码内的问题的同时节约时间及成本。

尽管已参照本发明的示例性实施例具体示出并阐述了本发明,然而所属技术领域中的普通技术人员应理解,在不背离由以上权利要求所界定的本发明的精神及范围的条件下,可对本发明各实施例作出形式及细节上的各种变化。各示例性实施例应被视为仅具有说明性意义而非用于限制目的。

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