CN105700901A - 一种启动方法、装置和计算机系统 - Google Patents
一种启动方法、装置和计算机系统 Download PDFInfo
- Publication number
- CN105700901A CN105700901A CN201410709138.9A CN201410709138A CN105700901A CN 105700901 A CN105700901 A CN 105700901A CN 201410709138 A CN201410709138 A CN 201410709138A CN 105700901 A CN105700901 A CN 105700901A
- Authority
- CN
- China
- Prior art keywords
- address
- bootstrap
- nand
- instruction
- flash
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000001514 detection method Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000002679 ablation Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/4408—Boot device selection
Abstract
本发明实施例提供一种启动方法、装置和计算机系统,涉及计算机领域,用以降低由于Nand-Flash出现坏块导致系统启动失败的概率。该方法包括:启动装置在CPU启动系统失败时,接收备份区选择指令,该备份区选择指令用于指示该启动装置从Nand-Flash的备份区中读取引导程序;接收该CPU发送的程序读取指令,该程序读取指令中包括该引导程序在该Nand-Flash中的主区地址;根据该主区地址从主备地址对应关系中获取该引导程序在该Nand-Flash中的备份地址;从该Nand-Flash的备份地址中读取该引导程序;将该引导程序发送至该CPU,以使该CPU根据该引导程序启动系统。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种启动方法、装置和计算机系统。
背景技术
计算机系统在上电时,会首先执行一段引导程序(bootloader),用于引导系统启动和硬件的初始化。
通常会采用Nand-Flash存放引导程序。计算机系统上电的时候,CPU(CentralProcessingUnit,中央处理器)会从Nand-Flash读取引导程序,并写入至RAM(RandomAccessMemory,随机存取存储器)中执行。
Nand-Flash通常以块(Block)为单位存储数据。在写入过程中,Nand-Flash容易产生坏块,坏块将无法被读取和写入。这样,一旦存放引导程序的Block成为坏块,则将导致系统启动失败。
另外,在引导程序升级过程中,如果发生掉电,也可能导致Nand-Flash中的引导程序被破坏,致使系统启动失败。
发明内容
本发明提供一种启动方法、装置和计算机系统,用以降低由于Nand-Flash出现坏块导致系统启动失败的概率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种启动方法,其特征在于,包括:
启动装置在中央处理器CPU启动系统失败时,接收备份区选择指令,所述备份区选择指令用于指示所述启动装置从存储器的备份区中读取引导程序;所述存储器为Nand-Flash;
接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序在所述Nand-Flash中的主区地址;
根据所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,其中,所述主备地址对应关系中包括所述主区地址和所述备份地址的对应关系;
从所述Nand-Flash的备份地址中读取所述引导程序;
将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
在第一方面的第一种可能的实现方式中,在所述获取所述引导程序在所述Nand-Flash中的备份地址之后,包括:
根据所述备份地址生成备份程序读取指令;所述备份程序读取指令包括所述引导程序的在所述Nand-Flash中的备份地址;
所述从所述备份地址中读取所述引导程序包括:
向所述Nand-Flash发送所述备份程序读取指令,以从所述备份地址中读取所述引导程序。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述将所述引导程序发送至所述CPU之前,包括:
检测读取的第一块Block是否为坏块,并在确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
第二方面,提供一种启动装置,包括:
第一接收单元,用于在中央处理器CPU启动系统失败时,接收备份区选择指令,所述备份区选择指令用于指示所述启动装置从存储器的备份区中读取引导程序;所述存储器为Nand-Flash;
第二接收单元,用于接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序的在所述Nand-Flash中的主区地址;
获取单元,用于根据所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,其中,所述主备地址对应关系中包括所述主区地址与所述备份地址的对应关系;
存储单元,用于存储所述主备地址对应关系;
读取单元,用于从所述Nand-Flash的备份地址中读取所述引导程序;
发送单元,用于将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
在第二方面的第一种可能的实现方式中,还包括:
指令生成单元,用于根据所述备份地址生成备份程序读取指令;所述备份程序读取指令包括所述引导程序在所述Nand-Flash中的备份地址;
所述读取单元还用于,向所述Nand-Flash发送所述备份程序读取指令,从所述备份地址中读取所述引导程序。
结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述启动装置还包括:检测单元,更改单元和指示单元;
所述检测单元,用于检测读取的第一块Block是否为坏块;
所述更改单元,用于在所述检测单元确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
所述指示单元,用于向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
第三方面,提供另一种启动装置,与存储器相连,所述存储器为Nand-Flash,所述启动装置包括:多路选择模块和与所述多路选择模块相连的数据处理模块;
所述多路选择模块,用于在中央处理器CPU启动系统失败时,接收复位装置发送的备份区选择指令,所述备份区选择指令用于指示所述启动装置从所述Nand-Flash的备份区中读取引导程序;还用于接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序的在所述Nand-Flash中的主区地址,将所述程序读取指令发送至所述数据处理模块;
所述数据处理模块,用于根据所述程序读取指令中的所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,所述主备地址对应关系中包括所述主区地址与备份地址的对应关系;还用于从所述Nand-Flash的备份地址中读取所述引导程序,并将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
在第三方面的第一种可能的实现方式中,所述数据处理模块具体用于根据所述备份地址生成备份程序读取指令;所述备份程序读取指令中包括所述引导程序在所述Nand-Flash中的备份地址;
向所述Nand-Flash发送所述备份程序读取指令,以从所述备份地址中读取所述引导程序。
结合第三方面或者第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据处理模块还用于检测读取的第一Block是否为坏块;
在确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
结合第三方面至第三方面的第二种可能的实现方式中的任一种可能的实现方式,在第三种可能的实现方式中,所述多路选择模块包括第一通道和第二通道,其中,所述多路选择模块通过所述第一通道直接连接所述Nand-Flash,所述多路选择模块通过所述第二通道与所述数据处理模块相连,所述数据处理模块连接所述Nand-Flash;
所述多路选择模块具体用于:
根据所述备份区选择指令通过所述第二通道向所述数据处理模块发送所述程序读取指令。
结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述多路选择模块还用于,接收所述CPU发送的控制指令;
根据所述控制指令通过所述第一通道将接收到的所述CPU发送的数据读取指令发送至所述Nand-Flash;所述数据读取指令为所述CPU在系统启动后,发送的用于读取所述Nand-Flash中的数据的指令。
第四方面,提供一种计算机系统,包括中央处理器CPU,存储器,和复位装置,还包括启动装置;
其中,所述存储器为Nand-Flash,所述启动装置分别与所述CPU,所述复位装置和所述Nand-Flash相连;
所述启动装置为第二方面至第二方面的第二种可能的实现方式中任一种可能的实现方式所述的启动装置;或者,所述启动装置为第三方面至第三方面的第四种可能的实现方式中任一种可能的实现方式所述的启动装置;
所述Nand-Flash包括主区和备份区;其中,所述主区和所述备份区分别存储有引导程序;
所述复位装置用于,在所述CPU启动系统失败时,向所述启动装置发送备份区选择指令,所述备份区选择指令用于指示所述启动装置从所述Nand-Flash的备份区中读取引导程序;
所述CPU用于,向所述启动装置发送程序读取指令,并接收所述启动装置返回的所述引导程序,运行所述引导程序并启动系统。
采用上述方案,Nand-Flash的主区和备份区分别存储有引导程序,在CPU发送的程序读取指令不变的情况下,启动装置根据复位装置发送的备份区选择指令,读取该Nand-Flash备份区中的引导程序,并将该引导程序返回至该CPU,相比现有技术中CPU只能读取到该Nand-Flash主区中的引导程序,本发明降低了因为主区中出现坏块而导致计算机系统启动失败的概率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种计算机系统的结构示意图;
图2为本发明实施例提供的另一种计算机系统的结构示意图;
图3为本发明实施例提供的又一种计算机系统的结构示意图;
图4为本发明实施例提供的一种启动方法的流程示意图;
图5为本发明实施例提供的一种Nand-Flash的主区与备份区的示意图;
图6为本发明实施例提供的另一种启动方法的流程示意图;
图7为本发明实施例提供的一种启动装置的结构示意图;
图8为本发明实施例提供的另一种启动装置的结构示意图;
图9为本发明实施例提供的又一种启动装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供一种计算机系统10的结构示意图,该计算机系统10包括:中央处理器CPU11,存储器,复位装置12和启动装置13。
其中,该存储器为Nand-Flash14,该启动装置13分别与该CPU11,该Nand-Flash14和该复位装置12相连。
该Nand-Flash14包括主区和备份区;其中主区和备份区分别存储有引导程序。
该复位装置12,用于在该CPU11启动系统失败时,向该启动装置13发送备份区选择指令,所述备份区选择指令用于指示所述启动装置从存储器的备份区中读取该引导程序。
该启动装置13,用于控制该CPU11从该Nand-Flash14的主区或备份区保存的引导程序启动。具体地,该启动装置13,用于在该CPU11启动系统失败时,接收该复位装置12发送的备份区选择指令;接收该CPU11发送的程序读取指令,该程序读取指令中包括该引导程序在该Nand-Flash14中的主区地址;根据该主区地址,从主备地址对应关系中获取该引导程序在该Nand-Flash14中的备份地址,其中,该主备地址对应关系中包括该主区地址和备份地址的对应关系;从该Nand-Flash14的备份地址中读取该引导程序;将该引导程序发送至该CPU11。
该CPU11用于,向该启动装置13发送该程序读取指令,并接收该启动装置13返回的引导程序,运行所述引导程序并启动系统。
该计算机系统10在首次上电启动时,该CPU11发送程序读取指令至该Nand-Flash14,读取该Nand-Flash14主区中的引导程序,若该Nand-Flash14的主区中存在坏块,该CPU11无法读取坏块;或者,该CPU11成功从该Nand-Flash14的主区中读取到引导程序,但是该引导程序由于升级时发生断电情况,已经被破坏,在上述两种情况发生时,该CPU运行该引导程序出错,均会导致该复位装置12控制系统复位。
其中,该复位装置12在控制系统复位的同时,向该启动装置13发送该备份区选择指令。这样,在该计算机系统复位后,该CPU11重新发送程序读取指令,该启动装置13在接收到该CPU11重新发送的该程序读取指令后,从该Nand-Flash14的备份地址中读取该引导程序,并将该引导程序发送至该CPU11。
具体地,该复位装置12每次控制系统复位后,向该启动装置13发送高低电平翻转的信号,该启动装置13可以根据该高低电平选择读取该Nand-Flash14的主区或者备份区中的引导程序,例如,该复位装置12向该启动装置13输出低电平时,该启动装置13选择读取Nand-Flash14的主区中的引导程序;该复位装置12向该启动装置13输出高电平时,该启动装置13选择读取Nand-Flash14的备份区中的引导程序,此时,该备份区选择指令即为该复位装置12输出的高电平。
因此,采用上述计算机系统,该计算机系统中的启动装置使得CPU不感知Nand-Flash分为主区和备份区,并备份存储引导程序,在CPU发送的程序读取指令不变的情况下,根据复位装置发送的备份区选择指令,读取该Nand-Flash备份区中的引导程序,并将该引导程序返回至该CPU,降低了因为主区中出现坏块而导致该计算机系统启动失败的概率。
如图2所示,本发明实施例提供的启动装置13可以包括多路选择模块131和数据处理模块132;所述多路选择模块131分别与所述CPU11和所述Nand-Flash14相连。进一步地,所述多路选择模块131通过第一通道与该Nand-Flash14直接相连,使得所述CPU11可以直接访问所述Nand-Flash14的主区;所述多路选择模块131通过第二通道与所述数据处理模块132相连,所述数据处理模块与所述Nand-Flash14相连,使得所述CPU11通过所述数据处理模块132可以访问所述Nand-Flash14的备份区。所述多路选择模块131通过接收所述复位装置发送的指令,选择所述第一通道或所述第二通道。
该多路选择模块131,用于在该CPU11启动系统失败时,接收该复位装置12发送的备份区选择指令,该备份区选择指令用于指示该启动装置13从该Nand-Flash14的备份区中读取引导程序;还用于接收该CPU11发送的程序读取指令,并将该程序读取指令发送至该数据处理模块132,该程序读取指令中包括该引导程序的在该Nand-Flash14中的主区地址。
该数据处理模块132,用于根据该程序读取指令中的该主区地址,从主备地址对应关系中获取该引导程序在该Nand-Flash14中的备份地址,所述主备地址对应关系中包括该主区地址与该备份地址的对应关系;还用于从该Nand-Flash14的备份地址中读取该引导程序,并将该引导程序发送至该CPU11。
具体地,在系统首次上电启动时,该多路选择模块131在接收到该CPU11发送的程序读取指令时,通过该第一通道将该程序读取指令直接发送至该Nand-Flash14,以便该CPU11读取该Nand-Flash14的主区中的引导程序。该多路选择模块131在接收到该复位装置12发送的备份区选择指令后,通过该第二通道将接收到的该CPU11发送的程序读取指令发送至该数据处理模块132。
进一步地,该数据处理模块132在获取到该引导程序在该Nand-Flash14中的备份地址后,根据该备份地址生成备份程序读取指令,并向该Nand-Flash发送该备份程序读取指令,以从该备份地址中读取该引导程序。其中,该备份程序读取指令包括该引导程序的在该Nand-Flash14中的备份地址。
需要说明的是,该数据处理模块132在接收到该程序读取指令后,也可以对该程序读取指令进行修改,根据修改后的程序读取指令读取该Nand-Flash14的备份地址中的引导程序,该修改后的程序读取指令包括该引导程序的在该Nand-Flash14中的备份地址。本发明实施例对此不做限定。
进一步地,该数据处理模块132在将引导程序发送至该CPU11之前,检测读取的第一块Block是否为坏块,并在确定该第一Block为坏块时,将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址,该第一Block为该备份区中的任一Block,该Nand-Flash14的备份区包括至少两个Block。
需要说明的是,在向该Nand-Flash14中写入引导程序时,若该第一Block产生坏块,则将原本应该写入该第一Block中的引导程序写入与该第一Block物理地址相邻的下一个Block中。因此,该数据处理模块132在检测到该第一Block为坏块时,需要将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址。
若该第一Block为坏块,则该CPU11发送的程序读取指令无法读取到相应的引导程序,此时,该复位装置12控制系统复位。
由于该复位装置12每次控制系统复位后,向该多路选择模块131发出的备份区选择指令为高低电平翻转的信号,若该多路选择模块131在接收到该启动装置12输出的高电平时选择该第一通道,在接收到该启动装置12输出的低电平时选择该第二通道,则在每次系统复位后,该启动装置在主区和备份区倒换读取引导程序。因此,该启动装置在更改主备地址对应关系后,会倒换到通过第一通道读取该Nand-Flash12的主区的引导程序,并在该复位装置12再次控制系统复位后,通过第二通道根据更改后的主备地址对应关系读取该备份区的引导程序。
在本发明实施例一种优选的实现方式中,如图3所示,该数据处理模块132与该复位装置12相连,这样,该数据处理模块132在检测到该第一Block为坏块,并将该主备地址对应关系更改后,向该复位装置12发送复位指示消息,该复位指示消息用于使复位装置控制系统复位并向该多路选择模块131发送该备份区选择指令。
例如,若该备份区选择指令为高电平,则该复位装置12在接收到该数据处理模块132发送的复位指示消息后,控制系统复位,并向该多路选择模块131输出高电平,使得该启动装置在系统复位后控制该CPU继续从该Nand-Flash14的备份区读取引导程序。
这样,通过检测坏块,并调整保存的主区地址和备份区地址的对应关系,可以保证该启动装置13正确读取该Nand-Flash14备份区中的引导程序,避免由于Nand-Flash14出现坏块导致该计算机系统启动失败或在主区和备份区多次倒换读取引导程序。
进一步地,该CPU11在接收到该启动装置13发送的该Nand-Flash14的备份区中的引导程序,并运行该引导程序成功启动系统后,向该启动装置13发送控制指令,该控制指令用于指示该启动装置13在接收到该CPU11发送的数据读取指令后,直接将该数据读取指令发送至该Nand-Flash14。
其中,该Nand-Flash中还存储有该计算机系统在运行过程中所需的其他数据。由图2,该数据处理模块132只适用于CPU11读取Nand-Flash14备份区的引导程序,该CPU11在成功启动计算机系统后,从该Nand-Flash14读取所述数据无需再通过该第二通道,因此,该CPU11在启动计算机系统后,向该多路选择模块131发送控制指令,该多路选择模块151根据该控制指令将接收到的该CPU11发送的数据读取指令通过该第一通道发送至该Nand-Flash14,保证了该CPU后续从该Nand-Flash读取数据的正常运行。
本发明实施例提供一种启动方法,如图4所示,包括:
S401、启动装置在中央处理器CPU启动系统失败时,接收备份区选择指令。
其中,该备份区选择指令用于指示该启动装置从存储器的备份区中读取引导程序。该存储器为Nand-Flash。
示例地,如图1所示的计算机系统10,其在首次上电启动时,该CPU11发送程序读取指令至该Nand-Flash14,读取该Nand-Flash14主区中的引导程序,若该Nand-Flash14的主区中存在坏块,该CPU11无法读取坏块;或者,该CPU11成功从该Nand-Flash14的主区中读取到引导程序,但是该引导程序由于升级时发生断电情况,已经被破坏,在上述两种情况发生时,该CPU运行该引导程序出错,均会导致该复位装置12控制系统复位,并向该启动装置发送该备份区选择指令,这样,该计算机系统复位后,该CPU11重新发送程序读取指令,该启动装置在接收到该程序读取指令后,从该Nand-Flash的备份区中读取引导程序。
其中,该复位装置每次控制系统复位后,向该启动装置发送高低电平翻转的信号,该启动装置可以根据该高低电平选择读取该Nand-Flash的主区或者备份区中的引导程序,例如,该复位装置向该启动装置输出低电平时,该启动装置选择读取Nand-Flash的主区中的引导程序;该复位装置向该启动装置输出高电平时,该启动装置选择读取Nand-Flash的备份区中的引导程序,此时,该备份区选择指令即为该复位装置输出的高电平。
S402、该启动装置接收该CPU发送的程序读取指令,该程序读取指令中包括该引导程序在该Nand-Flash中的主区地址。
需要说明的是,系统复位前后,该CPU发送的程序读取指令中始终包括该引导程序在该Nand-Flash中的主区地址。
S403、该启动装置根据该主区地址,从主备地址对应关系中获取该引导程序在该Nand-Flash中的备份地址。
其中,该主备地址对应关系中包括该主区地址与该备份地址的对应关系。
具体地,该Nand-Flash的主区和备份区分别存储该引导程序,例如,该Nand-Flash的主区中包括Block0、Block1、Block2和Block3共四个块,该Nand-Flash的备份区中包括Block10、Block11、Block12和Block13共四个块,其中,Block10作为Block0的备份与该Block0存储相同的程序,Block11作为Block1的备份与该Block1存储相同的程序,Block12作为Block2的备份与该Block2存储相同的程序,Block13作为Block3的备份与该Block3存储相同的程序。
这样,用户根据该Nand-Flash出厂提供的主区和备份区的初始地址、该引导程序的大小以及块的大小可以预先在该启动装置存储主备地址对应关系:Block0的地址与Block10的地址的对应关系,Block1的地址与Block11的地址的对应关系,Block2的地址与Block12的地址,Block3的地址与Block13的地址的对应关系。
这样,该启动装置根据该程序读取指令中的主区地址,通过该主备地址对应关系即可获取该引导程序在备份区的备份地址。
需要说明的是,该CPU发送程序读取指令是以页为单位进行读取,其中,一个Block包括至少一个页。也就是说,该程序读取指令中包括的主区地址为页的地址,并且,该程序读取指令还包括每页的页号、以及该页所处Block的块号。
示例地,该Block0包括0至9页,Block1包括10至19页,这样,若该引用程序中包括的主区地址为0至11页的地址,则该启动装置根据该0至11页的块号,通过该主备地址对应关系确定Block0对应的Block10,以及Block1对应的Block11;根据该0至11页的页号,获取该Block10和该Block11中待读取的页的地址(即该备份地址)。
S404、该启动装置从该Nand-Flash的备份地址中读取该引导程序。
可选地,该启动装置根据该备份地址生成备份程序读取指令,并向该Nand-Flash发送该备份程序读取指令,以从该备份地址中读取该引导程序。其中,该备份程序读取指令包括该引导程序的在该Nand-Flash中的备份地址。
需要说明的是,该启动装置在接收到该程序读取指令后,也可以对该程序读取指令进行修改,根据修改后的程序读取指令读取该Nand-Flash的备份地址中的引导程序,该修改后的程序读取指令包括该引导程序的在该Nand-Flash中的备份地址。本发明实施例对此不做限定。
S405、该启动装置将该引导程序发送至该CPU,以使该CPU根据该引导程序启动系统。
该CPU将从该Nand-Flash的备份地址中读取的引导程序写入RAM,并运行该引导程序,这样,相比现有技术中CPU只能读取主区的引导程序,本发明实施例降低了因为主区中出现坏块而导致计算机系统启动失败的概率。
可选地,该启动装置在该将该引导程序发送至该CPU之前,检测读取的第一Block是否为坏块,并在确定该第一Black为坏块时,将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址。其中,该第一Block为该备份区中的任一Block。
需要说明的是,在向该Nand-Flash中写入引导程序时,若该第一Block产生坏块,则将原本应该写入该第一Block中的引导程序写入与该第一Block物理地址相邻的下一个Block中。因此,该启动装置在检测到该第一Block为坏块时,需要将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址。
示例地,在向该Nand-Flash中写入引导程序时,若该第一Block产生坏块,则将该第一Block中的第一页的OOB(OutOfBand,带外数据)区的第一个字节改写。需要说明的是,每一页的OOB区的第一个字节的初始值为OXFF。
因此,该启动装置检测读取的第一Block是否为坏块可以是检测该第一Block的第一页的OOB区的第一个字节是否为0XFF,若否,则确定该第一Block为坏块。
另外,该主备地址对应关系可以是以表格形式存储在该启动装置中,以下表1举例说明,其中,Block0的地址对应Block10的地址,Block1的地址对应Block11的地址,Block2的地址对应Block12的地址,Block3的地址对应Block13的地址。
表1
然而,由于在实际写入引导程序的时候会跳过坏块的Block,将程序写入下一个Block,这样,该引导程序的实际存储与预设的主备地址对应关系不符,如图5所示,该Block1对应的Block11为坏块,此时,写入该Block11的部分引导程序会重新选择写入到该Block12中,以此类推,写入该Block12的部分引导程序会重新选择写入到该Block13中,写入该Block13的部分引导程序会重新选择写入到该Block14中,因此,该启动装置在检测到备份地址中的坏块时,需要更改存储的主备地址对应关系。
由图5,该Block11为坏块,该启动装置在检测到该Block11为坏块时,更改该主备地址对应关系,更改后的主备地址对应关系如下表2所示:Block0的地址对应Block10的地址,Block1的地址对应Block12的地址,Block2的地址对应Block13的地址,Block3的地址对应Block14的地址。
表2
若该第一Block为坏块,则该CPU发送的程序读取指令无法读取到相应的引导程序,此时,该复位装置控制系统复位。
由于该复位装置每次控制系统复位后,向该启动装置发出的备份区选择指令为高低电平翻转的信号,则在每次系统复位后,该启动装置在主区和备份区倒换读取引导程序,因此,该启动装置在更改主备地址对应关系后,会倒换读取该Nand-Flash的主区的引导程序,并在该复位装置再次控制系统复位后,根据该CPU发送的程序读取指令按照更改后的主备地址对应关系读取该Nand-Flash的备份区的引导程序。
在本发明实施例一种优选的实现方式中,该启动装置在更改该主备地址对应关系后,向该复位装置发送复位指示消息,该复位指示消息用于使该复位装置控制系统复位并向该启动装置发送备份区选择指令。
也就是说,若该备份区选择指令为高电平,该复位装置在接收到该复位指示消息时,控制系统复位,并向该启动装置输出高电平,使得该启动装置在系统复位后控制该CPU继续从该Nand-Flash的备份区读取引导程序。
这样,通过检测坏块,并调整保存的主区地址和备份区地址的对应关系,可以保证了该启动装置正确读取该Nand-Flash备份区中的引导程序,避免由于Nand-Flash出现坏块导致该计算机系统启动失败或在主区和备份区多次倒换读取引导程序。
为了使本领域技术人员能够更清楚地理解本发明实施例提供的一种启动方法的技术方案,下面针对图3提供的计算机系统,通过具体的实施例对本发明提供的一种启动方法进行详细说明,如图6所示,包括:
S601、系统上电,多路选择模块接收CPU发送的程序读取指令,并通过第一通道将该程序读取指令发送至Nand-Flash,以使该CPU读取Nand-Flash主区中的引导程序。
其中,该程序读取指令包括该引导程序在该Nand-Flash中的主区地址。
由图3,该多路选择模块通过第一通道与该Nand-Flash直接相连,使得该CPU可以直接访问该Nand-Flash的主区;该多路选择模块通过第二通道与该数据处理模块相连,该数据处理模块与该Nand-Flash相连,使得该CPU通过该数据处理模块可以访问该Nand-Flash的备份区。该多路选择模块通过接收该复位装置发送的指令,选择该第一通道或该第二通道。预设该多路选择模块在系统上电时根据该复位装置的输出选择第一通道。
S602、复位装置在该CPU根据该主区中的引导程序启动系统失败时,控制系统复位并向该启动装置发送备份区选择指令。
该备份区选择指令用于指示该启动装置从该Nand-Flash的备份区中读取引导程序。
该复位装置可以通过看门狗电路对该引导程序的运行进行监控,若该引导程序正常执行,则完成系统的启动以及硬件的初始化;若该引导程序执行有误或在预设之间内未执行,则该复位装置控制系统复位。
具体地,该复位装置每次控制系统复位后,向该启动装置发送高低电平翻转的信号,该启动装置可以根据该高低电平选择读取该Nand-Flash的主区或者备份区中的引导程序,例如,该复位装置向该启动装置输出低电平时,该启动装置选择读取Nand-Flash的主区中的引导程序;该复位装置向该启动装置输出高电平时,该启动装置选择读取Nand-Flash的备份区中的引导程序,此时,该备份区选择指令即为该复位装置输出的高电平。
S603、该多路选择模块接收该CPU在系统复位后重新发送的程序读取指令,并通过第二通道将该程序读取指令发送至数据处理模块。
S604、该数据处理模块根据该程序读取指令中的主区地址从主备地址对应关系中获取该引导程序在该Nand-Flash中的备份地址。
其中,该主备地址对应关系中包括该主区地址与备份地址的对应关系。
示例地,该主备地址对应关系如表1所示,具体可参照上一方法实施例中对应表1的描述,此处不再赘述。
S605、该数据处理模块根据该备份地址生成备份程序读取指令。
S606、该数据处理模块将该备份程序读取指令发送至该Nand-Flash,以从该Nand-Flash的备份地址读取该引导程序。
S607、该数据处理模块检测读取的第一Block是否为坏块。
其中,该第一Block为该备份区中的任一Block。
示例地,在向该Nand-Flash中写入引导程序时,若该第一Block产生坏块,则将该第一Block中的第一页的OOB(OutOfBand,带外数据)区的第一个字节改写。需要说明的是,每一页的OOB区的第一个字节的初始值为OXFF。
因此,该启动装置检测读取的第一Block是否为坏块包括,检测该第一Block的第一页的OOB区的第一个字节是否为0XFF,若否,则确定该第一Block为坏块。
进一步地,若该启动装置确定该第一Block为坏块,则执行步骤S608至步骤610;若该启动装置确定该第一Block非坏块,则执行步骤S611。
S608、该数据处理模块将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址。
需要说明的是,在向该Nand-Flash中写入引导程序时,若该第一Block产生坏块,则将原本应该写入该第一Block中的引导程序写入与该第一Block物理地址相邻的下一个Block中。
由图5,该Block11为坏块,则该数据处理模块在检测到该Block11为坏块时,更改该主备地址对应关系,更改后的主备地址对应关系如上一方法实施例中的表2所示:Block0的地址对应Block10的地址,Block1的地址对应Block12的地址,Block2的地址对应Block13的地址,Block3的地址对应Block14的地址。
S609、该数据处理模块向该复位装置发送复位指示消息。
S610、该复位装置根据该复位指示消息,控制系统复位并向该启动装置发送备份区选择指令。
示例地,若该备份区选择指令为高电平。由图3,该数据处理模块与该复位装置相连,这样,该数据处理模块在检测到该第一Block为坏块,并将该主备地址对应关系更改后,向该复位装置发送复位指示消息,以便该复位装置在接收到该复位指示消息时,控制系统复位并向该多路选择模块输出高电平。
需要说明的是,若更改后的主备地址对应关系中,仍然存在坏块的地址,如上一方法实施例中的表2所示,若该Block12为坏块,则在启动装置按照上述步骤检测到该Block12为坏块时,该数据处理模块需要再一次更改主备地址对应关系,并向该复位装置发送复位指示消息,也就是说,该启动装置至少一次循环执行上述步骤S603至步骤S610,直到该主备地址对应关系中不存在坏块的地址。
S611、该数据处理模块读取该第一Block中的引导程序,并将该引导程序发送至该CPU。
具体地,该启动装置重复执行步骤S603至步骤S611,直到该CPU读取到完整的引导程序,并在RAM中运行该引导程序启动系统。
S612、该CPU在成功启动系统后,向该多路选择模块发送控制指令。
S613、该多路选择模块根据该控制指令将接收到的该CPU发送的数据读取指令通过该第一通道发送至该Nand-Flash。
这样,该启动装置使得CPU不感知Nand-Flash分为主区和备份区,并备份存储引导程序,在CPU发送的程序读取指令不变的情况下,根据复位装置发送的备份区选择指令,读取该Nand-Flash备份区中的引导程序,并将该引导程序返回至该CPU,降低了因为主区中出现坏块而导致该计算机系统启动失败的概率。
另外,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本发明实施例提供一种启动装置70,用于实现上述图4所述的启动方法。如图7所示,该启动装置70包括:
第一接收单元71,用于在中央处理器CPU启动系统失败时,接收备份区选择指令,该备份区选择指令用于指示该启动装置从存储器的备份区中读取引导程序;该存储器为Nand-Flash。
第二接收单元72,用于接收该CPU发送的程序读取指令,该程序读取指令中包括该引导程序的在该Nand-Flash中的主区地址。
获取单元73,用于根据该主区地址,从主备地址对应关系中获取该引导程序在该Nand-Flash中的备份地址,其中,该主备地址对应关系中包括该主区地址与该备份地址的对应关系。
存储单元74,用于存储该主备地址对应关系。
读取单元75,用于从该Nand-Flash的备份地址中读取该引导程序。
发送单元76,用于将该引导程序发送至该CPU,以使该CPU根据该引导程序启动系统。
示例地,该计算机在首次上电启动时,该CPU发送程序读取指令至该Nand-Flash,读取该Nand-Flash主区中的引导程序,若该Nand-Flash的主区中存在坏块,该CPU无法读取坏块;或者,该CPU成功从该Nand-Flash的主区中读取到引导程序,但是该引导程序由于升级时发生断电情况,已经被破坏,在上述两种情况发生时,该CPU运行该引导程序出错,均会导致该复位装置控制系统复位。
其中,该复位装置每次控制系统复位后,向该启动装置发送高低电平翻转的信号,该启动装置可以根据该高低电平选择读取该Nand-Flash的主区或者备份区中的引导程序,例如,该复位装置向该启动装置输出低电平时,该启动装置选择读取Nand-Flash的主区中的引导程序;该复位装置向该启动装置输出高电平时,该启动装置选择读取Nand-Flash的备份区中的引导程序,此时,该备份区选择指令即为该复位装置输出的高电平。
因此,采用上述启动装置,该启动装置使得CPU不感知Nand-Flash分为主区和备份区,并备份存储引导程序,在CPU发送的程序读取指令不变的情况下,根据复位装置发送的备份区选择指令,读取该Nand-Flash备份区中的引导程序,并将该引导程序返回至该CPU,降低了因为主区中出现坏块而导致该计算机系统启动失败的概率。
图8所示,为本发明实施例提供的另一种启动装置80,作为对启动装置70的进一步改进,该启动装置80还包括,指令生成单元77,用于根据该备份地址生成备份程序读取指令,该备份程序读取指令包括该引导程序在该Nand-Flash中的备份地址。该读取单元75还用于,按照该备份程序读取指令从该备份地址中读取该引导程序。
可选地,如图8所示,该启动装置80还包括,检测单元78,用于检测读取的第一Block是否为坏块;更改单元79,用于在该检测单元确定该第一Block为坏块时,将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址,其中,该第一Block为该备份区中的任一Block,该Nand-Flash的备份区包括至少两个Block;指示单元710,用于向复位装置发送复位指示消息,以便该复位装置在接收到该复位指示消息时,控制系统复位并向该启动装置发送备份区选择指令。
需要说明的是,在向该Nand-Flash中写入引导程序时,若该第一Block产生坏块,则将原本应该写入该第一Block中的引导程序写入与该第一Block物理地址相邻的下一个Block中。因此,该启动装置在检测到该第一Block为坏块时,需要将该主备地址对应关系中的该第一Block的地址更改为与该第一Block相邻的下一个Block的地址。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
如图9所示,本发明实施例还提供一种启动装置90,用于实现上述图4所述的启动方法。在本发明图1所示计算机系统中,该启动装置90完成启动装置13的功能,分别与CPU11,复位装置12和Nand-Flash14相连,该启动装置90包括:
处理器91、通信接口(CommunicationsInterface)92、存储器93和通信总线94;其中,所述处理器91、所述通信接口92和所述存储器93通过所述通信总线94相互连接并通信。
具体地,所述启动装置90通过所述通信接口92分别与所述CPU11所述复位装置12和所述Nand-Flash14通信。
处理器91可以是通用处理器,包括CPU、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件。
存储器93用于存放程序代码,所述程序代码包括计算机操作指令。存储器93可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
所述处理器91用于执行所述存储器93中的程序代码,以实现本发明实施例提供的启动方法,包括:
在CPU11启动系统失败时,接收备份区选择指令,所述备份区选择指令用于指示所述启动装置90从Nand-Flash14的备份区中读取引导程序;
接收所述CPU11发送的程序读取指令,所述程序读取指令中包括所述引导程序在所述Nand-Flash14中的主区地址;
根据所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash14中的备份地址,其中,所述主备地址对应关系包括所述主区地址和所述备份地址的对应关系;
从所述Nand-Flash14的备份地址中读取所述引导程序;
将所述引导程序发送至所述CPU11,以使所述CPU11根据所述引导程序启动系统。
所述存储器93还用于所述主备地址对应关系。
可选地,在所述获取所述引导程序在所述Nand-Flash14中的备份地址之后,所述启动方法还包括:
根据所述备份地址生成备份程序读取指令;所述备份程序读取指令中包括所述备份地址;
所述从所述备份地址中读取所述引导程序包括:
向所述Nand-Flash14发送所述备份程序读取指令,以从所述备份地址中读取所述引导程序。
可选地,在所述将所述引导程序发送至所述CPU11之前,所述方法还包括:
检测读取的第一块Block是否为坏块,并在确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
向所述复位装置12发送复位指示消息,以便所述复位装置12在接收到所述复位指示消息时,控制系统复位并向所述启动装置90发送所述备份区选择指令。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种启动方法,其特征在于,包括:
启动装置在中央处理器CPU启动系统失败时,接收备份区选择指令,所述备份区选择指令用于指示所述启动装置从存储器的备份区中读取引导程序;所述存储器为Nand-Flash;
接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序在所述Nand-Flash中的主区地址;
根据所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,其中,所述主备地址对应关系中包括所述主区地址与所述备份地址的对应关系;
从所述Nand-Flash的备份地址中读取所述引导程序;
将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述引导程序在所述Nand-Flash中的备份地址之后,包括:
根据所述备份地址生成备份程序读取指令;所述备份程序读取指令包括所述备份地址;
所述从所述备份地址中读取所述引导程序包括:
向所述Nand-Flash发送所述备份程序读取指令,以从所述备份地址中读取所述引导程序。
3.根据权利要求1或2所述的方法,其特征在于,在所述将所述引导程序发送至所述CPU之前,包括:
检测读取的第一块Block是否为坏块,并在确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
4.一种启动装置,其特征在于,包括:
第一接收单元,用于在中央处理器CPU启动系统失败时,接收备份区选择指令,所述备份区选择指令用于指示所述启动装置从存储器的备份区中读取引导程序;所述存储器为Nand-Flash;
第二接收单元,用于接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序的在所述Nand-Flash中的主区地址;
获取单元,用于根据所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,其中,所述主备地址对应关系中包括所述主区地址与所述备份地址的对应关系;
存储单元,用于存储所述主备地址对应关系;
读取单元,用于从所述Nand-Flash的备份地址中读取所述引导程序;
发送单元,用于将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
5.根据权利要求4所述的启动装置,其特征在于,还包括:
指令生成单元,用于根据所述备份地址生成备份程序读取指令;所述备份程序读取指令包括所述备份地址;
所述读取单元还用于,向所述Nand-Flash发送所述备份程序读取指令,从所述备份地址中读取所述引导程序。
6.根据权利要求4或5所述的启动装置,其特征在于,所述启动装置还包括:检测单元,更改单元和指示单元;
所述检测单元,用于检测读取的第一块Block是否为坏块;
所述更改单元,用于在所述检测单元确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
所述指示单元,用于向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
7.一种启动装置,与存储器相连,所述存储器为Nand-Flash,其特征在于,所述启动装置包括:多路选择模块和与所述多路选择模块相连的数据处理模块;
所述多路选择模块,用于在中央处理器CPU启动系统失败时,接收复位装置发送的备份区选择指令,所述备份区选择指令用于指示所述启动装置从所述Nand-Flash的备份区中读取引导程序;还用于接收所述CPU发送的程序读取指令,所述程序读取指令中包括所述引导程序的在所述Nand-Flash中的主区地址,将所述程序读取指令发送至所述数据处理模块;
所述数据处理模块,用于根据所述程序读取指令中的所述主区地址,从主备地址对应关系中获取所述引导程序在所述Nand-Flash中的备份地址,所述主备地址对应关系中包括所述主区地址与所述备份地址的对应关系;还用于从所述Nand-Flash的备份地址中读取所述引导程序,并将所述引导程序发送至所述CPU,以使所述CPU根据所述引导程序启动系统。
8.根据权利要求7所述的启动装置,其特征在于,所述数据处理模块具体用于根据所述备份地址生成备份程序读取指令,所述备份程序读取指令中包括所述引导程序在所述备份地址;向所述Nand-Flash发送所述备份程序读取指令,以从所述备份地址中读取所述引导程序。
9.根据权利要求7或8所述的启动装置,其特征在于,所述数据处理模块还用于检测读取的第一块Block是否为坏块;
在确定所述第一Block为坏块时,将所述主备地址对应关系中的所述第一Block的地址更改为与所述第一Block相邻的下一个Block的地址;所述第一Block为所述备份区中的任一Block,所述Nand-Flash的备份区包括至少两个Block;
向复位装置发送复位指示消息,以便所述复位装置在接收到所述复位指示消息时,控制系统复位并向所述启动装置发送所述备份区选择指令。
10.根据权利要求7至9任一项所述的启动装置,其特征在于,
所述多路选择模块包括第一通道和第二通道,其中,所述多路选择模块通过所述第一通道直接连接所述Nand-Flash,所述多路选择模块通过所述第二通道与所述数据处理模块相连,所述数据处理模块连接所述Nand-Flash;
所述多路选择模块具体用于:
根据所述备份区选择指令通过所述第二通道向所述数据处理模块发送所述程序读取指令。
11.根据权利要求10所述的启动装置,其特征在于,所述多路选择模块还用于,接收所述CPU发送的控制指令;
根据所述控制指令通过所述第一通道将接收到的所述CPU发送的数据读取指令发送至所述Nand-Flash;所述数据读取指令为所述CPU在系统启动后,发送的用于读取所述Nand-Flash中的数据的指令。
12.一种计算机系统,包括中央处理器CPU,存储器和复位装置,其特征在于,还包括启动装置;
其中,所述存储器为Nand-Flash,所述启动装置分别与所述CPU,所述复位装置和所述Nand-Flash相连;
所述启动装置为权利要求4-6任一项所述的启动装置;或者,所述启动装置为权利要求7-11任一项所述的启动装置;
所述Nand-Flash包括主区和备份区;其中,所述主区和所述备份区分别存储有引导程序;
所述复位装置用于,在所述CPU启动系统失败时,向所述启动装置发送备份区选择指令,所述备份区选择指令用于指示所述启动装置从所述Nand-Flash的备份区中读取引导程序;
所述CPU用于,向所述启动装置发送程序读取指令,并接收所述启动装置返回的所述引导程序,运行所述引导程序并启动系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410709138.9A CN105700901B (zh) | 2014-11-28 | 2014-11-28 | 一种启动方法、装置和计算机系统 |
US14/950,048 US9934097B2 (en) | 2014-11-28 | 2015-11-24 | Method and apparatus for startup of a central processing unit and a computer system |
EP15196449.1A EP3037967B1 (en) | 2014-11-28 | 2015-11-26 | Fault-tolerant startup method and apparatus and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410709138.9A CN105700901B (zh) | 2014-11-28 | 2014-11-28 | 一种启动方法、装置和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105700901A true CN105700901A (zh) | 2016-06-22 |
CN105700901B CN105700901B (zh) | 2020-05-08 |
Family
ID=54770830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410709138.9A Active CN105700901B (zh) | 2014-11-28 | 2014-11-28 | 一种启动方法、装置和计算机系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9934097B2 (zh) |
EP (1) | EP3037967B1 (zh) |
CN (1) | CN105700901B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106123905A (zh) * | 2016-08-16 | 2016-11-16 | 长安马自达汽车有限公司 | 航位推算的快速启动处理方法 |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN112612418A (zh) * | 2020-12-25 | 2021-04-06 | 航天信息股份有限公司 | 一种用于大容量NandFlash坏块管理的方法及系统 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015219643A (ja) * | 2014-05-15 | 2015-12-07 | キヤノン株式会社 | 画像処理装置、情報処理方法及びプログラム |
JP6489827B2 (ja) * | 2014-12-26 | 2019-03-27 | キヤノン株式会社 | 画像処理装置、画像処理装置の制御方法及びプログラム |
JP6723863B2 (ja) * | 2016-08-01 | 2020-07-15 | オリンパス株式会社 | 組み込みシステム、撮影機器及びリフレッシュ方法 |
KR20180035266A (ko) | 2016-09-28 | 2018-04-06 | 삼성전자주식회사 | 서로 직렬로 연결된 스토리지 장치들 중 애플리케이션 프로세서에 직접 연결되지 않는 스토리지 장치를 리셋시키는 전자 기기 및 그것의 동작 방법 |
TWI650646B (zh) * | 2017-12-01 | 2019-02-11 | 和碩聯合科技股份有限公司 | 纜線數據機及其操作方法 |
KR102552463B1 (ko) * | 2018-04-20 | 2023-07-06 | 삼성전자 주식회사 | 어플리케이션 프로세서, 시스템 온 칩 및 장치의 부팅 방법 |
US20200042750A1 (en) * | 2018-08-02 | 2020-02-06 | Qualcomm Incorporated | Secure access for system power management interface (spmi) during boot |
JP2020087293A (ja) * | 2018-11-30 | 2020-06-04 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
US11237838B2 (en) * | 2020-01-02 | 2022-02-01 | Western Digital Technologies, Inc. | Storage system and method for enabling a direct accessible boot block in a memory die |
CN111338701A (zh) * | 2020-02-25 | 2020-06-26 | 邦彦技术股份有限公司 | 一种网络设备启动方法和网络设备 |
CN111522693B (zh) * | 2020-04-20 | 2024-01-09 | 中国航天科工集团八五一一研究所 | 增强卫星平台可靠性的在线重构方法 |
TWI765443B (zh) * | 2020-12-03 | 2022-05-21 | 宜鼎國際股份有限公司 | 資料儲存裝置及維持資料儲存裝置正常開機的方法 |
TWI808362B (zh) * | 2020-12-03 | 2023-07-11 | 宜鼎國際股份有限公司 | 可自我監視及恢復作業系統運作的電腦系統及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914598A (zh) * | 2004-01-28 | 2007-02-14 | 索尼株式会社 | 半导体装置和用于启动该半导体装置的处理方法 |
US20070266202A1 (en) * | 2005-06-13 | 2007-11-15 | Naoki Mukaida | Memory controller, flash memory system, and control method of flash memory |
CN102135927A (zh) * | 2011-04-29 | 2011-07-27 | 杭州华三通信技术有限公司 | 一种基于nand flash的系统引导方法和装置 |
CN103135995A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 一种BootLoader的备份管理方法及装置 |
CN103473098A (zh) * | 2013-09-10 | 2013-12-25 | 华为技术有限公司 | 一种boot程序的启动方法和相关装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4802527B2 (ja) * | 2005-03-18 | 2011-10-26 | 株式会社日立製作所 | 計算機システム |
US8006125B1 (en) * | 2005-04-29 | 2011-08-23 | Microsoft Corporation | Automatic detection and recovery of corrupt disk metadata |
US7793091B2 (en) * | 2005-08-26 | 2010-09-07 | Sytex, Inc. | Method, computer-readable media, devices and systems for loading a selected operating system of interest |
KR100880379B1 (ko) * | 2006-05-25 | 2009-01-23 | 삼성전자주식회사 | 외부로부터 제공받는 부트 코드로 부팅되는 정보기기시스템 |
US7765393B1 (en) * | 2006-07-11 | 2010-07-27 | Network Appliance, Inc. | Method and system of embedding a boot loader as system firmware |
GB2455106B (en) * | 2007-11-28 | 2012-08-01 | Icera Inc | Memory errors |
US8443183B2 (en) * | 2009-09-02 | 2013-05-14 | Spashtop Inc. | Pre-boot loader for reducing system boot time |
US8726087B2 (en) * | 2011-03-18 | 2014-05-13 | Denso International America, Inc. | System and method for curing a read inability state in a memory device |
US9411688B1 (en) * | 2013-12-11 | 2016-08-09 | Xilinx, Inc. | System and method for searching multiple boot devices for boot images |
-
2014
- 2014-11-28 CN CN201410709138.9A patent/CN105700901B/zh active Active
-
2015
- 2015-11-24 US US14/950,048 patent/US9934097B2/en active Active
- 2015-11-26 EP EP15196449.1A patent/EP3037967B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914598A (zh) * | 2004-01-28 | 2007-02-14 | 索尼株式会社 | 半导体装置和用于启动该半导体装置的处理方法 |
US20070266202A1 (en) * | 2005-06-13 | 2007-11-15 | Naoki Mukaida | Memory controller, flash memory system, and control method of flash memory |
CN102135927A (zh) * | 2011-04-29 | 2011-07-27 | 杭州华三通信技术有限公司 | 一种基于nand flash的系统引导方法和装置 |
CN103135995A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 一种BootLoader的备份管理方法及装置 |
CN103473098A (zh) * | 2013-09-10 | 2013-12-25 | 华为技术有限公司 | 一种boot程序的启动方法和相关装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106123905A (zh) * | 2016-08-16 | 2016-11-16 | 长安马自达汽车有限公司 | 航位推算的快速启动处理方法 |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN112612418A (zh) * | 2020-12-25 | 2021-04-06 | 航天信息股份有限公司 | 一种用于大容量NandFlash坏块管理的方法及系统 |
CN112612418B (zh) * | 2020-12-25 | 2024-03-08 | 航天信息股份有限公司 | 一种用于大容量NandFlash坏块管理的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3037967A1 (en) | 2016-06-29 |
EP3037967B1 (en) | 2018-02-21 |
US20160154700A1 (en) | 2016-06-02 |
US9934097B2 (en) | 2018-04-03 |
CN105700901B (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105700901A (zh) | 一种启动方法、装置和计算机系统 | |
CN101770809B (zh) | 用于非易失性存储器掉电后的恢复的方法和系统 | |
US11347444B2 (en) | Memory device for controlling operations according to different access units of memory | |
US7814479B2 (en) | Simultaneous download to multiple targets | |
US20110099325A1 (en) | User device and mapping data management method thereof | |
CN113282434B (zh) | 一种基于封装后修复技术的内存修复方法及相关组件 | |
US20180101492A1 (en) | Memory system and host device that maintain compatibility with memory dvices under previous standards and/or versions of standards | |
CN105468302A (zh) | 一种处理数据的方法、装置及系统 | |
CN101354659A (zh) | 一种控制电子设备bios启动的方法、控制器及控制系统 | |
KR20210065455A (ko) | 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법 | |
CN113778739B (zh) | 一种一体机的系统修复方法、系统、设备及存储介质 | |
CN103488516A (zh) | 一种系统修复方法及电子设备 | |
KR20140006344A (ko) | 메모리 시스템 및 그것에 포함된 메모리 장치의 동작 방법 | |
US10803001B2 (en) | Electronic device and operating method thereof | |
CN105573872A (zh) | 数据存储系统的硬盘维护方法和装置 | |
CN112148649B (zh) | 一种u-boot系统下的eMMCHS400传输模式实现方法及装置 | |
CN104158709A (zh) | 一种光模块识别的方法及端口扩展设备 | |
CN103440204A (zh) | 一种更新文件系统的方法和存储设备 | |
US11209985B2 (en) | Input/output delay optimization method, electronic system and memory device using the same | |
CN105634635A (zh) | 一种共享rtc的方法、装置和系统 | |
JP5868563B1 (ja) | 分散型制御システム用制御機器及びユニット | |
CN105677414A (zh) | 一种在Hostboot中实现双启动的方法 | |
CN116072202A (zh) | 一种存储设备的管理方法、系统及存储介质 | |
CN109800110A (zh) | 数据备份方法、系统及电子设备、存储介质和备份装置 | |
US20140181492A1 (en) | Method of booting an electronic system and an electronic system applying the same |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231221 Address after: Room 1-9, 24th Floor, Unit 2, Building 1, No. 28, North Section of Tianfu Avenue, High tech Zone, Chengdu City, Sichuan Province, 610095 Patentee after: Sichuan Huakun Zhenyu Intelligent Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |