系统开机码存储器管理方法、存储器装置与应用其的电子系统与流程

文档序号:18213255发布日期:2019-07-19 22:27阅读:172来源:国知局
系统开机码存储器管理方法、存储器装置与应用其的电子系统与流程

本发明是有关于一种系统开机码存储器管理方法、存储器装置与应用其的电子系统。特别是,本技术用以管理及升级程序代码,例如储存于非易失性存储器(non-volatilememory)的基本输入输出系统(basicinput/outputsystem,bios)。



背景技术:

一般而言,当计算器系统第一次开机或重启,软件中首先被执行的部分是系统开机码,系统开机码例如是储存于非易失性存储器的基本输入输出系统(bios)。当开机码执行时,计算器系统通常会运行自我测试(self-test)。开机码也包括用以初始化或控制计算器系统的基本组件的功能,基本组件例如键盘、显示器、各种碟盘机(例如硬盘、磁盘驱动器、cd-rom、dvd光驱等)以及各种通信端口,例如串行端口(例如通用串行总线(usb)等)。开机码可初始化开机引导程序(bootloader),开机引导程序可从所选硬盘中加载操作系统。若没有有效且具有正常功能的开机码,计算器系统将无法开机。

开机码通常储存在非易失性存储器中,因而不会在每次计算器系统重启时被擦除,且可于新版本发布时进行更新,例如改进开机码的效率或功能,或例如修正原本开机码的错误(bug)。随着时代演进,开机码的更新也变得更加容易。例如,在新版本的开机码发布时,许多计算器系统都具备通过网络下载新版本开机码的自我更新的功能。

由于开机码的重要性,没有采取任何预防手段就直接擦除目前的开机码或直接覆盖目前的开机码,都是不安全的。这是因为可能会发生电源错误或系统错误,或下载到损坏的文件。在没有安全防护的情况下,用户可能会面临目前的开机码全部或部分被擦除且更新的开机码还无法用来执行。这将导致用户的计算器系统无法正常开机。为了完成保存及更新开机码的程序,传统的计算器系统采用双bios系统(dualbios或twinbios)。双bios系统允许下载较新版本的开机码到另一个备份闪存。例如,传统计算器系统的主板(motherboard)包括一主bios(开机码)闪存及一备份bios(开机码)闪存(注意,这个技术所用的「主bios闪存」及「备份bios闪存」是指两个不同的闪存,用来储存开机码或其他类型的数据)。这些双bios系统下载新的开机码到备份闪存。当新的开机代码完全下载且被验证,接着计算器系统就会在下一个开机循环(bootcycle)将新的开机码复制到主闪存,或是在下一个开机循环以备份闪存开机。通过这个架构,双bios系统能够保有目前正在运行的开机码的备份,以便在发生像是病毒、电源浪涌或突发电源错误造成的崩溃事件时,能够在下一个开机循环执行备份的开机码。一般而言,主闪存中的开机码会被评估,若此开机码无法通过评估,那么开机码将会从备份闪存中执行。

这种传统的系统需要用到两个不同的闪存来储存、更新及执行开机码。使用两个不同的闪存需要用到主板上额外的空间。近日来,使用开机码及需要进行开机码更新的计算器系统的类型不仅限于个人或桌上型计算器,而扩展到可穿戴式装置、机顶盒、媒体中心接收器、物联网设备、家用电器、汽车部件、服务器、数据中心等,这些装置的空间限制都是最受重视的。

因此,需要提供一种系统开机码存储器管理方法、存储器装置与电子系统,以期解决现有技术的缺点。



技术实现要素:

根据本案一示范性实施例,提供一种存储器装置,包括:一非易失性存储器,具有一第一部分及一第二部分,该第一部分以一第一范围的实体地址表示,该第二部分以一第二范围的实体地址表示,该第一部分与该第二部分以一第一配置与一第二配置中的一目前配置而被使用,该第一部分与该第二部分的其中一者储存一主要开机码而该第一部分与该第二部分的另一者储存一备份开机码;一地址译码器,耦合至该非易失性存储器,用以将接收到的一命令地址映射到该非易失性存储器的一实体地址;以及一控制电路,耦合至该址译码器。回应于一更新后开机码取代该备份开机码,该更新后开机码被执行一预验证操作,对该第一部分与该第二部分暂时以该第一配置与该第二配置的一另一配置而被使用。如果该更新后开机码正常运作,则于系统重设后,该第一部分与该第二部分以该第一配置与该第二配置的该另一配置而被使用。如果该更新后开机码无法正常运作,则于系统断电重开后,该第一部分与该第二部分回复至以该第一配置与该第二配置的该目前配置而被使用。

根据本案另一示范性实施例,提供一种系统开机码存储器管理方法,应用于一非易失性存储器,该非易失性存储器具有一第一部分及一第二部分,该第一部分以一第一范围的实体地址表示,该第二部分以一第二范围的实体地址表示,该第一部分与该第二部分以一第一配置与一第二配置中的一目前配置而被使用,该第一部分与该第二部分的其中一者储存一主要开机码而该第一部分与该第二部分的另一者储存一备份开机码,该方法包括:回应于一更新后开机码取代该备份开机码,对该更新后开机码执行一预验证操作,该第一部分与该第二部分暂时以该第一配置与该第二配置的一另一配置而被使用;如果判断该更新后开机码正常运作,则于系统重设后,该第一部分与该第二部分以该第一配置与该第二配置的该另一配置而被使用;以及如果判断该更新后开机码无法正常运作,则于系统断电重开后,该第一部分与该第二部分回复至以该第一配置与该第二配置的该目前配置而被使用。

根据本案另一示范性实施例,提供一种电子系统,包括:一主控制器;以及一存储器装置,耦接至该主控制器。该存储器装置包括:一非易失性存储器,具有一第一部分及一第二部分,该第一部分以一第一范围的实体地址表示,该第二部分以一第二范围的实体地址表示,该第一部分与该第二部分以一第一配置与一第二配置中的一目前配置而被使用,该第一部分与该第二部分的其中一者储存一主要开机码而该第一部分与该第二部分的另一者储存一备份开机码;一地址译码器,耦合至该非易失性存储器,用以将接收到的一命令地址映射到该非易失性存储器的一实体地址;以及一控制电路,耦合至该址译码器。回应于一更新后开机码取代该备份开机码,该主控制器对该更新后开机码执行一预验证操作,对该第一部分与该第二部分暂时以该第一配置与该第二配置的一另一配置而被使用。如果该更新后开机码正常运作,则于系统重设后,该第一部分与该第二部分以该第一配置与该第二配置的该另一配置而被使用。如果该更新后开机码无法正常运作,则于系统断电重开后,该第一部分与该第二部分回复至以该第一配置与该第二配置的该目前配置而被使用。

本发明的其他方面及优点可通过后续的附图、详细说明及权利要求进一步了解。

附图说明

图1绘示根据本案一示范性实施例的电子系统的功能性方块图。

图2绘示根据本案一示范性实施例的一存储器装置的一非易失性存储器的第一及第二部分的第一及第二配置的功能性方块图。

图3绘示根据本案一示范性实施例的图1的电子系统的部分的功能性方块图。

图4与图5绘示根据本案一示范性实施例的操作于「双区域更新模式」的存储器装置的示意图。

图6绘示根据本案一示范性实施例的「双区域更新模式」的系统开机码存储器管理方法流程图。

【符号说明】

100:系统

110:主控制器

112:通信总线

120:存储器控制器

122:通信总线

130:存储器装置

132:总线接口

134:控制电路

136:地址译码器

137:映射表

138:状态逻辑

139:非易失性存储器

140:存储区块

142:第一部分

143:开机码区域

144:第二部分

145:更新码区域

200:第一配置

202:第二配置

302:闩锁逻辑

304:禁止写入逻辑

pq:预验证标识

602~620:步骤

具体实施方式

以下将搭配附图对本发明的实施例进行详细说明。

图1绘示根据本案一示范性实施例的系统100的功能性方块图。系统100(亦即电子系统100)包括主控制器110、通信总线112、存储器控制器120、通信总线122以及存储器装置130。在系统100中,主控制器110可以执行一或多个程序,该(该些)程序以逻辑地址来读取及写入数据。主控制器110通过通信总线112而与存储器控制器120进行通信,且存储器控制器120通过通信总线122而与存储器装置130进行通信。

主控制器110例如是运行操作系统的计算器系统。操作系统通过通信总线112传递请求(例如写入及读取)至存储器控制器120。

主控制器110与存储器控制器120之间的通信总线112例如是外围组件互连标准(peripheralcomponentinterconnect,pci)总线、快捷外围组件互连标准(peripheralcomponentinterconnectexpress,pcie)总线、串行ata(sata,serialadvancedtechnologyattachment)及其他可用适合的通信协议进行通信的总线。

存储器控制器120可通过微控制单元(microcontrollerunit,mcu)中的软件或其他逻辑结构来实现,或者可通过专用的存储器控制器芯片来实现。在其他实施例中,主控制器110与存储器控制器120可实现在单处理器上,或者主控制器110与存储器控制器120可为复杂数据处理系统的一部分。存储器控制器120可作为主控制器110与存储器装置130之间的接口。存储器控制器120的其中一个功能是将高阶读取请求及高阶写入请求转译为存储器装置130的命令语言(commandlanguage),这种命令语言可用来存取存储器装置130上的非易失性存储器139。

存储器控制器120通过通信总线122连接至存储器装置130。为了说明的目的,通信总线122可在存储器控制器120及存储器装置130之间传送数据。通信总线122可包括连接到存储器控制器120及存储器装置130的总线线。

存储器装置130包括总线接口132、控制电路134、地址译码器136及非易失性存储器139。存储器装置130的非易失性存储器139可为单存储单元单位元(single-bit-per-cell)或单存储单元多位(multiple-bit-per-cell)nor非易失性闪存装置。在其他例子中,非易失性存储器139可包括其他类型的非易失性存储器装置,例如单存储单元单位元或单存储单元多位nand非易失性闪存装置、相变化存储器、磁性存储器、金属氧化物可编程电阻存储器等。

进一步来说,非易失性存储器139可包括复数个存储区块(block)140用来执行读取及写入操作。例如图1所示,非易失性存储器139的区块140可包括第一部分142及第二部分144。例如,第一部分142可代表从一确切地址xxx(例如,地址000000h)开始的一连续范围的实体地址,且第二部分144可代表从一确切地址yyy(例如地址800000h)开始的另一连续范围。第二部分144可从第一部分142的终止地址的下一个实体地址开始,或者第一部分142与第二部分144之间有额外空间可保留给其他用途或用于扩展第一部分142及/或第二部分144的范围。

存储器装置130的地址译码器136包括一映射表137,且控制电路134包括状态逻辑138。映射表137将从存储器控制器120所接收到的命令地址(例如读取命令地址及写入命令地址)映射至非易失性存储器体139的实体地址。状态逻辑138可用以指示映射表137要读取或写入第一部分142或第二部分144的哪一部分。控制电路134及/或状态逻辑138也可决定并指示存储器装置130是操作于何种模式。例如,控制电路134及/或状态逻辑138可决定并指示存储器装置130是处于一般模式或双区域更新模式,其中双区域更新模式下,第一部分142及第二部分144被用来储存及更新程序代码(例如开机码)。

包括状态逻辑138的控制电路134可存取非易失性存储器139、执行存储器读取及写入操作及保存一目前状态,其中目前状态用以决定非易失性存储器139的第一部分142或第二部分144的哪一部分要被使用或存取。在一实施例中,第一部分142及第二部分144用以储存bios或开机码。

控制电路134也可译码通过总线接口132从存储器控制器120接收的命令序列。这些命令序列可包括对应操作程序代码(例如读取、写入、擦除等)、命令地址及/或数据(例如要被写入非易失性存储器139的数据)。控制电路134对非易失性存储器139执行更新bios或开机码的更新操作。

图2绘示根据本案一示范性实施例的存储器装置的非易失性存储器的第一及第二部分的第一及第二配置的功能性方块图。

明确来说,图2绘示第一配置200及第二配置202。根据第一配置200,图1的非易失性存储器139的第一部分142用以储存在「开机」期间要被主控制器110所读取的数据(例如开机码),而非易失性存储器139的第二部分144用以写入更新的数据(例如更新的开机码)。在图2的这个例子中,第一部分142及第二部分144可用以储存bios或开机码。根据第一配置200,第一部分142包括开机码区域(bootcodearea)143,其中开机码区域143储存有在「开机」期间使用的开机码(亦可称为主要开机码)。第二部分144包括更新码区域(updatecodearea)145,其中更新码区域145被用来写入更新的开机码(或者是,存于更新码区域145的开机码亦可称为备份开机码)。根据第二配置202,第一部分142包括更新码区域145,其中更新码区域145被用来写入更新的开机码;而第二部分144包括开机码区域143,其中开机码区域143储存有在「开机」期间使用的开机码。这仅仅是本发明的一个示例性范例且不应被限制于bios或开机码。

在图2的第一配置200与第二配置202中,非易失性存储器139的第一部分142的起始地址被指派从实体地址000000h(十六进制制)(也就是二进制制的000000000000000000000000)开始,而非易失性存储器139的第二部分144的起始地址则被指派为从800000h(也就是二进制制的100000000000000000000000)开始。第一部分142的终止地址可为实体地址7fffffh(也就是二进制制的011111111111111111111111);而第二部分144的终止地址可为实体地址ffffffh(也就是二进制制的111111111111111111111111)。

进一步地,根据第一配置200,当主控制器110执行一读取操作(其主控制器地址000000h)以从非易失性存储器139读取开机码时,会被导向实体地址000000h(亦即,从第一部分142读出开机码)。再根据第一配置200,当主控制器110执行一写入操作(其主控制器地址800000h)以写入更新的开机码到非易失性存储器139时,会被导向实体地址800000h(亦即,对第二部分144写入更新的开机码)。

进一步地,根据第二配置202,当主控制器110执行读取操作(其主控制器地址000000h)以从非易失性存储器139读取开机码时,会被导向实体地址800000h(亦即,从第二部分144读出开机码)。再根据第二配置202,当主控制器110执行写入操作(其主控制器地址800000h)以写入更新的开机码到非易失性存储器139时,会被导向实体地址000000h(亦即,对第一部分142写入更新的开机码)。

也就是说,不论是第一配置200或第二配置202中,当主控制器110要读出主要开机码时,主控制器110皆是发出相同的主控制器读取地址000000h,但主控制器110被导向不同的存储器实体地址;当主控制器110要写入更新的开机码时,主控制器110皆是发出相同的主控制器写入地址800000h,但主控制器110被导向不同的存储器实体地址。

图2也绘示了变量bootcode-def(位),其可为「使能(enable)」或「禁能(disable)」。当bootcode-def为「使能」时,存储器装置130处于双区域更新模式(例如简称「双模式」),其中在双模式下,允许在继续使用目前开机码时,更新bios或开机码。换言之,当bootcode-def为「使能」时,第一配置200与第二配置202皆被用来读取/写入数据(开机码)。若bootcode-def指示为「禁能」时,存储器装置130会操作于传统模式,这表示第一配置200与第二配置202皆不会被使用(亦即双模式被禁用)。换言之,bootcode-def代表启用或禁用的「双区域更新模式」。bootcode-def可由用户设定且bootcode-def的值可储存于一非易失性存储器缓存器(未绘示)。图1的控制电路134及状态逻辑138根据bootcode-def而操作。「bootcode-def」的命名仅为一个例子,是用来指示存储器装置130要操作于传统模式还是双模式。任何其他的命名方式皆可以被使用。或者,变量bootcode-def亦可称为「双区域更新模式使能参数」。

此外,根据第一配置200,变量bootaddr-def等于0。这可代表第一部分142与第二部分144是根据第一配置200被使用。在这个例子中,当bootaddr-def等于0(也就是第一配置),在「开机」期间要被读取的程序代码(开机码)是从非易失性存储器139中为开机码指派的最低的地址开始储存的。此第一配置也可指示程序代码是从非易失性存储器139的最高地址开始储存。bootaddr-def可由用户设定且可被储存于一非易失性存储器缓存器(未绘示)。图1的控制电路134及状态逻辑138根据变量bootaddr-def而操作。同样地,「bootaddr-def」的命名方式只是一个例子,是用以指示非易失性存储器139的哪一个部分储存要被读取的目前程序代码,以及非易失性存储器139的哪一个部分要被写入更新的程序代码。或者是,变量bootaddr-def亦可称为「配置选择参数」。

在第一配置200中,当主控制器110意图要从地址000000h(亦即主控制器地址(host-addr)为000000h)读取目前程序代码时,存储器装置130从实体地址000000h(亦即存储器地址(mem-addr)为000000h)开始读取。当主控制器110意图写入更新的程序代码到地址800000h(亦即主控制器地址为800000h),存储器装置130从地址800000h(亦即存储器地址800000h)开始写入。

根据第二配置202,非易失性存储器139的第二部分144用以储存在开机期间要被读取的数据(例如开机码),且非易失性存储器139的第一部分142用以写入更新的数据(例如更新的开机码)。此外,当bootcode-def为「使能」且bootaddr-def为1时,存储器装置130实行第二配置202。明确来说,在第二配置202中,变量bootaddr-def等于1,这可代表第一部分142与第二部分144根据第二配置202而被使用。在这个例子中,当bootaddr-def等于1(也就是第二配置)时,开机期间要被读取的程序代码(开机码)的储存处是从非易失性存储器的最低地址以外的实体地址开始(例如实体地址800000h,不同于第一配置200中的实体地址000000h)。

如图2所示,根据第二配置202,当主控制器110意图要从地址000000h(亦即主控制器地址(host-addr)为000000h)读取目前程序代码时,存储器装置130从实体地址800000h(亦即存储器地址(mem-addr)为800000h)开始读取。当主控制器110意图写入更新的程序代码到地址800000h(亦即主控制器地址为800000h),存储器装置130从地址000000h(亦即存储器地址000000h)开始写入。

此外,参照图2,第一配置200中第一部分142(开机码区域143)的二进制制地址开始于000000000000000000000000,而在第二配置202中第二部分144(开机码区域143)的二进制制地址起始于100000000000000000000000。因此,通过简易地翻转地址的最高有效位,开机码区域143的实体地址可取决于所执行的配置而改变。如搭配图3所描述的更多细节,指定给bootaddr-def的值可致使控制电路134与状态逻辑138变换物理存储器地址的最高有效位,以使得能够从非易失性存储器139中适合的区域读取程序代码,以及将程序代码更新(写入)到非易失系存储器139中适合的区域。

图3绘示图1中的部分的功能性方块图。

明确来说,图3绘示图1的系统100的控制电路134、地址译码器136以及非易失性存储器139等部分。请参照图3,系统100可更包括地址逻辑300、闩锁逻辑302与exor逻辑303。地址逻辑300、闩锁逻辑302与exor逻辑303皆为图1中控制电路134的状态逻辑138的一部分。预验证标识pq储存于控制电路134的易失性存储器缓存器中。

bootaddr-def的值储存于控制电路134的一非易失性存储器缓存器中。bootaddr-def的值可由闩锁逻辑302接收。如前面说明的,变量bootaddr-def可为「1」或「0」,用以指示系统100使用第一配置或第二配置操作。第一配置可指图2的第一配置200,而第二配置可指图2的第二配置202。

每次系统100开机时,闩锁逻辑302接收一上电触发信号(poweruptrigger),并输出一输出信号ff_out。也就是说,当上电触发信号使能时,闩锁逻辑302的输出信号ff_out等于变量bootaddr-def。然而,闩锁逻辑302的输出信号ff_out的值将不会被改变,直到系统100重启且上电触发信号致使闩锁逻辑302重新闩锁bootaddr-def的值。

输出信号ff_out与预验证标识(prequalifyflag)pq输入至exor逻辑303,且exor逻辑303输出变量bootaddr(亦可称为开机地址参数)。变量bootaddr输入至地址逻辑300与禁止写入逻辑304。预验证标识pq的预设为0。

如图3所示,地址逻辑300取得变量bootcode-def的值以及写入命令的写入地址的最高有效位。bootcode-def的值储存于控制电路134的一非易失性存储器缓存器中。变量bootcode-def如前面参照图2所说明的。基本上,bootcode-def指示双区域更新模式(即双模式)是启用还是禁用。若双模式被禁用,系统100将操作在传统方法下。若双模式被启用,系统100将使用如图2所示的两个不同配置进行操作。bootcode-def的值可为「0」或「1」,其中如图3所示,「0」代表禁用双模式,「1」代表启用双模式。上述的值仅仅是个示例,其意义是可以对调的。

由地址逻辑300获得的「主控制器写入地址的最高有效位(hostmostsignificantbitofwriteaddress)」(或「主控制器读取地址的最高有效位(hostmostsignificantbitofreadaddress)」)是由主控制器写入命令(或读取命令)标示出的写入地址(或读取地址)的最高有效位(也可称为主控制器地址的最高有效位)。也就是主控制器110意图要写入/读取的地址的最高有效位。为方便说明,底下以写入为例做说明。图3将主控制器写入地址的最高有效位标示为「hmsbaddr」。地址逻辑300也接收由闩锁逻辑302与exor逻辑303所决定的bootaddr的值。地址逻辑300的操作如下所述。

当bootcode-def为禁能(亦即禁能双区域更新模式),(1)由地址逻辑300输出的变量「mmsaddr」等于hmsbaddr,且(2)变量bootaddr以及inhibit-write被忽略。当bootcode-def为使能(亦即使能双区域更新模式)时,(1)若bootaddr等于「0」,则变数mmsaddr等于hmsbaddr,而(2)若bootaddr等于「1」,则变数mmsaddr等于hmssbaddr的反相值(invertedvalue)。也可以说,(1)当bootaddr等于「0」,对非易失性存储器139的读/写可视为是第一配置200,而(2)当bootaddr等于「1」,对非易失性存储器139的读/写可视为是第二配置202。

地址译码器136接收地址逻辑300提供的mmsaddr以及主控制器写入地址的其余部分(也就是「主控制器写入地址的最低有效位(hostleastsignificantbitsofwriteaddress)」或「hlsbaddr」))。地址译码器136结合mmsaddr与hlsbaddr,并使用映射表137(如图1所示)以辨别非易失性存储器139的哪个实体地址应该要被存取。例如,若主控制器110发送一写入命令到地址000000h(即000000000000000000000000),当bootcode-def为使能且bootaddr为1时,地址译码器136会将由mmsaddr表示的此写入命令的最高有效位从「0」翻转(反相)为「1」,并结合具有「1」的mmsaddr与具有值「00000000000000000000000」的hlsbaddr。其结果为「100000000000000000000000」,被映射表137用来寻址到对应的实体地址。另一方面,例如,若主控制器110发送一写入命令到地址000000h(即000000000000000000000000),当bootcode-def为使能且bootaddr为0时,地址译码器136会并结合具有「0」的mmsaddr与具有值「00000000000000000000000」的hlsbaddr。其结果为「000000000000000000000000」,被映射表137用来寻址到对应的实体地址。

为了增加一层安全防护,禁止写入逻辑304被用来避免开机码区域143在更新码区域145上的程序代码更新并验证完成之前被覆写或擦除。禁止写入逻辑304接收(1)来自闩锁逻辑302的bootaddr、(2)来自地址逻辑300的mmsaddr及(3)bootcode-def。基于这些输入,禁止写入逻辑304可为开机码区域143及更新码区域145使能或禁能一禁止写入的状态。

变量bootaddr及inhibit-write的值无法由用户设置,只能由系统100或系统100的逻辑设置。此外,这些值可储存于易失性或非易失性存储器中。

图4与图5绘示根据本案一示范性实施例的操作于「双区域更新模式」的存储器装置的示意图。为方便解释,图4与图5以第一配置为例来说明,但习知此技者当可从下列说明来了解如何应用至第二配置。

请同时参考图3至图5。在第一配置下,变量bootaddr-def=0。如果尚未写入更新的开机码至更新码区域145,则预验证标识pq为0(处于默认值)。故而,变量bootaddr-def=0且预验证标识pq为0,exor逻辑303输出变量bootaddr=0。在此时,开机码(代码a)要从第一部分142读取,而当要更新开机码时,更新版的开机码则写入至第二部分144。也就是说,如上述般,当处于第一配置且当变量bootaddr=0时,当主控制器意图要从地址000000h(亦即主控制器地址(host-addr)为000000h)读取开机码a时,存储器装置130从实体地址000000h(亦即存储器地址(mem-addr)为000000h)开始读取开机码a。当主控制器意图写入更新的程序代码c到地址800000h(亦即主控制器地址为800000h),存储器装置130从地址800000h(亦即存储器地址800000h)开始写入程序代码c。

之后,进行更新码操作,对第二部分144解除「禁止写入」并擦除原先的备份开机码b。之后,将新的开机码c写入至第二部分144,并且对新的开机码c进行保护(亦即,对第二部分144使能「禁止写入」)。如果新的开机码c已完全写入至第二部分,则在本案示范性实施例中,主控制器110对于新的开机码c进行预验证,其细节如下。

当主控制器110对于新的开机码c进行预验证时,主控制器110将预验证标识pq设为1且主控制器110发出系统重设指令,但此系统重设指令不能触发断电重开机循环(poweroff-oncycle)(亦即不能触发上电触发信号),以避免将预验证标识pq复原为0,这是因为预验证标识pq乃是存于状态逻辑134的一内部易失性缓存器之内,如果触发断电重开机循环的话,则预验证标识pq会被复原为0。由于预验证标识pq由0变为1且bootaddr-def=0,ex逻辑303所输出的变量bootaddr=1(由0变为1),故而,对于此时的主控制器而言,当主控制器意图要从地址000000h(亦即主控制器地址(host-addr)为000000h)读取开机码时,存储器装置130从实体地址800000h(亦即存储器地址(mem-addr)为800000h)开始读取。这是因为输入至地址逻辑300的变量bootaddr由0变为1,故而,地址译码器136所输出的地址会成为800000h。简言之,在此时(bootaddr-def=0且pq=1),存储器装置130由第二部分144读取更新版的开机码c,以回传给主控制器110,以当成开机码。也就是说,在此实施例中,在此时,第二部分144「暂时」被架构成「开机码区域」而第一部分142「暂时」被架构成「更新码区域」。亦即,在此时,配置暂时从第一配置变成第二配置,但主控制器110仍未变更变量bootaddr-def的值。

如果主控制器110能够使用更新版程序代码c来完成开机的话(也就是说,更新版程序代码c是正确无误的),则主控制器110将变量bootaddr-def变更/反相(例如,bootaddr-def=!bootaddr-def)(将变数bootaddr-def由0变为1)。于下次断电重开时,闩锁逻辑302将会读取到已变为1的bootaddr-def且由于断电重开,所以预验证标识pq已回复到0,故而,经由exor逻辑303的逻辑运算,变量bootaddr=1,亦即代表,在此时,已成功变为第二配置,第二部分144已被架构成「开机码区域」而第一部分142已被架构成「更新码区域」。亦即,之后,主控制器110从第二部分读出程序代码c当成开机码。

相反地,如图5所示,如果主控制器110无法使用更新版程序代码c来完成开机的话(也就是说,更新版程序代码c是错误的),则系统100将会宕机(死机),则主控制器110不会变动变量bootaddr-def。于下次断电重开时,闩锁逻辑302将会读取到仍为0的bootaddr-def且由于断电重开,所以预验证标识pq已回复到0,故而,经由exor逻辑303的逻辑运算,变量bootaddr=0,亦即代表,在此时,从暂时的第二配置复原为第一配置,亦即,第二部分144被复原为「更新码区域」而第一部分142被复原为「开机码区域」,亦即主控制器110仍由第一部分142来读出程序代码a为开机码。

也就是说,在本案示范性实施例中,于更新版的开机码写入至更新码区域后,通过使能预验证标识pq,暂时地变更配置。如果主控制器110能够用更新版的开机码来成功开机的话,则配置将会被固定(配置变化为:「第一配置」→「暂时性的第二配置」→「第二配置」);如果主控制器110无法用更新版的开机码来成功开机的话,则配置将会被复原(如,配置变化为:「第一配置」→「暂时性的第二配置」→(复原成)「第一配置」)。

经由上述描述可知,在更新开机码时,即便是更新版的开机码c是错误的,通过本案上述实施例的预验证做法,主控制器110可以在不伤害到原开机码a的情况下,先行确认更新版的开机码c是正确或错误的(亦即对更新版的开机码c进行预验证),以避免在因为写入错误的更新版开机码,造成系统死机无法救回的情况。

此外,如上述般,为达成本案上述示范性实施例的特点(预验证),所需的电路与控制方式并不复杂,故而,本案上述示范性实施例具有成本低、容易实施、容易控制、零风险更新开机码的优点。

图6显示根据本案一示范性实施例的「双区域更新模式」的系统开机码存储器管理方法流程图。如图6所示,于步骤602中,系统开机。于步骤604中,主控制器110检查预验证标识pq是否为1。如果预验证标识pq为1,则于步骤606中,主控制器110检查更新后的开机码是否能通过预验证。如果更新后的开机码通过预验证,于步骤608中,变更配置选择参数(主控制器变更变量bootaddr-def的值),如此,于下次上电触发信号使能时,可将配置由第一配置200(第二配置202)变成第二配置202(第一配置200)。于步骤610中,执行一般系统操作。

如果更新后的开机码无法通过预验证,于步骤612中,主控制器不会变更变量bootaddr-def的值,断电重开(使得预验证标识pq回复为0)以将配置复原。于步骤614中,用原开机码开机。

如果预验证标识pq为0,则于步骤616中,检查是否要进行开机码更新。如果要进行开机码更新,于步骤618中,将更新的开机码写入至更新码区域并将预验证标识pq设为1,之后,流程回至步骤602。

如果不进行开机码更新,于步骤620中执行一般系统操作。

综上所述,本案可通过预验证更新的开机码,来避免因为更新到错误的开机码所导致的宕机或死机。亦即,在将更新的开机码设定为主要的开机码之前,主控制器会对更新的开机码进行预验证。在进行预验证时,具有更新的开机码的区域暂时被架构为开机码区域,而具有原本开机码的区域暂时被架构为更新码区域。如果主控制器可利用更新的开机码来成功开机(亦即更新的开机码可正确运作的话),则具有更新的开机码的区域会被架构为开机码区域,而具有原本开机码的区域会被架构为更新码区域。相反地,如果主控制器无法利用更新的开机码来成功开机(亦即更新的开机码无法正确运作的话),则具有更新的开机码的区域会被架构回为更新码区域,而具有原本开机码的区域会被架构为开机码区域(使得系统利用原本开机码来开机)。

虽然本发明已通过参考实施例及各种例子对细节说明如上,然可以理解的是此些例子仅是作为说明之用,并非用来限制本发明。本领域的技术人员将能轻易地在本发明的精神和所附权利要求的范围内进行修改和组合。

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