存储器装置与电子装置的启动程序加载方法与流程

文档序号:18213240发布日期:2019-07-19 22:27阅读:242来源:国知局
存储器装置与电子装置的启动程序加载方法与流程

本发明涉及一种存储器装置与电子装置的启动程序加载方法,且特别涉及一种可提供更新版启动程序的存储器装置与电子装置的启动程序加载方法。



背景技术:

当前的电子产品多为嵌入式系统,并须采用控制器控制相关的功能电路。此外,控制器还须搭配非易失性储存装置使用,用于储存启动程序(另可称为启动加载程序(bootloader))、系统程序、影音数据等。

许多电子装置在出厂后,制造厂商会基于不同考虑而提供更新版本的启动程序与系统程序等。其中,系统程序能正常执行的前提是,启动程序必须能正常执行。然而,用户透过更新流程而下载的更新版启动程序upbootpg,是否能正常地在嵌入式系统上执行,仍存在多种变量。

例如,用户可能下载时,选择与硬件不兼容的更新版启动程序upbootpg;或是电子装置在下载更新版启动程序upbootpg的过程发生断电情况,导致启动程序未能顺利完成更新等。为此,如何能使电子装置在提供软件更新功能的同时,确保嵌入式系统能顺利执行启动程序,进而避免更新流程中的突发状况而使电子装置无法顺利开机,是值得深入探讨的议题。



技术实现要素:

本发明涉及一种存储器装置与电子装置的启动程序加载方法,可以避免电子装置因为下载更新版启动程序upbootpg所衍生的可能无法顺利开机的现象。

根据本发明的一方面,提出一种用以电连接于主机的存储器装置。存储器装置包含:存储器阵列、还原缓存器、默认启动地址缓存器、地址转换模块、存取电路。存储器阵列包含多个储存区域,其中所述储存区域的一者定义为第一启动程序存放区,且所述储存区域中的另一者定义为第二启动程序存放区。还原缓存器用以电连接于主机,其储存启动还原参数。默认启动地址缓存器用以电连接于主机,其储存默认启动地址参数。主机于第一开机期间,根据默认启动地址参数而加载储存在第一启动程序存放区的默认启动程序以及储存在第二启动程序存放区的更新版启动程序二者中的一者。地址转换模块用以电连接于主机、还原缓存器与默认启动地址缓存器。地址转换模块在接收由主机所产生的主机存取地址后,依据主机存取地址、启动还原参数与默认启动地址参数而产生存储器存取地址。存取电路用以电连接于主机、存储器阵列与地址转换模块。存取电路自主机接收存取指令,其中存取电路对存储器存取地址执行该存取指令。触发电路用以电连接于主机、还原缓存器与默认启动地址缓存器。其中,在第一开机期间,触发电路选择性产生用于设定启动还原参数的逾时触发信号。

根据本发明的另一方面,提出一种电子装置的启动程序加载方法。电子装置包含主机与存储器装置,且存储器装置包含存储器阵列。存储器阵列包含的多个储存区域的一者被定义为第一启动程序存放区,且所述储存区域中的另一者被定义为第二启动程序存放区。启动程序加载包含以下步骤。存储器装置储存启动还原参数以及默认启动地址参数。主机于第一开机期间,根据默认启动地址参数而加载储存在第一启动程序存放区的默认启动程序以及储存在第二启动程序存放区的更新版启动程序二者中的一者。存储器装置依据主机所产生的主机存取地址、启动还原参数与默认启动地址参数而产生存储器存取地址。存储器装置自主机接收存取指令,并对存储器存取地址执行存取指令。在第一开机期间,存储器装置选择性产生用于设定启动还原参数的逾时触发信号。

为了对本发明上述及其他方面有更佳了解,下文特列举实施例,并配合所附附图详细说明如下:

附图说明

图1是将存储器阵列划分为多个储存区域,作为储存启动程序使用的示意图。

图2是选择将存储器阵列的两个储存区域作为存放启动程序使用示意图。

图3a、3b是延续图2所示的储存区域与启动程序存放区的对应关系,存放默认启动程序dftbootpg与更新版启动程序upbootpg的引导块域配置bootlayout示意图。

图4是根据本发明的实施例的电子装置内部电路示意图。

图5a是存储器装置随着主机是否执行更新流程,以及用于储存默认启动程序dftbootpg的启动程序存放区的不同,而对应调整更新启动地址参数updatept、默认启动地址参数bootpt不同状态的示意图。

图5b是说明存储器装置各个状态之间的演变关系的状态图。

图6是说明随着更新启动地址参数updatept与默认启动地址参数bootpt是否相等,以及启动还原参数rstrflg的值不同,主机的执行流程示意图。

图7是触发电路的内部电路示意图。

图8a是地址转换模块将主机存取地址hadd转换为存储器存取地址madd示意图。

图8b是举例说明地址转换电路如何将主机存取地址hadd拆分为主机存取地址最高有效位hmsadd与主机存取地址最低有效位hlsadd后,再搭配存储器存取地址最高有效位mmsadd产生存储器存取地址madd示意图。

【符号说明】

存储器阵列10、271储存区域a10a、271a

储存区域b10b、271b储存区域c10c、271c

储存区域d10d、271d第一启动地址startadd1

第二启动地址startadd2启动程序存放区boot111

启动程序存放区boot213

第一引导块域配置bootlayout1

第二引导块域配置bootlayout2电子装置20

主机21功能电路23

存储器装置27启动还原参数rstrflg

存取指令cmd主机存取地址hadd

逾时触发信号str存取数据data

内部频率信号clkint存储器存取地址madd

还原缓存器259更新启动地址缓存器255

默认启动地址缓存器257频率产生器254b

看门狗定时器2541存取电路252

地址转换模块256上电信号son

情况c11、c12、c13、c14、c15、c16、c17、c21、c22、c23、c24、c25、c26、c27

步骤s40、s41、s42、s43、s45、s47

定时器使能电路2542使能信号选择电路2543

存储器端定时器使能信号msen主机端定时器使能信号hsen

默认启动地址参数bootpt更新启动地址参数updatept

定时器使能信号sen地址转换电路253

启动地址决定电路253a配置选择电路253e

上电启动地址电路253d地址映射逻辑253c

启动地址选择信号ssel_startadd地址译码电路251

具体实施方式

启动程序是嵌入式系统硬件开机或重设后,主机所执行的第一段(初始化)的程序。简单来说,启动程序会将嵌入式系统中最基本的硬件配置完成,并将系统程序从非易失性存储器加载至嵌入式系统的静态随机存取存储器(staticrandomaccessmemory,简称为sram)和/或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram)。因此,主机可否顺利自存储器装置加载启动程序,是嵌入式系统能否顺利执行的关键。

请参见图1,其是将存储器阵列划分为多个储存区域,作为储存启动程序使用的示意图。为便于说明,此处假设存储器阵列10被划分为四个储存区域(储存区域a、储存区域b、储存区域c、储存区域d)。这四个储存区域可用于储存不同版本的启动程序。关于储存区域的数量,以及其中实际用于储存启动程序的数量、用途等,可由制造厂商或用户根据系统需要或应用而设定或选择,此处不予详述。

实际应用时,存储器阵列10所包含的储存区域的数量并不以此为限。例如,存储器阵列10也可能包含两个储存区域或八个储存区域等。其中,每个储存区域a、b、c、d的大小相等,并可以利用储存区域标识符(idsa)表示各个储存区域。另外,每个储存区域分别对应于一个加载地址loadadd,且各个加载地址的差别,仅在于根据储存区域标识符(idsa)所定义的最高位。为便于说明,此处假设存储器存取地址包含24个位。表1列出假设存储器存取地址为24位,且将存储器阵列10区分为四个等分的储存区域时,与各个储存区域相关的参数。

表1

以图1为例,存储器阵列10所包含的四个储存区域,其储存区域标识符(idsa)分别为00、01、10、11。根据本发明的构想,可利用储存区域标识符(idsa)作为存储器存取地址最高有效位mmsadd。在这个例子中,因为存储器阵列10包含四个储存区域的缘故,储存区域标识符(idsa)与存储器存取地址最高有效位mmsadd的长度均为两个位。

据此,可以得出与储存区域a、b、c、d对应的加载地址。如表1所列示,与储存区域a(10a)对应的第一加载地址为loadadd1=0x000000,且与储存区域a(10a)对应的存储器地址存取范围为0x000000~0x3fffff;与储存区域b(10b)对应的第二加载地址为loadadd2=0x400000,且与储存区域b(10b)对应的存储器地址存取范围为0x400000~0x7fffff;与储存区域c(10c)对应的第三加载地址为loadadd3=0xs00000,且与储存区域c(10c)对应的存储器地址存取范围为0x800000~0xbfffff;以及,与储存区域d(10d)对应的第四加载地址为loadadd4=0xc00000,且与储存区域d(10d)对应的存储器地址存取范围为0xc00000~0xffffff。

同理,若存储器阵列10仅包含两个储存区域,则储存区域标识符(idsa)与存储器存取地址最高有效位mmsadd的长度均为一个位。在这种情况下,存储器阵列10会以0x000000~0x7fffff作为第一储存区域,以及以0x800000~0xffffff作为第二储存区域。关于储存区域的个数不同时,加载地址loadadd与存储器地址存取范围可能的改变与组合,此处不再详述。

请参见图2,其是选择将存储器阵列的两个储存区域作为存放启动程序使用的示意图。根据本发明的构想,储存区域a、b、c、d中的至少两个,可被主机用于储存不同版本的启动程序。为便于区别,此处将这两个被选取的储存区域定义为启动程序存放区boot1、启动程序存放区boot2。其中并将启动程序存放区boot1的起始地址定义为第一启动地址startadd1;以及将启动程序存放区boot2的起始地址定义为第二启动地址startadd2。

根据本发明的构想,启动程序存放区boot1、启动程序存放区boot2的其中一个会被主机用来储存在系统开机期间实际使用的默认启动程序dftbootpg;启动程序存放区boot1、启动程序存放区boot2中的另一个,则可被主机用于储存更新版启动程序upbootpg。须留意的是,启动程序存放区boot1、启动程序存放区boot2的任一者,均可能用于储存默认启动程序dftbootpg和/或更新版启动程序upbootpg。

实际应用时,主机选择以实际储存区域a、b、c、d中的那两个,作为储存默认启动程序dftbootpg和/或更新版启动程序upbootpg使用,则需视系统的执行状态而定。例如,主机在第一次执行启动程序的更新流程时,可能选择储存区域d、b作为启动程序存放区boot1、启动程序存放区boot2,但在主机第二次执行启动程序的更新流程时,可能改选储存区域d、a作为启动程序存放区boot1、启动程序存放区boot2。换句话说,主机可以根据不同的应用,重新选择以原本未被选择作为启动程序存放区的储存区域b、c作为启动程序存放区。关于储存区域的选用与启动程序存放区的对应关系的应用上的变化,可由本案所属技术领域的技术人员代换,此处不再详述。

需留意的是,嵌入式系统的主机在选择与启动程序存放区boot1、boot2对应的储存区域时,并不需要限定需要是在存储器阵列10中的地址彼此相连的储存区域,且定义储存装置作为启动程序存放区boot1、boot2时,也不需要限定应以对应于较高或较低存储器存取地址的储存区域定义启动程序存放区的顺序。

为便于说明,图2假设启动程序存放区boot1对应于储存区域d,且第一启动地址startadd1对应于第四加载地址(即,startadd1=loadadd4=0xc00000);以及,假设启动程序存放区boot2对应于储存区域a,且第二启动地址startadd2对应于第一加载地址(startadd2=loadadd1=0x000000)。表2为图2中,启动程序存放区boot1、boot2与储存区域之间的对应关系。以下说明将以此种启动程序存放区boot1、boot2与储存区域之间的对应关系为例,关于其他可能将启动程序存放区boot1、boot2对应于不同储存区域的对应关系,此处不再详述。

表2

如前所述,启动程序存放区boot1、启动程序存放区boot2的其中一个会被主机用来储存在系统开机时实际使用的默认启动程序dftbootpg,启动程序存放区boot1、启动程序存放区boot2中的另一个,可被主机用于储存更新版启动程序upbootpg。因此,图2的启动程序存放区boot1、boot2可能对应于图3a、3b所示的两种引导块域配置bootlayout。

请参见图3a、3b,其是延续图2所示的储存区域与启动程序存放区的对应关系,存放默认启动程序dftbootpg与更新版启动程序upbootpg的引导块域配置bootlayout示意图。表3为图3a、3b相关参数的整理列表。

表3

在图3a所示的第一引导块域配置bootlayoutl中,启动程序存放区boot1用于储存默认启动程序dftbootpg,且启动程序存放区boot2可用于储存更新版启动程序upbootpg。另一方面,在图3b所示的第二引导块域配置bootlayout2中,启动程序存放区boot2用于储存默认启动程序dftbootpg,且启动程序存放区boot1可用于储存更新版启动程序upbootpg。

其中,存放在图3a的启动程序存放区boot1与图3b的启动程序存放区boot2的默认启动程序dftbootpg,都是已经被完整存入储存区域并可被主机用于在系统开机时加载。根据本发明的构想,用于储存默认启动程序dftbootpg的储存区域,会被设定为写入保护。如图3a、3b所示,本文以格状底纹代表被设定为写入保护的启动程序存放区。

另一方面,用于储存更新版启动程序upbootpg的启动程序存放区,并不会被设定为写入保护。根据本发明的实施例,未被用于储存默认启动程序dftbootpg的启动程序存放区(图3a的启动程序存放区boot2与图3b的启动程序存放区boot1),可能为被擦除后的空白状态、正在写入状态,或是完成写入状态。对应于这三种状态,更新版启动程序upbootpg的储存状态可能为待储存、储存中或是已储存。

请参见图4,其是根据本发明的实施例的电子装置内部电路示意图。在此附图中,假设电子装置20包含主机21、功能电路23与存储器装置27,其中存储器装置27进一步包含存储器控制电路25与存储器阵列271。主机21电连接于功能电路23与存储器控制电路25,且存储器控制电路25电连接于存储器阵列271。此处延续图1的举例,同样假设存储器阵列271包含四个储存区域(储存区域a271a、储存区域b271b、储存区域c271c、储存区域d271d)。

根据本发明的构想,存储器控制电路25包含触发电路254a、频率产生器254b、存取电路252、地址转换模块256、地址译码电路251b、还原缓存器(restoreflagregister)259、默认启动地址缓存器(defaultbootaddressregister)257与更新启动地址缓存器(updateaddressregister)255。存取电路252从主机21接收存取指令cmd与存取数据data后,产生控制信号ctrl至地址转换模块256,并根据主机存取地址hadd、存取指令cmd与存取数据data而对存储器阵列271进行存取操作。

为使主机21与存储器控制电路25均能清楚掌握存储器阵列271采用的引导块域配置bootlayout,进而将更新版启动程序upbootpg加载适当的启动程序存放区(以及与启动程序存放区对应的储存区域),本发明的实施例在存储器控制电路25设置数个缓存器。其中,还原缓存器259用于储存启动还原参数rstrflg;默认启动地址缓存器257用于储存默认启动地址参数bootpt;更新启动地址缓存器255用于储存更新启动地址参数updatept。

在本发明的实施例中,假设启动还原参数rstrflg、默认启动地址参数bootpt,以及更新启动地址参数updatept的长度均为一位。其中,启动还原参数rstrflg是一个因应触发电路254a所产生的逾时触发信号str而被设定的旗标值,且经设定后的启动还原参数rstrflg可在电子装置20重新启动后,由主机21清除。默认启动地址参数bootpt与更新启动地址参数updatept可以利用数值代表启动程序存放区boot1、boot2的编号。据此,可以根据默认启动地址参数bootpt与更新启动地址参数updatept可视为用于指向启动地址的指针参数,进一步得出与储存默认启动程序dftbootpg和/或更新版启动程序upbootpg的储存区域所对应的加载地址loadadd。

更进一步来说,默认启动地址参数bootpt的值,代表要将默认启动程序dftbootpg存放在哪一个启动程序存放区boot1、boot2。例如,以默认启动地址参数bootpt=0代表默认启动程序dftbootpg被存放在启动程序存放区boot1、以默认启动地址参数bootpt=1代表默认启动程序dftbootpg被存放在启动程序存放区boot2。

如前所述,与受到写入保护的默认启动程序dftbootpg不同,更新版启动程序upbootpg必须在主机21开始执行更新流程后,才会被储存在启动存放区内。因此,更新启动地址参数updatept仅在更新流程开始后,才会指向储存更新版启动程序upbootpg的启动程序存放区。

根据本发明构想的实施例,当主机21并未执行启动程序的更新流程时,更新启动地址参数updatept会等于默认启动地址参数bootpt。换句话说,此时的更新启动地址参数updatept同样对应于存放默认启动程序dftbootpg的启动程序存放区boot。

再者,若主机21开始执行更新流程时,更新启动地址参数updatept将对应于存放更新版启动程序upbootpg的启动程序存放区boot。在主机21执行更新流程后,若电子装置20未被重新启动或重置,则更新启动地址参数updatept将维持应于存放更新版启动程序upbootpg的启动程序存放区boot。

根据前述说明可以得知,更新启动地址参数updatept与默认启动地址参数bootpt的值,可以反映出主机21是否执行更新流程,以及更新流程完成后,主机21是否重新启动等信息。因此,透过读取储存在更新启动地址缓存器255与默认启动地址缓存器257的数值,主机21和存储器控制电路25可掌握存储器阵列271的引导块域配置bootlayout。

存储器控制电路25利用地址转换模块256将主机21传送的主机存取地址hadd转换为存储器存取地址madd后,搭配存取电路252而对存储器阵列271进行存取操作。即存取电路252会对存储器存取地址madd进行写入操作、读取操作或擦除操作。关于地址转换模块256如何将主机存取地址hadd转换为存储器存取地址madd的作法,请参见图8a、8b的说明。

此处假设由触发电路254a产生的逾时触发信号str,会将还原缓存器259所储存的启动还原参数rstrflg设为1(实际应用时,启动还原参数rstrflg的设定值并不以此为限)。

因此,主机21可以通过读取还原缓存器259,得知触发电路254a是否曾经产生逾时触发信号str。关于触发电路254a产生逾时触发信号str的细节,以及主机21如何因应启动还原参数rstrflg被设为1而执行的步骤,将于图6、7说明。

随着启动程序的更新流程的进行,更新启动地址参数updatept与默认启动地址参数bootpt的值也可能不同,连带的,存储器装置27所采用的引导块域配置bootlayout也可能随着改变。

请参见图5a,其是存储器装置随着主机是否执行更新流程,以及用于储存默认启动程序dftbootpg的启动程序存放区的不同,而对应调整更新启动地址参数updatept、默认启动地址参数bootpt示意图。此处延续图2的举例,假设启动程序存放区boot1对应于储存区域d、启动程序存放区boot2对应于储存区域a。为便于说明,本文随着启动程序存放区的不同配置情形、更新启动地址参数updatept与默认启动地址参数bootpt实际指向位置的不同,将启动程序存放区的使用情况区分为状态a~状态f。存储器装置27会随着主机21执行更新流程与否而在这些状态间转换。

如前所述,本文将用于存放默认启动程序dftbootpg的启动程序存放区boot设为写入保护状态,并以格状底纹表示。另一方面,未被用于存放默认启动程序dftbootpg的启动程序存放区boot,可能会随着是否执行更新流程而处于待写入、写入中,或是完成写入等不同状态。在图5a中,以空白表示与启动程序存放区boot对应的储存区域尚未写入任何数据,故启动程序存放区boot可用于储存更新版启动程序upbootpg的启动程序存放区;以横线底纹代表与启动程序存放区boot对应的储存区域正在被用于储存更新版启动程序upbootpg的过程中;以及,以直线底纹代表与启动程序存放区对应的储存区域,已经被完整存入更新版启动程序upbootpg。

以下,先以表4搭配图5a,说明存储器装置27在各个状态下的引导块域配置bootlayout,以及更新启动地址参数updatept与默认启动地址参数bootpt所指向的地址。接着,将再利用图5b说明各个状态间的演变关系。

表4

当存储器装置27处于状态a、b、c时,存储器装置27属于第一引导块域配置bootlayout1(图3a)。存储器装置27为状态a时,与启动程序存放区boot2对应的储存区域,可准备用于储存更新版启动程序upbootpg,此时默认启动地址参数bootpt=0、更新启动地址参数updatept=0。存储器装置27为状态b时,主机21处于更新流程的期间,与启动程序存放区boot2对应的储存区域正在被写入更新版启动程序upbootpg,此时默认启动地址参数bootpt=0、更新启动地址参数updatept=1。存储器装置27为状态c时,主机21已经完成将更新版启动程序upbootpg存入与启动程序存放区boot2对应的储存区域,此时默认启动地址参数bootpt=1、更新启动地址参数updatept=1。

当存储器装置27处于状态d、e、f时,存储器装置27属于第二引导块域配置bootlayout2(图3b)。存储器装置27为状态d时,与启动程序存放区boot1对应的储存区域,可准备用于储存更新版启动程序upbootpg,此时默认启动地址参数bootpt=1、更新启动地址参数updatept=1。存储器装置27为状态e时,主机21处于更新流程的期间,与启动程序存放区boot1对应的储存区域正在被写入更新版启动程序upbootpg,此时默认启动地址参数bootpt=1、更新启动地址参数updatept=0。存储器装置27为状态c时,主机21已经完全将更新版启动程序upbootpg存入与启动程序存放区boot1对应的储存区域,此时默认启动地址参数bootpt=0、更新启动地址参数updatept=0。

接着,将说明存储器装置27如何随着更新流程的执行与否,改变引导块域配置bootlayout。请参见图5b,其是说明各个状态之间的演变关系的状态图。为便于说明,此处以较粗的实线标示的状态对应于第一引导块域配置bootlayout1;以较细的虚线标示的状态对应于第二引导块域配置bootlayout2。将各个状态在遇到不同的状况(条件)时的转换,以编号表示。其中,以c1开头的编号代表属于第一引导块域配置bootlayout1的状态(状态a、b、c)可能遇到的情形;以c2开头的编号代表属于第二引导块域配置bootlayout2的状态(状态d、e、f)可能遇到的情形。

当存储器装置27处于状态a时,默认启动地址参数bootpt与更新启动地址参数updatept均指向第一启动地址startadd1。此时,主机21可能遇到的情况可区分为两类,情况c11与情况c12。

情况c11为,主机21执行启动程序的更新流程,并透过存取电路252将更新版启动程序upbootpg写入与启动程序存放区boot2对应的储存区域。此时,存储器装置27进入状态b,且主机21会将更新启动地址参数updatept修改为第二启动地址startadd2。附带一提,存取电路252会在将更新版启动程序upbootpg写入前,先擦除即将被用来储存更新版启动程序upbootpg的储存区域。

情况c12指的是,主机21未执行启动程序的更新流程,则存储器装置27维持原本的引导块域配置bootlayout。此时,与启动程序存放区boot2对应的储存区域维持不变。此时,存储器装置27维持在状态a,且主机21不改变默认启动地址参数bootpt与更新启动地址参数updatept的指向。

当存储器装置处于状态b时,默认启动地址参数bootpt指向第一启动地址startadd1,而更新启动地址参数updatept指向第二启动地址startadd2。此时,主机21正在执行更新流程。但是,随着更新流程的完成与否,主机21可能遇到的情况还可再区分为两类,情况c13与情况c14。

情况c13为,主机21在执行启动程序的更新流程期间,尚未顺利完成即被中断(关机、重置(reset)等现象)。也就是说,更新版启动程序upbootpg尚未完全存入与启动程序存放区boot2对应的储存区域。此时,若电子装置20因为收到上电信号son而重新执行开机时,主机21仍须维持使用与启动程序存放区boot1对应的储存区域所储存的默认启动程序dftbootpg。主机21会先根据默认启动地址参数bootpt而从第一启动地址startadd1加载启动程序,并且将更新启动地址参数updatept再拉回至第一启动地址startadd1。因此,存储器装置27会从状态b回到状态a。

另一方面,情况c14指的是,主机21顺利将启动程序的更新流程执行完毕,且更新版启动程序upbootpg已经透过存取电路252顺利写入启动程序存放区boot2。此时,存储器装置27便从状态b进入状态c,主机21也会将原本对应于第一启动地址startadd1的默认启动地址参数bootpt,修改为对应于第二启动地址startadd2。

当存储器装置27处于状态c时,默认启动地址参数bootpt与更新启动地址参数updatept均指向第二启动地址startadd2。此时,可能遇到的情况可区分为三类,情况c15、情况c16与情况c17。

情况c15为,在启动程序的更新流程执行完毕后,电子装置20尚未重新启动。因此,存储器装置27仍维持在状态c,且默认启动地址参数bootpt与更新启动地址参数updatept仍维持对应于第二启动地址startadd2。

情况c16为,电子装置20重新启动(接收上电信号son)后,主机21无法顺利地执行储存在与对应的储存区域启动程序存放区boot2对应的储存区域的更新版启动程序upbootpg(rstrflg=1)。此时,主机21必须还原引导块域配置bootlayout,也就是回复到使用储存在与启动程序存放区boot1对应的储存区域的默认启动程序dftbootpg的情况。即,存储器装置27由状态c转换至状态a。在这种情况下,默认启动地址参数bootpt与更新启动地址参数updatept一开始均维持原本与第二启动地址startadd2对应的情况,之后再通过启动还原参数rstrflg修改为与第一启动地址startadd1对应。

情况c17为,主机21接收上电信号son并重新启动(接收上电信号son)时,变更存储器装置27的引导块域配置bootlayout(由原本采用第一引导块域配置bootlayout1改为采用第二引导块域配置bootlayout2),且主机21可顺利执行储存在与第二启动地址startadd2对应储存区域的更新版启动程序upbootpg,此时,默认启动地址参数bootpt与更新启动地址参数updatept仍维持指向第二启动地址startadd2。之后,储存在与第二启动地址startadd2对应储存区域的更新版启动程序upbootpg,将被视为是重新启动后的默认启动程序dftbootpg。也就是说,一旦更新版启动程序upbootpg经确认可以让主机21在开机时顺入加载并执行时,就可被定义为新的默认启动程序dftbootpg,且存储器装置27的引导块域配置bootlayout也会改变。此种状况为,存储器装置27由状态c转换为状态d。

关于状态d、e、f与其可能遇到的情况所导致的状态变化,基本上与状态a、b、c相似,差别在于引导块域配置bootlayout的不同。另,情况c11、c12、c13、c14、c15、c16、c17的叙述,在针对更新启动地址参数updatept、默认启动地址参数bootpt的指向与启动程序存放区boot1、boot2的指向与配置可参考图5a的说明而对应调整,进而类推至情况c21、c22、c23、c24、c25、c26、c27。因此,此处不再详述与状态d、e、f之间的状态转换细节。

以下,从主机21的角度,说明主机21如何针对默认启动地址参数bootpt、更新启动地址参数updatept与启动还原参数rstrflg的值而对应执行的流程。此外,为便于说明,本文将执行更新流程的开机期间,定义为更新启动程序的开机期间tboot_update。

请参见图6,其是说明随着更新启动地址参数updatept与默认启动地址参数bootpt是否相等,以及启动还原参数rstrflg的值不同,主机21的执行流程示意图。为便于存储器装置27的状态变化,在此流程图中,以中括号代表存储器装置27的状态转换过程,以小括号代表存储器装置27在各个开机期间内的状态转换过程。此外,以较粗的箭头符号代表表存储器装置27在同一个开机期间内的状态转换过程,以及以较细的箭头符号代表在跨越不同开机期间时,存储器装置27的状态转换过程。

首先,主机21判断更新启动地址参数updatept与默认启动地址参数bootpt是否相等(步骤s40)。若更新启动地址参数updatept与默认启动地址参数bootpt不相等,代表前一次执行开机流程时,主机21曾执行启动程序的更新流程(即,前一次开机属于更新启动程序的开机期间),但该更新流程并未执行完毕。主机21仍执行默认启动程序dftbootpg(步骤s41)。

步骤s41可能对应于两类演变过程。步骤s41可能对应的第一类演变过程为,存储器装置27在更新启动程序的开机期间tboot_update由状态a转换至状态b,存储器装置27并于第一开机期间ton1,由状态b再转换至状态a的过程。或是,步骤s41可能对应的第二类演变过程为,存储器装置27在更新启动程序的开机期间tboot_update由状态d转换至状态e,存储器装置27并于第一开机期间ton1,由状态再e转换至状态d的过程。

若步骤s40的判断结果为肯定,代表更新启动地址参数updatept与默认启动地址参数bootpt相等,此时可能有两种情况。其一为,主机21在前一次开机期间并未进行启动程序的更新流程(即,前一次开机并非更新启动程序的开机期间tboot_update),其二为,在前一次开机期间,主机21曾经进行启动程序的更新流程(即,前一次开机属于更新启动程序的开机期间),且启动程序的更新流程执行完毕。此时,主机21需进一步判断启动还原参数rstrflg是否等于1(步骤s42)。

若启动还原参数rstrflg等于1,代表在此次开机前,触发电路254a曾经产生逾时触发信号str,并导致启动还原参数rstrflg被设定。也就是说,在上上次的开机期间曾执行启动程序的更新流程(存入更新版启动程序),但在上次开机时,主机21无法顺利执行更新版启动程序upbootpg。因此,这次开机时,存储器装置27已自动切换回原先默认启动程序dftbootpg。是以,主机21仍可顺利加载可正常工作的启动程序(步骤s47)。此时,主机21需要复原使用原本的引导块域配置bootlayout。步骤s47可能对应于两类演变过程。

步骤s47可能对应的第一类演变过程为,在更新启动程序的开机期间tboot_update,主机21以启动程序存放区boot1储存的默认启动程序dftbootpg开机,并执行启动程序的更新流程。因此,存储器装置27在更新启动程序的开机期间tboot_update先由状态a转换至状态b,然后再由状态b转换至状态c。更新流程结束后,主机21与存储器装置27等待上电信号son而重新启动。在经过接收上电信号son而开始完成启动程序的更新流程后的第一开机期间ton1,存储器装置27由状态c转换至状态d,且主机21尝试依据状态d所对应的第二引导块域配置bootlayout2加载更新版启动程序upbootpg,但因更新版启动程序upbootpg加载后无法顺利执行而使主机21搁置在状态d。据此,触发电路254a会在第一开机期间ton1产生触发信号str设定启动还原参数rstrflg。待主机21与存储器装置27第二度收到上电信号son而重新启动后,主机21与存储器装置27进入第二开机期间ton2。此时,存储器装置27由状态d转换至状态a,而主机21改为加载默认启动程序dftbootpg。因为默认启动程序dftbootpg曾经在更新启动程序的开机期间tboot_update顺利用于开机,故主机21必能顺利加载默认启动程序dftbootpg。

步骤s47可能对应的第二类演变过程为,在更新启动程序的开机期间tboot_update,主机21以启动程序存放区boot2储存的默认启动程序dftbootpg开机,并执行启动程序的更新流程。因此,存储器装置27在更新启动程序的开机期间tboot_update先由状态d转换至状态e,然后再由状态e转换至状态f。在更新流程结束后,主机21与存储器装置27等待上电信号son而重新启动。因为接收上电信号son而开始进入第一开机期间ton1,存储器装置27先由状态f转换至状态a,且主机21尝试依据状态a所对应的第一引导块域配置bootlayout1进行开机,但因加载后无法顺利执行更新版启动程序upbootpg而使主机21搁置。待主机21与存储器装置27第二度收到上电信号son而重新启动后,主机21与存储器装置27进入完成启动程序的更新流程后的第二开机期间ton2。此时,存储器装置27由状态a转换至状态d,而主机21改为加载默认启动程序dftbootpg。因为默认启动程序dftbootpg曾经在更新启动程序的开机期间boot_update的一开始顺利用于开机,故主机21必能顺利加载默认启动程序dftbootpg。

若步骤s42的判断结果为否定,代表启动还原参数rstrflg等于0。在这种情况下,主机21必须对存储器装置27中看门狗定时器2541送发禁能命令(步骤s44)。步骤s42的判断结果为否定,可能代表主机21在前一次开机期间并未进行启动程序的更新流程(即,并未加载更新版启动程序upbootpg)(步骤s45)。或者,主机21在前一次开机期间曾经进行启动程序的更新流程(即加载更新版启动程序upbootpg),且这次开机期间主机21可顺利加载更新版启动程序upbootpg并执行(步骤s43)。

若为步骤s45,因为主机21在前一次开机期间并未进行启动程序的更新流程,所以存储器装置27的状态并不会改变。步骤s45可能对应于两类演变过程,其一为,存储器装置27在先后两次的开机期间均维持在状态a;其二为,存储器装置27在先后两次的开机期间均维持在状态d。

若为步骤s43,因为主机21在前一次开机期间进行启动程序的更新流程,所以存储器装置27需要变更引导块域配置。bootlayout步骤s43可能对应于两类演变过程。

步骤s43可能对应的第一类演变过程为,在更新启动程序的开机期间tboot_update,存储器装置27先由状态a转换至状态b,再由状态b转换至状态c。之后,在接收上电信号son而进入第一开机期间ton1时,存储器装置27进一步从状态c转换至状态d。换句话说,存储器装置27原本在更新启动程序的开机期间tboot_update采用第一引导块域配置bootlayout1,在第一开机期间ton1会转换为采用第二引导块域配置bootlayout2。并且,储存在启动程序存放区boot2的更新版启动程序upbootpg,将被重新定义为与第一开机期间ton1所使用的默认启动程序dftbootpg。

步骤s43可能对应的第二类演变过程为,在更新启动程序的开机期间tboot_update,存储器装置27先由状态d转换至状态e,再由状态e转换至状态f。之后,在接收上电信号son而进入第一开机期间ton1时,存储器装置27进一步从状态f转换至状态a。换句话说,存储器装置27原本在更新启动程序的开机期间tboot_update采用第二引导块域配置bootlayout2,在第一开机期间ton1会转换为采用第一引导块域配置bootlayout1。并且,先前在更新启动程序的开机期间tboot_update被储存在启动程序存放区boot1的更新版启动程序upbootpg,将在第一开机期间ton1被重新定义为与第一开机期间ton1对应的默认启动程序dftbootpg。

承上,根据本发明构想的实施例,存取电路252对存储器存取地址madd进行写入操作的情况可能是,主机21将更新版启动程序upbootpg存入存储器阵列271;存取电路252对存储器存取地址madd进行读取操作的情况可能是,主机21从存储器阵列271加载更新版启动程序upbootpg的期间;存取电路252对存储器存取地址madd进行擦除操作的情况可能是,主机21清除储存区域内的旧的(前一次开机所使用的)默认启动程序dftbootpg、清除未完成更新流程而写入一半的更新版启动程序upbootpg,或是已经确认先前所加载更新版启动程序upbootpg无法被顺利执行而需擦除等情形。关于存取电路252的设计,以及如何搭配地址转换模块256而控制存储器阵列271的做法,可由本案所属技术领域的技术人员自由代换与应用,故此处不予详述。

存储器装置27中,与默认启动地址参数bootpt、更新启动地址参数updatept与启动还原参数rstrflg相关的电路可分为两个部分,图7所示的触发电路254a与图8a所示的地址转换电路253。

请参见图7,其是触发电路的内部电路示意图。触发电路254a包含看门狗定时器2541、使能信号选择电路2543与定时器使能电路2542。

其中,看门狗定时器2541电连接于频率产生器254b与还原缓存器259,其是自频率产生器254b接收内部频率信号clkint,以及产生逾时触发信号str至还原缓存器259。定时器使能电路2542电连接于更新启动地址缓存器255与默认启动地址缓存器257,其是接收更新启动地址参数updatept与默认启动地址参数bootpt。定时器使能电路2542根据更新启动地址参数updatept与默认启动地址参数bootpt产生存储器端定时器使能信号msen。

使能信号选择电路2543电连接于定时器使能电路2542与看门狗定时器2541之间,且使能信号选择电路2543还电连接于主机21。使能信号选择电路2543从定时器使能电路2542接收存储器端定时器使能信号msen,或是从主机21接收主机端定时器使能信号hsen后,产生用于使能/禁能看门狗定时器2541的定时器使能信号sen。

在此实施例中,假设定时器使能电路2542为一xnor逻辑闸。

当默认启动地址参数bootpt与更新启动地址参数updatept的值不相等时,定时器使能电路2542输出的存储器端定时器使能信号msen为0,且使能信号选择电路2543输出的定时器使能信号sen为0(sen=0)。此时看门狗定时器2541被禁能。

当默认启动地址参数bootpt与更新启动地址参数updatept的值相等时,定时器使能电路2542输出的存储器端定时器使能信号msen为1,且使能信号选择电路2543输出的定时器使能信号sen为(sen=1)。此时看门狗定时器2541被使能。一旦看门狗定时器2541被使能,看门狗定时器2541持续判断内部频率信号clkint的数量是否超过预设频率门限clkth。

根据本发明的实施例,在看门狗定时器2541被使能的情况下,主机21若能顺利执行系统的开机流程(加载默认启动程序dftbootpg或更新版启动程序upbootpg)时,便能在看门狗定时器2541产生逾时触发信号str前,透过主机端定时器使能信号hsen将看门狗定时器2541禁能。因此可避免看门狗定时器2541产生的逾时触发信号str将启动还原参数rstrflg设为1。

由于默认启动程序dftbootpg必须能让主机21顺利加载,后续的系统程序才能被顺利执行。因此,在看门狗定时器2541被使能的情况下,若主机21无法顺利执行更新版启动程序时,主机21便无法顺利地在内部频率信号clkint超过默认频率门限clkth前,将看门狗定时器2541禁能。据此,看门狗定时器2541将持续对内部频率信号clkint计数,直到内部频率信号clkint的数量超过默认频率门限clkth而发出逾时触发信号str为止。在这种情况下,使用者也会因为等待一段时间却发现电子装置20无法顺利开机而手动将电子装置20关机重开,或是重置(reset)电子装置20。

随着电子装置20的重新启动或重置,主机21与存储器装置27将再度收到上电信号son。此时,主机21可通过读取启动还原参数rstrflg得知前一次开机时,主机21曾经发生无法在开机流程顺利加载启动程序的情况。即,图6的步骤s47的情况。

承上所述,存储器装置27与主机21均会随着更新启动地址参数updatept与默认启动地址参数bootpt的值是否相等而产生对应的动作。以下简要整理如表5。

表5

附带一提的是,尽管存储器装置27提供多个储存区域作为储存启动程序使用,但对主机21而言,在开机后加载启动程序时,并不需要随着启动程序所在的储存区域不同而改变传送至存储器装置27的主机存取地址hadd。

请参见图8a,其是地址转换模块将主机存取地址madd转换为存储器存取地址madd示意图。在此附图中,地址转换电路253利用主机存取地址hadd产生存储器存取地址最高有效位mmsadd后,地址译码电路251再依据存储器存取地址最高有效位mmsadd与主机存取地址最低有效位hlsadd组合成存储器存取地址madd。

根据本发明的实施例,地址转换电路253进一步包含启动地址决定电路253a与地址映射逻辑253c,其中启动地址决定电路253a进一步包含配置选择电路253e与上电启动地址电路253d。在此实施例中,假设配置选择电路253e为一xor逻辑闸,且假设上电启动地址电路253d为一d型正反器(d-flipflop)。

配置选择电路253e电连接于默认启动地址缓存器257。配置选择电路253e从默认启动地址缓存器257读取默认启动地址参数bootpt,以及从还原缓存器259读取启动还原参数rstrflg后,产生配置选择信号ssel给上电启动地址电路253d。上电启动地址电路253d由上电信号son触发,并对应将启动地址选择信号ssel_startadd输出至地址映射逻辑253c。

因此,当上电信号son产生而使上电启动地址电路253d接收到由0转为1的上升缘时,上电启动地址电路253d输出的启动地址选择信号ssel_startadd的位准会等于配置选择信号ssel的位准。

地址映射逻辑253c会同时接收主机存取地址最高有效位hmsadd与启动地址选择信号ssel_startadd,并依据启动地址选择信号ssel_startadd而决定存储器存取地址最高有效位mmsadd。

如前所述,存储器阵列271的储存区域可被任意选用作为启动程序存放区boot1、boot2,且随着引导块域配置bootlayout的不同,启动程序存放区boot1、boot2可能被交替用于储存默认启动程序dftbootpg。为简化主机存取存储器阵列271时的控制流程,存储器装置27利用地址映射逻辑253c,因应默认启动地址参数bootpt与配置选择信号rstrflg的不同,协助主机21使用适当的启动地址startadd加载默认启动程序dftbootpg。

表6为与加载地址选择电路相关的信号列表。表6可作为地址映射逻辑253c产生存储器存取地址最高有效位mmsadd的判断依据。

表6

当启动还原参数rstrflg为0(如表6的第一列与第三列)时,启动程序存放区选择电路253e输出的配置选择信号ssel即对应于与默认启动地址参数bootpt对应的启动程序存放区。以下说明当启动还原参数rstrflg为0时,启动程序存放区boot1、boot2是如何被选定作为主机21加载默认启动程序dftbootpg的来源。

例如,默认启动地址参数bootpt=0时,配置选择信号ssel=0,此时与启动地址选择信号ssel_startadd对应的是启动程序存放区boot1。又如,默认启动地址参数bootpt=1时,配置选择信号ssel=1,此时与启动地址选择信号ssel_startadd对应的是启动程序存放区boot2。

当启动还原参数rstrflg为1(如表6的第二列与第四列)时,启动程序存放区选择电路253e输出的配置选择信号ssel并不会对应于与默认启动地址参数bootpt对应的启动程序存放区。以下说明当启动还原参数rstrflg为1时,启动程序存放区boot1、boot2是如何被选定作为主机21加载默认启动程序dftbootpg的来源。

例如,默认启动地址参数bootpt=0时,配置选择信号ssel=1,此时与启动地址选择信号ssel_startadd对应的是启动程序存放区boot2。又如,默认启动地址参数bootpt=1时,配置选择信号ssel=0,此时与启动地址选择信号ssel_startadd对应的是启动程序存放区boot1。

表6所对应的地址对应关系,不会随着储存区域的选择不同而改变。另一方面,随着系统所定义的作为启动程序存放区boot1、boot2的储存区域不同,经由启动地址选择信号ssel_startadd所决定的启动程序存放区的启动地址,也会跟着所选择的储存区域不同而改变。

此处延续图2的举例,假设当启动程序存放区boot1对应于储存区域d,且启动程序存放区boot2对应于储存区域a的前提下,说明地址转换模块256如何搭配储存区域标识符idsa,产生存取存储器阵列271的存储器存取地址madd。这些地址的对应关系,取决于地址映射逻辑253c的操作,以下请一并参看图8a与图8b。

请参见图8b,其是举例说明地址转换电路如何将主机存取地址hadd拆分为主机存取地址最高有效位hmsadd与主机存取地址最低有效位hlsadd后,再搭配存储器存取地址最高有效位mmsadd产生存储器存取地址madd示意图。

如前所述,本发明可利用储存区域标识符idsa判断存储器阵列271的储存区域。在图2的举例中,假设储存区域共有4个,且储存区域标识符idsa为两个位。此处,依据储存区域标识符idsa的长度,将主机存取地址hadd区分为两个部分。第一个部分为主机存取地址最高有效位(hmsadd),第二个部分为主机存取地址最低有效位(hlsadd)。其中,主机存取地址最高有效位hmsadd的长度,等于储存区域标识符idsa的长度。

例如,若主机存取地址hadd的全长为24位,则第22~23位为主机存取地址最高有效位hmsadd,第0~21位为主机存取地址最低有效位hlsadd。其后,地址映射逻辑253c会根据启动地址选择信号ssel_startadd与主机存取地址最高有效位hmsadd产生存储器存取地址最高有效位mmsadd

例如,在前述图2中假设启动程序存放区boot1对应于储存区域d,且启动程序存放区boot2对应于储存区域a。又,储存区域d的标识符为″11″,而储存区域a的标识符为″00″。因此,启动地址选择信号ssel_startadd=0时,地址映射逻辑253c就以″11″作为存储器存取地址最高有效位mmsadd。启动地址选择信号ssel_startadd=1时,地址映射逻辑253c就以″00″作为存储器存取地址最高有效位mmsadd。

其后,地址译码电路251分别接收主机存取地址最低有效位hlsadd(b0~b21),以及由地址映射逻辑253c产生的存储器存取地址最高有效位mmsadd(b22~b23)。并以组合后的结果作为存储器存取地址madd。

通过地址映射逻辑253c所管理的地址间的对应关系,主机21在传送主机存取地址hadd时,并不需要考虑存储器装置27的配置。换句话说,本发明的存储器装置27在提供多重弹性的储存区域作为主机21执行更新流程时使用的同时,主机21控制存储器阵列271存取操作的负荷并不会增加。

根据前述的实施例可以看出,本发明存储器装置提供多个储存区域,并可弹性自其中选择启动程序存放区,作为储存系统的启动程序使用。本发明的存储器装置提供启动程序的更新功能,能在系统完成启动程序的更新流程时,让主机能顺利切换使用更新版启动程序。此外,针对更新版程序未能顺利执行的情况,也提供还原使用默认启动程序dftbootpg的功能。据此,主机执行启动程序的更新流程时的可能状况均已被纳入考虑,故能使嵌入式系统的开发者能够便利且轻易的使用存储器装置,不须额外费心考虑启动程序的更新与切换所需的设计。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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