CN102385535B - 处理从非易失性存储器进行设备引导期间的错误 - Google Patents
处理从非易失性存储器进行设备引导期间的错误 Download PDFInfo
- Publication number
- CN102385535B CN102385535B CN201110253454.6A CN201110253454A CN102385535B CN 102385535 B CN102385535 B CN 102385535B CN 201110253454 A CN201110253454 A CN 201110253454A CN 102385535 B CN102385535 B CN 102385535B
- Authority
- CN
- China
- Prior art keywords
- nvm
- mistake
- electronic equipment
- memory
- block
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 11
- 230000009467 reduction Effects 0.000 claims description 5
- 239000000872 buffer Substances 0.000 claims description 3
- 230000000717 retained effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- 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/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Retry When Errors Occur (AREA)
Abstract
本公开涉及处理从非易失性存储器进行设备引导期间的错误。提供了用于处理从非易失性存储器(“NVM”)进行设备引导期间的错误的***和方法。电子设备的NVM接口可以被配置为在设备正在引导时检测错误并且在易失性存储器中维护错误日志。一旦设备引导完成,电子设备的NVM驱动器可被配置为使用错误日志纠正所检测到的错误。例如,电子设备可以将数据移动到更可靠的区块和/或停用接近故障的区块,从而提升整体设备可靠性。
Description
技术领域
本公开涉及处理从非易失性存储器进行设备引导期间的错误。
背景技术
NAND闪存以及其它类型的非易失性存储器(“NVM”)被普遍用在电子设备中以用于大容量存储。例如,消费电子设备,诸如便携式媒体播放器,常常包括NAND闪存以存储音乐、视频以及其它媒体程序。
当电子设备正在加电或重启时,操作***可以从电子设备的NVM引导。操作***的引导可以分多个步骤进行。例如,电子设备可以被配置为首先将引导程序(bootloader)从NVM或掩模型只读存储器(“ROM”)装入易失性存储器。电子设备然后可以使用引导程序将操作***及相关联的固件从NVM装入到易失性存储器。
在某些情况下,当设备正在引导时,NVM中可能发生错误。如果这样的错误不被纠正,这些错误可能导致数据丢失或使设备无法工作。
发明内容
提供了用于处理从非易失性存储器(NVM)(诸如NAND闪存)进行设备引导期间的错误的***和方法。在设备可能只能从NVM读取数据的设备引导期间,电子设备可以使用易失性存储器中的错误日志来记录错误通知。例如,当电子设备正在从NVM引导时,设备的NVM接口能够检测错误并在错误日志中存储一个或多个错误通知。然后,一旦设备完成了引导并且到达了能够对设备进行写入的状态,设备的NVM驱动器就可被配置为利用该错误日志来纠正先前检测到的错误。
附图说明
结合附图考虑下面的详细描述后,本发明的上述和其它方面及优点将变得更加明显,在所有附图中,类似的附图标记表示类似的部件,其中:
图1是根据本发明的各种实施例配置的电子设备的示意性框图;
图2是根据本发明的各种实施例的电子设备引导的图示;
图3是根据本发明的各种实施例,用于处理在设备引导期间的错误的示意性过程的流程图。
具体实施方式
提供了用于处理从非易失性存储器(“NVM”)进行设备引导期间的错误的***和方法。为了防止固件故障和避免数据丢失,电子设备的NVM接口可被配置为在设备正在引导时检测错误并在易失性存储器中维护错误日志。在该阶段,电子设备可以工作在只读环境(read-only context)下。如这里所使用的,“只读环境”可以指电子设备不能对NVM执行写入从而也不能纠正NVM中检测到的任何错误的工作状态。
然后,一旦电子设备已经进入了可写环境(例如,设备引导已经完成),电子设备的NVM启动器就可以被配置为利用错误日志来纠正检测到的错误。如这里所使用的,“可写环境”可以指电子设备的一个或多个部件能够对NVM执行写入操作的工作状态。
因此,一旦设备已经进入了可写环境,NVM驱动器就可以将数据移动到更可靠的区块和/或停用(retire)接近故障的区块。从而,存储在设备上的固件能够使用更长的时间段而无需任何更新,并且致命错误的发生也可以减少。
图1示出电子设备100的框图。在某些实施例中,电子设备100可以是或可以包括便携式媒体播放器(例如,Cupertino,CA的Apple Inc.的产品iPodTM)、蜂窝电话(例如,Apple Inc.的产品iPhoneTM)、口袋大小的个人计算机、个人数字助理(“PDA”)、台式计算机、膝上型计算机、以及任何其它适当类型的电子设备。
电子设备100可以包括***级芯片(system-on-a-chip,“SoC”)110和非易失性存储器(“NVM”)120。NVM 120可以包括基于浮栅或电荷捕捉技术的NAND闪存、NOR闪存、可擦可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、铁电RAM(“FRAM”)、磁阻RAM(“MRAM”)、或它们的任何组合。
NVM 120可以被组织为“区块”,区块是最小的可擦除单元,并且可被进一步组织为“页面”,页面可以是最小的可编程或读取的单元。在某些实施例中,NVM 120可以包括多个集成电路,每个集成电路可以具有多个区块。来自相应集成电路的区块(例如,具有相同位置或区块号的区块)可以形成“超级块”。NVM 120的每个存储单元(memory location)(例如页面或区块)可以使用物理地址(例如,物理页面地址或物理区块地址)来引用。
***级芯片110可以包括SoC控制电路112、存储器114、以及NVM接口116。SoC控制电路112可以控制SoC 110以及SoC 110或设备100的其它部件的一般操作和功能。例如,响应于用户输入和/或应用或操作***的指令,SoC控制电路112可以向NVM接口116发出读或写命令,以从NVM 120获得数据或者在NVM 120中存储数据。为了清楚起见,SoC控制电路112可请求以便存储或检索的数据可以被称为“用户数据”,尽管该数据可能不直接与用户或用户应用相关联。更确切地,用户数据可以是由SoC控制电路112(例如,通过应用或操作***)生成或获得的任何适当的数字信息序列。
SoC控制电路112可以包括硬件、软件和固件的任何组合,以及操作以驱动电子设备100的功能的任何部件、电路或逻辑。例如,SoC控制电路112可以包括在存储在NVM 120或存储器114中的软件/固件的控制下工作的一个或多个处理器。SoC控制电路112可以在程序的控制下工作,所述程序诸如应用、操作***、NVM驱动器117、或装入存储器114中的引导程序。
存储器114可以包括任何适当类型的易失性存储器,诸如随机存取存储器(“RAM”)(例如,静态RAM(“SRAM”)、动态随机存取存储器(“DRAM”)、同步动态随机存取存储器(“SDRAM”)、双倍数据率(“DDR”)RAM)、高速缓冲存储器、只读存储器(“ROM”)、或它们的任何组合。存储器114可包括可临时存储要编程到非易失性存储器120中或者要从非易失性存储器120中读取的用户数据的数据源。在某些实施例中,存储器114可充当被实现为SoC控制电路112的一部分的任何处理器的主存储器。此外,存储器114的一个或多个部分可被用于存储在设备引导期间使用的错误日志、操作***、以及相关的固件和内核。
NVM接口116可以包括硬件、软件和/或固件的任何适当组合,其被配置为充当NVM 120与操作***、应用、引导程序、或其它由SoC控制电路112执行的非特定于存储器或非特定于厂商的程序之间的接口或驱动器。对于包括在NVM接口116中的任何软件模块,相应的程序代码可以存储在NVM 120或存储器114中。
NVM接口116可以执行多种功能,其允许SoC控制电路112访问NVM 120以及管理NVM 120的存储单元(例如,页面、区块、超级块、集成电路)和存储在其中的数据(例如,用户数据)。例如,NVM接口116可以解释来自SoC控制电路112的读或写命令,执行耗损均衡(wear leveling),以及生成与NVM 120的总线协议兼容的读和程序指令。
NVM接口116可以包括NVM驱动器117和总线控制器118。NVM驱动器117可以包括用于解释来自程序的存储器访问命令的特定于NVM或特定于厂商的软件和/或固件。在某些实施例中,NVM驱动器117可以包括提供对NVM 120不同部分的访问的多个软件模块或驱动器。例如,NVM驱动器117可以包括区块设备驱动器,用于通过文件***提供对NVM 120中至少一些存储单元的访问。此外,NVM驱动器117可包括单独的非易失性预引导存储驱动器(例如,掩模型ROM),用于提供对存储在NVM 120中其它存储单元中的非易失性预引导信息(例如,电子设备100在引导过程中使用的信息)的访问。
NVM驱动器117可以进一步包括各种软件模块或驱动器,以便在例如操作***和NVM 120之间提供分层的软件接口。NVM驱动器117可包括较低级的软件模块,其与NVM 120进行接口,并且从NVM驱动器117的较高级的软件模块、操作***和任何应用中抽象掉NVM 120的细节。较低级的软件模块可以包括,例如,将NVM 120的区块分组为供较高级的软件模块使用的超级块的驱动器。较低级的软件模块还可以包括非易失性预引导存储驱动器。
在某些实施例中,NVM驱动器117可以被配置在只读环境中,在只读环境中,驱动器117能够提供对NVM 120的只读访问。只读环境可以实现较小的软件模块和较快的速度。因此,这种环境可以在设备引导期间使用,在设备引导期间,对NVM 120进行写入通常是不必要的。在其它一些实施例中,NVM驱动器117可以被配置在可写环境中,在可写环境中,NVM驱动器117可以指示总线控制器118执行对NVM 120的一个或多个写入。具体地,当在可写环境下工作时,NVM驱动器117可以运行被编译用于电子设备100的可写环境的软件模块。
总线控制器118可以包括使NVM驱动器117能够使用NVM 120的总线规格(例如,数据率)访问NVM 120的任何适当的硬件部件。在图1中未示出的一些实施例中,NVM驱动器117和/或总线控制器118可以被实现在用于NVM 120的一个单独的存储器控制器(例如,闪存控制器)中,诸如闪存驱动器中。在这些实施例中,SoC 110或SoC控制电路112可以充当主机控制器。例如,作为主机控制器,SoC 110可以向NVM 120发出读和写请求。
虽然NVM接口116和SoC控制电路112被示出为分别的模块,但是这仅仅是为了简化对本发明实施例的描述。应当理解,这些模块可以共享硬件部件、软件部件、或这两者。例如,SoC控制电路112可以为NVM接口116执行基于软件的存储器驱动器。
当电子设备100加电或重启时,引导程序可以从NVM 120装入存储器114中。电子设备100然后可以使用该引导程序来将数据(例如,操作***及相关的固件和内核)从NVM 120装入到存储器114中。
在引导程序读取存储在NVM 120的一个或多个区块中的数据和将其装入到存储器114中时,可能会在这些区块中的一些区块中检测到错误。例如,某些错误可能是非致命错误(例如,通过发出一个或多个刷新通知而指出的错误),而其它一些错误可能是致命错误(例如,通过发出一个或多个无法纠正的纠错编码(uncorrectable errorcorrection coding,“uECC”)通知而指出的错误)。
有多个因素可能阻止这些错误被设备100纠正。一个因素是当数据正在由引导程序读取时,设备100可能工作在无法纠正错误的只读环境中。如前面所提到的,“只读环境”可以指电子设备不能对NVM执行写入从而不能纠正在NVM中检测到的任何错误的工作状态。
另一因素是某些检测到的错误可能是瞬态的。例如,在设备引导期间,电子设备100可能接收到一个或多个刷新通知,其指出需要对特定页面或区块执行刷新操作。然而,在随后读取该页面或区块时,设备100可能不会接收到任何另外的刷新通知。尽管如此,仍然应当对该页面或区块执行刷新操作。
此外,由于正在装入的数据仅仅由引导程序读取,一旦设备100已经完成了引导,设备100可能无法再次检测到这些错误。因而,在设备引导完成之后,这些错误可能未被纠正。
结果,尽管最好是尽快地纠正这些错误(例如,通过停用这一个或多个区块或者将所存储的数据移动到NVM 120中的不同区块),但设备100可能继续工作,直到固件无法装入(例如,由于一个或多个致命错误)。这时可能就需要对设备100执行强制还原(force restore)。
即使在完成了强制还原之后,原始错误可能仍然保持未被纠正。特别地,在强制还原期间,新固件可能被写入NVM 120。在某些情况下,新固件可能被写入到曾存储旧固件的相同区块。通常,设备100可能不会重新检测原始错误,因为没有协议让设备100在将新固件写入NVM 120之前读出并检查旧固件。
一种可能的解决方案是在引导过程完成之后让电子设备100重新检验存储在存储器114中的固件。但是,使用这种方法,设备100可能无法重新检测瞬态的非致命错误。而且,这种方法可能对设备性能有负面影响,因为设备100在它原本可以是全功能的时候浪费时间读数据。
因此,为了防止固件故障和避免数据丢失,NVM接口116可以被配置为在设备引导期间检测错误和维护错误日志。一旦设备100已经进入可写环境(例如,设备引导已完成),NVM驱动器117就可以被配置为利用错误日志来纠正所检测到的错误。例如,NVM驱动器117可以将数据移动到更可靠的区块和/或停用接近故障的区块,从而提升整体设备可靠性。如前面所提到的,“可写环境”可以指电子设备的一个或多个部件能够对NVM执行写入操作的工作状态。
现在参考图2,示出了电子设备引导的示意性图示200。存储器214可以与存储器114(图1)相同或相似。同样,NVM 220可以与NVM 120(图1)相同或相似。
应当理解,图2中示出的存储器214的部分230-234仅仅是示意性的。例如,所示出的每个部分的大小是示意性的,并且不应当被视为是将实施例限制为所示出的大小。还应当理解,各个部分的顺序可以被重新安排为任何适当的顺序。
在某些实施例中,电子设备(例如图1的电子设备100)的操作***可以在电子设备的加电或重启期间从NVM 220引导。如图2所示,例如,当设备在时间段T1期间加电或重启时,引导程序230可以通过NVM接口(例如图1的NVM接口116)从NVM 220被装入易失性存储器214中。
在时间段T2期间,引导程序230可以被配置为将操作***和相关数据装入到存储器214中。例如,除操作***以外,NVM接口还可以装入内核和固件,它们可用于配置操作***和/或可以由操作***使用以进行启动。特别地,NVM接口可以从NVM的一个或多个存储单元(例如,一个或多个区块)中读取操作***、内核和固件。在某些实施例中,NVM接口可以在只读环境下执行该读取。从而,如图2所示,操作***和相关数据可以由数据232表示,其可以通过NVM接口从NVM 220装入存储器214中。
在数据232被装入存储器214中时,NVM接口可以检测NVM 220中的一个或多个错误(例如,正从NVM 220被读取的固件中的一个或多个错误)。在检测到这样的错误后,NVM接口可以将一个或多个错误通知(例如,刷新通知或uECC通知)存储在存储器214的一个部分中。例如,在时间段T3期间,NVM接口可以将一个或多个错误通知存储在错误日志234中,错误日志234可被实现为存储器214中的暂存缓冲区(scratch memory buffer)和/或保留的随机存取存储区域。
一旦电子设备已经引导(例如,操作***已装入存储器214中并且已经启动),NVM驱动器(例如图1的NVM驱动器117)就可以检查错误日志234并执行一个或多个纠正动作。特别地,NVM驱动器可以工作在可写环境中,在该环境中,NVM驱动器可以指示总线控制器(例如图1的总线控制118)执行一个或多个纠正动作。
因而,在图2的时间段T4期间,NVM驱动器可以检查错误日志234。例如,NVM驱动器可以处理错误日志234并读取一个或多个错误通知。
然后,在时间段T5期间,NVM驱动器可以利用错误通知来纠正错误250。例如,响应于从错误日志234读取一个或多个刷新通知,NVM驱动器可以刷新存储在NVM 220的页面或区块中的数据(例如,通过执行垃圾收集(garbage collection))。作为另一例子,响应于从错误日志234读取一个或多个uECC通知,NVM驱动器可以发送表明设备可能需要还原的通知。
参考图3,示出了用于处理从NVM(例如图1的NVM 120或图2的NVM 220)进行设备引导期间的错误的示意性过程300的流程图。过程300的步骤可以由能够与NVM进行接口的NVM接口(例如图1的NVM接口116)执行,由能够向NVM写入数据的NVM驱动器(例如图1的NVM驱动器117)执行,或者由电子设备(例如图1的电子设备100)任何部件或部件组合来执行。
过程300可以在步骤302开始。在步骤304,NVM接口可以更新固件。例如,固件可以在电子设备在工厂中时进行更新,或者可以在设备正在使用时的软件下载期间进行更新。
然后,在步骤306,可以确定固件更新是否成功。如果在步骤306确定固件更新不成功,则过程300可以返回步骤304,在这里可以重新更新固件。
如果在步骤306确定固件更新成功,则过程300可以进行到步骤308。在步骤308,电子设备可以从NVM引导。例如,NVM接口可以将引导程序从NVM装入易失性存储器(例如图1的存储器114或图2的存储器214)。然后,使用引导程序,NVM接口可以尝试将操作***、内核和固件装入到易失性存储器中。例如,如图2所示,NVM接口可以将引导程序230从NVM 220装入存储器214,并且引导程序230可以尝试将数据232装入到存储器214中。
继续到步骤310,可以确定是否发生了致命错误(例如,致命的引导装入错误)。这样的致命错误可能阻止电子设备成功引导。如果在步骤310确定发生了致命错误,则过程300可以返回步骤304,在这里NVM接口可以尝试再次更新固件。
如果在步骤310确定没有发生致命错误,则过程300可以进行到步骤312。在步骤312,可以确定NVM中是否发生了至少一个错误(例如,在固件装入期间的一个或多个错误)。
如果在步骤312确定NVM中没有发生至少一个错误,则一旦NVM接口完成了将操作***、内核和固件装入到易失性存储器中,并且操作***已经启动(例如,设备已到达可写环境),过程300就可以进行到步骤314。
然而,如果在步骤312确定NVM中发生了至少一个错误,则过程300可以进行到步骤316。在某些实施例中,NVM接口可以响应于接收到一个或多个错误通知(例如,刷新通知和/或uECC通知)而确定发生了至少一个错误。例如,如图2所示,NVM接口可以检测NVM 220中的一个或多个错误250。
在步骤316,一个或多个错误通知可以被存储在易失性存储器的一个部分中。例如,如图2所示,NVM接口可以将错误通知存储在存储器214的错误日志234中。在存储了一个或多个错误通知后,过程300可以进行到步骤314。
在步骤314,可以确定在设备引导期间是否曾检测到NVM中的一个或多个错误。例如,NVM驱动器(例如,图1的NVM驱动器117)可以处理错误日志,并且确定错误日志中是否存储了一个或多个错误通知。
如果在步骤314确定在设备引导期间没有检测到错误,过程300可以在步骤318结束。在某些实施例中,在稍后的一个时间点,电子设备可以断电并重启。然后可以启动子过程330,其中在步骤308,电子设备可以从NVM引导。
如果在步骤314确定在设备引导期间曾检测到一个或多个错误,则NVM驱动器可以尝试利用所存储的错误通知来纠正这一个或多个错误。因此,过程300可以进行到步骤320。
在步骤320,可以确定在设备引导期间是否曾检测到一个或多个致命错误。例如,NVM驱动器可以确定错误日志是否包括一个或多个uECC通知。
如果在步骤320确定在设备引导期间检测到的错误是致命错误,过程300可以进行到步骤322。在步骤322,NVM驱动器可以停用与该致命错误相关联的一个或多个区块。例如,NVM驱动器可以首先识别相关联的区块。NVM驱动器然后可以通过将存储在该相关联的区块中的数据复制到NVM中的其它区块而停用该相关联的区块。在复制了数据之后,该相关联的区块可以从可用的可编程区块的库中被停用。在停用这些区块后,过程300可以返回步骤304,在这里,NVM接口可以强制电子设备还原。例如,NVM接口可以尝试再次更新固件。
如果在步骤320确定在设备引导期间检测到的错误不是致命错误,则过程300可以进行到步骤324。例如,NVM驱动器可能已经确定该一个或多个错误是对引导而言不重要的非致命错误。
在步骤324,NVM驱动器可以移动存储在与该非致命错误相关联的一个或多个区块中的数据。这种预防性移动可以防止非致命错误在以后发展为致命错误。例如,NVM驱动器可以首先识别相关联的区块。在识别了该区块之后,NVM驱动器可以将存储在该相关联的区块中的数据写入NVM的其它区块。过程300然后可以在步骤318结束。
将会理解,错误日志可以在电子设备(例如图2的电子设备100)的任何引导过程期间被维护和处理。因此,步骤308到322(图3中用虚线框出并被标注为子过程330)可以表示由NVM接口和/或NVM驱动器在任何设备引导过程期间采取的步骤。例如,在正常的设备引导期间,子过程330可以开始于步骤308(例如,当正在运行的电子设备断电和重启时)。
应当理解,图3的过程仅仅是示例性的。过程300和子过程330的任何步骤都可以被去除、修改或组合,并且可以增加任何另外的步骤,而不背离本发明的范围。
给出所描述的本发明的实施例是出于说明的目的而不是限制。
Claims (27)
1.一种处理电子设备中的错误的方法,该方法包括:
从非易失性存储器NVM引导电子设备,其中,在所述引导期间,以只读环境访问所述NVM,并且其中,当在所述只读环境中引导时,所述电子设备以其中所述电子设备不能够对所述NVM执行写入的操作状态进行操作;
确定在所述引导期间在NVM中是否发生了错误;
响应于确定在所述引导期间在NVM中发生了错误,将至少一个错误通知存储在易失性存储器的一个部分中;和
一旦电子设备完成了引导,使用所述至少一个错误通知纠正所述错误。
2.如权利要求1所述的方法,还包括:响应于确定在NVM中没有发生错误,继续从NVM引导电子设备。
3.如权利要求1所述的方法,其中所述易失性存储器的所述一个部分是存储缓冲区。
4.如权利要求1所述的方法,其中所述易失性存储器的所述一个部分是保留的随机存取存储区域。
5.如权利要求1所述的方法,其中所述纠正包括:
确定所述错误是非致命错误;
识别NVM中与所述错误相关联的至少一个区块;和
将存储在所述至少一个区块中的数据写入该NVM中的另一个区块。
6.如权利要求1所述的方法,其中所述纠正包括:
确定所述错误是致命错误;
识别NVM中与所述错误相关联的至少一个区块;和
停用所述至少一个区块。
7.如权利要求6所述的方法,还包括:
强制电子设备还原;和
更新电子设备上的固件。
8.一种电子设备,包括:
非易失性存储器NVM;
操作以存储错误日志的易失性存储器;和
能够操作以访问NVM的存储器接口,其中该存储器接口操作以:
将引导程序从NVM装入到所述易失性存储器中;
使用所述引导程序将固件从NVM装入到所述易失性存储器中,其中,在固件装入期间,以只读环境访问所述NVM,并且其中,在所述固件正被装入时,所述电子设备以其中所述电子设备不能够对所述NVM执行写入的操作状态进行操作;
确定在固件装入期间是否发生了至少一个错误;和
响应于确定发生了至少一个错误,在所述错误日志中存储至少一个错误通知。
9.如权利要求8所述的电子设备,其中当固件正被装入时,所述电子设备处于只读环境中。
10.如权利要求8所述的电子设备,其中所述存储器接口操作以响应于接收到刷新通知和无法纠正的纠错编码通知中的至少一个而确定发生了所述至少一个错误。
11.如权利要求8所述的电子设备,其中所述存储器接口操作以将操作***装入所述易失性存储器中。
12.如权利要求11所述的电子设备,还包括操作以向NVM写入数据的NVM驱动器。
13.如权利要求12所述的电子设备,其中所述NVM驱动器进一步操作以:
处理所述错误日志;和
纠正所述至少一个错误。
14.如权利要求8所述的电子设备,其中响应于确定没有发生所述至少一个错误,所述存储器接口操作以继续将固件装入所述易失性存储器中。
15.如权利要求8所述的电子设备,其中所述NVM是NAND闪存。
16.一种存储器接口,包括:
控制电路,该控制电路操作以:
在只读环境中将固件从电子设备的非易失性存储器NVM读取到该电子设备的易失性存储器,其中,当从所述NVM读取固件时,所述电子设备以其中所述电子设备不能够对所述NVM执行写入的操作状态进行操作;和
在被读取的固件中检测至少一个错误;和
NVM驱动器,该NVM驱动器操作以便一旦电子设备到达了可写环境就纠正所述至少一个错误。
17.如权利要求16所述的存储器接口,其中所述控制电路操作以将至少一个错误通知存储在所述易失性存储器的一个部分中。
18.如权利要求16所述的存储器接口,其中所述NVM驱动器在可写环境中工作。
19.如权利要求16所述的存储器接口,其中所述NVM驱动器操作以:
确定所述至少一个错误是非致命错误;
识别NVM中与该错误相关联的至少一个区块;和
将存储在该至少一个区块中的数据移动到该NVM的至少一个其它区块。
20.如权利要求16所述的存储器接口,其中所述NVM驱动器操作以:
确定所述至少一个错误是致命错误;
识别NVM中与该错误相关联的至少一个区块;
将存储在该至少一个区块中的数据复制到该NVM的至少一个其它区块;和
停用所述至少一个区块。
21.一种处理电子设备中的错误的装置,该装置包括:
用于从非易失性存储器NVM引导电子设备的模块,其中,在所述引导期间,以只读环境访问所述NVM,并且其中,当在所述只读环境中引导时,所述电子设备以其中所述电子设备不能够对所述NVM执行写入的操作状态进行操作;
用于确定在所述引导期间在NVM中是否发生了错误的模块;
用于响应于确定在所述引导期间在NVM中发生了错误,将至少一个错误通知存储在易失性存储器的一个部分中的模块;和
用于一旦电子设备完成了引导,使用所述至少一个错误通知纠正所述错误的模块。
22.如权利要求21所述的装置,还包括:用于响应于确定在NVM中没有发生错误,继续从NVM引导电子设备的模块。
23.如权利要求21所述的装置,其中所述易失性存储器的所述一个部分是存储缓冲区。
24.如权利要求21所述的装置,其中所述易失性存储器的所述一个部分是保留的随机存取存储区域。
25.如权利要求21所述的装置,其中所述用于纠正的模块包括:
用于确定所述错误是非致命错误的模块;
用于识别NVM中与所述错误相关联的至少一个区块的模块;和
用于将存储在所述至少一个区块中的数据写入该NVM中的另一个区块的模块。
26.如权利要求21所述的装置,其中所述用于纠正的模块包括:
用于确定所述错误是致命错误的模块;
用于识别NVM中与所述错误相关联的至少一个区块的模块;和
用于停用所述至少一个区块的模块。
27.如权利要求26所述的装置,还包括:
用于强制电子设备还原的模块;和
用于更新电子设备上的固件的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/872,867 | 2010-08-31 | ||
US12/872,867 US8589730B2 (en) | 2010-08-31 | 2010-08-31 | Handling errors during device bootup from a non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102385535A CN102385535A (zh) | 2012-03-21 |
CN102385535B true CN102385535B (zh) | 2015-03-11 |
Family
ID=44513205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110253454.6A Active CN102385535B (zh) | 2010-08-31 | 2011-08-24 | 处理从非易失性存储器进行设备引导期间的错误 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8589730B2 (zh) |
EP (1) | EP2612241A1 (zh) |
JP (1) | JP5608139B2 (zh) |
KR (2) | KR101375992B1 (zh) |
CN (1) | CN102385535B (zh) |
TW (2) | TWI514408B (zh) |
WO (1) | WO2012030547A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US8706955B2 (en) | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
US9146824B1 (en) * | 2011-11-04 | 2015-09-29 | Marvell International Ltd. | Management of bit line errors based on a stored set of data |
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
KR101467309B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템 |
KR101467302B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 |
DE102013108478A1 (de) * | 2013-08-06 | 2015-02-12 | Endress+Hauser Process Solutions Ag | Verfahren zur Erweiterung einer eingebetteten Softwarekomponente eines Feldgerätes |
US20150046772A1 (en) * | 2013-08-06 | 2015-02-12 | Sandisk Technologies Inc. | Method and device for error correcting code (ecc) error handling |
CN104750598B (zh) * | 2013-12-26 | 2017-11-24 | 南京南瑞继保电气有限公司 | 一种iec61850日志服务的存储方法 |
KR102289001B1 (ko) * | 2014-06-09 | 2021-08-13 | 삼성전자주식회사 | 솔리드 스테이드 드라이브 및 그것의 동작 방법 |
KR102297541B1 (ko) | 2014-12-18 | 2021-09-06 | 삼성전자주식회사 | 메모리 영역의 신뢰성에 기초하여 데이터를 저장하는 저장 장치 및 스토리지 시스템 |
KR102372825B1 (ko) * | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9959125B2 (en) * | 2015-08-05 | 2018-05-01 | Samsung Electronics Co., Ltd. | Field update of boot loader using regular device firmware update procedure |
US10665305B2 (en) | 2015-09-09 | 2020-05-26 | Toshiba Memory Corporation | Host device connectable to memory device performing patrol read and memory device performing patrol read |
US10049004B2 (en) * | 2015-12-09 | 2018-08-14 | Samsung Electronics Co., Ltd. | Electronic system with memory data protection mechanism and method of operation thereof |
US10055377B2 (en) | 2016-02-24 | 2018-08-21 | Western Digital Technologies, Inc. | Using a proprietary framework on a standards-based embedded device |
US10733045B2 (en) * | 2016-07-14 | 2020-08-04 | Microsoft Technology Licensing, Llc | Online repair of metadata for structured data including file systems |
JP6723863B2 (ja) * | 2016-08-01 | 2020-07-15 | オリンパス株式会社 | 組み込みシステム、撮影機器及びリフレッシュ方法 |
US10365961B2 (en) * | 2016-09-09 | 2019-07-30 | Dell Products L.P. | Information handling system pre-boot fault management |
TWI640872B (zh) * | 2017-07-07 | 2018-11-11 | 群聯電子股份有限公司 | 記憶體控制電路單元、記憶體儲存裝置及其控制方法 |
TWI645289B (zh) * | 2017-10-31 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體操作方法 |
US11023302B2 (en) | 2018-03-07 | 2021-06-01 | Dell Products L.P. | Methods and systems for detecting and capturing host system hang events |
US10705902B2 (en) | 2018-05-03 | 2020-07-07 | Western Digital Technologies, Inc. | Crash log storage and retrieval using boot partitions in solid state systems |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
KR20200087557A (ko) | 2019-01-11 | 2020-07-21 | 주식회사 엘지화학 | 에러 복구 방법, 이를 이용한 마이크로 컨트롤러 유닛, 및 상기 마이크로 컨트롤러를 포함하는 배터리 장치 |
KR20200088565A (ko) | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 저장 장치, 컨트롤러 및 저장 장치의 동작 방법 |
KR20200089482A (ko) | 2019-01-17 | 2020-07-27 | 주식회사 엘지화학 | 메모리, 상기 메모리의 에러 복구 방법, 및 상기 메모리를 포함하는 배터리 장치 |
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 |
US20210342241A1 (en) * | 2020-04-29 | 2021-11-04 | Advanced Micro Devices, Inc. | Method and apparatus for in-memory failure prediction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0664511A2 (en) * | 1994-01-20 | 1995-07-26 | Alcatel Australia Limited | Microprocessor fault log |
CN101520735A (zh) * | 2008-12-18 | 2009-09-02 | 康佳集团股份有限公司 | 一种启动闪存内引导程序的方法及其网络电视和机顶盒 |
CN101740123A (zh) * | 2008-11-10 | 2010-06-16 | 扬智科技股份有限公司 | 存储器的数据保护方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768498A (en) * | 1996-01-23 | 1998-06-16 | Lucent Technologies | Protocol verification using symbolic representations of queues |
US5737520A (en) * | 1996-09-03 | 1998-04-07 | Hewlett-Packard Co. | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
US6463550B1 (en) * | 1998-06-04 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory |
US6496945B2 (en) * | 1998-06-04 | 2002-12-17 | Compaq Information Technologies Group, L.P. | Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory |
US6279127B1 (en) * | 1998-08-20 | 2001-08-21 | International Business Machines Corporation | System for predicting year-2000 instruction failures |
US6807643B2 (en) * | 1998-12-29 | 2004-10-19 | Intel Corporation | Method and apparatus for providing diagnosis of a processor without an operating system boot |
US6591272B1 (en) * | 1999-02-25 | 2003-07-08 | Tricoron Networks, Inc. | Method and apparatus to make and transmit objects from a database on a server computer to a client computer |
EP1046991B1 (de) * | 1999-04-20 | 2002-12-11 | Siemens Aktiengesellschaft | Verfahren zum Testen der Unabhängigkeit und Verträglichkeit eines Software-Moduls |
US6467052B1 (en) * | 1999-06-03 | 2002-10-15 | Microsoft Corporation | Method and apparatus for analyzing performance of data processing system |
GB2366879B (en) * | 2000-09-16 | 2005-02-16 | Ibm | Tracing the execution path of a computer program |
GB2383437B (en) * | 2001-12-20 | 2004-02-04 | Sun Microsystems Inc | System trace unit |
KR100441608B1 (ko) * | 2002-05-31 | 2004-07-23 | 삼성전자주식회사 | 낸드 플래시 메모리 인터페이스 장치 |
KR100448905B1 (ko) * | 2002-07-29 | 2004-09-16 | 삼성전자주식회사 | 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치 |
KR100484485B1 (ko) * | 2002-10-01 | 2005-04-20 | 한국전자통신연구원 | 비휘발성 메모리에의 데이터 저장 방법 및 장치 |
JP2006526831A (ja) * | 2003-06-03 | 2006-11-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 不揮発性メモリからのブート |
US20050229020A1 (en) * | 2004-04-06 | 2005-10-13 | International Business Machines (Ibm) Corporation | Error handling in an embedded system |
US7711989B2 (en) | 2005-04-01 | 2010-05-04 | Dot Hill Systems Corporation | Storage system with automatic redundant code component failure detection, notification, and repair |
US7523350B2 (en) * | 2005-04-01 | 2009-04-21 | Dot Hill Systems Corporation | Timer-based apparatus and method for fault-tolerant booting of a storage controller |
US7702966B2 (en) * | 2005-09-07 | 2010-04-20 | Intel Corporation | Method and apparatus for managing software errors in a computer system |
US7546487B2 (en) * | 2005-09-15 | 2009-06-09 | Intel Corporation | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
US7975184B2 (en) * | 2006-04-03 | 2011-07-05 | Donald Goff | Diagnostic access system |
JP4840859B2 (ja) * | 2006-05-10 | 2011-12-21 | ルネサスエレクトロニクス株式会社 | 半導体装置、及び起動方法 |
TWI327290B (en) * | 2006-10-03 | 2010-07-11 | Magic Pixel Inc | Electronic system with nand flash memory storing boot code and a highly reliable boot up method |
JP2008191701A (ja) | 2007-01-31 | 2008-08-21 | Toshiba Corp | エラー回復処理方法および情報処理装置 |
US20080256400A1 (en) * | 2007-04-16 | 2008-10-16 | Chih-Cheng Yang | System and Method for Information Handling System Error Handling |
US8161474B2 (en) * | 2007-12-14 | 2012-04-17 | Sharp Laboratories Of America, Inc. | Diagnostic information preservation during installations of over the air update of wireless handset software |
JP2010044635A (ja) * | 2008-08-14 | 2010-02-25 | Hitachi Ltd | ファイルサーバシステム及びファイルサーバシステム起動方法 |
JP2010140266A (ja) | 2008-12-11 | 2010-06-24 | Toshiba Corp | 電子デバイスシステムと電子デバイス |
US8175012B2 (en) * | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
US8555050B2 (en) * | 2010-07-15 | 2013-10-08 | Broadcom Corporation | Apparatus and method thereof for reliable booting from NAND flash memory |
-
2010
- 2010-08-31 US US12/872,867 patent/US8589730B2/en active Active
-
2011
- 2011-08-18 EP EP11749060.7A patent/EP2612241A1/en not_active Withdrawn
- 2011-08-18 WO PCT/US2011/048223 patent/WO2012030547A1/en active Application Filing
- 2011-08-24 JP JP2011197631A patent/JP5608139B2/ja active Active
- 2011-08-24 CN CN201110253454.6A patent/CN102385535B/zh active Active
- 2011-08-24 TW TW101106787A patent/TWI514408B/zh not_active IP Right Cessation
- 2011-08-24 TW TW100130379A patent/TWI501253B/zh not_active IP Right Cessation
- 2011-08-24 KR KR1020110084763A patent/KR101375992B1/ko active IP Right Grant
-
2012
- 2012-02-02 KR KR1020120010714A patent/KR101635658B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0664511A2 (en) * | 1994-01-20 | 1995-07-26 | Alcatel Australia Limited | Microprocessor fault log |
CN101740123A (zh) * | 2008-11-10 | 2010-06-16 | 扬智科技股份有限公司 | 存储器的数据保护方法 |
CN101520735A (zh) * | 2008-12-18 | 2009-09-02 | 康佳集团股份有限公司 | 一种启动闪存内引导程序的方法及其网络电视和机顶盒 |
Also Published As
Publication number | Publication date |
---|---|
JP5608139B2 (ja) | 2014-10-15 |
TW201222554A (en) | 2012-06-01 |
EP2612241A1 (en) | 2013-07-10 |
TWI501253B (zh) | 2015-09-21 |
KR20120021210A (ko) | 2012-03-08 |
US8589730B2 (en) | 2013-11-19 |
KR20120024906A (ko) | 2012-03-14 |
KR101375992B1 (ko) | 2014-03-18 |
TWI514408B (zh) | 2015-12-21 |
WO2012030547A1 (en) | 2012-03-08 |
TW201230057A (en) | 2012-07-16 |
JP2012069107A (ja) | 2012-04-05 |
KR101635658B1 (ko) | 2016-07-01 |
CN102385535A (zh) | 2012-03-21 |
US20120054541A1 (en) | 2012-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102385535B (zh) | 处理从非易失性存储器进行设备引导期间的错误 | |
CN102135927B (zh) | 一种基于nand flash的***引导方法和装置 | |
CN102298545B (zh) | 一种***启动引导处理方法及装置 | |
US20120260027A1 (en) | Device bootup from a nand-type non-volatile memory | |
JP5735338B2 (ja) | プログラムフェイル後のアクセス可能な情報を持つメモリバッファ | |
US8902671B2 (en) | Memory storage device, memory controller thereof, and method for programming data thereof | |
CN101634960A (zh) | 一种修改bios参数及重新生成校验和的方法 | |
KR20110098567A (ko) | 최소 부트 이미지의 생성 방법 및 장치 | |
CN101021797A (zh) | 一种用于嵌入式***的软件修复和升级方法 | |
US20060224874A1 (en) | Method for updating system management basic input output system (SMBIOS) data | |
US9063888B2 (en) | Program code loading and accessing method, memory controller, and memory storage apparatus | |
CN108874582A (zh) | 一种***恢复方法、装置及终端 | |
CN104424047A (zh) | 一种nvram数据恢复方法和装置 | |
CN111198780B (zh) | 执行存储器***的恢复操作的设备和方法 | |
CN108345430B (zh) | 一种Nand flash元件及其运行控制方法和装置 | |
CN110928726A (zh) | 一种基于看门狗及pxe的嵌入式***自恢复方法及*** | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
US11182245B2 (en) | Operating method of memory controller, memory controller, and storage device | |
CN108255540B (zh) | 一种Nand flash元件及其载入控制方法和装置 | |
CN102831032A (zh) | 硬盘主引导记录的修复***及方法 | |
CN113345500A (zh) | 用来进行恢复管理的方法及设备 | |
KR20060068558A (ko) | 휴대 단말기를 위한 펌웨어 업그레이드 방법 | |
CN104751881A (zh) | 快闪存储器烧录方法 | |
KR100575927B1 (ko) | 이동통신 단말기에서 부팅 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |