CN1902583A - 快闪存储器系统起动操作 - Google Patents

快闪存储器系统起动操作 Download PDF

Info

Publication number
CN1902583A
CN1902583A CNA2004800393109A CN200480039310A CN1902583A CN 1902583 A CN1902583 A CN 1902583A CN A2004800393109 A CNA2004800393109 A CN A2004800393109A CN 200480039310 A CN200480039310 A CN 200480039310A CN 1902583 A CN1902583 A CN 1902583A
Authority
CN
China
Prior art keywords
firmware
firmware code
flash memory
copy
memory
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
Application number
CNA2004800393109A
Other languages
English (en)
Other versions
CN1902583B (zh
Inventor
卡洛斯·J·冈萨雷斯
安德鲁·汤姆林
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Corp
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 SanDisk Corp filed Critical SanDisk Corp
Publication of CN1902583A publication Critical patent/CN1902583A/zh
Application granted granted Critical
Publication of CN1902583B publication Critical patent/CN1902583B/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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

本发明揭示将用于控制非易失性快闪存储器系统操作的固件码的多个副本存储于存储器系统的快闪存储器的不同合适位置处。还将这些位置的一地址映像图存储于所述快闪存储器内。一旦所述存储器系统初始化,其微处理器执行存储于所述存储器控制器内的启动码,以参考所述地址映像图并将所述固件的一副本从所述快闪存储器加载到一控制器存储器内,然后所述微处理器可从所述控制器存储器中执行所述固件副本以操作所述存储器系统来存储及检索用户数据。一错误校正码(ECC)用于检查所述数据,但所述快闪存储器内存储的所述二个或更多个固件副本的最佳部分用于减少对使用ECC的需要。当用户数据是以二种以上状态存储于所述快闪存储器内时,则可将所述固件码以二种状态存储于所述同一快闪存储器内。

Description

快闪存储器系统起动操作
技术领域
本发明通常来说涉及非易失性快闪存储器系统的控制器的初始化,而更具体来说涉及将操作固件存储于快闪存储器内以及一旦初始化或重启所述存储器系统便将所存储的固件读入一控制器存储器内。
背景技术
如今人们正使用许多商业上已取得成功的非易失性存储器产品,尤其是小形状因数卡形式的产品,其采用一快闪EEPROM(电可抹除及可编程只读存储器)单元阵列。所述卡内还包括一存储器控制器以与所述卡所连接的一主机介接并控制所述卡内所述存储器阵列的操作。此一控制器通常包括一微处理器、某种非易失性只读存储器(ROM)以及一易失性随机存取存储器(RAM)。除所述记忆卡实施方案外,另一选择是,还可将一个或一个以上集成电路形式的此类存储器系统嵌入各类主机系统中。
二种通用的存储器单元阵列架构已在商业上获得应用:NOR与NAND。在典型的NOR阵列中,存储器单元连接在相邻的位线源极及漏极扩散之间,所述源极及漏极扩散是在一列方向上延伸并有控制栅极连接至字线(沿单元行延伸)。一存储器单元包括位于所述源极与漏极之间的至少一部分单元通道区域上的至少一存储组件。因此,所述存储组件上的一编程的电荷电平控制所述单元的一操作特征,然后可通过向所寻址的存储器单元施加适当的电压来读取所述单元。美国专利案第5,070,032、5,095,344、5,313,421、5,315,541、5,343,063、5,661,053及6,222,762号中给出此类单元,及其存储器系统中的使用及制造方法的实例。
所述NAND阵列利用与个别位线之间一个或一个以上选择晶体管连接在一起的多個由二个以上(例如16或32个)存储器单元组成的串联串与一参考电位来形成多个单元列。字线延伸跨过大量所述列内的单元。在编程期间通过以下方式读取及验证一列内的一个别单元:致使硬导通所述串中的其余单元以使流经一串的电流取决于所述寻址单元内存储的电荷电平。美国专利案第5,570,315、5,774,397、6,046,935及6,522,580号中给出NAND架构阵列及其作为存储器系统的一部分操作的实例。
前面所参考的专利案及文章中所论述的当前快闪EEPROM阵列的电荷存储组件中最常见的是导电浮动栅极,起通常是由掺杂的多晶硅材料形成。可用于快闪EEPROM系统中的另一类存储器单元使用一非导电介电材料替代一导电浮动栅极来以一非易失性方式存储电荷。Chan等人的文章“真正的单晶体管氧化物-氮化物-氧化物EEPROM装置”(IEEE电子装置学刊第EDL-8卷第3号,1987年3月,第93至95页)中说明了此一单元。一由氧化硅、氮化硅及氧化硅(“ONO”)形成的三层电介质被夹在一导电控制栅极与所述存储器单元通道上一半导电衬底的一表面之间。通过将电子从所述单元通道注入所述氮化物来编程所述单元,其中所述电子被捕获并存储于一受限制区域内,并通过将热电洞注入所述氮化物来抹除所述单元。2002年10月25日申请的序列号为10/280,352的美国专利申请案(公告案号为2003-0109093)中说明了采用介电存储组件的数种特定单元结构。
如同在绝大多数集成电路应用中,对于快闪EEPROM存储器单元阵列,同样存在缩小构件建某一集成电路功能所需硅衬底区域的压力。为了增加一给定尺寸的记忆卡及其它类型封装的存储容量,或为了增加容量同时减小尺寸,一直希望增加硅衬底的一给定区域内所能存储的数字数据的数量。增加数据存储密度的一种方法是每一存储器单元及/或每一存储组件存储多于一个数据位。此方法是通过将一存储组件电荷电平电压范围窗口分成多于二个状态而实现。使用四个此类状态允许每一单元存储二个数据位,八个状态允许每一存储组件存储三个数据位,以此类推。美国专利案第5,043,940及5,172,338号中说明了使用浮动栅极的多状态快闪EEPROM结构及其操作,而对于使用介电浮动栅极的结构,则在前面提到的序号为10/280,352的美国申请案中有相关说明。一多状态存储器单元阵列的选定部分也可基于各种原因以美国专利案第5,930,167及6,456,528号中所说明的方式在两种状态(二进制)中操作。
一典型的快闪EEPROM阵列的存储器单元被划分成一起抹除的分立的单元区块。即,区块是抹除单位。每一区块通常存储一个或一个以上数据页面,所述页面是编程及读取的最小单位,但在一单一操作中可编程或读取多个页面。每一页面通常存储一个或一个以上数据区段,所述区段的尺寸由主机系统来定义。根据一所建立的关于磁盘驱动器的标准,一实例区段包括512个用户数据字节,再加上某些数量的关于用户数据及/或所述用户数据存储于其中的区块的开销信息的字节。存储器系统通常在每一区块内配置有16、32或更多页面,且每一页面均存储一个或仅数个主机数据区段。
一快闪存储器系统中的控制器通常包括一微处理器,所述微处理器执行来自—固件操作系统的指令以控制所述存储器阵列的操作以及数据在所述阵列与所述主机系统之间的流动。在某些商业产品中,此固件存储于作为所述控制器一部分的一小型快闪EEPROM内,其通常是一与一个或一个以上存储器单元阵列集成电路芯片分离的集成电路芯片。使用一快闪存储器允许通过重新编程而容易地更新所述固件。通常,一旦所述系统通电或重置,便从所述快闪存储器读取所述固件并将所述固件读入控制器RAM。最初,所述控制器微处理器执行所述控制器ROM内存储的少量启动码以将所述固件加载到RAM内。然后,由于可使用能够比所述快闪存储器更快读取的此一类型的存储器,所述微处理器执行来自所述RAM的固件指令。当然,所述RAM是易失性的,但是,如果断电,则在恢复电力后所述固件被再次从所述快闪存储器加载到所述RAM内并恢复所述存储器系统的操作。
尽管此固件启动系统操作得相当好,但所述控制器集成电路芯片较昂贵,因为必须使用与用于形成所述芯片上的其它电路不同的一程序来形成所述快闪存储器。因此人们已建议:为了降低产品成本,将所述固件存储于不允许所述主机存取以存储用户数据的快闪存储器单元阵列的指定区块内。一旦系统初始化,所述控制器微处理器便执行所述ROM启动码以将所述固件从快闪存储器的指定区块加载到所述RAM内。此仍然允许通过重新编程所述快闪区块来改变及更新所有固件,因为所述ROM内仅存储少量码来载入所述固件。
发明内容
显然,极为重要的是保持加载到所述控制器RAM内的固件的完整性。所加载的固件中的任何错误(即使仅在一个位内)也能致使所述存储器系统不规则地操作,或者甚至根本不能操作。除此类不规则操作或失效的其它不利影响外,用户数据在其编程或读取时可能受到破坏,或者甚至使其不能从所述存储器中检索。即使后来通过重新加载所述固件或所述固件的另一副本来校正所述错误,用户数据或从所述快闪存储器读取用户数据的能力可能已经遭到不能修复的损害。因此,在将所述固件编程到所述快闪存储器的保留区块内的过程中以及在所述固件在系统初始化后向RAM转移期间,均采取步骤以改善所述固件的完整性,所述固件控制所述微处理器的操作以编程用户数据并将用户数据存储于所述快闪存储器的其它区块内。
将所述操作固件的二个或二个以上副本存储于所述快闪存储器内的不同位置处。所述位置无需固定。而是,可最佳地选择每一卡或嵌入式存储器系统的存储器单元的保留区块以用于在将所述固件编程到所述存储器内(作为每一系统的最后制造步骤之一)时存储所述固件。在制造期间,还将具有所述固件副本所存储区块的地址的映像图编程到所述存储器的数個指定区块的一区块中。所述ROM启动码致使所述控制器微处理器依次寻址所述数個指定区块直至其找到所述地址映像图。然后将所述地址映像复制到所述控制器RAM内,并通过所述微处理器从所述地址映像图中读取所述固件的第一副本的起点存在于其中的快闪存储器区块的地址,然后使用读取的所述地址来寻址所述区块以开始将所述第一固件副本复制到RAM内。所述可编程固件地址映像图的使用允许将所述固件存储于不同卡上的不同快闪存储器位置而不会增加所述ROM启动码或启动过程的复杂性。
尽管寻常的快闪存储器是在用于用户数据的多个状态中操作,但存储所述固件的保留区块可在二进制状态或者数量比用于所述用户数据的状态少的状态中操作。即,尽管所述快闪存储器大部分中的存储器单元的存储组件存储二个或二个以上数据位,但可操作所述保留区块的存储组件以各自存储较少数量的一个或一个以上数据位。此改进了不同状态之间的容限,并因此使得所述固件数据对干扰及其它可能引起错误的影响不太敏感。除此改进的可靠性之外,可更快地读取以较少数量的状态存储的数据。尽管此减小了所述保留区块内存储的数据的密度,但仅涉及相对较少的区块。因此,对作为一整体的存储器系统的影响通常较低。
通常将所述固件数据与依据一已知冗余码算法从所述数据中计算出的一错误校正码(ECC)一起存储于所述快闪存储器内。所述ECC通常是与固件数据的每一区段或页面一起存储。一旦将所述固件数据从所述快闪存储器保留区块上载到所述控制器,便使用所述ECC检查所述数据的错误。如果一区段的一个或一个以上位是错误的,则可使用所述区段的ECC来校正所述位,其前提是错误位的数量在所使用的特定ECC算法的能力范围内。另一选择是,可从存储于快闪存储器内的一个或一个以上替代副本中读取所述区段。如果所述第一副本内的错误数量超出所述ECC算法对其进行校正的能力,则当然从一替代固件副本中读取所述区段。如果一区段的所有替代副本均包含错误,则可校正并使用错误最少的一副本。优选由作为所述控制器一部分提供的一硬件电路来执行所述ECC计算,而非由所述控制器微处理器在所述ROM启动码的控制下执行所述ECC计算。但是,一旦检测到一可校正的数据错误,所述微处理器便着手通过执行ROM启动码指令来校正所述错误。
当在读取期间检测到固件数据位的错误时,还可使用一容限技术。即,如果通过使用一ECC确定存在错误,则第二次可以不同的参考电平读取相同的数据;即,为所述固件的一个或一个以上位的存储等级中的某一错误提供一容限。通常,将响应所述ECC检测到数量多于其可校正的错误而使用所述容限读取。另一选择是,可在所述ECC检测到错误后但在使用所述ECC来校正所述错误之前采用一容限读取。在任一情况下,均使用所述ECC来验证借助容限读取的数据的有效性。如果不能以此方式读取有效数据,则读取第二固件副本。
可在所述快闪存储器的一保留区段内设定一“固件存在”旗标以指示存储所述固件码的一副本。然后,所述启动码促使在寻址包含所述启动码的区域之前读取所述旗标。如果所述旗标不指示存在一相关的固件副本,则不做读取所述旗标的尝试。对于有效存储的固件也可使用一“不加载”旗标以防止在正执行诊断时加载所述固件。所述二个旗标的组合控制所述微处理器是否尝试从所述快闪存储器读取及加载固件。
本发明的其他方面、优点及特征包含在以下关于其实例的说明中,应结合附图阅读此说明。本文所引用的所有专利案、专利申请案、文章及其它公告案的全部内容均出于各种目的以引用的方式并入本文中。
附图说明
图1是一其中可实施本发明各个方面的非易失性存储器系统的方块图;
图2示意性地说明图1的系统的非易失性存储器的地址空间,其显示包括其一映像图及固件文件在内的保留文件的存储;
图3说明存储在图1及2的非易失性存储器内的映像文件的数据内容;
图4是一显示图1的存储器系统在系统初始化后即刻将固件从非易失性存储器上载到控制器的操作的一第一实施例的流程图;
图5说明图4的流程图所说明的操作的一个方面;
图6是一显示将固件从一主机下加载到图1的非易失性存储器系统内的流程图;
图7是一显示在卡制造期间发生的一装载或升级固件的操作的流程图;及
图8是一显示图1的存储器系统在系统初始化后即刻将固件从非易失性存储器上载到控制器的操作的一第二实施例的流程图。
具体实施方式
如上文背景技术中所述的快闪EEPROM系统在功能上可如图1所示。一非易失性存储器系统11通常包括一非易失性存储器单元阵列13和一控制器15。存储器单元阵列13可以是上文背景技术中所述的类型,或某些其它类型的可再编程非易失性存储器。所述控制器包括:与存储器单元阵列13介接的电路17、一微处理器19、一随机存取存储器(RAM)21、一只读存储器(ROM)23、错误校正码(ECC)计算电路25及主机接口电路27。存储器系统11通过主机接口电路27连接至一主机29。主机29可以是一个人计算机、数字照相机、个人数字助理、蜂窝式电话、数字音频播放器或其它需要此一非易失性存储器系统的电子系统。存储器系统11可以嵌入所述主机内,并因此构成所述主机系统的一部分,或者呈一以电及机械可拆除方式与所述主机连接的卡的形式。
对于用于具有一内部控制器的快闪存储器的此类可拆除卡,存在若干现有的标准。一此类标准(即个人计算机(PC)卡标准)提供三种类型的个人计算机卡的规格。所述个人计算机卡标准是个人计算机记忆卡国际协会(PCMCIA)的产物。CompactFlashTM卡(CFTM卡)在功能上可与所述个人计算机卡兼容但要小得多。一甚至更小的非易失性记忆卡是多媒体卡(MMCTM)。MMCTM卡的一具有约相同尺寸的修改版本是后来的安全数字(SD)卡。对于适合用作记忆卡的这些及其它电子卡,存在若干标准。所述标准中的一些标准对任何公众成员开放,而其它标准则对使用所述卡而形成的协会成员开放。
在操作中,控制器11从主机29接收数据区段连同将要编程所述数据的逻辑地址。然后,所述控制器将所述地址映像到存储器单元阵列13内物理页面的地址内。图2中给出阵列13的一实例性物理存储器地址映像图。所述存储器被划分成若干区块,例如一区块31,其中每一区块均是作为单一抹除操作一部分而一起抹除的最小存储器单元单位。进而,每一区块被划分成若干存储器单元页面,例如页面31的页面33、35、37和39。尽管为解说简单起见显示每一区块内仅存在四个页面,但通常使用更多的页面。发展趋势是具有更多页面的更大区块,其中每一页面均存储多个数据区段。
存储器单元阵列13被划分成众多区块,如图2所示。所述区块中的数个区块被指定为“保留区块”,以用于存储控制器15用来管理阵列13的操作并与主机29通讯的固件、参数及其它数据。此实例中显示区块41、43、45、47及49是保留区块。所述区块无需是所述相同存储器系统的不同副本中的相同区块,而且甚至可能在一单一存储器系统操作期间动态地重新指定所述区块(如果变化的条件使得重新指定合意的话)。控制器15不允许主机29存取所述保留区块,相反,所述控制器使用存储于所述保留区块内的数据来操作所述系统。控制器15可使用所述系统的其余区块来存储由主机29提供的用户数据,不过,在某些情况下,不允许若干区块用于正常使用并将其指定为可在所述系统操作期间替代其它区块的冗余区块(如果此变得需要的话)。所述控制器将逻辑地址从所述主机映像到变得可用于存储用户数据的阵列的物理地址空间内。
为解说所述控制器对操作固件的存储及使用,显示所述固件的第一副本是存储于相邻的保留区块47及49内,然而,不一定需要将超出一个区块容量的固件存储于物理上相邻的区块内。所述固件的一第二副本存储于保留区块41及43内。由于所述控制器所使用的固件及其它数据(例如,操作参数的数据)对于所述存储器系统的操作是如此重要,因此将其存储在二个副本内以确保防止在使用所述存储器系统时所述第一副本随时间而可能遭到破坏。所述固件文件所占据的区块数量当然取决于所述文件的尺寸及所述区块的数据存储容量。
在所述系统的初始化(例如在通电时发生或响应一硬重置)期间,将所述固件码的一副本从快闪存储器13加载到所述控制器的RAM 21内。然后,微处理器19执行来自RAM 21的固件码。为了在加载所述固件码时向微处理器19提供指令,在ROM 23内提供少量的启动码。一旦系统初始化,微处理器19便读取并执行所述启动码的指令以将一固件副本及其它必需的操作数据从快闪存储器13的保留区段加载到RAM 21内。然后,微处理器19执行所加载的固件码的指令以控制所述存储器系统的操作。对于通常类型的ROM 23,由于不能容易地更新或以其它方式改变所述启动码,因此将尽可能多的系统码放置于快闪存储器13内存储的固件码内,因为可容易地重新写入此固件码。
所述启动码促使所述微处理器起初存取所述快闪存储器内一包含一映射图(其包括此信息)的较小文件,而非将所述固件及操作数据的地址永久地包含于所述启动码快闪存储器内。在此实例中,将所述映像图存储于所述快闪存储器的一页面中。为了能够将此映像图存储于若干页面中的任一页面中,所述启动码促使所述微处理器依次存取若干指定的页面并从所述页面中读取所述数据直至其找到所述映像图。图2中显示此操作的一实例,其中指定页面51、53、55及57。在此实例中,所述指定页面物理地分布于整个阵列的不同位置处的若干区块的第一页面(页面0)。因此,如果已知所述阵列中的某些位置比其它位置更佳,则将所述映像数据编程到所述较佳位置内,因为这对于控制器能够精确地读取所述映像图很重要。例如,在具有一或数千吉位用户数据存储容量的一存储器系统中,可指定十或十二个此类潜在的映像页面。
图3中显示存储于一实例地址映像页面中的数据。字段61包含一识别所述页面包含所述地址映像数据的唯一签名。所述微处理器需要存取的若干保留文件的地址数据包含在所述地址映像页面中,图3中显示两个此类保留文件0及1的数据。每一保留文件均包括四个数据字段。对于保留文件0,字段63包含所述文件的一识别符(ID)。可将此文件指定为固件文件。字段65规定所述文件的长度,例如页面的数量。字段67中规定所述快闪存储器内所述保留文件的一第一副本的一地址,字段69中规定其第二副本的一地址。所述地址通常将是所述文件的第一页,其存储于所述文件长度字段65所表示的若干连续页面中。所述地址映像图内还包括所述保留文件1的相同数据、至少在所述初始化过程期间需要由所述控制器处理的任何其它数据。
将固件上载到控制器的第一实施例
图4的一流程图显示初始化存储器系统11以将固件码从快闪存储器13加载到控制器RAM 21内的一实例。如步骤71所示,一旦给所述系统通电或在一通电的系统中接收一硬重置,所述过程便开始。下一步骤73初始化所述控制器专用集成电路(ASIC),向快闪存储器13供电并向所述主机传送一指示所述存储器忙碌的信号。然后在步骤75中,读取并通过微处理器19来执行ROM 23内的启动码。
步骤75包括在快闪存储器内定位所述地址映像页面(参见图2),读取所述地址映像页面且然后读取一保留区块内的一文件,所述文件在所述地址映像中被识别为包括二个一位的旗标。所述旗标中的一个是一“FW_Present”旗标,其指示所述快闪存储器内是否存储有固件码。此旗标允许所述控制器在所述快闪存储器内不存在任何固件码的情况下避免尝试读取固件码。当希望不将所述固件加载到所述控制器内(即便所述固件存在于所述快闪存储器内)时,设定一第二“不加载”旗标。例如,当在无固件码的情况下执行诊断例程时,设定此第二旗标。但是,如果未预期此一操作,则不需要使用所述“不加载”旗标。如果使用所述“不载入”旗标,则可将其存储于所述快闪存储器外,例如一寄存器或一硬件旗标内。假定使用二个旗标,则下一步骤77决定所述旗标是否指示存在固件而不存在所设定的“不加载”旗标。如果指示,则以一步骤79开始的一序列继续加载所述固件。如果不指示,则所述控制器进入一闲置回路,如步骤101所指示,且可选择让所述主机介入来控制所述过程。
作为将所述二个旗标作为二个数据位存储于一保留区段内的一替代方案,可指定所述封装外的二个管脚用于设定所述二个位。例如,如果所述管脚其中之一接地,则设定那个管脚所代表的旗标。从而,作为步骤75及77的一部分,询问所述管脚的电状态。
如步骤79所指示,所述控制器设置自身以读取所述固件,其中包括汇编步骤75中从所述地址映像页面读取的二个副本的地址并准备读取所述第一副本。可在读取所述FW_Present旗标(步骤75)的同时从所述保留区块中读取标称读取条件,例如在针对特定存储器阵列的读取期间拟使用的各种电压电平,并在所述步骤79中使用所述标称读取条件设置所述读取。
在步骤81中,读取所述第一固件副本的第一页面。在此实例中,由于每一页面均存储一数据区段,因此术语“区段”在所述流程图中用作读取单位。假如所述个别页面将要存储二个、四个或更多个数据区段,则将会同时读取一页面内的所有数据区段。然而,如图4的流程图所指示,一次仍只可处理一个数据区段。
基本上采取与从所述快闪存储器中读取任何数据相同的方式将读取的固件数据传递经过所述控制器的ECC电路25。从每一数据区段中计算出一ECC并将所述ECC与作为所述区段的一部分存储为开销数据的ECC相比较。所存储的ECC是在其编程期间根据所述数据计算得出。只要在所述区段层执行错误校正,便可进行此操作,无论每一页面中是否存储有一个或一个以上数据区段。另一选择是,如果将一单一ECC用于一单一页面内的多个主机区段数据,则对一页面仅进行一次所述ECC检查。然而,按惯例每一数据区段包括二个ECC,一个用于所述固件数据部分,而另一个用于包括所述数据ECC及/或其它操作参数的开销部分。作为另一替代方案,可将与一个或一个以上固件数据区段相关的开销数据存储于不同于所述固件数据的一页面或区块内,但连续读取所述开销数据并使其相关在一起。
在一步骤83中,在所说明的特定实例中,ECC电路25促使从读取的固件数据中计算一ECC,而且作为与连同所述数据一起读取的ECC的比较结果,提供若干指示所述ECC所覆盖的所读取数据区段状态的输出位。然后,执行所述启动码的处理器19促使读取所述状态位。如果所述状态位指示所读取的数据内无错误,则如步骤85所示,为读取下一页面而更新所述页面地址及类似者。如果未读取包含所述固件文件的第一副本的所有页面,则所述处理返回到步骤79以读取下一页面。然而,如果刚读取的页面是所述第一固件文件的最后页面,则所述处理继续进行下文说明的步骤95、97及99。
但是,如果在步骤83中,来自所述ECC电路25的状态位指示所述读取位中一个或一个以上位是错误的,则接下来在步骤89中通过执行所述启动码来决定是否启用控制器15以使用所述ECC来校正所述错误(如果能的话)。下文对此进行解说。如果启用,则在步骤91中由执行所述启动码的微处理器19依据所述状态位确定所述错误的数量及类型是否可由所使用的特定错误校正算法来校正。如果能,则在步骤93中通过执行所述启动码来校正所读取的数据,而然后所述处理继续进行到步骤85,好似已无任何错误地读取了所述数据。但是如果依据ECC电路25所产生的状态位确定不能通过使用所述启动码中所包括的错误校正算法来校正所述错误,则在步骤105中识别依次轮到的下一固件副本。一典型的ECC算法能够依据位错误的复杂性而识别给定数量的位错误,但能够校正的位数量要少于所识别的给定数量。例如,如果不能校正第一固件文件副本0的区段数据,则代之以读取并使用第二固件文件副本1的相同区段。步骤107确定是否保留一未读取的固件数据副本,且如果保留,则促使所述处理继续回到步骤81以对所述第二固件副本的相同区段重复上面说明的过程。但是,如果未成功地从所述固件码的二个副本(或者二个以上副本,如果提供了的话,)读取所述区段,则所述处理继续进行到步骤109,如下文所说明。
但是首先返回步骤89,如果未启用校正(此是寻常的初始条件),则下一步骤103促使设定一旗标以指示存在一ECC错误。然后,在刚才说明的回路中,通过步骤105、107、81及后面的步骤来读取下一副本的相同区段。通过步骤103设定的旗标与一固件副本中包含一个或一个以上位错误的区段相关,且优选地存储为所述区段的开销数据的一部分或存储在其它地方以供随后参考,以便就所述数据区段采取某一补救动作。所述固件可包括一例程以用于搜寻在所述上载过程期间设定的所有此类旗标,从而一旦成功地将所述固件加载到所述控制器内,便可采取某一动作来直接校正所述快闪存储器内存储的错误固件数据区段或解决所述错误数据的一可能成因。举例而言,此时可通过校正所述数据且然后在相同的快闪存储器页面中重新写入经校正的数据来擦除或刷新旗标所指示的固件数据区段。例如,美国专利案第5,532,962、6,151,246及6,222,762号及2003年10月3日申请的序列号为10/678,345的美国专利申请案中即说明了若干特定的擦除过程。可通过使用一区段数据ECC或通过以不同于正常所用的参考电平读取数据(“容限读取”)来校正所述区段的数据,以便对已经移动(或似乎已由于与其它电荷存储组件的场耦合而移动)出原始严格范围(对于所存储的电荷电平已编程至的状态)外的所存储的电荷电平做出补偿。另一选择是,可从所述固件的另一副本读取具有未校正错误的数据区段,并将所述数据区段插入所校正的副本。然后,将所校正的副本重新写入所述快闪存储器,优选重新写入一新的位置内,但也可重新写入至相同的位置(在抹除后)。
再次返回步骤89,在此实例中,最初停用对任何错误读取数据的校正。首先从依次轮到的下一固件副本中读取相同的区段直至确定不能无错误地从快闪存储器内存储的任一副本中读取一特定数据区段,而非校正来自一副本的错误数据。此是在无任何错误地从所有固件副本中读取给定区段的尝试已失败后通过步骤107来决定。然后,所述处理促使通过包括步骤109、111、112及113(返回至步骤81)的一回路依序一次一个地从所述固件副本中重新读取所述区段达一预定次数,直至无错误地读取所述区段数据,从而促使所述处理从步骤83继续到步骤85。可在不同的容限条件下进行所述再试中的某些尝试,如步骤112所示。
但是,如步骤113所确定,如果此读取在所允许数量的再试的最后尝试后仍未成功,则通过启用步骤115中的ECC校正来允许一旦下一次读取相同的区段数据便发生对所述错误的校正。当步骤83确定存在一可校正的ECC错误时,此举促使步骤89将所述处理引导经过步骤91及93的路径,如上文所说明。如果存在一不可校正的ECC错误,则通过步骤105及107再次对所述数据区段的下一副本做相同尝试。但是,如果借助所述固件数据区段的所有副本的ECC校正进行的所述读取失败,则在步骤111中,将所述处理置入步骤101所示的闲置回路状态。
总之,对于此实例实施方案,当二个固件副本存储于所述快闪存储器内时,可对二个副本内均有错误的一给定数据区段进行多达一定次数的读取而不尝试借助所述ECC来校正所述数据,所述读取次数是由步骤109中建立的再试设定次数所决定。然后,借助以所述ECC校正所述数据的能力实施从每一副本中读取所述给定区段的最后一次再试。仅在二个数据区段均不可校正的情况下,所述过程才失败。
另一选择是,但通常并非优选,可将步骤89设定为始终启用校正,但同时在步骤103中设定所述旗标用于随后处理所述区段内的数据错误。在此一情况下,图4的处理将仅一次性从每一固件副本中读取所述给定数据区段。读取所述第一副本,并尝试通过所述ECC来校正其错误。如果成功,则到达步骤85。如果不成功,则读取所述第二固件副本的给定区段,而且,如果存在错误,则尝试校正。如果所述作法均不成功,则所述处理继续到步骤109。
尽管图4中未具体说明,但优选采取与针对所述固件副本所述的方式类似的方式来执行读取所述地址映像页面及一保留区块的任何部分的步骤75。即,一个或一个以上ECC是与此类数据存储在一起并用于在读取期间确定所读取的数据是否包含任何位错误。如果包含位错误且如果可校正,则可通过使用所述ECC来校正所述数据。如果不可校正,则可在不同的读取条件下重新读取所述数据。如果错误仍然存在,则对重新读取的数据使用所述ECC。一旦得到校正,便重写有错误的映射页面及/或保留区块部分,通常写入所述快闪存储器内的一不同位置。如果不能从所述一个副本中获得良好的数据,则可保留所述映像页面的一复制副本。
参考图5,其在概念上显示依据结合图4所说明的所述处理的一部分从快闪存储器内所存储的二个副本中成功地读取固件的一实例。为解说简单起见假定所述固件为8个区段长,读入控制器RAM 21的一固件文件121的所述8个区段被显示为取自二个固件副本123与125。区段0、1、2、4、5及7来自第一固件文件123及区段3和6,由于不能从所述第一副本中成功地读取所述区段,因此,其是取自第二固件文件125。
返回图4的处理流程图,特别是步骤87,一旦已读取一固件文件(例如图5的文件121),所述处理便继续到步骤95。作为步骤95的一部分,检查所读取的固件文件的开销字段127及129(图5)。该些字段各自包含所述固件文件的长度及ROM 23内存储的启动码版本的一指定,因为所述启动码在不同的存储器系统中可能随时间变化。将所读取文件121的实际长度与从字段127和129中读取的值相比较。还将从字段127及129读取的所述ROM启动码版本的指定与所述启动码本身中所包括的一版本指定相比较。如果在所述步骤97中确定所述长度及启动码指定的比较均为肯定的话,则将固件文件121(图5)上载到控制器RAM 21(图1),而所述过程结束。但是,如果所述固件文件长度或所述启动码版本指定的比较均为否定的话,则如步骤101所示,所述处理停止直至从所述主机接收某些进一步的指令。
将固件下载至快闪存储器
图6说明用于将固件编程到图1及2的存储器系统11的快闪存储器13的保留区段的一过程。此过程通常是在生产的最后阶段或在更新较早制造的卡的固件时由存储器系统的制造商通过主机系统29(通常是计算机形式)来完成。所述存储器系统的采购者及用户通常将不会将固件码加载到所述快闪存储器内。
参考图6,步骤131指示所述下载过程的起点。在步骤133期间,交替地将不同的数据模式写入各种快闪存储器区块,并从不同的快闪存储器区块读取不同的数据模式,所述快闪存储器区块是存储所述固件数据的保留区块的候选者。作为此测试的结果,选择一个或一个以上区块的各二个固件码存储区域(例如,图2中的区块对41、43及47、49)。仅选择允许无任何错误地读取已编程测试数据的区块。进一步,可额外地对所存储的测试数据执行一测试以决定所存储的电荷电平是否在最佳范围内。同样,可在编程所述测试数据后使所述存储器系统经历各种环境例程以决定所存储的数据是否因此而改变。
在下一步骤135中,所述主机计算机将下载固件加载到所述控制器RAM 21内以提供指令将所述存储器控制固件写入快闪存储器13的选定保留区块内(图1及2)。接下来,在步骤137中,通过所述主机来读取作为拟编程到所述快闪存储器的固件的一部分存储的ROM启动码兼容性指示以及存储于所述ROM 23内的启动码版本指示并对其进行比较。所述存储器系统控制固件的下载仅在与永久且不可重写地存储于ROM23内的启动码相兼容的情况下才会继续。如果指明不兼容性,则补救办法是将拟加载到所述快闪存储器内的系统固件码的版本改变成一与已存在的ROM启动码兼容的版本。
然后,在步骤139中,所述主机向控制器15发送一固件写入命令,而在步骤141中,控制器15最初通过清除所述FW_Present旗标来作出回应。上文已说明此旗标。接下来,在步骤143中,所述主机将所述固件数据的一组区段转移至所述存储器系统。如步骤145所示,指定由步骤133选择用于存储所述固件码的二个保留区块区域其中之一来接收所述第一固件码副本。然后控制器15将先前从所述主机接收的固件数据区段编程到所述第一选定保留区块内,如步骤147所示。如果此编程步骤成功,如步骤149所确定,则所述控制器促使将所述相同的固件数据区段编程到所述第二选定保留区块内。包括步骤151、153及145在内的一局部回路促使寻址所述第二位置,且其中通过步骤147将相同的数据区块编程到所述第二位置内。
一旦已将该组数据区块编程到所述快闪存储器的二个位置内,则所述处理继续到一步骤155以确定是否有更多的固件数据区段需要编程。如果有,则在步骤143中通过所述主机来发送另一组数据区段,并通过包括步骤145至153在内的回路以相同的方式将所述数据区段编程到二个快闪存储器位置内。如步骤155所确定,在以此方式将所有固件码区段编程后,设定FW_Present旗标(如步骤157所示),并在步骤159中完成所述下载操作。
如果在步骤149中检测到一组区段编程失败,则将步骤147中对所述区段的编程重复预定次数,如步骤161及163所示。如果在所述次数的尝试中未成功地完成对任何一组区段的编程,则在步骤165中指明所述过程操作的失败,并终止所述过程。
尽管如上文背景技术中所述在多状态中操作所述快闪存储器以每一电荷存储组件存储多于一个数据位,但可操作一多状态系统的保留区块以每一电荷存储组件存储较少数量的一个或一个以上位。举例而言,如果是在用于用户数据的八个状态中操作所述电荷存储组件,则可以每一电荷存储组件四个状态将数据存储于所述保留区块内。同样,如果所述用户数据将被存储在四个状态中,则可以二进制来存储保留区块数据。此举对于存储所述存储器映像图及固件的保留区块尤其有价值。由于当采用较少数量的状态时定义每一状态的范围较大,因此,以较少数量的状态存储的数据不太会受到错误的读取。当每一电荷存储组件中存储较少的状态时,在存储器晶体管阈电压范围与电荷存储电平范围之间有较大的容限,且所述范围较大。当然,以较少数量的状态操作的区块中存储较少的数据,但存储上文所述的存储器映像、操作参数、旗标及固件的保留区块的此类操作不会明显地影响所述存储器的存储容量,因为此仅需在较少数量的状态中操作小部分存储器。
图7显示记忆卡形式的此类系统的制造商用于将固件数据编程到快闪存储器系统内的一整个过程,此过程既用于新的空白卡也用于其中正更新固件的卡。此过程包括使用图4步骤165中的固件上载以及图6步骤167中的固件下载。首先,将所述卡与一主机连接,所述主机在步骤169与171中确定所述记忆卡是否是一空白卡。如果是空白卡,则在步骤173及175中将所述存储器阵列格式化。接下来,如先前结合图6所述,将所述固件副本编程到所述卡存储器阵列内。一旦在步骤177中确定已成功地将所述固件编程到所述卡内,所述过程即结束。然后所述卡准备好供使用。
如果在步骤171中确定所述卡并非空白,则将假定驻留于所述快闪存储器内的固件加载到所述控制器RAM内,如上面结合图4所述。如果在一步骤179中确定所述固件上载失败,则执行一失败分析功能181以了解所述失败的原因。在图4中,当所述过程处于闲置回路101中时,认定存在失败。然后,作为响应而舍弃所述卡。
但是,如果在步骤179中确定已正确地上载所述固件,且如果确定需要重新格式化所述卡(步骤183)或应将所述固件升级至一更新的版本(步骤185),则可通过步骤167的过程重新写入所述固件。然而,如果既不需要重新格式化也不需要固件升级,则对所述固件正确地从所述快闪存储器加载到所述控制器RAM内的确认致使所述过程结束。然后,已确认所述卡准备好供使用。
将固件上载到控制器的第二实施例
图8显示在所述ROM启动码控制下将所述固件从快闪存储器13上载进入控制器15的RAM 21(图1)的一过程的一第二实施例。此程序类似于上文结合图4所述的第一实施例。图8中与图4的步骤相同或基本上相同的步骤具有相同的参考编号,在此不做进一步解说。这二个实施例之间的差异在于对所读取数据中存在错误的确定做出的响应。
参考图8,对应于步骤83中确定已通过使用所述ECC检测到一数据错误,此实施例的处理直接进行到上述步骤103中旗标的设定以供随后使用。在下一步骤191中,确定是否能通过所使用的ECC来校正所述错误以及所述错误是否包括比规定数量少的位(少于N个位)。如果是,则在步骤193中通过所述ECC来校正所述数据,而所述处理继续读取下一区段的固件数据。在此实施例中,仅在拟校正的位数量较少旦少于所述ECC能够校正的读取区段的位数量的情况下,才会在所述处理的此较早阶段校正所述错误数据。此是因为校正所述数据要花费与所校正的位数量相关的处理时间量。
因此,如果步骤191中的确定是不可校正或可校正所述数据但所述数据有N或多个位要校正,则下一步骤195决定哪一情况才是实际情况。如果所述N或多个错误位是可校正的,则步骤197确定是否已从所述快闪存储器内存储的一个或一个以上其它固件副本中读取了所述给定区段。如果是,则在步骤193中使用所述EEC来校正所述数据,而所述处理通过步骤85而继续到拟读取的下一数据区段。如果仍有尚未读取其给定区段的一固件副本,则步骤199切换至促使步骤81读取另一副本。
但是,如果在步骤197中确定不可校正所述N或多个错误位,则可使用步骤201来确定是否已以一规则方式从所有所述固件副本中读取所述给定区段达规定的次数。如果否,则步骤199将寻址另一固件副本内的给定区段,并将通过步骤81来读取所述区段。如果所有固件副本均已被读取规定的次数,则采用异常努力来读取数据。规则读取的规定次数可以是2、3或更多次,但重新读取数据花费时间,而且在初始读取已产生不可校正的错误数据后,在相同的条件下重新读取相同的数据区段不太可能提供正确的数据。因此,可通过对每一固件副本进行规定次数的读取来实施所述过程,在所述规定次数完成后,如果无一次读取成功,则采取异常读取步骤。
所述异常读取过程中的一第一步骤203是确定是否已经执行从所述给定固件副本中读取所述给定区段数据的一或多次规定尝试。如果未执行,则通过步骤211来设定异常读取参数,并通过所述不同的参数而在步骤81中再次读取所述区段。但是,如果通过所述异常读取参数对所述给定数据区段进行规定的一次或多次读取而未成功,则步骤205确定此情形对于所述快闪存储器内存储的其它固件副本是否也如此。如果也如此,则认为所述固件上载已失败,如207中所示,不提供任何其它技术来读取或校正所述错误数据。但是,如果尚未以所述异常方式读取所有固件副本,则通过步骤209来设定所述异常读取参数,而下一步骤199促使通过步骤81来读取一不同固件副本的给定区段。
所述异常读取过程可包括步骤209及211中对更可能读取错误数据的不同读取条件的设定。一称作“容限”的技术使得一存储器单元电荷存储组件的每一状态的读取范围比在对所述数据区段进行首次、普通读取期间使用的读取范围加宽。此具有减小所述范围之间的容限的作用,从而可能在所述读取过程中引入其它错误。但是,当不能正常读取所述数据时,容限还可致使正确读取已漂移出其各自范围的单元的状态。容限读取的正确与否是通过使用所述ECC并通过步骤83及后续步骤以与正常数据读取相同的方式来确定。
结论
虽然已经依据本发明的实例性实施例说明了本发明的各个方面,但是应了解,本发明享有在随附权利要求书的完整范畴内受到保护的权利。

Claims (27)

1、一种初始化一存储器存储系统的方法,所述存储器存储系统具有:快闪存储器,其包含存储于所述快闪存储器中不同位置中的固件码的至少第一及第二副本;一微处理器;一只读存储器(ROM),其包含微处理器可存取的启动码;及一随机存取存储器(RAM),其用于存储微处理器可存取的固件码,所述方法包含:
执行所述启动码以将所述固件的一第一副本从所述快闪存储器转移至所述RAM,
识别所述固件码的所述转移的第一副本中的任何位错误,
如果位错误被识别为是可校正的,则校正所述错误位,
如果位错误被识别是不可校正的,则将所述固件码的所述第二副本的至少一部分读入所述RAM,以替代所述第一副本中包含所述不可校正的位错误的至少一部分,及
执行来自所述RAM的所述固件码的一无错误副本。
2、如权利要求1所述的方法,其中识别所述转移的第一副本中的任何位错误包括:通过将所述固件部分在其从所述快闪存储器转移至所述RAM时连续传递经过错误校正码(ECC)电路而依据所述固件的所述第一副本的个别部分来计算ECC,并将所述计算的ECC与先前依据所述固件数据的所述第一副本的所述部分计算出的ECC进行比较。
3、如权利要求2所述的方法,其中校正所述错误位包括所述微处理器执行所述启动码的一错误校正算法以校正错误位。
4、如权利要求2所述的方法,其中所述固件码的所述第一副本的所述个别部分包括:一个或一个以上数据区段,及先前依据所述个别部分计算出的并与所述个别部分一起存储于所述快闪存储器内的一ECC。
5、如权利要求1所述的方法,其另外包含:在执行所述启动码以将所述固件的一第一副本从所述快闪存储器转移至所述RAM之前进行以下操作:
首先一次一个位置地存取所述快闪存储器内的复数个固定位置,直至发现一初始化存储器映像图是存储于所述复数个固定位置的至少一位置处且其包含其中存储有所述固件码的至少第一及第二副本的所述快闪存储器的所述不同位置的地址,
读取所述初始化存储器映像图的数据以获得所述地址,且
然后存取所述固件码的所述第一副本。
6、如权利要求5所述的方法,其进一步包含:
识别从所述初始化存储器映像图读取的所述数据内的任何位错误,
如果所述读取数据内的位错误被识别为是可校正的,则校正所述错误位,及
如果所述读取数据内的位错误被识别为是不可校正的,则在不同条件下重新读取所述初始化存储器映像图的所述数据。
7、如权利要求1所述的方法,其中将所述固件码的至少第一及第二副本存储于所述快闪存储器的所述不同位置中,而所述存储器的每一快闪存储器存储组件仅存储一给定数量的一个或一个以上固件码位,而所述存储器存储系统的进一步特征在于将用户数据每一存储组件多于所述给定数量的用户数据位地存储于所述快闪存储器的其它位置中。
8、如权利要求7所述的方法,其中所述给定数量的一个或一个以上位确切地是每一快闪存储器存储组件一个位。
9、如权利要求1所述的方法,其进一步包含:
识别所述固件码的所述第二副本的所述转移的至少一部分内的任何位错误,及
如果识别所述固件码的所述第二副本的所述转移的至少一部分内的位错误是不可校正的,则在趋向于减少所述第二副本中所述转移的至少一部分内的位错误数量的条件下,重复读取所述固件码的所述第二副本的所述至少一部分。
10、如权利要求1所述的方法,其进一步包含:在执行所述启动码以将所述同件的一第一副本从所述快闪存储器转移至所述RAM之前,检查在将固件存储于所述快闪存储器内时设定的一固件存在旗标的状态;及仅当设定所述固件存在旗标时,才继续执行所述启动码以将所述固件的所述第一副本从所述快闪存储器转移至所述RAM。
11、如权利要求1所述的方法,其另外包含:响应于识别一预定数量的一个或一个以上位错误的若干位错误,设定与所述固件的所述第一副本的所述错误数据所存储的所述快闪存储器的位置相关的一内务处理旗标。
12、如权利要求11所述的方法,其另外包含:响应于设定所述内务处理旗标,在已将所述固件码的一无错误副本转移进所述RAM后,校正所述固件的所述第一副本的所述错误数据。
13、如权利要求12所述的方法,其中校正所述固件的所述第一副本的所述错误数据包括将所述固件的所述校正的第一副本重新写入所述快闪存储器中。
14、如权利要求13所述的方法,其中重新写入所述固件的所述校正的第一副本包括将所述校正的第一副本重新写入与其原先存储的位置不同的一位置。
15、如权利要求12所述的方法,其中校正固件的所述第一副本的所述错误数据包括使用一错误校正码。
16、如权利要求12所述的方法,其中校正所述固件的所述第一副本的所述错误数据包括转移来自固件码的所述第二副本的良好数据。
17、一种操作一存储器存储系统的方法,所述存储器存储系统具有:快闪存储器;一微处理器;一只读存储器(ROM),其包含可由所述微处理器存取的启动码;一随机存取存储器(RAM);及依据通过其的数据计算一错误校正码(ECC)的电路,所述方法包含:
通过一次一个地将固件副本传递经过所述ECC电路而将固件码的至少第一及第二副本存储于所述快闪存储器的不同可寻址位置中及将由此计算出的所述ECC存储于所述快闪存储器内,
然后,通过促使所述微处理器执行所述启动码以经由所述ECC电路将所述固件的所述第一副本从所述快闪存储器转移至所述RAM来起始所述存储器系统的操作,其中所述ECC电路依据转移的所述固件的所述第一副本计算一ECC,
利用所述计算并存储的ECC来识别所述固件码的所述转移的第一副本内的任何位错误,及
如果位错误被识别为是可校正的,则促使所述微处理器执行所述启动码内的一错误校正算法以校正所述错误位,以将所述固件码无任何错误地加载到所述RAM内,或者
如果位错误被识别为是不可校正的,则将所述固件码的所述第二副本的至少一部分转移到所述RAM内,以替代所述第一副本中包含所述不可校正的位错误的至少一部分,以将所述固件码无任何错误地加载到所述RAM内。
18、如权利要求17所述的方法,其中存储所述固件码包括存储依据所述固件码的一个或一个以上区段个别计算出的ECC。
19、如权利要求17所述的方法,其另外包含将一映像图存储于所述快闪存储器的预定复数个位置中的一个位置内,所述映像图包含固件码的所述至少第一及第二副本的所述可寻址位置;且其中所述微处理器执行所述启动码包括:通过首先通过以一次一个地存取所述预定的复数个位置直至找到所述映像图来定位所述映像图,及在存储有所述映像图的所述位置处读取所述映像图的内容。
20、如权利要求17所述的方法,其中存储所述固件码另外包括设定一旗标以指示至少一固件副本存在于所述快闪存储器内,且其中执行所述启动码以转移所述固件码的所述第一或第二副本中的任一副本包括:首先读取与所述副本相关的所述旗标并仅在设定所述相关旗标的情况下继续读取所述固件码的所述副本。
21、一种快闪存储器存储系统,其包含:
一快闪存储器单元阵列,其将数据存储于电荷存储组件中并在所述阵列的复数个预定地址中的至少一个地址处包含一存储器映像图,所述映像图包括指定其中存储固件码的一个或一个以上副本的地址的数据,
一控制器处理器,
一只读存储器,其包含所述处理器响应所述存储系统的初始化而存取并执行的启动码,
一随机存取存储器,其可由所述处理器存取以获得拟执行的指令,及
其中所述启动码促使所述处理器存取所述快闪存储器内的所述复数个预定地址以定位并读取所述存储器映像图的所述数据,所述数据指定其中存储所述固件的一个或一个以上副本的地址,然后,读取位于所述指定的一个或一个以上地址的至少一个地址处的所述固件码,及然后将所述读取的固件码写入所述随机存取存储器。
22、如权利要求21所述的系统,其中将所述映像图及所述固件码每一存储器单元存储组件一个位地存储于所述快闪存储器内,且进一步其中将数据每一存储器单元存储组件多于一个位地存储于所述存储器阵列中除包含所述映像图及固件的地址外的至少一些地址中。
23、一种快闪存储器存储系统,其包含:
一快闪存储器单元阵列,其将数据存储于电荷存储组件中并包含与各自的第一及第二组错误校正码(ECC)一起存储于其中的固件码的至少第一及第二副本,所述各自的第一及第二组ECC是依据所述固件码的所述第一及第二副本计算出的,
一控制器处理器,
电路,其依据经过所述电路的数据来计算ECC,
一只读存储器,其包含所述处理器响应于所述存储系统的初始化而存取并执行的启动码,
一随机存取存储器,其可由所述处理器存取以获得拟执行的指令,及
其中所述启动码促使所述处理器读取所述第一固件码副本,包括:将所述读取的第一固件码副本传递经过所述ECC计算电路,所述ECC电路计算ECC并依据与所述第一固件码副本一起存储的所述第一组ECC提供关于与所述ECC有关的所述第一固件码副本的多個部分中存在的任何数据错误的一状态,及
(A)如果所述状态指示在所述第一固件码副本的所述部分的一给定部分内无数据错误,则将所述固件码的所述第一副本的所述给定部分写入所述随机存取存储器,但是
(B)如果所述状态指示在所述第一固件码副本的所述给定部分内有数据错误,则所述启动码促使所述处理器确定所述固件码内的位错误的数量是否超过一给定数量,及
(i)如果所述位错误的数量不超过所述给定数量,则进一步促使所述处理器校正所述错误位并将所述校正的第一固件码副本写入所述随机存取存储器,但是
(ii)如果所述位错误的数量等于或超过所述给定数量,则进一步促使所述处理器读取所述第二固件副本的至少一部分,将所述读取的第二固件码传递经过所述ECC计算电路,所述ECC计算电路依据传递的所述第二固件码计算至少一个ECC,并提供关于与所述至少一个ECC有关的所述第二固件码副本的所述至少一个部分中存在的任何数据错误的状态,而且如果所述状态指示所述第二固件码副本的所述至少一个部分内无任何数据错误,则将所述固件码的所述读取的第二副本的所述至少一个部分写入所述随机存取存储器。
24、如权利要求23所述的系统,其中将所述固件码每一存储器单元存储组件一个位地存储于所述快闪存储器内,且进一步其中将数据每一存储器单元存储组件多于一个位地存储于所述存储器阵列中除包含所述固件码的地址以外的至少一些地址处。
25、一种快闪存储器存储系统,其包含:
一快闪存储器单元阵列,其将数据存储于电荷存储组件中并包含与一第一旗标及一第二旗标一起存储于其中的固件码的至少一副本,所述第一旗标指示所述固件码的存在而所述第二旗标指示如果存在所述固件码则不应载入所述固件码,
一控制器处理器,
一只读存储器,其包含所述处理器响应于所述存储系统的初始化而存取并执行的启动码,
一随机存取存储器,其可由所述处理器存取以获得拟执行的指令,及
其中所述启动码促使所述处理器寻找所述第一及第二旗标,以及
(A)如果存在所述第一旗标而不存在所述第二旗标,则继续将所述固件码加载到所述随机存取存储器内,或者
(B)如果所述第一及第二旗标均存在,则提供对所述固件码的存取以在不将所述固件码加载到所述随机存取存储器内的情况下进行测试,或者
(C)如果所述第一旗标不存在,则既不尝试将所述固件码加载到所述随机存取存储器内也不尝试提供对所述固件码的存取以进行测试。
26、如权利要求25所述的系统,其中将所述固件码与第一及第二旗标每一存储器单元存储组件一个位地存储于所述快闪存储器内,且其中进一步将数据每一存储器单元存储组件多于一个位地存储于所述存储器阵列中除包含所述固件码与第一及第二旗标的地址外的至少一些地址处。
27、一种起始一存储器存储系统的方法,所述存储器存储系统具有:快闪存储器,其包含存储于所述快闪存储器的不同位置中的固件码的至少第一及第二副本;一微处理器;一只读存储器(ROM),其包含微处理器可存取的启动码;及一随机存取存储器(RAM),其用于存储微处理器可存取的固件码,所述方法包含:
将所述固件码的所述至少第一及第二副本的一个位存储于所述快闪存储器的所述不同位置中的存储器单元的个别存储组件中,而将所述用户数据的多个位存储于所述快闪存储器的所述其它位置中的存储器单元的个别存储组件中,
执行所述启动码以将所述固件的所述第一副本从所述快闪存储器转移至所述RAM,
在转移所述固件码的所述第一副本时,识别所述固件码的所述第一副本中的任何位错误,
校正所述转移的第一固件码副本内所述识别的位错误中的特定错误,或读取所述固件码的所述第二副本的至少一部分,以替换所述第一固件码副本中包含所述识别的位错误的至少一部分,及
执行来自所述RAM的所述固件码的一无错误副本。
CN2004800393109A 2003-12-31 2004-12-16 快闪存储器系统起动操作 Active CN1902583B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/751,033 US7594135B2 (en) 2003-12-31 2003-12-31 Flash memory system startup operation
US10/751,033 2003-12-31
PCT/US2004/042965 WO2005066773A1 (en) 2003-12-31 2004-12-16 Flash memory system startup operation

Publications (2)

Publication Number Publication Date
CN1902583A true CN1902583A (zh) 2007-01-24
CN1902583B CN1902583B (zh) 2010-05-12

Family

ID=34749345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800393109A Active CN1902583B (zh) 2003-12-31 2004-12-16 快闪存储器系统起动操作

Country Status (7)

Country Link
US (2) US7594135B2 (zh)
EP (1) EP1700207B8 (zh)
JP (1) JP4933268B2 (zh)
KR (1) KR101029938B1 (zh)
CN (1) CN1902583B (zh)
TW (1) TWI272536B (zh)
WO (1) WO2005066773A1 (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102317920A (zh) * 2011-07-18 2012-01-11 华为技术有限公司 数据处理方法及设备
CN102508742A (zh) * 2011-11-03 2012-06-20 中国人民解放军国防科学技术大学 面向硬件不可恢复内存故障的内核代码软容错方法
CN102637461A (zh) * 2012-03-07 2012-08-15 山东华芯半导体有限公司 支持坏块闪存扫描的启动方法
CN101604248B (zh) * 2009-07-20 2012-09-26 北京海尔集成电路设计有限公司 一种修正只读存储器中程序的嵌入式系统及其实现方法
CN102800357A (zh) * 2011-05-27 2012-11-28 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法
CN103761198A (zh) * 2014-01-06 2014-04-30 威盛电子股份有限公司 存储器芯片与数据保护方法
US9063888B2 (en) 2011-05-18 2015-06-23 Phison Electronics Corp. Program code loading and accessing method, memory controller, and memory storage apparatus
TWI501252B (zh) * 2009-12-24 2015-09-21 Hynix Semiconductor Inc 用於控制保留區的固態儲存系統及其控制方法
CN103927187B (zh) * 2014-05-09 2017-03-22 金祺创(北京)技术有限公司 嵌入式系统程序执行方法
CN107430558A (zh) * 2015-03-09 2017-12-01 东芝存储器株式会社 半导体存储装置
CN108475226A (zh) * 2016-01-06 2018-08-31 美光科技公司 感测电路上的错误码计算
CN112311552A (zh) * 2019-07-30 2021-02-02 意法半导体(大西部)公司 具有固件的电子设备及其操作方法
TWI749704B (zh) * 2020-08-13 2021-12-11 群聯電子股份有限公司 韌體碼的執行方法、記憶體儲存裝置及記憶體控制電路單元

Families Citing this family (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
EP1723498A2 (de) * 2004-03-11 2006-11-22 Preh KeyTec GmbH Tastatur, insbesondere kassentastatur, und verfahren zur inbetriebnahme sowie zum austausch und update von firmware der tastatur
DE102004013493B4 (de) * 2004-03-18 2009-11-05 Infineon Technologies Ag Zugriffs-Verfahren für einen NAND-Flash-Speicherbaustein und ein entsprechender NAND-Flash-Speicherbaustein
US20050268077A1 (en) * 2004-05-11 2005-12-01 Peter Kuan Memory system for an electronic device and the method for controlling the same
KR101074423B1 (ko) * 2004-05-29 2011-10-17 삼성전자주식회사 메모리 카드의 처리 상황을 판별할 수 있는 메모리 카드시스템 및 그것의 판별 방법
WO2005116827A1 (en) * 2004-05-31 2005-12-08 Stmicroelectronics Pvt. Ltd. A method for remotely upgrading the firmware of a target device using wireless technology
US7336531B2 (en) 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US7340594B2 (en) * 2004-06-30 2008-03-04 Intel Corporation Bios-level incident response system and method
US7269829B2 (en) * 2004-07-30 2007-09-11 Signature Control Systems, Inc. Method and system for remote update of microprocessor code for irrigation controllers
US7334117B2 (en) * 2004-08-04 2008-02-19 National Instruments Corporation Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device
US8275969B2 (en) * 2004-08-05 2012-09-25 Sandisk Il Ltd. Storage with persistent user data
US20060070059A1 (en) * 2004-09-27 2006-03-30 Starr Matthew T Co-existing dedicated system software and read/writeable data storage space on removable media
JP2006146485A (ja) * 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
US7970984B2 (en) * 2004-12-23 2011-06-28 Sandisk Il Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US20060143368A1 (en) * 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US8321686B2 (en) 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8108691B2 (en) 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
US8423788B2 (en) * 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
KR100640389B1 (ko) * 2005-04-06 2006-10-30 삼성전자주식회사 Nand플래시 메모리를 구비한 장치에서 어플리케이션을실행하는 방법 및 그 장치
TWI345175B (en) * 2005-06-08 2011-07-11 Winbond Electronics Corp Method for updating firmware of memory card
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
TWI267861B (en) * 2005-09-06 2006-12-01 Alcor Micro Corp Method and device for loading configuration values of nonvolatile memory
US20070058923A1 (en) * 2005-09-09 2007-03-15 Buhler Kirk A Use of flash based memory to store and play feature length licensed movie or TV productions
US8966284B2 (en) * 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
WO2007033322A2 (en) * 2005-09-14 2007-03-22 Sandisk Corporation Hardware driver integrity check of memory card controller firmware
CN1937083B (zh) * 2005-09-23 2010-05-05 安国国际科技股份有限公司 非挥发性存储器设定值加载方法与其存储器装置
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100625811B1 (ko) * 2005-12-09 2006-09-18 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
US20070169086A1 (en) * 2005-12-30 2007-07-19 Siliconmotion Inc. System and method for updating in-system program
WO2007097031A1 (ja) * 2006-02-27 2007-08-30 Fujitsu Limited 情報処理装置及び処理実行方法
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US20070236519A1 (en) * 2006-03-31 2007-10-11 Edelen John G Multi-Level Memory for Micro-Fluid Ejection Heads
JP4840859B2 (ja) * 2006-05-10 2011-12-21 ルネサスエレクトロニクス株式会社 半導体装置、及び起動方法
JP2009205187A (ja) * 2006-06-23 2009-09-10 Panasonic Corp メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
US7292495B1 (en) * 2006-06-29 2007-11-06 Freescale Semiconductor, Inc. Integrated circuit having a memory with low voltage read/write operation
TWI316184B (en) * 2006-08-03 2009-10-21 Etron Technology Inc Programmable system-chip device and method of programming firmware
TWI387878B (zh) * 2006-08-21 2013-03-01 Sandisk Il Ltd 輸出以邏輯區段為基礎的介面之非及快閃記憶體控制器
US20080052524A1 (en) * 2006-08-24 2008-02-28 Yoram Cedar Reader for one time password generating device
US20080072058A1 (en) * 2006-08-24 2008-03-20 Yoram Cedar Methods in a reader for one time password generating device
JP2008084291A (ja) * 2006-08-28 2008-04-10 Fujitsu Ltd 記憶装置、制御方法及び制御装置
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US20080109647A1 (en) * 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
EP1973016A1 (de) * 2007-03-19 2008-09-24 Siemens Aktiengesellschaft Verfahren zum Durchführen der Firmware eines Automatisierungsgerätes
WO2008117520A1 (ja) * 2007-03-28 2008-10-02 Panasonic Corporation メモリコントローラ、不揮発性メモリシステムおよびホスト装置
TW200849096A (en) * 2007-06-12 2008-12-16 Realtek Semiconductor Corp Data recovering method
JP5072446B2 (ja) * 2007-06-15 2012-11-14 スパンション エルエルシー 半導体装置及びその制御方法
KR20090030078A (ko) 2007-09-19 2009-03-24 삼성전자주식회사 부트 로딩 동작을 안전하게 수행하기 위한 반도체 메모리장치 및 그것의 부트 로딩 방법
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
US20090172246A1 (en) * 2007-12-26 2009-07-02 Sandisk Il Ltd. Device and method for managing initialization thereof
JP2009187199A (ja) * 2008-02-05 2009-08-20 Panasonic Corp 情報処理システム及び情報処理方法
TWI381387B (zh) * 2008-02-21 2013-01-01 Phison Electronics Corp 儲存裝置、控制器及其資料存取方法
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
EP2273803B1 (en) * 2008-04-28 2014-04-16 Fujitsu Limited Method for processing connection in wireless communication system, wireless base station, and wireless terminal
US8281229B2 (en) * 2008-12-30 2012-10-02 Intel Corporation Firmware verification using system memory error check logic
US8375227B2 (en) * 2009-02-02 2013-02-12 Microsoft Corporation Abstracting programmatic representation of data storage systems
KR101605875B1 (ko) * 2009-04-03 2016-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
US8751860B2 (en) 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
TWI442406B (zh) * 2009-07-02 2014-06-21 Silicon Motion Inc 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器
CN102043651B (zh) * 2009-10-22 2013-07-03 鸿富锦精密工业(深圳)有限公司 Nand闪存及其数据更新管理方法
TWI425514B (zh) * 2009-10-29 2014-02-01 Hon Hai Prec Ind Co Ltd Nand快閃記憶體及其資料更新管理方法
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
KR101648531B1 (ko) * 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
US20120173795A1 (en) * 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
TWI426385B (zh) * 2010-06-29 2014-02-11 Genesys Logic Inc 支援大容量儲存裝置存取之方法與系統
CN101944036B (zh) * 2010-09-27 2013-05-01 苏州光格设备有限公司 一种基于工业监控系统的ria应用的内存优化方法
US9612979B2 (en) * 2010-10-22 2017-04-04 Intel Corporation Scalable memory protection mechanism
US8627141B2 (en) * 2011-02-14 2014-01-07 Dell Products L.P. System and method for auto-failover and version matching of bootloader in an access controller
KR101293223B1 (ko) 2011-04-01 2013-08-05 (주)아토솔루션 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법
CN102163158A (zh) * 2011-04-29 2011-08-24 北京凡达讯科技有限公司 一种系统级芯片利用nand闪存启动的方法
US8886881B2 (en) * 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
JP2012252557A (ja) * 2011-06-03 2012-12-20 Mega Chips Corp メモリコントローラ
JP2011210277A (ja) * 2011-06-20 2011-10-20 Toshiba Corp 情報処理装置および情報処理方法
US8909981B2 (en) * 2011-06-21 2014-12-09 Hamilton Sundstrand Corporation Control system software execution during fault detection
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
JP5770557B2 (ja) * 2011-08-02 2015-08-26 Necプラットフォームズ株式会社 情報更生装置、メモリ制御システム、情報更生方法およびコンピュータプログラム
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
KR20130032077A (ko) * 2011-09-22 2013-04-01 에스케이하이닉스 주식회사 설정 데이터 저장회로, 이를 포함하는 비휘발성 메모리 장치 및 메모리 시스템
US20130166893A1 (en) * 2011-12-23 2013-06-27 Sandisk Technologies Inc. Auxiliary card initialization routine
CN103197750B (zh) * 2012-01-09 2015-10-28 爱思开海力士有限公司 内嵌式记忆卡控制系统及其内嵌式记忆卡
US8954791B2 (en) * 2012-01-18 2015-02-10 Seagate Technology Llc Mirroring disk drive sectors
US9046915B2 (en) * 2012-02-27 2015-06-02 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
TWI520148B (zh) * 2012-07-05 2016-02-01 慧榮科技股份有限公司 記憶體裝置和記憶體控制方法
JP5965076B2 (ja) 2012-09-25 2016-08-03 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 訂正不能メモリエラー処理方法及びその可読媒体
TWI494849B (zh) * 2013-05-06 2015-08-01 Phison Electronics Corp 韌體碼載入方法、記憶體控制器與記憶體儲存裝置
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
US9183086B2 (en) * 2013-06-03 2015-11-10 Sandisk Technologies Inc. Selection of data for redundancy calculation in three dimensional nonvolatile memory
KR20140144989A (ko) * 2013-06-12 2014-12-22 에스케이하이닉스 주식회사 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법
US20150067314A1 (en) * 2013-08-30 2015-03-05 Timothy J. Strauss Secure firmware flash controller
US9177673B2 (en) 2013-10-28 2015-11-03 Sandisk Technologies Inc. Selection of data for redundancy calculation by likely error rate
CN104679622A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 基本输入输出系统维护方法
US9772856B2 (en) * 2014-07-10 2017-09-26 Lattice Semiconductor Corporation System-level dual-boot capability in systems having one or more devices without native dual-boot capability
US9858229B2 (en) * 2014-09-30 2018-01-02 International Business Machines Corporation Data access protection for computer systems
CN104731674B (zh) * 2015-02-02 2020-09-01 北京忆恒创源科技有限公司 使用mlc nvm存储电子系统固件的方法与设备
DE102015203776A1 (de) * 2015-03-03 2016-09-08 Robert Bosch Gmbh Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs
US9886285B2 (en) 2015-03-31 2018-02-06 Western Digital Technologies, Inc. Communication interface initialization
US10157093B2 (en) * 2015-05-27 2018-12-18 Nxp Usa, Inc. Data integrity check within a data processing system
KR102290988B1 (ko) * 2015-06-08 2021-08-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US9691473B2 (en) 2015-09-22 2017-06-27 Sandisk Technologies Llc Adaptive operation of 3D memory
US9401216B1 (en) 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
JP6723863B2 (ja) * 2016-08-01 2020-07-15 オリンパス株式会社 組み込みシステム、撮影機器及びリフレッシュ方法
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
FR3055714B1 (fr) * 2016-09-08 2018-09-28 Continental Automotive France Procede de correction d'erreur dans une memoire flash
JP2018067072A (ja) * 2016-10-18 2018-04-26 東芝メモリ株式会社 半導体記憶装置及びその制御方法
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
CN108877856B (zh) 2017-05-10 2021-02-19 慧荣科技股份有限公司 储存装置、记录方法以及预载方法
TWI646551B (zh) * 2017-05-10 2019-01-01 慧榮科技股份有限公司 儲存裝置、記錄方法以及預載方法
TW201913391A (zh) * 2017-09-01 2019-04-01 慧榮科技股份有限公司 快閃記憶體裝置的重新啟動方法以及使用該方法的裝置
KR20190029316A (ko) * 2017-09-12 2019-03-20 에스케이하이닉스 주식회사 마이크로 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작방법
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
US11537389B2 (en) 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
KR102549346B1 (ko) * 2018-07-24 2023-06-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메타 데이터 액세스 방법
KR20200019444A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN109284135B (zh) * 2018-09-07 2022-02-01 深圳市航顺芯片技术研发有限公司 一种简捷调用微控制器内部启动程序的方法
JP7074020B2 (ja) 2018-10-24 2022-05-24 Tdk株式会社 メモリコントローラ、及びメモリシステム
JP7143735B2 (ja) 2018-11-15 2022-09-29 Tdk株式会社 メモリコントローラ、及びメモリシステム
CN109634676B (zh) * 2018-12-12 2021-10-26 深圳忆联信息系统有限公司 基于主控芯片的nand boot启动方法和装置
US10896033B2 (en) 2018-12-31 2021-01-19 Micron Technology, Inc. Configurable NAND firmware search parameters
JP2020154540A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム及び制御システム
US11288373B2 (en) * 2019-04-11 2022-03-29 Baidu Usa Llc Boot failure recovery scheme for hardware-based system of autonomous driving vehicles
US11822930B2 (en) * 2019-07-31 2023-11-21 Hewlett Packard Enterprise Development Lp Electrically programmable application-specific integrated circuit initialization engine
CN111209137B (zh) * 2020-01-06 2021-09-17 支付宝(杭州)信息技术有限公司 数据访问控制方法及装置、数据访问设备及系统
JP7395388B2 (ja) * 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
US11422896B2 (en) * 2020-03-27 2022-08-23 Intel Corporation Technology to enable secure and resilient recovery of firmware data
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
JP2022051374A (ja) * 2020-09-18 2022-03-31 キオクシア株式会社 半導体記憶装置及び半導体記憶装置の動作制御プログラムの書き込み方法
US20210110043A1 (en) * 2020-12-23 2021-04-15 Intel Corporation Platform firmware boot mechanism
CN116737181A (zh) * 2023-04-26 2023-09-12 珠海妙存科技有限公司 通用闪存存储芯片及烧录方法

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US560660A (en) * 1896-05-26 Wheel
JPS6048769B2 (ja) * 1978-05-23 1985-10-29 株式会社東芝 ロ−デイング方式
JPS5760409A (en) 1980-09-30 1982-04-12 Fanuc Ltd Loading system of numerical control device
US4439837A (en) 1981-06-16 1984-03-27 Ncr Corporation Non-volatile memory system for intelligent terminals
US4590557A (en) 1983-09-12 1986-05-20 Pitney Bowes Inc. Method and apparatus for controlling software configurations in data processing systems
JPS60186935A (ja) * 1984-03-05 1985-09-24 Nec Corp マイクロプログラムロ−ド方式
JPS61151744A (ja) * 1984-12-26 1986-07-10 Hitachi Ltd マイクロプログラムロ−ド時の障害回復方式
CA1242809A (en) 1985-12-20 1988-10-04 Mitel Corporation Data storage system
US4914576A (en) 1986-12-18 1990-04-03 Bull Hn Information Systems Inc. Apparatus and method of loading a control store memory of a central subsystem
US4910666A (en) 1986-12-18 1990-03-20 Bull Hn Information Systems Inc. Apparatus for loading and verifying a control store memory of a central subsystem
US5172328A (en) * 1988-04-01 1992-12-15 Restaurant Technology, Inc. Food preparation system and method
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5148516A (en) 1988-08-30 1992-09-15 Hewlett-Packard Company Efficient computer terminal system utilizing a single slave processor
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5003591A (en) 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
CA2010122A1 (en) 1989-06-21 1990-12-21 Makoto Sakamoto Integrated circuit including programmable circuit
EP0489204B1 (en) 1990-12-04 1995-08-16 Hewlett-Packard Limited Reprogrammable data storage device
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5268928A (en) 1991-10-15 1993-12-07 Racal-Datacom, Inc. Data modem with remote firmware update
JPH05204770A (ja) * 1991-10-17 1993-08-13 Nec Corp メモリエラーリカバリ方法
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JPH06119230A (ja) 1992-10-06 1994-04-28 Fujitsu Ltd 半導体記憶装置
US5379342A (en) 1993-01-07 1995-01-03 International Business Machines Corp. Method and apparatus for providing enhanced data verification in a computer system
JPH06347277A (ja) * 1993-06-04 1994-12-20 Sumitomo Electric Ind Ltd ナビゲーション装置
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5570032A (en) 1993-08-17 1996-10-29 Micron Technology, Inc. Wafer scale burn-in apparatus and process
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
JPH07302175A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5606660A (en) 1994-10-21 1997-02-25 Lexar Microsystems, Inc. Method and apparatus for combining controller firmware storage and controller logic in a mass storage system
EP0709782B1 (en) 1994-10-25 1999-03-03 Hewlett-Packard Company Error detection system and method for mirrored memory between dual disk storage controllers
JPH09160834A (ja) * 1995-12-01 1997-06-20 Mitsubishi Electric Corp フラッシュメモリを用いた計算機
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP3904099B2 (ja) * 1996-04-24 2007-04-11 ソニー株式会社 情報処理装置、プログラム更新方法、および、情報処理システム
US5960445A (en) 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5819087A (en) 1996-07-19 1998-10-06 Compaq Computer Corporation Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
JP3773607B2 (ja) 1996-11-28 2006-05-10 Necエレクトロニクス株式会社 フラッシュeeprom内蔵マイクロコンピュータ
JPH1131102A (ja) * 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
EP0905704B1 (en) 1997-09-24 2010-03-31 STMicroelectronics S.r.l. Sectored semiconductor memory device with configurable memory sector addresses
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
KR100248757B1 (ko) * 1997-12-20 2000-03-15 윤종용 손상된 롬 바이오스 복구 방법
JP3968876B2 (ja) 1998-06-26 2007-08-29 株式会社デンソー 電子制御装置
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6301656B1 (en) 1999-01-11 2001-10-09 Alcatel Usa Sourcing, L.P. Method and apparatus for initial programming of flash based firmware
US6282145B1 (en) 1999-01-14 2001-08-28 Silicon Storage Technology, Inc. Array architecture and operating methods for digital multilevel nonvolatile memory integrated circuit system
JP2001027953A (ja) * 1999-07-15 2001-01-30 Mitsubishi Electric Corp 半導体記憶装置
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7165137B2 (en) 2001-08-06 2007-01-16 Sandisk Corporation System and method for booting from a non-volatile application and file storage device
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3816788B2 (ja) * 2001-11-22 2006-08-30 株式会社東芝 不揮発性半導体記憶装置
EP1473628B1 (en) * 2002-01-31 2010-04-14 Panasonic Corporation Information processing apparatus, memory management apparatus, memory management method, and information processing method
JP2003242044A (ja) * 2002-02-18 2003-08-29 Hitachi Kokusai Electric Inc マイクロコンピュータ回路
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
TWI228220B (en) * 2002-03-08 2005-02-21 Samsung Electronics Co Ltd System boot using NAND flash memory and method thereof
US7080245B2 (en) * 2002-05-23 2006-07-18 Hewlett-Packard Development Company, L.P. Method and system of switching between two or more images of firmware on a host device
US7082525B2 (en) 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7039799B2 (en) * 2002-10-31 2006-05-02 Lsi Logic Corporation Methods and structure for BIOS reconfiguration
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US7089414B2 (en) * 2003-04-10 2006-08-08 International Business Machines Corporation Method and apparatus for updating a microcode image in a memory
US7363484B2 (en) * 2003-09-15 2008-04-22 Hewlett-Packard Development Company, L.P. Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
US20050081090A1 (en) * 2003-09-29 2005-04-14 Giga-Byte Technology Co., Ltd. Method for automatically and safely recovering BIOS memory circuit in memory device including double BIOS memory circuits
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604248B (zh) * 2009-07-20 2012-09-26 北京海尔集成电路设计有限公司 一种修正只读存储器中程序的嵌入式系统及其实现方法
TWI501252B (zh) * 2009-12-24 2015-09-21 Hynix Semiconductor Inc 用於控制保留區的固態儲存系統及其控制方法
US9063888B2 (en) 2011-05-18 2015-06-23 Phison Electronics Corp. Program code loading and accessing method, memory controller, and memory storage apparatus
CN102800357A (zh) * 2011-05-27 2012-11-28 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
CN102800357B (zh) * 2011-05-27 2016-05-18 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
CN102317920A (zh) * 2011-07-18 2012-01-11 华为技术有限公司 数据处理方法及设备
WO2012106897A1 (zh) * 2011-07-18 2012-08-16 华为技术有限公司 数据处理方法及设备
CN102508742A (zh) * 2011-11-03 2012-06-20 中国人民解放军国防科学技术大学 面向硬件不可恢复内存故障的内核代码软容错方法
CN102637461B (zh) * 2012-03-07 2014-12-03 山东华芯半导体有限公司 支持坏块闪存扫描的启动方法
CN102637461A (zh) * 2012-03-07 2012-08-15 山东华芯半导体有限公司 支持坏块闪存扫描的启动方法
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法
US9507666B2 (en) 2014-01-06 2016-11-29 Via Technologies, Inc. Memory chips and data protection methods
CN103761198A (zh) * 2014-01-06 2014-04-30 威盛电子股份有限公司 存储器芯片与数据保护方法
CN107102851A (zh) * 2014-01-06 2017-08-29 威盛电子股份有限公司 存储器芯片与数据保护方法
US10120597B2 (en) 2014-01-06 2018-11-06 Via Technologies, Inc. Memory chips and data protection methods
CN107102851B (zh) * 2014-01-06 2020-06-16 威盛电子股份有限公司 存储器芯片与数据保护方法
CN103927187B (zh) * 2014-05-09 2017-03-22 金祺创(北京)技术有限公司 嵌入式系统程序执行方法
CN107430558A (zh) * 2015-03-09 2017-12-01 东芝存储器株式会社 半导体存储装置
CN107430558B (zh) * 2015-03-09 2020-12-01 东芝存储器株式会社 半导体存储装置
CN108475226A (zh) * 2016-01-06 2018-08-31 美光科技公司 感测电路上的错误码计算
CN108475226B (zh) * 2016-01-06 2021-09-21 美光科技公司 感测电路上的错误码计算
CN112311552A (zh) * 2019-07-30 2021-02-02 意法半导体(大西部)公司 具有固件的电子设备及其操作方法
TWI749704B (zh) * 2020-08-13 2021-12-11 群聯電子股份有限公司 韌體碼的執行方法、記憶體儲存裝置及記憶體控制電路單元

Also Published As

Publication number Publication date
KR20070003808A (ko) 2007-01-05
JP4933268B2 (ja) 2012-05-16
US7962777B2 (en) 2011-06-14
TW200601151A (en) 2006-01-01
KR101029938B1 (ko) 2011-04-19
CN1902583B (zh) 2010-05-12
TWI272536B (en) 2007-02-01
US7594135B2 (en) 2009-09-22
JP2007518166A (ja) 2007-07-05
EP1700207B1 (en) 2016-07-27
EP1700207B8 (en) 2016-09-14
WO2005066773A1 (en) 2005-07-21
US20090254776A1 (en) 2009-10-08
US20050160217A1 (en) 2005-07-21
EP1700207A1 (en) 2006-09-13

Similar Documents

Publication Publication Date Title
CN1902583B (zh) 快闪存储器系统起动操作
EP2003569B1 (en) Flash memory controller
CN101366182B (zh) 输出nand接口的nand闪存控制器
US7350044B2 (en) Data move method and apparatus
CN100545817C (zh) 用于提高数据可靠性的数据管理技术
US7970987B2 (en) Partial block data programming and reading operations in a non-volatile memory
US6349056B1 (en) Method and structure for efficient data verification operation for non-volatile memories
US8069382B2 (en) Memory cell programming
US20040103241A1 (en) Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
EP2092530A1 (en) Method and device for reconfiguration of reliability data in flash eeprom storage pages
US7471535B2 (en) Programable identification circuitry
CN101361135A (zh) 多级单元非易失性存储器装置中的单级单元编程
CN102203873A (zh) 重编程页而不向存储器设备重输数据的页缓冲器编程命令和方法
US20160307610A9 (en) Memory system that detects bit errors due to read disturbance and methods thereof
US20060143368A1 (en) Method for using a multi-bit cell flash device in a system not designed for the device
KR100757128B1 (ko) 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법
CN114582402A (zh) 非易失性存储器及其编程方法、计算机系统
KR102072351B1 (ko) 플래시 메모리를 관리하기 위한 방법
JP3807012B2 (ja) 記憶装置
JP4050824B2 (ja) 電子機器
CN110597454B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2006040484A (ja) フラッシュメモリモジュール

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
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120322

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120322

Address after: Texas, USA

Patentee after: Sanindisco Technology Co.,Ltd.

Address before: California, USA

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SANDISK TECHNOLOGIES, INC.

CP01 Change in the name or title of a patent holder

Address after: Texas, USA

Patentee after: Sandy Technology Corp.

Address before: Texas, USA

Patentee before: Sanindisco Technology Co.,Ltd.

ASS Succession or assignment of patent right

Owner name: INTELLECTUAL PROPERTY HOLDING CO., LTD.

Free format text: FORMER OWNER: SANDISK TECHNOLOGY CO., LTD.

Effective date: 20131011

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20131011

Address after: Delaware

Patentee after: Intelligent intellectual property holdings LLC

Address before: Texas, USA

Patentee before: Sandy Technology Corp.

ASS Succession or assignment of patent right

Owner name: PS2 LIHAO COMPANY

Free format text: FORMER OWNER: PS3 LIHAO COMPANY

Effective date: 20150216

Owner name: PS3 LIHAO COMPANY

Free format text: FORMER OWNER: INTELLECTUAL PROPERTY HOLDING CO., LTD.

Effective date: 20150216

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee

Owner name: JINGDUKUAI FLASH MEMORY SYSTEM COMPANY

Free format text: FORMER NAME: PS2 LIHAO COMPANY

CP01 Change in the name or title of a patent holder

Address after: Luxemburg Luxemburg

Patentee after: Longitude Flash Storage Systems Inc.

Address before: Luxemburg Luxemburg

Patentee before: PS2 ho Co.

TR01 Transfer of patent right

Effective date of registration: 20150216

Address after: Luxemburg Luxemburg

Patentee after: PS2 ho Co.

Address before: Luxemburg Luxemburg

Patentee before: PS3 ho Co.

Effective date of registration: 20150216

Address after: Luxemburg Luxemburg

Patentee after: PS3 ho Co.

Address before: Delaware

Patentee before: Intelligent intellectual property holdings LLC

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: Texas, USA

Patentee after: SANDISK TECHNOLOGIES LLC

Address before: Texas, USA

Patentee before: SANDISK TECHNOLOGIES Inc.

TR01 Transfer of patent right

Effective date of registration: 20160720

Address after: Texas, USA

Patentee after: SANDISK TECHNOLOGIES Inc.

Address before: Luxemburg Luxemburg

Patentee before: Longitude Flash Storage Systems Inc.