CN105027080B - 用于多重启动装置的启动顺序 - Google Patents

用于多重启动装置的启动顺序 Download PDF

Info

Publication number
CN105027080B
CN105027080B CN201480011451.3A CN201480011451A CN105027080B CN 105027080 B CN105027080 B CN 105027080B CN 201480011451 A CN201480011451 A CN 201480011451A CN 105027080 B CN105027080 B CN 105027080B
Authority
CN
China
Prior art keywords
boot
image
boot image
memory
sequence number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480011451.3A
Other languages
English (en)
Other versions
CN105027080A (zh
Inventor
鲁沙恩·塞缪尔
罗德尼·佩萨文托
伊戈尔·沃耶沃达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN105027080A publication Critical patent/CN105027080A/zh
Application granted granted Critical
Publication of CN105027080B publication Critical patent/CN105027080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection

Abstract

一种能够从各自存储启动映像的多个启动装置启动的多重启动装置。所述多重启动装置基于指派给所述启动装置中的每一者的序号确定加载哪个启动装置。一些实施例将仅使用硬件操作进行这一确定。所述多重启动装置比较所述可用启动装置的所述序号以确定待加载的所述启动映像。接着,选定启动映像的地址映射到所述装置的默认启动向量。所述其余映像同样地映射到次要启动存储器。接着,所述装置从所述默认启动向量启动。用户可通过修改所述启动序号中的一或多者改变待加载的所述启动装置。可在不复位所述装置的情况下通过切换执行到所述次要启动存储器中的启动映像及从所述次要启动存储器中的启动映像切换执行而更新所述启动映像。

Description

用于多重启动装置的启动顺序
相关申请案的交叉参考
本申请案主张2013年3月14日申请的第61/784,833号美国临时申请案的权益,所述申请案的全部内容并入本文中。
技术领域
本发明涉及微控制器和微处理器,并且特定来说涉及用于多重启动嵌入式微控制器系统的启动顺序。
背景技术
在供电或复位之后,嵌入式微控制器即必须选择嵌入式系统将从其运行的含有启动映像的启动装置。微控制器可支持一个以上的启动装置的使用。多重启动是指在多个可用启动装置之间选择的微控制器。为支持多重启动,需要允许微控制器从可用启动装置组选择所要启动装置的机构。
系统通常利用默认启动向量来识别含有待加载启动映像的启动装置。有时称作为复位向量的默认启动向量为识别系统目前从其经配置以运行的启动装置的位置的指定地址空间。在重新启动或复位之后,CPU即存取启动向量并且被引导到含有接着被加载的启动映像的启动装置的位置。每一启动映像将通常包含用于嵌入式系统的操作的应用程序代码和用于加载应用程序代码的启动加载程序代码。启动加载程序代码起始系统并且加载用于通过系统执行的应用程序代码。在单个启动系统中,由启动向量识别唯一启动映像。然而,在多重启动系统中,出现关于如何调适这一启动向量机构以在多个可用启动装置之间选择的问题。
支持多重启动的一个解决方案是改变所利用的启动向量。这可通过插入结合复位指令执行的转移指令完成。所述转移指令将系统引导到选定启动装置的位置。另一可能性为在发出复位命令之前重新定义启动向量的位置,使得在复位之后,系统即加载由这一经重新定义启动向量指定的启动映像。另一可能性为通过将启动映像放置在固定地址处并且对系统进行编程以直接从这一地址启动而规避启动向量。
这些常规方法需要在每次选择不同启动装置时对系统的软件进行显著改变。举例来说,如果启动向量的位置改变,那么必须重新编辑启动映像以便利用新的启动向量。由于对启动映像进行改变,所以用户必须确保经更新启动映像根据重新映像的启动向量配置。因为对启动向量的位置的每一改变,所以用户必须将这些改变传播到所有相关启动映像。如果启动向量被整体规避,那么不仅必须重新编辑每一启动映像以指向待使用的启动代码的地址位置,而且必须变更装置逻辑本身以规避默认启动向量,并且(如前文)必须重新编辑每一启动映像以便复位到这一新的启动代码位置。可期望具有每次对选定启动装置进行改变时不需要重新编辑启动映像的可配置多重启动解决方案。可进一步期望能够经由简单硬件配置进行多重启动选择。
发明内容
常规双重启动方法需要实质重新配置以便改变选定启动映像并且不提供以故障自动防护(fail-safe)方式更新启动映像的能力。因此,对允许在硬件中进行启动确定并且提供启动映像的顺畅更新的可配置双重启动解决方案存在需要。现有技术中的这些和其它缺点大部分通过根据本发明的实施例的系统和方法克服。
根据一个实施例,一种用于启动具有第一启动映像和第二启动映像的多重启动装置的方法,其包括:确定与第一启动映像相关联的第一启动序号;确定与第二启动映像相关联的第二启动序号;通过比较第一启动序号与第二启动序号识别选定启动映像,其中所述比较确定第一启动映像或第二启动映像是否为选定启动映像,其中选定启动映像通过装置硬件操作来识别;将选定启动映像的地址映像到由默认启动向量指定的主要启动存储器位置;以及从默认启动向量启动装置。
其它实施例还可包含:确定第一启动序号和确定第二启动序号,其分别包括从与第一启动映像相关联的预定位置读取第一启动序号和从与第二启动映像相关联的预定位置读取第二启动序号。其它实施例还可包含确认已启用装置的多重启动。在其它实施例中,未确定为选定启动映像的启动映像为次要启动映像并且还可包含将次要启动映像的地址映像到次要启动存储器位置,其中可在不影响从主要启动存储器位置执行的装置操作的情况下更新次要启动存储器位置的内容。其它实施例还可包含:处理引导装置从选定启动映像调换到存储在次要启动存储器位置中的启动映像的命令;以及从选定启动映像到存储在次要启动存储器位置中的启动映像切换装置的执行,其中切换在不复位装置的情况下进行。其它实施例还可包含:设置指示装置是否从主要启动存储器位置或次要启动存储器位置执行的配置参数。在其它实施例中,确认启用多重启动包括确定第一启动映像和第二启动映像是否均为有效启动映像。
附图说明
所属领域的技术人员通过参考附图可更好地理解本发明并且明白其许多目的、特征以及优点。不同图式中使用相同参考符号指示类似或相同项。
图1为根据实施例的示范性处理器的框图。
图2示意性地说明实施例的操作。
图3为说明实施例的操作的流程图。
图4为说明实施例的操作的流程图。
具体实施方式
参考附图中说明和下文详细描述的示范性和因此非限制性实施例更完全解释本发明和其各种特征和有利细节。可省略已知编程技术、计算机软件、硬件、操作平台以及协议的描述以免在细节上不必要地模糊本发明。然而,应理解,仅通过说明并且不通过限制给定同时指示优选实施例的详细描述和特定实例。所属领域的技术人员从本发明将变得明白基本发明概念的精神和/或范围中的各种替代、修改、添加和/或重新布置。
如本文中使用,术语“包括(comprise/compring)”、“包含(include/including)”、“具有(has/having)”,或其任何其它变化形式意在涵盖非排他性包含。举例来说,包括一列组件的过程、产品、物品或设备未必仅限于那些元件而可包含未明确列出或此类过程、产品、物品或设备固有的其它元件。此外,除非明确说明相反情形,否则“或”是指包含或而非排他或。举例来说,条件A或B由下列中的任一者满足:A为真(或存在)并且B为假(或不存在)、A为假(或不存在)并且B为真(或存在),以及A和B都为真(或存在)。
此外,本文中给定的任何实例或说明不应以任何方式被视为与其一起被利用的任何术语的约束、限制或表达定义。代替性地,这些实例或说明应被视为关于一个特定实施例描述并且仅为说明性。所属领域的一般技术人员应了解,与这些实例或说明一起被利用的任何术语涵盖其它实施例以及可(或可不)随其一起或在说明书的其它地方给定的其实施方案和调适,并且所有此类实施例意在被包含于所述术语的范围中。指定此类非限制性实例和说明的语言包含(但不限于):“例如”、“在一个实施例中”等等。
如上文所述,嵌入式系统通常从启动映像运行,其中启动映像在存储器中的位置由默认启动向量识别。每当系统启动或复位时,默认启动向量指定待加载的启动映像。这一默认启动向量可位于程序存储器中的任何预定位置处,前提是这一位置作为重新启动或停止之后即待执行的第一启动指令的地址仅为CPU和启动映像所知。在系统启动或复位之后,即由默认启动向量指定的地址识别待加载的启动映像。然而,不同于常规系统,实施例提供经由可在硬件中执行的简单配置过程改变待加载启动映像的能力。
如上文所述,改变默认启动向量的位置是可能的,但需要重新编辑启动映像中的每一者以指向这一新的启动向量位置。代替性地,实施例提供在不需要重新编辑启动映像或变更选定启动映像通过其由系统确定的逻辑的情况下改变待使用的启动映像的能力。换句话说,实施例利用为在系统的任何重新启动或复位之后即执行的第一指令的常规默认启动向量。实施例提供通过重新排序可用启动装置切换启动映像的能力。因此,不同启动装置可通过依序重新排序启动映像被指定为选定启动装置。根据实施例,启动装置可为可指定给启动向量的任何存储器装置,例如内部或外部易失性存储器(例如RAM),或内部或外部非易失性存储器(例如快闪存储器、EEPROM或SD卡)。
根据实施例,启动装置被指派指定启动装置的可用组中含有启动映像的每一启动装置的排名的序号。在重新启动或复位之后,系统即可使用在硬件中实施的状态机来基于启动装置的序号确定可用启动装置的相对顺序。一旦选定启动装置已经识别,则选定启动装置的地址在不变更启动映像的情况下映射到默认启动向量。这允许CPU从重新导向到选定启动映像的默认启动向量常规地启动。以这种方式,可使用可配置序号对任何数目的启动映像进行使用和选择,其中选择所要启动映像的过程可在硬件中实施并且因此在CPU不必加载和执行任何软件的情况下执行。
根据一些实施例,经提供到每一启动映像的序号表示启动映像的相对顺序。在一个实施例中,经指派最小序号的启动映像为选定启动映像,其中具有下一最小序号的启动映像为第一交替选定启动映像。在另一实施例中,经提供最大序号的启动映像为选定启动映像。
在一些实施例中,用于每一启动装置的序号存储在所述启动映像的预定位置中,使得每一启动装置提供用于识别启动装置的序号的标准化机构。以这种方式,用户能够指派针对每一启动装置的序号,使得序号存储为启动映像的部分。接着每一可用启动装置可经查询以确定其经指派序号。在另一实施例中,启动装置序号作为存储器中存在的数据结构存储。可查询这一数据结构以确定可用启动装置和每一启动装置的序号。在另一实施例中,序号存储在启动装置的外部,使得每一序号存储在与启动装置相关联的存储器位置中。
在复位之后,利用序号识别选定启动装置。在一些实施例中,利用状态机读取所有可用启动装置的序号并且确定具有最小(或最大)序号的启动装置。以这种方式,状态机识别选定启动装置。
根据实施例,一旦已使用序号的相对顺序识别选定启动装置,则选定启动装置的地址映像到由默认启动向量指定的启动存储器。因此,选定启动映像将变成在后续重新启动或复位之后即加载的默认启动映像并且将保留默认启动映像直到可用启动映像的序号经变更以指示不同启动映像已经选择。也根据实施例,具有第二排名序号的启动映像的地址映像到次要启动存储器位置。如下文所述,实施例提供给用户触发在启动存储器与次要启动存储器之间调换执行的能力。这提供给装置切换执行到次要启动存储器同时更新启动存储器中的启动映像的机会。这允许故障自动防护更新启动映像并且还允许在不复位装置的情况下进行更新。
接着,CPU从选定启动装置进行执行。根据一些实施例,启动装置的序号可经由应用程序代码中的软件指令改变,其中这些改变累加或累减一或多个启动装置的序号。在装置的启动或复位之后,使用经更新序号确定启动装置的相对顺序。以这种方式,用户可在不必重新编辑任何软件或变更装置的启动逻辑的情况下改变选定启动映像。因此,选定启动映像在硬件中可通过排序可用启动映像的有效序号而确定。
每一启动存储器位置为存储器中含有启动映像的区域,其为CPU可从其运行的一组启动指令和应用程序代码。然而,存储器中对应于启动存储器位置的区域也可为空白的。这允许在存储器中保存区域的能力,但具有产生无效启动映像的效果。接着所述装置可更新这些无效启动映像,同时从有效启动映像执行。
在下文进一步详细解释的另一实施例中,用户可在不必复位装置的情况下从一个启动映像“热调换”到另一启动映像。举例来说,在执行通过第一启动映像加载的应用程序代码时,用户可触发到第二启动映像的执行的立即调换。这提供调换加载在启动存储器中的先前选定启动映像与加载在次要启动存储器中的启动映像的能力,前提是触发保持有效。在一些实施例中,这一暂时性启动映像调换可通过调整启动映像的启动序号经调适用于后续复位。在下一复位之后,启动映像将即相应地重新映像。
现转向图1,展示根据实施例实施多重启动系统的示范性微控制器100的框图。应注意,微控制器的其它配置是可能的。因此,图1为示范性实施例。微控制器100包含总线101和耦合到总线101的中央处理单元(CPU)核心102。CPU核心102可包含一或多个寄存器阵列150、运算逻辑单元154、指令解码模块156以及程序计数器158。在启动或复位之后,CPU核心102即经配置以从存储在程序存储器中的默认启动向量115读取其第一指令。
在图1中说明的实施例中,数据存储器108经由总线101与CPU核心102通信。总线101还将例如中断控制器110和时钟模块111的到微控制器服务的存取提供给CPU核心102。CPU核心102还可经由总线101存取一或多个外围设备114。这些外围设备可完全通过微控制器实施或可在微控制器外部的某些部分中实施。可用于微控制器的外围设备114可实施(例如)时序支持、I/O(输入/输出)接口、PWM(脉冲宽度调制)以及USB功能。
CPU核心102还与程序存储器104通信。在一些实施例中,一或多个启动映像116、118存储在程序存储器104中。其它实施例可允许启动映像存储在单独、专用存储器中。启动映像由第一启动映像116和一或多个第二启动映像118组成。如下文所述,实施例允许微控制器100基于第一启动映像116或第二启动映像118中的一者选择性地启动。如上文所述,一些实施例可提及启动存储器位置、区域或装置而非启动映像。因此,在一些实施例中,第一启动映像116和第二启动映像118可表示为存储器中的区域,所述区域为不保证所述区域含有有效启动映像的启动存储器位置。
根据图1的实施例,默认启动向量115位于程序存储器104中。CPU核心102经配置以从默认启动向量115读取其第一指令。一些实施例可允许启动向量115位于其它非易失性或易失性存储器中。默认启动向量115可位于程序存储器中的任何地方,前提是CPU核心102已经配置以在启动或复位之后即存取默认启动向量115。默认启动向量115指定待加载启动映像在存储器中的位置,其称作为启动存储器130。因此,在启动或复位之后,CPU核心102即存取默认启动向量115并且被导向到启动存储器130的地址,所述地址已映像到存储选定启动映像的选定启动装置的地址。
装置还可经由次要启动存储器135将其它启动映像留存在程序存储器中。基于启动映像通过序号的排序,选定启动映像被识别并且其地址映像到启动存储器130。第二排名的启动映像为第一交替启动映像并且其地址映像到次要启动存储器135。接着,用户可如需要触发启动存储器130与次要启动存储器135的切换执行以便以故障自动防护方式更新这些启动映像。
在一些实施例中,启动映像116、118包含用于存储启动序号的预定位置。如图1中说明,第一启动映像由一启动序号128组成,启动序号128用以确定第一启动映像相对于已被指定启动序号的其它可用启动映像的相对顺序。以这种相同方式,第二启动映像也由启动序号126组成,启动序号126指定可用启动映像组中的第二启动映像的相对顺序。
为促进可用启动映像的相对顺序的确定,以标准方式确定每一启动映像的启动序号。在一些实施例中,启动序号将存储在启动映像中的预定位置中。举例来说,每一启动映像的启动序号可位于存储器地址处,所述存储器地址位于距启动映像的第一指令固定位移处。在一些实施例中,启动映像中启动序号存储于其处的存储器地址可用作为启动映像中可在预定位置处查询的变量。在一些实施例中,已经指定的启动序号存储在数据结构中。在这一案例中,可通过查询此数据结构确定可用启动映像的相对顺序以获得每一启动映像的序号。在一些实施例中,启动序号将存储在启动映像外部的非易失性存储器中。
每一可用启动映像可被指定启动序号。然而,实施例可仅将序号指定给一子组的可用启动映像。在此类案例中,不具有序号的启动映像将排序在具有经指定序号的所有启动映像之后。在一些实施例中,一些可用启动装置可为无效的并且因此不能以这种方式排序。对于这些无效启动装置,查询其序号传回错误。这些无效启动映像将不映像到任何启动存储器并且因此不作为多重启动装置的启动选项存在。
图1还说明由用以在一些实施例中引导启动过程的专用配置寄存器组成的启动面板。一个此寄存器为可用以确定微控制器100是否执行双重启动过程的双重启动控制寄存器122。如下文更详细解释,如果双重启动寄存器122的值不启用双重启动,那么装置将微控制器作为单个启动装置进行启动。配置寄存器还可包括用以识别当前加载的启动映像并且命令装置进行到指定启动映像(例如,次要启动存储器中的启动映像)的热调换的启动调换寄存器124。可存在进一步引导启动顺序过程的额外配置寄存器。
图2示意性地说明用于根据实施例利用启动序号的过程。在启动或复位之后,装置即读取两个可用启动映像116、118的序号。在步骤201处,确定第一启动映像116的启动序号128。在步骤202处,确定第二启动映像的启动序号126。在步骤205处,装置接着比较第一启动映像序号128与第二启动映像序号126。基于这一比较,识别选定启动映像210和第一交替启动映像215。在步骤220处,将存储选定启动映像210的启动装置的地址映像到启动存储器位置130。在步骤230处,将第一交替启动映像215的地址映像到次要启动存储器位置135。在一些实施例中,其余有效启动映像的地址依序映像到次要启动存储器。在步骤235处,接着CPU核心通过存取默认启动向量常规地启动并且被重新导向到存储选定启动映像的启动装置的地址。CPU核心从选定启动映像进行启动。
根据一些实施例,可利用有限状态机120识别选定启动映像。使用有限状态机识别选定启动映像有利于在硬件中实施可配置双重启动的实施例。使用有限状态机120进行启动序号的成对比较以确定其相对顺序。在图2中,使用有限状态机120确定第一启动映像116和第二启动映像118的启动序号的相对顺序。在步骤201和202处,确定启动映像中的每一者的启动序号。如上文所述,根据一些实施例,每一启动映像的启动序号可存储在启动映像的预定地址位置处。其它实施例可允许启动序号存储在存储器中的其它固定位置或数据结构中。在步骤205处,接着有限状态机比较第一启动映像的启动序号128与第二启动映像的启动序号126。
在图2的实例中,仅说明两个启动映像的相对顺序。然而,应注意可使用有限状态机120确定任何数目的启动映像的相对顺序。有限状态机120同时比较两个启动映像的启动序号。然而,根据所属领域中已知的算法,可进行一系列成对比较以确定任何数目的启动映像的启动序号的相对顺序。
在图3的实施例中,装置基于是否已要求双重启动或多个启动映像是否可用于启动而对是否进行双重启动进行初步确定。在步骤302处,装置经历启动或复位。在步骤304处,读取需用以确定是否进行双重启动的配置数据。在一个实施例中,存取启动配置板以读取编码双重启动指令的配置位。在一些实施例中,这些配置位可位于双重启动寄存器122中。其它实施例可代替地将这些配置位存储在程序存储器中的固定位置中。在一些实施例中,基于是否可识别多个有效启动映像确定双重启动。因此,在步骤304处,CPU核心存取每一可用启动映像的启动序号。
在步骤306处,装置确定是否已启用双重启动。如果使用配置位,那么实施例将确定这些位是否启用双重启动。如果双重启动是基于有效启动序号,那么实施例将评估已识别的启动序号以确定两个或两个以上的有效启动映像是否可用。如果仅识别一个有效启动映像或配置位指定不启用双重启动,那么在步骤315处,装置通过从默认启动向量启动而以单个启动配置启动。如果未识别有效启动映像,那么CPU核心从由默认启动向量指定的启动映像启动,所述启动映像将为最后已知有效的启动映像。
如果步骤306确定双重启动启用,那么接着如关于图2的实施例描述确定选定启动映像。在步骤310处,确定第一启动映像116和第二启动映像118的启动序号。基于步骤312处进行的启动序号比较,确定第一启动映像116或第二启动映像118为选定启动映像。如果第一启动映像116的启动序号为最小启动序号或等于最小序号,那么在步骤320处,第一启动映像的地址映射到启动存储器,并且在步骤325处,第二启动映像的地址映射到次要启动存储器。相反地,如果第二启动映像118的启动序号为最小启动序号,那么在步骤330处,第二启动映像的地址映射到启动存储器,并且在步骤335处,第一启动映像的地址映像到次要启动存储器。
图4中展示启动映像热调换通过其进行的过程。在过程步骤402处,根据第一启动映像116执行装置。在这时,启动调换寄存器124发出热调换当前无效的信号。在步骤410处,使用启动调换寄存器124确定是否进行启动调换。在一些实施例中,启动调换寄存器124可编码引导启动调换进行的值。举例来说,键入启动调换寄存器的零可指示应维持当前启动映像,并且键入一可指示应调换当前启动映像。另一可能性为启动调换寄存器124编码目前加载的启动装置的装置号码。只要启动调换寄存器124含有对应于当前正执行的启动映像的装置号码,就不进行调换。如果启动调换寄存器124经改变以指向不同装置号码,那么这发出应进行启动调换的信号。又一可能性为在软件中经由启动调换指令指定启动调换。这一实施例为图4的其余元件的焦点。如果启动调换寄存器124指示目前不需要启动调换,那么装置继续监测启动调换寄存器直到识别任何此指示。
在过程步骤410处,确定用户已引导装置进行启动映像的热调换。在图4的实施例中,用户将通过发出BOOTSWP指令触发启动映像的热调换,所述BOOTSWP指令之后接着GOTO<target>指令,其中所述<target>指定待热调换的启动映像。举例来说,<target>将指定第二启动映像118作为代替作用中启动映像的待调换的启动映像。在步骤404处,CPU核心102执行BOOTSWP指令并且中断当前作用中第一启动映像116的执行。
在过程步骤406处,CPU核心102执行GOTO指令并且直接转移到<target>启动映像,例如,第二启动映像118。在执行这一转移之后,CPU核心102即开始执行第二启动映像118。这导致在不复位装置并且不改变现存装置配置的情况下从第一启动映像116到第二启动映像118的热调换。在步骤408处,配置数据经更新以表明已热调换作用中启动映像。举例来说,启动调换寄存器124经更新以指示目前不要求热调换或指定目前正执行的启动映像的地址。
启动映像的热调换本身不变更映像到启动存储器的启动映像并且因此不改变将在装置的复位之后即加载的启动映像。因此,即使第二启动映像118可能已经热调换代替第一启动映像116,如果第一启动映像116仍映像到启动存储器,则装置在后续启动或复位之后将即加载第一启动映像116。除非对启动映像的启动序号进行更改,热调换将继续持续到仅装置复位为止的暂时性调换。可经由更新启动序号的先前描述过程使启动映像的热调换成为持久调换。举例来说,如果用户已热调换到第二启动映像118,那么调换可通过重新指定可用启动映像的启动序号成为持久性的,使得第二启动映像118具有导致第二启动映像118映像到默认启动向量115的最小启动序号。
实施例提供的一个优点为用于更新启动映像的故障自动防护机构。如果正执行的目前作用中启动映像接收更新,那么实施例提供用于进行这一更新的故障自动防护方法。举例来说,经更新启动映像可存储到次要启动存储器。一旦经更新启动映像已经确认,则序号可经更新用于正执行启动映像和经更新启动映像,如上文所述,使得经更新启动映像现具有最小/最大序号使得其在下一启动或复位之后将即被确定为选定启动映像。如果在更新期间的任何时间发生电源故障使得经更新启动映像损坏,那么装置可从当前正执行启动映像继续操作。如果在确认经更新启动映像之后但序号更新期间发生电源故障;那么经更新序号为有效的使得新的启动映像正确地被识别为选定启动映像,或所述序号是无效的使得当前正执行启动代码基于其仍位于启动存储器中并且由默认启动向量识别而被加载。
尽管前述说明书描述特定实施例,然而所属领域的一般技术人员参考这一描述将明白并且可进行本文中揭示的实施例和额外实施例的许多细节改变。在这一内容背景下,说明书和图式应被视为说明性而非限制性意义,并且所有此类修改意在被包含于本发明的范围中。因此,本发明的范围应由所附权利要求书和其合法等效物确定。

Claims (13)

1.一种用于启动具有第一启动映像和第二启动映像的多重启动装置的方法,其中所述多重启动装置包括中央处理单元,其中所述中央处理单元与存储所述第一启动映像及所述第二启动映像的程序存储器耦合,所述方法包括:
确定与所述第一启动映像相关联且存储于所述程序存储器中的第一启动序号;
确定与所述第二启动映像相关联且存储于所述程序存储器中的第二启动序号;
通过比较所述第一启动序号与所述第二启动序号识别选定启动映像,其中所述比较确定所述第一启动映像或所述第二启动映像是否为所述选定启动映像,其中所述选定启动映像通过装置硬件操作识别;
将所述选定启动映像的地址映射到由默认启动向量指定的于所述程序存储器中的主要启动存储器;以及
从所述默认启动向量启动所述装置;
其中未确定为所述选定启动映像的所述启动映像为次要启动映像并且所述方法进一步包括:
将所述次要启动映像的地址映射到次要启动存储器位置,其中可在不影响从所述主要启动存储器位置执行的装置操作的情况下更新所述次要启动存储器位置的内容;
处理引导所述装置从所述选定启动映像调换到存储在所述次要启动存储器位置中的所述启动映像的命令;以及
其中所述命令包括专用指令,所述专用指令之后是转移指令。
2.根据权利要求1所述的方法,其中确定所述第一启动序号和确定所述第二启动序号分别包括:从所述第一启动映像中的预定位置读取所述第一启动序号和从所述第二启动映像中的预定位置读取所述第二启动序号。
3.根据权利要求1所述的方法,所述方法进一步包括:
通过读取所述装置中的相关联的特殊功能寄存器确认已启用所述装置的多重启动。
4.根据权利要求1所述的方法,所述方法进一步包括:
将所述装置的执行从所述选定启动映像切换到存储在所述次要启动存储器位置中的所述启动映像,其中所述切换在不复位所述装置的情况下进行。
5.根据权利要求4所述的方法,所述方法进一步包括:
设置指示所述装置是否从所述主要启动存储器位置或所述次要启动存储器位置执行的于所述装置的特殊功能寄存器中的配置参数。
6.根据权利要求3所述的方法,其中确认启用多重启动包括:确定所述第一启动映像和所述第二启动映像是否均为有效启动映像。
7.根据权利要求1-6的任一权利要求所述的方法,其中所述装置是包括至少一部分的所述程序存储器的微控制器。
8.一种包括经配置以执行来自存储第一启动映像和第二启动映像的程序存储器的指令的中央处理单元的多重启动装置,
其中所述程序存储器包括用于与所述第一启动映像相关联的第一启动序号的存储器存储装置;
其中所述程序存储器包括用于与所述第二启动映像相关联的第二启动序号的于所述程序存储器中的存储器存储装置;
其中所述装置进一步包括状态机,其在复位后可操作以通过比较所述第一启动序号与所述第二启动序号而识别选定启动映像,其中所述比较确定所述第一启动映像或所述第二启动映像是否为所述选定启动映像;
其中所述程序存储器包括主要启动映像存储器存储装置,其中所述选定启动映像的地址映射到所述主要启动映像存储器存储装置;
其中所述装置包括默认启动向量,其中所述默认启动向量在所述中央处理单元启动或复位之后即通过所述中央处理单元存取,并且其中所述启动向量指定所述主要启动映像映射到所述主要启动映像存储器存储装置在存储器中的位置;
其中:
未确定为所述选定启动映像的所述启动映像为次要启动映像,并且所述装置进一步包括:
次要启动存储器存储位置,其用于存储所述次要启动映像,所述次要启动映像映射到次要启动存储器存储装置,其中可在不影响从所述主要启动存储器执行的装置操作的情况下更新所述次要启动存储器位置的内容;
其中所述装置经配置以处理引导从所述选定启动映像到存储在所述次要启动存储器中的所述启动映像的调换的命令;以及
其中所述命令包括专用指令,所述专用指令之后是转移指令。
9.根据权利要求8所述的多重启动装置,其中所述第一启动序号存储在所述第一启动映像中的预定位置处,并且所述第二启动序号存储在所述第二启动映像中的预定位置处。
10.根据权利要求8所述的多重启动装置,其中在不复位所述装置的情况下所述装置的执行从所述选定启动映像切换到存储在所述次要启动存储器中的所述启动映像。
11.根据权利要求10所述的多重启动装置,所述装置是微控制器,其进一步包括:
用于配置参数的存储器存储装置,其中所述参数指示所述装置是否从所述主要启动存储器或所述次要启动存储器执行。
12.根据权利要求8所述的多重启动装置,其中所述装置通过确定所述第一启动映像和所述第二启动映像是否均为有效启动映像而确定是否启用多重启动。
13.根据权利要求8-12中的任一权利要求所述的多重启动装置,其中所述装置是包括至少一部分的所述程序存储器的微控制器。
CN201480011451.3A 2013-03-14 2014-03-13 用于多重启动装置的启动顺序 Active CN105027080B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361784833P 2013-03-14 2013-03-14
US61/784,833 2013-03-14
PCT/US2014/026424 WO2014160375A1 (en) 2013-03-14 2014-03-13 Boot sequencing for multi boot devices

Publications (2)

Publication Number Publication Date
CN105027080A CN105027080A (zh) 2015-11-04
CN105027080B true CN105027080B (zh) 2020-03-13

Family

ID=50625128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480011451.3A Active CN105027080B (zh) 2013-03-14 2014-03-13 用于多重启动装置的启动顺序

Country Status (6)

Country Link
US (1) US9733950B2 (zh)
EP (1) EP2972809B1 (zh)
KR (1) KR20150129692A (zh)
CN (1) CN105027080B (zh)
TW (1) TWI661357B (zh)
WO (1) WO2014160375A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014160375A1 (en) * 2013-03-14 2014-10-02 Microchip Technology Incorporated Boot sequencing for multi boot devices
JP5875558B2 (ja) * 2013-08-28 2016-03-02 京セラドキュメントソリューションズ株式会社 情報処理装置
US9652252B1 (en) * 2014-10-29 2017-05-16 Xilinx, Inc. System and method for power based selection of boot images
EP3319540B1 (en) * 2015-07-07 2024-01-24 Intuitive Surgical Operations, Inc. Control of multiple devices
US10191811B2 (en) * 2015-08-13 2019-01-29 Quanta Computer Inc. Dual boot computer system
US10545768B2 (en) * 2016-10-27 2020-01-28 Ricoh Company, Ltd. Information processing apparatus, information processing method, and recording medium
CN106648947B (zh) * 2016-12-22 2019-09-13 北海市云盛科技有限公司 一种测试多控制器存储设备的方法和装置
KR102617354B1 (ko) 2017-01-05 2023-12-26 삼성전자주식회사 보안 부트 시퀀서 및 보안 부트 장치
KR102445674B1 (ko) * 2017-12-18 2022-09-22 삼성전자주식회사 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법
US10990372B2 (en) 2018-09-20 2021-04-27 Microsoft Technology Licensing, Llc Updating an edge computing device
US11057240B2 (en) 2018-12-20 2021-07-06 Rolls-Royce North American Technologies Inc. Method and process for securing an executable image
US11113074B2 (en) * 2019-06-28 2021-09-07 Qualcomm Incorporated System and method for modem-directed application processor boot flow
US11048521B2 (en) * 2019-09-25 2021-06-29 Adva Optical Networking Se Resilient upgradable boot loader with power reset
US11221858B1 (en) * 2020-10-07 2022-01-11 Dell Products L.P. System control processor (SCP) boot system
CN112764814B (zh) * 2021-01-13 2023-11-10 西藏子墨网络科技有限公司 移动终端启动存储器设置方法、装置、终端及介质
US11507385B1 (en) 2021-04-30 2022-11-22 Cortina Access, Inc. Embedded electronic device, boot method, and embedded electronic device readable recording medium with stored program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822582A (en) * 1996-07-19 1998-10-13 Compaq Computer Corporation Boot drive selection and hibernation file detection
US6754818B1 (en) * 2000-08-31 2004-06-22 Sun Microsystems, Inc. Method and system for bootstrapping from a different boot image when computer system is turned on or reset
CN102830990A (zh) * 2012-07-20 2012-12-19 大唐移动通信设备有限公司 一种计算机系统启动方法及计算机终端

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6158002A (en) * 1998-08-14 2000-12-05 Adaptec, Inc. Method and apparatus of boot device switching by a floppy disk
US7761653B2 (en) * 1999-08-04 2010-07-20 Super Talent Electronics, Inc. Flash micro-controller with shadow boot-loader SRAM for dual-device booting of micro-controller and host
US6493822B1 (en) 1999-09-16 2002-12-10 International Business Machines Corporation Foreign drive determination and drive letter conflict resolution
US6986033B2 (en) 2002-09-10 2006-01-10 Veritas Operating Corporation System for automated boot from disk image
JP3906825B2 (ja) * 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
US20060085629A1 (en) 2003-12-24 2006-04-20 Intel Corporation Mapping a reset vector
CN1658185A (zh) 2004-02-18 2005-08-24 国际商业机器公司 相互独立地共存多个操作系统的计算机系统与其切换方法
US20050273588A1 (en) * 2004-06-08 2005-12-08 Ong Soo K Bootstrap method and apparatus with plural interchangeable boot code images
US7900036B2 (en) * 2006-12-18 2011-03-01 International Business Machines Corporation System and method for implementing boot/recovery on a data processing sysem
US7925877B2 (en) * 2007-09-27 2011-04-12 Texas Instruments Incorporated Method, system and apparatus for providing a boot loader of an embedded system
US8751783B2 (en) * 2011-01-20 2014-06-10 Hewlett-Packard Development Company, L.P. Booting computing devices with EFI aware operating systems
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9558012B2 (en) * 2013-02-21 2017-01-31 Applied Micro Circuits Corporation System boot with external media
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
WO2014160375A1 (en) * 2013-03-14 2014-10-02 Microchip Technology Incorporated Boot sequencing for multi boot devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822582A (en) * 1996-07-19 1998-10-13 Compaq Computer Corporation Boot drive selection and hibernation file detection
US6754818B1 (en) * 2000-08-31 2004-06-22 Sun Microsystems, Inc. Method and system for bootstrapping from a different boot image when computer system is turned on or reset
CN102830990A (zh) * 2012-07-20 2012-12-19 大唐移动通信设备有限公司 一种计算机系统启动方法及计算机终端

Also Published As

Publication number Publication date
EP2972809B1 (en) 2020-12-30
EP2972809A1 (en) 2016-01-20
CN105027080A (zh) 2015-11-04
TWI661357B (zh) 2019-06-01
US20140281466A1 (en) 2014-09-18
KR20150129692A (ko) 2015-11-20
TW201447757A (zh) 2014-12-16
US9733950B2 (en) 2017-08-15
WO2014160375A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
CN105027080B (zh) 用于多重启动装置的启动顺序
US7925877B2 (en) Method, system and apparatus for providing a boot loader of an embedded system
JP5220747B2 (ja) 不揮発性記憶装置および不揮発性記憶システム
US7908470B1 (en) Multi-processor computer with plural boot memories
US20170046151A1 (en) System and method for adding and storing groups of firmware default settings
US9298470B2 (en) Method and apparatus for selecting bios program for a processor
US20090113196A1 (en) Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8443183B2 (en) Pre-boot loader for reducing system boot time
WO2012071852A1 (zh) 引导程序的升级方法和装置
US9261932B2 (en) Minimizing switchover time in a hot swappable program memory
US20120117367A1 (en) Electronic apparatus and booting method thereof
JP2020030812A (ja) 更新されたファームウェアコードの検索
JP4052265B2 (ja) 情報処理装置とデバイスドライバのロード方法並びにプログラム
US9858083B2 (en) Dual boot panel SWAP mechanism
CN113064637B (zh) 从分离的bios映像文件启动的方法及系统
CN114047952B (zh) 用于单片机的处理器、方法、单片机和存储介质
JP2013246630A (ja) ブートシステムおよびシステム初期化方法
US20130227343A1 (en) Circuits and Methods for Replacing Defective Instructions
TWI556171B (zh) 主機板及開機的方法
US11614949B2 (en) Method and device for managing operation of a computing unit capable of operating with instructions of different sizes
TW201337762A (zh) Bios啟動裝置及主機板
JP6962669B2 (ja) 情報処理装置、制御方法およびプログラム
JP2004334593A (ja) メモリブリッジ装置
KR20150027391A (ko) Fpga 데이터 구성 시스템 및 그 방법
CN115794241A (zh) 计算机系统的启动方法和计算机系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant