CN101071643A - 用于写缓冲器闪存编程和双字闪存编程的编程方法 - Google Patents

用于写缓冲器闪存编程和双字闪存编程的编程方法 Download PDF

Info

Publication number
CN101071643A
CN101071643A CN 200710102994 CN200710102994A CN101071643A CN 101071643 A CN101071643 A CN 101071643A CN 200710102994 CN200710102994 CN 200710102994 CN 200710102994 A CN200710102994 A CN 200710102994A CN 101071643 A CN101071643 A CN 101071643A
Authority
CN
China
Prior art keywords
row
array
memory device
data
flush 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.)
Pending
Application number
CN 200710102994
Other languages
English (en)
Inventor
格雷格·阿米登
萨米勒·阿西姆·阿登米尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Westell Technologies Inc
Original Assignee
Westell Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Westell Technologies Inc filed Critical Westell Technologies Inc
Publication of CN101071643A publication Critical patent/CN101071643A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Read Only Memory (AREA)
  • Tests Of Electronic Circuits (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

一种在进行在线测试期间对闪存器件执行缓冲器编程的方法和系统。一些闪存器件可以执行缓冲器编程,但是ICT不支持本申请。通过生成用于对闪存器件进行缓冲器编程的文件,可以使用ICT利用缓冲器编程来对闪存器件进行编程,其中该文件每一行具有相同数目的位。另外,通过将行的计数调整为存储在闪存器件中的可执行代码的长度的偶数倍,可以使用程序循环。

Description

用于写缓冲器闪存编程和双字闪存编程的编程方法
优先权
本专利申请要求2006年5月4日提交的美国临时专利申请60/797,716的优先权。对美国临时专利申请60/797,716的全部公开通过参考援引于此。相关申请
本申请涉及下列同时提交的美国专利申请,它们通过参考援引于此:
美国专利申请号__;2006年6月15日提交、题为“用于对NAND闪存和NOR/NAND组合闪存进行编程的闪存编程器”,发明人为Amidon等;
美国专利申请号__;2006年6月15日提交、题为“在线测试期间闪存的并行编程”,发明人为Amidon等。
技术领域
本发明通常涉及可编程器件,更特别地,涉及在进行在线测试(in-circuittest)期间对闪存器件进行写缓冲器和双字编程。
背景技术
产品产量较大的制造商有几种选择用于对产品内的可编程器件进行编程。一种选择是在把器件装配和焊接到印制电路板(PCB)之前对器件进行编程。另一种选择是在把器件焊接到PCB之后对器件进行编程。
由于在后面的制造过程中才对部件进行编程的本质特性,板上编程(onboard programming)通常更加灵活。在后面的过程中出现产品定制时,重写的可能性较少。将可编程器件送出进行编程可以造成两天或十天的延时。这种延时导致需要手头可以得到长达十天的预备要编程的器件。当编程出现变化时,手头和在流水线上的预编程器件需要重新编程。在板上对器件进行编程则将这两天到十天的存货减少到0,将重新编程的需要减少到仅仅需要对已经生产的PCB重新编程,而对已经生产的PCB重新编程可能在任一情况中都需要。
在板上对器件编程有几种选择。常用的方法是使用在线测试器(ICT)以下载代码到器件。在产品产量较大的制造环境中,下载时间加上实际ICT测试时间必须在制造过程的时间要求之内,否则在ICT中就可能形成瓶颈。对闪存编程速度的改进可以消除这种瓶颈。在ICT在要求的时间帧之内完成的编程几乎是免费的,但是在壳体外或者在分离的平台上执行的编程可以是很昂贵的。当已经执行了在线测试时,如果使用ICT完成编程,则费用可能接近为0。编程速度对于实现接近0的费用是非常关键的。
通常,ICT使用向量处理器进行测试和编程。但是,闪存器件的几种可选的编程对于基于向量的系统并不奏效。例如,在Spansion LLC MirrorBitTM闪存家族中使用的写缓冲器模式对于基于向量的系统不奏效。关键在于,基于向量的系统擅于使用“固定”的编程算法,但是不能处理动态做决定的编程方法,例如,写缓冲器模式。
因此,在进行在线测试期间对闪存器件进行缓冲器编程的方法将会是有益的。结果,可以对闪存器件快速编程,从而ICT测试期间编程费用接近免费。
发明内容
下面描述在进行在线测试期间用于对闪存器件进行编程的方法和系统。方法包括:读取存储在所述闪存器件中的可执行代码;将所述可执行代码插入阵列,其中所述可执行代码的每一行被插入到所述阵列中的各行,其中所述阵列中的每一行具有相同数目的位;对所述阵列中具有数据的行的数目进行计数;以及提供所述阵列和所述阵列中具有数据的行的数目作为输出。该方法还包括将所述行的计数调整为循环程序中使用的行的数目的倍数;改变endian格式;使用地址偏移值以在第一闪存地址开始;使用所述阵列和所述行的计数以对所述闪存器件一次编程多于一个字;使用所述阵列和所述行的计数来对所述闪存器件进行写缓冲器编程;和/或使用所述阵列和所述行的计数来对所述闪存器件进行双字编程。
另一种用于在进行在线测试期间对闪存器件进行编程的方法包括:读取存储在所述闪存器件中的可执行代码;将所述可执行代码插入阵列;对所述阵列中具有数据的行的数目进行计数;识别扇区地址位置以启动编程;以及使用所述阵列对所述闪存器件进行编程,所述编程始于识别出的扇区地址位置,并基于所述行的计数结束。所述可执行代码的每一行被插入到所述阵列中的各行,其中所述阵列中的每一行具有相同数目的位。
一种用于在进行在线测试期间对闪存器件进行编程的系统包括:处理器;数据存储器;机器语言指令,存储在所述数据存储器中,可由所述处理器执行以读取存储在所述闪存器件中的可执行代码,将所述可执行代码插入阵列,其中所述可执行代码的每一行被插入到所述阵列中的各行,所述阵列中的每一行具有相同数目的位,对所述阵列中具有数据的行的数目进行计数,以及使用所述阵列和所述行的计数以对所述闪存器件一次编程多于一个字。
该系统还可以包括存储在所述数据存储器中且可由所述处理器执行,以将所述行的计数调整为在循环程序中使用的多行的倍数,改变endian的格式,以及使用地址偏移值而在第一闪存地址开始的机器语言指令。
所述可执行代码可以是S-Record、Intel Hex、二进制、代码图像、或任意其它合适的文件格式。所述阵列中的每一行可以具有32字节、16字节,或4字节。可以使用写缓冲器编程或双字编程对闪存器件进行编程。
参考附图以及通过阅读以下详细描述,其他方案和优点对于本领域技术人员将会变得明显。而且,可以理解的是本发明内容仅仅是实例,并不意图限制本发明所要求保护的范围。
附图说明
下面,参照所附附图描述本优选实施例,其中不同附图中相似的参考标记表示相似的元件,其中:
图1是根据实例,在线测试器的框图;
图2是根据实例,电路板面板的框图;
图3是根据实例,字节对齐程序的流程图;
图4是用于对图3所描绘的程序进行初始化的用户接口的实例的屏幕截图;以及
图5是根据实例,使用图3所描绘的对齐程序的输出的写缓冲器程序的流程图。
具体实施方式
图1是在线测试器(ICT)100的框图。作为非限制实例,ICT 100可以是HP/Agilent 3070。通常,ICT 100包括测试夹具104、测试头106,和计算机108。可以将ICT 100设计为测试印制电路板(PCB)102或测试包括多于一个PCB的电路板面板,例如,参考图2描述的电路板面板200。例如,ICT100可以测试PCB 102或电路板面板200的短路、断路、最大电流(currentdraw)、容差,和/或功能性。可以为每个PCB设计定制测试夹具104。
计算机108包括:处理器;数据存储器;和机器语言指令,如本领域公知的,存储在数据存储器中且可由处理器来执行。计算机108不限于具有任何特定类型的处理器、数据存储器,或者指令格式。计算机108可以选择专门用于特定类型的电路板设计的测试应用程序。通常,测试应用程序将信息传递到测试头106并接收信息作为响应。
测试头106从计算机108接收信息并且通过驱动测试头106上的许多测试插脚110来做出响应,这些测试插脚110包括将数据和地址信息提供给测试夹具104的测试插脚110。测试夹具104包括与至少部分测试插脚110对齐的触点112,其被引至相应的弹性探针114。弹性探针114以这样的方式设置,从而当PCB 102或者电路板面板200被放在测试夹具104时,弹性探针104与位于PCB 102或者电路板面板200的底部表面上的各个测试垫片相接触。这些测试垫片与连接于PCB102或电路板面板200的组件的多种插脚相连。
计算机108中的处理器可以是向量处理器,其用于测试PCB 102或电路板面板200。向量处理器生成发送到PCB 102或电路板面板200的输入,而作为响应,向量处理器期望来自PCB 102或电路板面板200的特定输出。如果向量处理器接收到期望的输出,那么这种特定测试图案(pattern)可以被认为通过测试。相反,向量处理器可以识别测试失败,这表明PCB 102或电路板面板200有问题。当向量处理器提供了对PCB 102或电路板面板200的有效测试时,这种类型的处理器不能够做决定。
ICT 100还可以用于对PCB 102或电路板面板200上的存储器组件进行编程。例如,ICT 100可以用于对位于PCB 102或电路板面板200上的闪存器件进行编程。通常,ICT 100将编程命令发送给闪存器件,应用待编程的地址和数据,然后轮询以验证编程是否完成。通常,每个闪存器件类型都具有提供给ICT 100的用于编程的特定指令。
图2是电路板面板200的框图。电路板面板200可以包括多于一个的PCB,例如,PCB 202-212。虽然所示电路板面板200具有6个PCB 202-212时,但电路板面板200也可以具有多于或少于6个PCB电路板。PCB 202-212通常是为了制造效率而制造为一个电路板的面板的相同电路的多个实例。可以在制造和测试之后通过切割或折断来分离PCB 202-212,以提供单个产品。例如,PCB 202-212中的每一个可以是调制解调器板。
一些闪存器件可以设计为使用程序提供者的特定程序来编程,其中该程序提供者的特定程序设计为一次编程多于一个字。例如,Spansion LLC提供了MirrorBitTM闪存器件家族,该闪存器件家族包括写缓冲器编程。Spansion的写缓冲器编程允许编程系统在一次编程操作中最多写16个字/32个字节。为了使用这种写缓冲器编程,32个字节必须是相邻的并且不跨越扇区界限。使用写缓冲器编程允许比使用字编程时更快地对闪存器件进行编程。根据Spansion的文档,字编程大约要花费写缓冲器模式所花费的四倍的时间。
作为另一个例子,STMicroelectronics提供双字或者四字节编程模式。请注意双字和四字节是一样的,并且在这里都被称为双字模式。双字模式需要四个连续的字节来进行编程。但是,对于标准的Motorola S-Recond或IntelHEX文件,行尾为0xFF的字或者0xFF的整个行被从文件中剥离,这样可以使每一行留下奇数个字节。
很遗憾,ICT 100不能使用写缓冲器模式或者双字模式来对闪存器件编程,这是因为向量处理器不能做决定。例如,ICT 100不能在文件中向前搜索并且决定哪一个地址可以使用双字模式而哪一个地址不能使用双字模式。因此,提供这样一种方案是有益的:允许ICT 100使用写缓冲器模式和/或双字模式对PCB 102或电路板面板200上的闪存器件编程。
通过克服向量处理器的限制,ICT 100可以用于在写缓冲器模式和双字模式下对闪存器件编程。参照图3-图5所示,对于写缓冲器模式,这可以通过执行闪存的字节对齐程序,随后执行写缓冲器程序来实现。相似地,对于双字模式,可以通过执行闪存的字节对齐程序,随后执行双字程序来实现。通过使用写缓冲器程序实例,,本领域技术人员就可以在执行字节对齐之后,使用程序提供者提供的规范实现ICT 100的双字编程算法。
图3是字节对齐程序300的流程图。字节对齐程序300是软件例行程序,其将闪存编程保持在邻近的字节上。除了对齐数据,字节对齐程序300还可以确保扇区边界没有被破坏。字节对齐程序300还可以用于确保使用特定的若干行,从而使循环程序可以中止在偶数上。通过将全部字节与32、16或4字节对齐,在从字节0开始时,可以保持扇区对齐。优选地,使用32字节对齐来提高编程速度。
使用Motorola格式S-Record文件的非限制实例来描述字节对齐程序300,其为存储在一些闪存器件中的可执行代码。在最终的Motorola S-Record文件中,行的总数目被2048整除,以使程序循环倍数可以被整除。MotorolaS-Record文件的格式是AABBCCCDDDDEE,其中:
AA(1字节):该记录类型以后面跟随有单个数字的S开始。记录类型定义了要跟随什么数据格式和数据类型。标准类型是:开始记录、数据记录,和结束记录。字节对齐程序500使用下面的记录类型:
S0=开始记录
S1=数据记录(4字符地址,2字节)
S2=数据记录(6字符地址,3字节)
S3=数据记录(8字符地址,4字节)
S7=结束记录
S8=结束记录
S9=结束记录
BB(1字节):记录长度是该行记录的字节计算。字节计算是地址、数据、校验和域使用的字节的总数目。以两个字符来描述数据的每个字节。
CCC(2、3或4字节,取决于记录类型):随后的数据所属的地址位置。第一条数据位于列为AAAAH的地址。
DDDD(0到n字节):其为位于所列地址的数据。
EE(1字节):校验和。校验和是通过取长度地址和数据域中的全部字节的和的补码而生成的。记录类型字节不是校验和计算的一部分。
虽然当前的实例使用Motorola格式S-Record文件作为输入和输出,但可以理解的是也可以使用其他的文件格式,例如Intel Hex,二进制,和代码图像文件。
在方框302中,字节对齐程序300被初始化。用户接口可以用于帮助选择选项。图4描绘了实例性的用户接口的屏幕截图400。用户接口允许用户定位并选择想要的S-Record文件。所选的S-Record文件出现在“所选文件”的文本框中。
基于所选的文件转换属性来处理S-Record文件。图4中描绘的文件转换属性是字节交换和地址偏移量。其他的文件转换属性是可能的。如图4所示,在该实例中选择地址偏移量检验框。如果endian格式需要改变,那么用户可以选择字节交换检验框,其将endian从“小endian”变为“大endian”或者从“大endian”变为“小endian”。地址偏移量检验框允许使用默认偏移量。
默认偏移量检验框允许选择TI或者Broadcom文件偏移。其他默认偏移量的选择也是可以的。在初始值地址位置没有位于地址0时使用偏移量。这可以发生在产品需要移动存储器中起始的闪存地址时。图4中描述的用于两个选择的偏移量值是:TI=0xB0000000和BROADCOM=0xBFC00000。从S-Recond文件地址中减去偏移量以开始在地址0x00(即,第一闪存地址)寻址。
“S0标签”框允许用户将注释插入到S-Record文件的顶部,这是因为ICT 100通常忽略S0行。用户接口可以允许使用户额外的信息来初始化字节对齐程序300。或者,可以设计字节对齐程序300使得字节对齐程序300可以自动进行初始化而不使用用户输入。
通常,初始化伴随着为闪存的文件大小而生成的0xFF阵列出现。这基本上是从地址0x00到结尾的空白闪存。当用户点击用户界面上的“处理”按钮或者开始字节对齐程序300时,字节对齐程序300验证文件设置和配置选项是有效的,然后开始处理所选的S-Record文件。
返回图3,在方框304,从闪存器件中逐行读取S-Record文件。在方框306,在方框304读取的数据被插入或者写入阵列,改写0xFF。在方框308,通过减去屏幕截图400中描绘的用户接口上所选的地址偏移量来修改地址。如果选择字节交换,那么通过交换高字节和低字节来插入字节。逐个方框(302-308)地处理整个S-Record文件直到方框310确定的文件末尾。现在,字节对齐程序300在阵列中具有闪存器件的完整图像。阵列中的每一行具有相同数目的位,例如,在该实例中的32字节(或者256位)。
在方框312中,字节对齐程序300计算阵列中具有数据的行数。忽略还包含0xFF的任意行。这些被忽略的行可以在阵列的初始化期间产生,并且随后被从阵列中读取以及写入阵列中的S-Record文件改写。
在计算包含数据的行的数目过程中,具有数据的每一行最初都被认为是最后的地址。阵列在0x00的基址开始并且从那里继续直到最后地址。只要字节对齐程序500找到包含数据的行,那么该行的地址就比前一行的地址大。以这种方式,就知道了具有有效数据的最大地址。
在方框314中,作为具有数据而计算的行的数目被调整为2048的下一个偶数倍,并且被调整的数目变成作为字节对齐程序300的输出而包含的行数。如上所述,在最终的Motorola S-Record文件中的总行数可以被2048偶数倍整除,以使得程序循环倍数可以被整除的。但是,所计算的行数可以调整为适合循环对齐的任何其他数目,以便将可工作的常数提供给ICT 100。
字节对齐程序300输出具有数据的每一行,并且行数需要结束在2048的偶数倍。字节对齐程序可以将其输出存储在带有合适后缀的文件中,以识别文件类型,例如以.hpf后缀结尾的文件。输出文件可以被存储在计算机108中的存储器内。然后,所存储的文件可以被图5所描述的写缓冲器程序500或者其他程序提供者的写入程序使用。
字节对齐程序300还可以用于将许多与32不同的字节对齐。例如,字节对齐程序300可以用于提供STMicroelectronics双字模式编程所需的连续的四字节对齐。因为行尾是0xFF的字或者0xFF的整个行可以从标准的Motorola S-Record或者Intel HEX文件中剥离,从而使每行有奇数个字节,所以需要字节对齐程序300以使用ICT 100来执行双字模式。字节对齐程序300将丢失的0xFF字节重新引入到需要确保邻近的四个字节对齐的地方。
图5是使用字节对齐程序300的输出的写缓冲器程序500的流程图。写缓冲器是一组用于保持作为一组而要被编程的几个字的寄存器。在发出写缓冲器编程指令之前,缓冲器被待编程的字填充。通过对整个组的字执行一次日常编程操作来减少对每个字编程的时间。这导致比标准字/字节编程算法更快的有效字/字节编程时间。
如下使用由Spansion LLC提供的写缓冲器命令集来描述写缓冲器程序500,但是可以理解的是,可以使用其他闪存器件命令集。在表1中,SA是扇区地址,WC是字计算,PA是程序地址,PD是程序数据,以及WBL是写缓冲器位置。在命令序列中循环的总数目是由写入写缓冲器的字节数目决定的。命令序列中的最大的循环数目是37,包括“对缓冲器编程以闪存”命令。可以在Spansion LLC文档中找到额外的信息。
命令序列 接口 总线周期
第一 第二 第三 第四 第五 第六
地址  数据 地址 数据 地址 数据 地址 数据 地址 数据 地址 数据
写入缓冲器 555  AA 2AA 55 SA 25 SA WC PA PD WBL(注释) PD
字节 AAA 555
对缓冲器编程以闪存(确认) 字和字节 SA  29
写入缓冲器中断复位 555 2AA 55 XXX F0
字节 AAA 555
表1
在方框502中,进行初始化。初始化可以包括禁用在编程期间试图写或者访问闪存器件的其他器件。另外,控制行可以被设置为合适的值(即,逻辑0或逻辑1)以初始化写缓冲器编程。写使能脉冲可以完成初始化过程并且还可以出现在参考方框504-514所描述的每个总线周期之后。在总线周期504-514期间,可以使用在字节对齐程序300期间获得的阵列中的数据。
在方框504和506中,写缓冲器编程命令序列可以通过写两个未锁周期来初始化。在第一总线周期期间,地址总线上的数据等于555H,而数据总线上的数据等于AAH。在第二总线周期期间,地址总线上的数据等于2AAH,而数据总线上的数据等于55H。
在方框508中,第三总线周期将写缓冲器载入命令(即,数据总线上的数据等于25H)写入进行编程的扇区地址(SA)。在方框510中,第四总线周期写待编程的SA和字计算(WC)。在方框512,第五总线周期写来自阵列的第一地址位置和待编程的数据。通过对位AMAX-A4进行寻址来选择写缓冲器页。所有随后的地址/数据对必须落在所选择的写缓冲器页内。
在方框514中,额外的总线周期将剩余的地址/数据对写入写缓冲器。在写入地址/数据对之后,在方框516,利用一地址总线上的数据(该数据等于SA)和一数据总线上的数据(该数据等于29H),执行“程序缓冲器到闪存”确认命令序列。在另一个写-使能脉冲后,延时是必要的。
然后,在方框518,基于调整后的对阵列中具有数据的行的计数,写缓冲器程序500确定S-Record中的所有行是否已经被编程。如果没有,程序500循环回方框504以重复第一总线周期的过程。否则,在方框520,执行“写缓冲器终端复位”命令序列以复位闪存器件用于下一个操作。
下面还提供了写缓冲器程序片断实例:
segment  2048
  repeat  63488 times
      !***** 1_BusCycle    555/AA
          execute  Unlock_Cycle_1_Cmd
          execute  Write
          execute  End_Cycle
      !*****2_BusCycle     2AA/55
          execute  Unlock_Cycle 2 Cmd
      execute  Write
      execute  End_Cycle
  !*****3_BusCycle         SA/25(Sector Address)
       execute Data_W drive data Address drive data Data
       execute Data_W_25
       execute  Write
       execute  End_Cycle
  !*****4_BusCycle         SA/WC(sector address/word count)
          execute Data_W_F
          execute  Write
          execute  End_Cycle
             repeat 16 times
             execute Data_W  drive data Address drive data Data
             execute  Write
             execute  End_Cycle
             next Address
             next Data
             end repeat
          execute Data_W_BufferConfirm
          execute  Write
          execute  End_Cycle
          wait 4u
          execute Three_state wait
     end repeat
    end segment
     call  Reset_Device
end unit
虽然实例程序片断已经提供给了写缓冲程序500,但是可以理解的是存在多种不同的方式来编写函数,并且写缓冲器程序不限于任何特定软件代码或结构。而且,代替使用写缓冲程序500,另一程序提供者提供的规范也可以与字节对齐程序300结合使用。
字节对齐程序300和写缓冲器程序500(或者其他程序提供者的写入程序)可以由计算机108来执行。通过使用这些程序,ICT可以实施程序提供者所设计的一次编程多于一个字的特定程序。结果,可以快速对闪存器件进行编程,从而在ICT测试期间编程费用几乎免费。
应该理解的是,所示实施例仅为示例性的,而不应该被认为是对本发明范围的限制。例如,虽然这里是根据Spansion闪存器件描述本发明的,但是本发明可以利用其他闪存器件来实现,例如由惠普、三星、ST、Atmel和因特尔制造的闪存器件。权利要求书不应该被认为是对所描述的顺序或元件的限制,除非是对发明效果的描述。因此,所有落在所附权利要求书以及其等效的范围和精神之内的实施例都如同本发明一样请求保护。

Claims (16)

1.一种用于在进行在线测试期间对闪存器件进行编程的方法,包括组合:
读取存储在所述闪存器件中的可执行代码;
将所述可执行代码插入阵列,其中所述可执行代码的每一行被插入到所述阵列中的各行,其中所述阵列中的每一行具有相同数目的位;
对所述阵列中具有数据的行的数目进行计数;以及
提供所述阵列和所述阵列中具有数据的行的数目作为输出。
2.如权利要求1所述的方法,还包括将所述行的计数调整为循环程序中使用的行的数目的倍数。
3.如权利要求1所述的方法,还包括改变endian格式。
4.如权利要求1所述的方法,还包括使用地址偏移值以在第一闪存地址开始。
5.如权利要求1所述的方法,还包括使用所述阵列和所述行的计数以对所述闪存器件一次编程多于一个字。
6.如权利要求1所述的方法,还包括使用所述阵列和所述行的计数来对所述闪存器件进行写缓冲器编程。
7.如权利要求1所述的方法,还包括使用所述阵列和所述行的计数来对所述闪存器件进行双字编程。
8.一种用于在进行在线测试期间对闪存器件进行编程的方法,包括组合:
读取存储在所述闪存器件中的可执行代码;
将所述可执行代码插入阵列,其中所述可执行代码的每一行被插入到所述阵列中的各行,其中所述阵列中的每一行具有相同数目的位;
对所述阵列中具有数据的行的数目进行计数;
识别扇区地址位置以启动编程;以及
使用所述阵列对所述闪存器件进行编程,所述编程始于识别出的扇区地址位置,并基于所述行的计数结束。
9.一种用于在进行在线测试期间对闪存器件进行编程的系统,包括组合:
处理器;
数据存储器;以及
机器语言指令,存储在所述数据存储器中,可由所述处理器执行以:
读取存储在所述闪存器件中的可执行代码;
将所述可执行代码插入阵列,其中所述可执行代码的每一行被插入到所述阵列中的各行,其中所述阵列中的每一行具有相同数目的位;
对所述阵列中具有数据的行的数目进行计数;以及
使用所述阵列和所述行的计数以对所述闪存器件一次编程多于一个字。
10.根据权利要求9所述的系统,还包括存储在所述数据存储器中且可由所述处理器执行,以将所述行的计数调整为在循环程序中使用的行的数目的倍数的机器语言指令。
11.根据权利要求9所述的系统,还包括存储在所述数据存储器中且可由所述处理器执行,以改变endian的格式的机器语言指令。
12.根据权利要求9所述的系统,还包括存储在所述数据存储器中且可由所述处理器执行,以使用地址偏移值而在第一闪存地址开始的机器语言指令。
13.根据权利要求9所述的系统,其中所述可执行代码是具有选自包括S-Record、Intel Hex、二进制,和代码图像的组的格式的文件。
14.根据权利要求9所述的系统,其中所述阵列中的每一行具有相同的字节数目,所述字节数目选自包括32字节、16字节,和4字节的组。
15.根据权利要求9所述的系统,其中对所述闪存器件进行编程包括对所述闪存器件进行写缓冲器编程。
16.根据权利要求9所述的系统,其中对所述闪存器件进行编程包括对所述闪存器件进行双字编程。
CN 200710102994 2006-05-04 2007-05-08 用于写缓冲器闪存编程和双字闪存编程的编程方法 Pending CN101071643A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US79771606P 2006-05-04 2006-05-04
US60/797,716 2006-05-04
US11/453,631 2006-06-15

Publications (1)

Publication Number Publication Date
CN101071643A true CN101071643A (zh) 2007-11-14

Family

ID=38898789

Family Applications (3)

Application Number Title Priority Date Filing Date
CN 200710102996 Pending CN101079328A (zh) 2006-05-04 2007-05-08 在线测试期间闪存的并行编程
CN 200710102994 Pending CN101071643A (zh) 2006-05-04 2007-05-08 用于写缓冲器闪存编程和双字闪存编程的编程方法
CN 200710102424 Pending CN101071647A (zh) 2006-05-04 2007-05-08 用于对nand闪存及nor/nand组合闪存编程的闪存编程器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN 200710102996 Pending CN101079328A (zh) 2006-05-04 2007-05-08 在线测试期间闪存的并行编程

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN 200710102424 Pending CN101071647A (zh) 2006-05-04 2007-05-08 用于对nand闪存及nor/nand组合闪存编程的闪存编程器

Country Status (1)

Country Link
CN (3) CN101079328A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409106B (zh) * 2008-10-29 2011-03-16 苏州大学 Flash存储器在线编程控制方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327088B2 (en) * 2010-07-15 2012-12-04 Dediprog Technology Co., Ltd. Isolation-free in-circuit programming system
CN102467522B (zh) * 2010-11-10 2013-09-11 中兴通讯股份有限公司 一种基于nand闪存的文件系统的自编程方法及装置
CN102496388A (zh) * 2011-12-01 2012-06-13 深圳市华星光电技术有限公司 印刷电路板的存储器代码检验方法
CN102709253A (zh) * 2012-05-14 2012-10-03 奈电软性科技电子(珠海)有限公司 一种集成电路板制作工艺
CN103021464A (zh) * 2012-12-18 2013-04-03 上海市共进通信技术有限公司 存储芯片编程器及其设置与对存储芯片进行编程控制方法
CN105575836B (zh) * 2014-10-08 2018-06-12 慧荣科技股份有限公司 测试装置
CN106205735A (zh) * 2015-04-29 2016-12-07 中芯国际集成电路制造(上海)有限公司 嵌入式芯片测试方法及系统
CN116072201A (zh) * 2021-04-15 2023-05-05 长江存储科技有限责任公司 存储装置及其制造、测试和数据保护方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409106B (zh) * 2008-10-29 2011-03-16 苏州大学 Flash存储器在线编程控制方法

Also Published As

Publication number Publication date
CN101079328A (zh) 2007-11-28
CN101071647A (zh) 2007-11-14

Similar Documents

Publication Publication Date Title
CN101071643A (zh) 用于写缓冲器闪存编程和双字闪存编程的编程方法
US10445228B2 (en) Methods and apparatuses for requesting ready status information from a memory
US5966723A (en) Serial programming mode for non-volatile memory
CN102326154B (zh) 用于管理型非易失性存储器的地址映射的体系结构
US7904639B2 (en) Modular command structure for memory and memory system
CN101202106B (zh) 非易失性存储系统及其相应的编程方法
KR100908542B1 (ko) 불휘발성 메모리 소자 및 그 프로그램 방법
US8095834B2 (en) Macro and command execution from memory array
US20090198770A1 (en) System and method of updating codes in controller
US20080109594A1 (en) Non-volatile memory device controlled by a micro-controller
US8423701B2 (en) Flash memory device with a low pin count (LPC) communication interface
CN102422271A (zh) 用于非易失性存储器系统的多页准备命令
JP2010501915A (ja) メモリ用モジュールコマンド構造およびメモリシステム
CN104115231A (zh) 用于确定对存储器阵列的访问的方法、装置和系统
CN109815171A (zh) 用于存储器控制器发现供应商特定非易失性存储器设备的方法和装置
CN1740959A (zh) 由微控制器控制的非易失性存储器设备
US6374338B1 (en) Method for performing configuration tasks prior to and including memory configuration within a processor-based system
US8706469B2 (en) Method and apparatus for increasing the efficiency of an emulation engine
US7117405B2 (en) Extender card with intercepting EEPROM for testing and programming un-programmed memory modules on a PC motherboard
CN101165710B (zh) 智能卡以及测试智能卡的方法
CN113314180A (zh) 一种多次编程电子熔丝装置
KR910014825A (ko) 데이타 처리 시스템 및 메모리 어레이 테스팅 처리 방법
CN116935931A (zh) 集成电路及执行其的方法
CN103871469A (zh) 非易失性存储装置、操作方法和具有其的数据处理系统
MX2007005252A (es) Metodo de programacion para programacion de registro intermedio de escritura y de doble palabra flash.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication