CN101071647A - 用于对nand闪存及nor/nand组合闪存编程的闪存编程器 - Google Patents
用于对nand闪存及nor/nand组合闪存编程的闪存编程器 Download PDFInfo
- Publication number
- CN101071647A CN101071647A CN 200710102424 CN200710102424A CN101071647A CN 101071647 A CN101071647 A CN 101071647A CN 200710102424 CN200710102424 CN 200710102424 CN 200710102424 A CN200710102424 A CN 200710102424A CN 101071647 A CN101071647 A CN 101071647A
- Authority
- CN
- China
- Prior art keywords
- programming
- flash
- memory device
- interface
- programmed
- 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
Links
Images
Landscapes
- Tests Of Electronic Circuits (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
公开了一种用于对NAND闪存及NOR/NAND组合闪存编程的闪存编程器,以及当进行在线测试期间执行闪存器件NAND编程的方法和系统。闪存编程器可从在线测试器接收程序文件,以及从NAND闪存器件接收器件信息,且所述器件信息包括有关无效存储单元的信息。所述闪存编程器转换所述程序文件,以处理所述无效存储单元,并随后利用所述已转换的程序文件对所述NAND闪存器件编程。所述闪存编程器的在所述在线测试器和被测单元之间转换的功能还使得能够更有效地对其它闪存器件编程。
Description
技术领域
本发明总的涉及可编程器件,尤其涉及能够当进行在线测试期间对NAND(与非)闪存器件及NOR(或非)/NAND组合闪存器件编程的闪存编程器。
背景技术
大量生产制品的制造商在对产品中可编程器件编程时有多种选择。一个选择是在将器件装配和焊接到印刷电路板(PCB)之前进行编程。另一个选择是在将器件焊接到PCB之后进行编程。
通常,在板编程(on board programming)比较灵活,这是因为编程本质上处于制造过程的后期部分。如果产品的定制出现在制造过程后期,潜在性的重复工作相对更少。将可编程器件拿去编程会产生2天至10天的延迟。所述延迟产生了提前10天预先编程现有器件的需要。如果出现了一个编程修改,则所有现有的及制备中的预编程器件均需要重新编程。在板编程器件将所述2天至10天的供应期降低为0,并相应降低任何环节均可能需要的对已生产的PCB重新编程需求。
有几种选择可用来进行器件在板编程。一个通用方法是利用在线测试器(In-Circuit Tester,ICT)将代码下载至器件。在进行大批量制造的情形下,下载时间加上实际ICT测试时间必须在制造过程的时间要求之内,或者可能会在ICT形成处理过程的瓶颈。对闪存编程速度的改进可能会消除这种瓶颈。在ICT的所需时间框架内进行的编程几乎是免费的,然而在板外或独立工作平台上的编程可能开销昂贵。如果利用ICT编程,则当已执行在线测试时,开销可能接近为零。编程速度对获得上述近乎零成本至关重要。
ICT通常利用向量处理器进行测试和编程。本质上,基于向量的系统善于“固定的”编程算法,而无法处理在高速运算中作出决策的编程方法。不幸的是,这些基于向量的系统不能编程NAND闪存器件或者NOR/NAND组合闪存器件。NOR/NAND闪存器件包括NOR特征和NAND特征。组合闪存技术有一些商业名称,比如Spansion的ORNAND和Samsung(三星)的ONENAND等。
由于NAND闪存器件成本低、封装尺寸小、以及容量大,所以工业上现在越来越多使用NAND闪存器件。由于每个器件通常都具有唯一的无效存储单元(bad cell)组,所以每个NAND闪存器件均可认为是唯一的。这样,由于数据保存在器件上不同的“有效(good)”区域,不可对编程的NAND闪存器件进行直接复制。基于向量的系统无法作出需要的决策,以针对NAND闪存器件中的无效存储单元问题进行调整。因此,NAND无法用ICT编程。同样,由于NOR/NAND组合闪存器件中具有NAND特征,所以也无法用ICT编程。
因此,一种当进行在线测试期间对NAND闪存器件和NOR/NAND组合闪存器件编程的方法将是有利的。
本申请与下列共同美国申请相关,其通过引用结合到本申请中:
美国专利申请__,申请日为2006年6月15日,发明名称为“Programming Method for Write Buffer and Double Word FlashProgramming”,申请人为Amidon等;以及
美国专利申请__,申请日为2006年6月15日,发明名称为“ParallelProgramming of Flash Memory During In-Circuit Test”,申请人为Amidon等。
发明内容
本发明公开了一种当进行在线测试期间对NAND闪存器件或NOR/NAND闪存器件编程的方法和系统。当进行在线测试期间对NAND闪存器件或NOR/NAND组合器件编程的方法包括:从在线测试器接收用于对闪存器件编程的程序文件;获取待编程的闪存器件的相关器件信息,该器件信息包括所述闪存器件中无效存储单元的位置信息;在考虑所述无效存储单元的情况下转换所述程序文件;以及利用转换后的程序文件对所述闪存器件编程。
获取器件信息的步骤可包括从所述闪存器件读取生产ID和器件ID。另外,获取器件信息的步骤可包括通过多路复用总线与所述闪存器件通信。
所述无效存储单元包括厂商标识的无效存储单元,以及在对所述闪存器件编程期间损坏的存储单元。转换程序文件的步骤包括利用块移动处理将代码转移到有效存储单元。所述程序文件可以是Motorola S-Record格式文件、Intel Hex格式文件、二进制格式文件、代码图像文件、或任何其它合适的格式文件。
所述方法还可能包括计算误差检验与校正码,在完成对所述闪存器件编程时,向所述在线测试器发出通知。
此外,提供一种当进行在线测试期间对器件编程的方法可包括:从具有第一总线接口的在线测试器接收代码;从具有第二总线接口的待编程的器件接收器件信息,其中所述第一总线接口不同于所述第二总线接口;在所述第一总线接口和所述第二总线接口之间转换数据;以及基于从所述在线测试器接收到的代码和从所述待编程的器件接收到的器件信息,对所述器件编程。所述第一总线接口与所述第二总线接口不同。
所述器件信息包括用于对所述器件编程的编程方法。所述编程方法可能为单字模式、双字模式、写缓冲模式、页写模式、电压加速模式、解锁旁路编程、和/或任何附加的适当编程模式。
在所述第一总线接口和所述第二总线接口之间转换数据的步骤可包括在串行数据和并行数据之间进行转换。所述第二总线接口可以是多路复用总线的接口。另外,所述第二总线接口是专用接口,且所述代码包括用于所述专用接口的器件驱动程序。
所述方法还可包括:在同一被测单元中根据地址线和控制线中至少之一偏置的多个器件编程;验证是否已经对所述器件正确编程;在对所述器件编程时向所述在线测试器发出通知;执行自我测试,以及在对所述器件编程之前擦除其中数据。
提供一种当进行在线测试期间对闪存器件编程的电路,其位于在线测试器的测试夹具中,其特征在于,包括:第一接口,用于与所述在线测试器通信;第二接口,用于与被测单元通信,其中所述闪存器件位于所述被测单元上;存储器,可由所述在线测试器对所述存储器编程;以及微控制器,用于执行在所述存储器中保存的机器语言指令,其中所述微控制器可被运行,以在从所述第一接口接收的数据和从所述第二接口接收的数据之间进行转换。
所述电路可能还包括:接口电路,接口电路,将从电源接收到的第一电压电平转换为所述被测单元所需的第二电压电平;加速电路,向所述闪存器件提供加速电压,以加快编程。
对本领域普通技术人员来说,通过结合适当的附图阅读接下来的详细描述,这些及其它方面和优点将更容易理解。此外,应当理解,发明内容部分仅用作示例,而并无限定本发明所主张范围的意图。
附图说明
下面结合附图描述本发明优选实施例,其中,在各附图中类似的标号表示类似的元件,其中
图1为根据本发明实例的在线测试器的框图;
图2为根据本发明实例的电路插件板的框图;
图3为示出根据本发明实例的位于测试夹具中的闪存编程器的框图;
图4为根据本发明实例的如图3所示闪存编程器的框图;
图5为描绘根据本发明实例的在在线测试期间对NAND闪存器件编程的框图;以及
图6为根据本发明实例的使用图3所示闪存编程器的方法的流程图。
具体实施方式
图1为在线测试器(ICT)100的框图。作为非限制性实例,所述ICT 100可以是HP/Agilent 3070。典型地,所述ICT 100包括测试夹具104,测试头106,以及计算机108。所述测试头106和所述计算机108的组合在此称为ICT机。虽然图1将所述测试头106和所述计算机108描绘成单机实体,而所述测试头106和所述计算机108可以共置。
可设计所述ICT100,以用来测试印刷电路板(PCB)102或测试包括多个PCB的电路插件板(circuit board panel),比如如图2描绘的电路插件板200。所述PCB或所述电路插件板200通常可被描述为被测单元(Unit UnderTest,UUT)或被测器件(Device Under Test,DUT)。举例来说,所述ICT100可测试所述PCB 102或所述电路插件板200的短路、开路、电流消耗、容错和/或功能。可对于每个PCB设计定制测试夹具104。
如现有技术中所公知,计算机108包括处理器、数据存储器以及可由所述处理器执行的在数据存储器中保存的机器语言指令。计算机108并不局限于具有某种特定类型的处理器、数据存储器或指令格式。计算机108可选择特定类型电路板设计专用的测试应用。通常,测试应用向测试头106输出信息。
测试头106从计算机108接收信息,并通过驱动测试头106上的多个测试针110作出响应,这些测试针110包括用以提供数据和地址信息给测试夹具104的那些测试针110。测试夹具104包括与至少某些测试针110对齐的接点112,且这些接点连接到相应的弹簧探针(spring probe)114。以这种方式定位弹簧探针114,从而当PCB 102或电路插件板200被置于测试夹具104上时,弹簧探针114与位于PCB 102或电路插件板200下表面的各种测试垫(test pad)(图中未示出)建立连接。这些测试垫连接到附加于PCB 102或电路插件板200的部件中的各种针。
计算机108中的处理器可以是向量处理器,其便于测试PCB 102或电路插件板200。向量处理器产生被发送至PCB 102或电路插件板200的输入,而作为响应,所述向量处理器等待来自PCB 102或电路插件板200的特定输出。如果向量处理器接收到等待输出,则特定测试模式可被认为通过测试。否则,向量处理器可以识别为测试失败,这将表明PCB 102或电路插件板200上存在问题。尽管向量处理器提供了PCB 102或电路插件板200的有效测试,但是这种类型的处理器无法作出判断。
ICT 100还可用于对PCB 102或电路插件板200上的存储部件编程。举例来说,ICT 100可用于对位于PCB 102或电路插件板200上的闪存器件编程。通常,ICT 100发送编程命令至闪存器件,应用地址和数据进行编程,并随后轮询以验证编程是否完成。典型地,每种闪存器件类型分别具有向ICT100提供的特定编程指令,
图2为电路插件板200的框图。电路插件板200可包括多个的PCB,比如PCB 202-212。虽然示出的电路插件板200包括PCB 202-212,但电路插件板200可包括多于6个或少于6个的PCB。PCB 202-212通常为同一电路的多个实例,基于生产效率的考虑而将其生产为电路板组。可在制造和测试后通过切割或断开使PCB 202-212分离,以提供单独的产品。例如,PCB202-212中每一个均可以是调制解调器板。
图3为显示位于测试夹具104中的闪存编程器300的框图。闪存编程器300具有小引脚尺寸(footprint)的自包含器件,这使得能够通过测试夹具104中有限的探针干扰(probe interference)将闪存编程器300安装在所述测试夹具104中。
或者,可以有多个闪存编程器300安装在测试夹具104中。采用多个闪存编程器300可以更快速地对闪存器件编程。虽然,典型的ICT(比如HP/Agilent 3070)能够同时处理四个器件;但是,除了测试夹具104中的连接和/或空间的限制,可能实施的闪存编程器300的数量并不存在任何限制。举例来说,测试夹具104可能具有20-30个闪存编程器的可用连接和空间。
可通过利用标准连接器、利用直接连接或通过绕接测试夹具104中的探针插槽,或者利用任何其它向测试夹具104增加电路的方法,将闪存编程器300与所述测试夹具104相连。优选地,测试夹具104被设计为包括可与闪存编程器300连接的附加连接器(图中未示出)。这样,闪存编程器300可能被描述为“插入式”器件,其可以轻易地插入和拔离所述测试夹具104,而并不影响ICT 100的运行。所述连接器可以连线至保持有与测试夹具中的接点112相连的弹簧探针114。
闪存编程器300能够在所述ICT机器和所述UUT之间转换数据。除了能够处理多种格式的数据之外,闪存编程器300还能将一种总线结构转换为另一种总线结构。这样,通过利用串行或并行总线,闪存编程器300能够对NOR闪存、NAND闪存、NOR/NAND组合闪存和/或USB闪存编程。以相同速率计时,串行器件通常相比并行器件要用更长的编程时间。编程时间的差异在于串行数据时钟每次对1位数据进行处理,而串行数据时钟则在每次对16或32位数据进行处理。举例来说,ICT机可以将并行数据转发给闪存编程器300,而闪存编程器能够对串行器件编程。这样,当闪存编程器300对串行器件编程时,ICT机可自由执行其它操作。
此外,闪存编程器300支持PCMCIA、CompactFlash(压缩闪存卡)、SmartMedia(智能媒体卡)、多媒体卡、安全数码卡、记忆棒、USB及存储密钥。此外,闪存编程器300通过在需要时利用附加地址线来支持各种尺寸的闪存器件。此外,闪存编程器支持快写模式,比如对于Spansion器件的写缓存模式、对于ST器件的双字编程、电压加速编程以及用来降低整体环路数量的解锁旁路(unlock bypass)编程。
图4为闪存编程器300的框图400。闪存编程器300包括:微控制器402、存储器404、接口电路406、加速电路408、电源410、ICT接口412,以及可编程器件连接器414。闪存编程器300可能还包括其它部件。另外,闪存编程器300可具有能提供本质上相同功能的不同设计。
微控制器402可以执行在存储器404中保存的机器语言指令。微控制器402并不限定为任何特定器件,其也可能是微处理器或者能够处理数据的任何其它器件或器件组合。优选地,微控制器402为32位、100+MIPS处理器。优选地,将微控制器402的时钟设置为50MHz的系统时钟,以转换和处理信息,同时以“接近”电路速度对UUT编程。
存储器404可以是任一类型的存储器,包括但不限于图4所示的同步动态随机存储器(SDRAM)。存储器404可以具有充足的存储空间,用于在转发过程中处理程序文件。存储器404中的代码可以随时间被更新和/或升级,以发现程序错误以及增加新特征和支持新器件。
举例来说,ICT机可以更新存储器404中的代码。ICT机接口可被多路复用,以使得可通过ICT机对程序代码进行更新。闪存器件300中的ICT接口412可以是工业标准的JTAG或边界扫描接口,而在进入特定测试模式时,ICT机上的ICT接口412可被多路复用。然后,可由ICT机访问ICT接口412,以更新存储器404中的代码。在这种情形下,在不需要将闪存编程器300从测试夹具上移去的情况下,可对闪存编程器300的固件更新。
电源410典型地为3.3V,以用于向闪存编程器300的电路供电,以及必要时向UUT供电。很明显,电源410还可以提供其它电压。如果可编程器件支持高速度加快编程模式,则加速电路408可以向所述可编程器件的加速管脚上提供加速电压。接口电路406可以转换电平至3.3V,1.8V,或UUT需要的其它电压。如有必要,接口电路406还可以对UUT的微控制器402进行缓冲。ICT接口412和可编程器件连接器414分别提供到测试夹具104和UUT的连接。
ICT机禁用UUT上的有源器件,并将编程文件传送至闪存编程器300。ICT机发送工业标准级Motorola S-Record格式、Intel Hex Record格式、二进制或其它格式化文件至闪存编程器300。微控制器402能够解析所述文件,验证其内容,并随后利用对所述器件的编程算法文件对所述UUT编程。微控制器402可以对同一个板上根据地址线或控制线偏置的多个闪存器件编程。
闪存编程器300可以通过并行或串行接口对闪存器件编程。闪存编程器300可将并行输入转换为用于对串行器件编程的串行流。另外,闪存编程器300可对随后被提供到多路复用总线的在并行输入中的数据和编程指令进行转换。举例来说,多路复用总线典型地位于共享地址和数据线的NAND闪存器件上。类似的,闪存编程器300还可将串行输入转换为用于对并行器件编程的并行流,以及对随后被提供到多路复用总线的在串行输入中的数据和编程指令进行转换。
闪存编程器300利用总线转换技术,以加快编程操作和/或实现如下编程方法,即ICT机由于其基于向量处理的系统而无法实现的编程方法。举例来说,ICT机无法对NAND闪存器件编程。每个NAND闪存器件均具有自己唯一的无效存储单元图案,因此需要在考虑到这些无效存储单元的情况下设计编程操作。必须在运行时进行判断,以正确地处理这些无效存储单元以及对NAND闪存器件编程。基于向量的系统无法在高速运算时作出判断,从而无法对NAND闪存器件编程。此外,大部分NAND闪存器件具有多路复用的地址和数据总线。尽管ICT机能够经过改进以管理这种多路复用总线,但是以下的方法更为容易:实现至ICT机的并行接口及在闪存编程器300的多路复用接口。
图5为描绘在线测试期间对NAND闪存器件502编程的框图。在该实例中,一个模块编程器506提供到ICT机510的并行接口508以及到NAND器件502的多路复用接口504。所述编程器506本质上与闪存编程器300相同,并位于ICT 100的测试夹具104中。
当ICT机510准备利用编程器506对NAND器件502编程时,编程器506将ICT机510从NAND器件502的特点隔离。考虑到NAND器件502上无效存储单元,编程器506向ICT机提供一不包括上述可变性(variability)的通用接口。结果,ICT机510不会获知NAND器件502的唯一性。
编程器506可经由并行接口508与ICT机510通信。结果,从ICT机510到编程器506的编程文件的传输不取决于待编程的NAND器件502。而编程器506可识别出待编程的NAND器件502。典型地,通过从NAND器件502读取生产ID和器件ID来执行所述识别处理。
NAND闪存器件502可使用具有在相同管脚上多路复用的数据、命令和地址的多路复用总线。所述多路总线提供比标准并行总线少的管脚数量,并且不会随着器件密度的增加需要用作地址线的附加管脚。与多路复用总线进行通信的方法可根据商家不同而不同。
编程器506考虑厂商标识的在NAND器件502中的无效存储单元,(以及在使用中比如在编程操作中)变坏的在NAND器件502中的任一存储单元。编程器506识别出无效存储单元,并且由于可进行多种不同的块移动处理的选择,所以编程器506根据NAND器件502的特殊要求将代码移动到有效单元。两种常用的块移动选择是跳跃块(skip block)和保留块区域(reserve blockarea)。然而,也可用其它块移动选择。
编程器506随后从存储器404获得程序文件,并将所述程序文件转换为用于NAND器件502的编程指令。编程器506连续处理所述程序文件,直至所述NAND器件502的编程结束。编程器506还可计算错误检测和校正(ECC)码,以及对其编程。特定的ECC计算可取决于UUT硬件和软件。作为软件驱动的编程器506能够实施多种不同算法,并根据需要选用其中正确的一种。典型地,将ECC数据写入到NAND器件中被成为备用存储单元阵列的位置。编程器506随后与ICT机510通信,以表示编程操作结束。
闪存编程器300还可用于对M系统单片磁盘(M-Systems Disk On Chip)编程。所述M系统单片磁盘是用以提供全硬盘模拟器的具有高性能、单片的闪存盘。所述M系统单片磁盘具有NAND闪存、存储器以及用于实现专有接口的ASIC控制器。该接口需要使用M系统的固件驱动程序,以组合任一打算与其通信的器件。ICT不能实现这种类型的驱动。从而使得ICT不能对这些器件编程。
通过实现M系统的固件驱动程序以及为ICT机提供通用接口,闪存编程器300能够将ICT接口转换成M系统单片磁盘接口,并能够在ICT上对这些器件编程。由于闪存编程器300对于需要被嵌入的其它类型器件的固件也可以实现这种转换,所以这个技术并不局限于M系统单片磁盘。
图6为使用闪存编程器300的方法600的流程图。在框602中,闪存编程器300从ICT机接收到代码文件。ICT机禁用在UUT上的有源器件,并将编程文件传送到闪存编程器300。ICT机将工业标准Motorola S-Record格式、Intel Hex record格式、或其它格式化文件发送到所述闪存编程器300。
更具体地,当ICT机发出直接存储器访问(Direct Memory Access,DMA)请求信号时,方法600开始。在接收到该信号时,微控制器402保证DMA是允许访问的。对于DMA,可能不存在任何需要存储器访问的激活函数,否则可能会导致总线竞争。为了避免总线竞争,任何需要存储器访问的运行函数均必须终止或中断。一旦该函数结束或中断,所述微控制器402可以对所述存储器总线设置三态,并发信号通知DMA释放管脚。ICT机能够将文件(比如Intel hex格式、Motorola S-Record格式、二进制格式等)或代码图像传输到闪存编程器300中的存储器404。
当ICT机结束数据传输时,ICT机访问存储器404的配置部分,来配置数据的第一地址、数据的最终地址、数据类型及任何其它需要的配置。当所述配置完成后,ICT机丢弃所述DMA请求信号,并对其存储器总线设置三态。此时,闪存编程器300可以取回其存储器总线控制权,并继续任何中断的操作。
闪存编程器300随后等待ICT PR(ICT程序请求信号),以通知对待编程的闪存器件的测试已准备好。闪存编程器300还监控测试管脚,以确定测试模式是否已激活。如果选择了一个测试模式,则闪存编程器300执行所选择的测试模式。在从测试模式返回时,闪存编程器300重进入初始启动模式。
在这点上,ICT机除了向UUT保持供电之外,不需要执行任何其它操作。ICT机可能开始工作在一个面板内的下一可用UUT上,如果其存在的话。通过允许ICT机在闪存编程器300工作时处理其它单元,ICT测试更高效,因此降低了测试时间。
在框604中,闪存编程器300识别待编程的器件。当ICT_PR信号线被ICT机驱动至高位,闪存编程器300禁用DMA访问,并激活所述闪存器件。典型地,闪存编程器300通过自所述目标闪存器件读取生产ID和器件ID,来确定所述器件是否需要编程。
用来与目标闪存器件通信的方法可根据闪存编程器300的配置而变化。当目标闪存器件具有串行、多路复用、或并行的接口时,闪存编程器300利用拓扑技术来发送数据到目标闪存器件、及从所述目标闪存器件接收数据。连接到UUT的总线类型并不总是与连接到ICT机的接口相同。
闪存编程器300为这两种总线提供了硬件接口,并且软件可以与任一种总线进行通信。优选地,闪存编程器可基于配置位或跳线设置获知在UUT侧的总线类型。该软件随后执行多路复用总线的多步访问模式,或者串行或并行总线的直接访问模式。
一般来说,考虑到访问速度,ICT侧的总线优选为并行总线。连接到UUT的闪存器件类型决定了所述UUT侧的总线类型。由于闪存编程器300中的软件与两条总线的硬件布局绑定,所有并没有必要在存储器404中对所有可能的总线转换软件编程。该软件还可以提供两个或更多可能总线的混合。
闪存编程器300还确定期望的命令格式和响应。闪存编程器300能够与多种不同类型的闪存器件通信。另外,如果闪存编程器300不能与一种特定闪存器件通信,则可以如图4所示对闪存编程器300重新编程。配置跳线和/或位可能用来帮助闪存编程器300与各种闪存器件进行通信。
生产ID和器件ID也可用来确定在框606中采用哪种闪存算法对器件编程。闪存编程器300可利用内部查找表来确定采用哪种编程方法对已确定的器件编程。内部查找表可保存在存储器404中。当商家提供了多种用于对闪存器件编程的编程方法时,闪存编程器300可选择最快、最可靠的方法,来对闪存器件编程。另外,闪存编程器300可以结合所选择的编程方法来识别是否使用电压加速。
在框606中,所述闪存编程器300利用选择的编程方法对闪存器件编程。闪存编程器300检查闪存器件是否为空(即,验证所有存储单元均为0xFF)。如果闪存器件不为空,则闪存编程器300对闪存器件进行擦除。一旦所述闪存器件为空,则闪存编程器300利用在框604中选择的编程方法开始对闪存器件编程。以下描述编程方法的非限制性实例。
对于闪存器件,单字模式(word mode)编程是基本的编程算法。其为标准的四循环、单字写编程方法。举例来说,Sharp器件和其它闪存制造商均使用这种编程模式。从存储器404内的文件中读出一个字。如果这个字为0xFF,则读取下一个字。该程序持续读取,直至在存储器404中出现非0xFF值,并随后将这个值写入闪存器件。
对ST器件来说,只要允许电压加速,则双字模式(double word mode)也是可用的。如果不允许电压加速,则利用标准字模式编程来对ST器件编程。从存储器404内的文件中读取两个字。如果两个字均为0xFFFF,则读取下两个字。该程序持续读取,直至在存储器404中出现至少一个其值为非0xFF值的字。随后,将这两个字写入闪存器件。
Spansion MirrorBitTM器件可使用写缓冲模式(write buffer mode)。这种编程模式一次读取32字节数据,并将其编程到闪存器件中。从存储器404读取16个字。如果所有字均为0xFFFF,则读取下16个字。该程序持续读取,直至在存储器404中出现至少一个其值为非0xFF值的字。随后,将这16个字写入闪存器件。
很多NAND闪存器件和NOR/NAND组合闪存器件执行页写模式(PageWrite Mode)。典型地,所述页写模式为528字节的写模式(在存储单元阵列中512字节以及在备用存储单元阵列中16字节)。另外,一些大NAND闪存器件执行2112字节写入的页写模式(在存储单元阵列中2048字节以及在备用存储单元阵列中64字节)。也可对具有其它尺寸的页执行页写模式。
另外,NAND闪存器件可以使用对该器件唯一的专用编程程序。M系统驱动程序需要与M系统单片磁盘进行通信。也可以用综合驱动程序来实现NOR/NAND组合闪存器件。与利用M系统驱动程序类似,如果必要,商家的特定软件驱动程序也可在固件中执行,以正确对这些器件编程。前面已介绍过对NAND闪存器件和M系统单片磁盘的编程处理。
在框608中,闪存编程器300通知ICT机已经对闪存器件进行了编程。在向ICT机提供通知之前,闪存编程器300可验证是否已经对闪存器件正确编程。至少有两种验证方法可用。在一种方法中,闪存编程器300执行与存储器404内的文件中内容的逐字比较。从存储器404内的文件中读取每一个字,并分别与闪存器件中的内容比较。如果每个字都相同,则通过验证。
在另一种方法中,闪存编程器300执行校验和验证。当在编程期间从存储器404读取每一个字时,计算存储器404内文件中的校验码。通过读取闪存器件来计算闪存器件的校验码。如果这两个校验码相同,则通过验证。
一旦验证完成,闪存编程器300向ICT机提供“编程结束”和“通过-未通过”状态情况。这可通过将通过-未通过线驱动至高位和将编程结束线驱动至高位来完成。如果验证失败,则可将所述通过-未通过线驱动至低位,而所述程序完成线被驱动至高位。
另外,专用测试模式可用来验证闪存编程器300中的硬件(即自我测试),以及保证软件升级。以下描述一示例性测试程序。为了切换各种测试模式,将数据管脚设置为测试值,并驱动所述测试管脚至高位。在将所述测试管脚驱动至低位并将所有数据线设置为三态后,选择的测试开始。通过-未通过线切换指示闪存编程器300检测到测试模式命令。当测试模式管脚被驱动至高位且所有数据线被驱动至低位时,测试模式结束。通过-未通过线切换指示闪存编程器300检测到测试模式退出命令。
示例性测试模式包括:
0x01-从A0到A26逐一将地址线切换到高位,然后切换到低位。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x02-从D0到D26逐一将数据线切换到高位,然后切换到低位。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x03-同时地将控制线连续切换到高位和低位。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x04-经由所有数据和地址线向SDRAM写入以及对其进行读出。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x05-读取UUT闪存的生产ID,并通过数据线通知。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x06-读取UUT闪存的器件ID,并通过数据线通知。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x07-执行UUT闪存的空检查。如果其为空,则所有数据线将设置为高;如果不为空,则所有数据线将设置为低。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x08-擦除UUT闪存器件。如果擦除成功,则所有数据线将设置为高;如果没擦除,则所有数据线将设置为低。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x09-启用系统存储器的DMA线。根据微控制器对控制线、地址线和数据线设置三态。ICT机此时可以直接与SDRAM连接。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x0A-利用保存在存储器中的文件对UUT闪存编程。通过-未通过线将指示编程状态,并在编程完成时,设置为高指示程序已完成。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
0x10-边界扫描插管脚安置在总线上,可以升级微控制器。该处理持续进行,直至测试模式线被驱动至高位后再驱动至低位。
如上所述,闪存编程器300在不同总线结构之间进行多种格式的数据转换,以利用多种不同的编程算法对闪存器件编程。这样,闪存编程器300可通过利用串行、并行、或多路复用总线对NOR闪存、NAND闪存、NOR/NAND组合闪存和/或USB闪存编程。闪存编程器300支持PCMCIA、CompactFlash、SmartMedia、多媒体卡、安全数码卡、记忆棒、USB、及存储密钥。此外,闪存编程器300支持快速写模式,比如对Spansion器件的写缓冲模式、对ST器件的双字编程、电压加速编程、及降低整体环路数量的解锁旁路编程。因此,闪存编程器300可以降低编程时间和生产成本。
应能理解,所阐述的实施例仅为示例性,而不应用来限定本发明范围。例如,虽然在此参照HP/Agilent ICT对所述闪存编程器300进行了介绍,但所述闪存编程器300可能与其它ICT一起实施,比如由Teradyne、Genrad、及其它厂商生产的ICT。对本发明权利要求书的理解不限于其描述的顺序或元件,除非对其效果的论述。因此,所附权利要求范围和精神之内的所有实施例及其等同方案,均被本发明权利要求所主张。
Claims (22)
1.一种当进行在线测试期间对NAND闪存器件或NOR/NAND组合闪存器件编程的方法,其特征在于,包括以下步骤:
从在线测试器接收用于对闪存器件编程的程序文件;
获取待编程的闪存器件的相关器件信息,该器件信息包括所述闪存器件中无效存储单元的位置信息;
在考虑所述无效存储单元的情况下转换所述程序文件;以及
利用转换后的程序文件对所述闪存器件编程。
2.如权利要求1所述的方法,其特征在于,获取器件信息的步骤包括:从所述闪存器件读取生产ID和器件ID。
3.如权利要求1所述的方法,其特征在于,获取器件信息的步骤包括:通过多路复用总线与所述闪存器件通信。
4.如权利要求1所述的方法,其特征在于,所述无效存储单元包括厂商标识的无效存储单元以及在对所述闪存器件编程期间损坏的存储单元。
5.如权利要求1所述的方法,其特征在于,转换所述程序文件的步骤包括:利用块移动处理以将代码转移到有效存储单元。
6.如权利要求1所述的方法,其特征在于,还包括以下步骤:计算误差检验与校正码。
7.如权利要求1所述的方法,其特征在于,还包括以下步骤:在完成对所述闪存器件的编程时,向所述在线测试器发出通知。
8.如权利要求1所述的方法,其特征在于,所述程序文件是具有从以下格式组中选择的格式的文件,其中所述格式组包含有Motorola S-Record格式、Intel Hex格式、二进制格式及代码图像。
9.一种当进行在线测试期间对器件编程的方法,其特征在于,包括以下步骤:
从具有第一总线接口的在线测试器接收代码;
从具有第二总线接口的待编程的器件接收器件信息,其中所述第一总线接口不同于所述第二总线接口;
在所述第一总线接口和所述第二总线接口之间转换数据;以及
基于从所述在线测试器接收到的代码和从所述待编程的器件接收到的器件信息,对所述器件编程。
10.如权利要求9所述的方法,其特征在于,在所述第一总线接口和所述第二总线接口之间转换数据的步骤包括:在串行数据和并行数据之间进行转换。
11.如权利要求9所述的方法,其特征在于,所述第二总线接口是多路复用总线的接口。
12.如权利要求9所述的方法,其特征在于,所述第二总线接口是专用接口,且所述代码包括用于所述专用接口的器件驱动程序。
13.如权利要求9所述的方法,其特征在于,还包括以下步骤:对在同一被测单元中根据地址线和控制线中至少之一偏置的多个器件编程。
14.如权利要求9所述的方法,其特征在于,还包括以下步骤:验证是否已经对所述器件正确编程。
15.如权利要求9所述的方法,其特征在于,还包括以下步骤:在对所述器件编程时向所述在线测试器发出通知。
16.如权利要求9所述的方法,其特征在于,还包括以下步骤:执行自我测试。
17.如权利要求9所述的方法,其特征在于,所述器件信息包括用于对所述器件编程的编程方法。
18.如权利要求17所述的方法,其特征在于,从包含以下模式的组中选择所述编程方法,所述组包括:单字模式、双字模式、写缓冲模式、页写模式、电压加速模式及解锁旁路编程。
19.如权利要求9所述的方法,其特征在于,还包括以下步骤:在对所述器件编程之前对所述器件进行擦除。
20.一种当进行在线测试期间对闪存器件编程的电路,其位于在线测试器的测试夹具中,其特征在于,包括:
第一接口,用于与所述在线测试器通信;
第二接口,用于与被测单元通信,其中所述闪存器件位于所述被测单元上;
存储器,其可由所述在线测试器编程;以及
微控制器,用于执行在所述存储器中保存的机器语言指令,其中所述微控制器能够进行在从所述第一接口接收的数据和从所述第二接口接收的数据之间的转换。
21.如权利要求20所述的电路,其特征在于,还包括:接口电路,其将从电源接收到的第一电压电平转换为所述被测单元所需的第二电压电平。
22.如权利要求20所述的电路,其特征在于,还包括:加速电路,其向所述闪存器件提供加速电压以加快编程。
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,661 | 2006-06-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101071647A true CN101071647A (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 (2)
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 | 用于写缓冲器闪存编程和双字闪存编程的编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN101079328A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409106B (zh) * | 2008-10-29 | 2011-03-16 | 苏州大学 | Flash存储器在线编程控制方法 |
CN102339642A (zh) * | 2010-07-15 | 2012-02-01 | 岱镨科技有限公司 | 无隔绝的实体电路烧录系统及实体电路烧录器 |
WO2012062132A1 (zh) * | 2010-11-10 | 2012-05-18 | 中兴通讯股份有限公司 | 一种基于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 | 上海市共进通信技术有限公司 | 存储芯片编程器及其设置与对存储芯片进行编程控制方法 |
CN105575836A (zh) * | 2014-10-08 | 2016-05-11 | 慧荣科技股份有限公司 | 测试装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106205735A (zh) * | 2015-04-29 | 2016-12-07 | 中芯国际集成电路制造(上海)有限公司 | 嵌入式芯片测试方法及系统 |
CN113066520B (zh) * | 2021-04-15 | 2023-02-28 | 长江存储科技有限责任公司 | 存储装置及其制造、测试和数据保护方法 |
-
2007
- 2007-05-08 CN CN 200710102996 patent/CN101079328A/zh active Pending
- 2007-05-08 CN CN 200710102994 patent/CN101071643A/zh active Pending
- 2007-05-08 CN CN 200710102424 patent/CN101071647A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409106B (zh) * | 2008-10-29 | 2011-03-16 | 苏州大学 | Flash存储器在线编程控制方法 |
CN102339642A (zh) * | 2010-07-15 | 2012-02-01 | 岱镨科技有限公司 | 无隔绝的实体电路烧录系统及实体电路烧录器 |
WO2012062132A1 (zh) * | 2010-11-10 | 2012-05-18 | 中兴通讯股份有限公司 | 一种基于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 | 上海市共进通信技术有限公司 | 存储芯片编程器及其设置与对存储芯片进行编程控制方法 |
CN105575836A (zh) * | 2014-10-08 | 2016-05-11 | 慧荣科技股份有限公司 | 测试装置 |
CN105575836B (zh) * | 2014-10-08 | 2018-06-12 | 慧荣科技股份有限公司 | 测试装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101071643A (zh) | 2007-11-14 |
CN101079328A (zh) | 2007-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101071647A (zh) | 用于对nand闪存及nor/nand组合闪存编程的闪存编程器 | |
US7360137B2 (en) | Flash programmer for programming NAND flash and NOR/NAND combined flash | |
CN100383737C (zh) | 单片机在线加载升级方法及系统 | |
KR100838864B1 (ko) | 시험 장치 및 시험 방법 | |
US20080109594A1 (en) | Non-volatile memory device controlled by a micro-controller | |
US20120198292A1 (en) | Test apparatus and test method | |
CN103309693A (zh) | 复杂可编程逻辑器件更新方法及系统 | |
CN111475364A (zh) | 一种片上系统芯片的测试方法及系统 | |
US5819108A (en) | Programming of software into programmable memory within a peripheral device | |
CN101295255A (zh) | 固件更新系统及方法 | |
CN102592679A (zh) | 一种闪存芯片的测试方法和闪存芯片 | |
CN102004892B (zh) | 多功能读卡器测试装置及方法 | |
CN107315607B (zh) | 一种驱动自适应加载系统 | |
CN100530146C (zh) | Bios在线烧录方法 | |
CN111447121B (zh) | Pcie控制器的测试方法、装置、设备及存储介质 | |
US20070250740A1 (en) | System and method for conducting BIST operations | |
CN114816868A (zh) | 实现串行接口芯片测试的方法 | |
CN110544505B (zh) | 用于筛选Wafer中不良Die的测试系统和方法 | |
CN115602242B (zh) | 一种存储装置及其测试方法 | |
CN113312224B (zh) | 一种用于测试otp型mcu及其测试方法 | |
US6785174B2 (en) | Testing method and device for non-volatile memories having a LPC (low pin count) communication serial interface | |
US7526691B1 (en) | System and method for using TAP controllers | |
US6182207B1 (en) | Microcontroller with register system for the indirect accessing of internal memory via auxiliary register | |
CN112798942A (zh) | 一种芯片批量测试方法和系统 | |
CN110118925B (zh) | 一种核心板测试方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20071114 |