CN115376601A - 检测闪存模块的方法及相关的系统芯片 - Google Patents
检测闪存模块的方法及相关的系统芯片 Download PDFInfo
- Publication number
- CN115376601A CN115376601A CN202110534585.5A CN202110534585A CN115376601A CN 115376601 A CN115376601 A CN 115376601A CN 202110534585 A CN202110534585 A CN 202110534585A CN 115376601 A CN115376601 A CN 115376601A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- memory module
- row address
- address
- 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
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种检测闪存模块的方法及相关的系统芯片,其通过读取闪存模块中具有特定数据格式的数据,并再通过解码与校验数据来判断闪存模块的多个特性参数及数据页大小。因此,系统芯片可以不需要设置一次性可编程内存或是绑定引脚,以降低系统芯片的制造成本。
Description
技术领域
本发明是有关于闪存。
背景技术
由于具有较快的存取速度以及较低的制造成本,闪存(flash memory)逐渐成为嵌入式系统的主流储存装置,但由于闪存仍处于蓬勃发展的阶段,故不同厂商或不同型号的闪存可能会具有不同的特性参数,例如数据页大小(page size)、备用区域大小(sparesize)、地址周期(address cycle)、错误更正码(Error Correction code,ECC)需求…等等都可能有所差异。这些差异除让不同的闪存有不同的存取方式外,也需要不同的数据格式,因此,为了要读取储存于闪存上的数据,系统芯片需通过一次性可编程(One TimeProgrammable,OTP)内存或是一绑定引脚(strap pin)的方式来取得正确的特性参数及数据格式,才能正确地读取储存于闪存上的数据。
具体来说,在一般的闪存与相关的系统芯片的设置中,工程师首先需要根据所使用的闪存的特性参数来正确设置一次性可编程内存或是绑定引脚,接着再根据所使用的闪存的ECC需求及备用区域大小,将数据封装成适当格式再预先写入至闪存中,而开机后系统芯片会根据绑定引脚所带入的信息来操作闪存控制器以读取闪存上的数据。然而,一旦更换不同厂商或是不同型号的闪存,绑定引脚及数据格式也须跟着调整才能让系统芯片可以正确地读取闪存上的数据,因而增加了闪存与相关系统芯片在设置上的复杂度。
发明内容
因此,本发明的目的之一在于提出一种闪存的特性参数的检测方法,其可以在不需要通过一次性写入内存或是绑定引脚的情形下,通过读取闪存并分析其内容来取得闪存的特性参数,以解决先前技术中所述的问题。
在本发明的一个实施例中,提供了一种检测一闪存模块的方法,其包括以下步骤:(a)从多个特性参数组合中选择其一来设定一闪存控制器;(b)使用该闪存控制器以根据一列地址与一行地址从该闪存模块读取一P字节数据,其中该P字节数据包括该闪存模块中一区块的一数据页的一数据区间、一卷标区间与一错误更正码区间的数据;(c)对该P字节数据进行解码,若是解码失败,调整该列地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;(d)若是对该P字节数据进行解码成功,根据该卷标区间内的一校验码来校验步骤(c)所解码出的数据是否正确,若是校验正确,调整该行地址并回到步骤(b)以自该闪存模块读取下一笔P字节数据;以及(e)若是步骤(d)中的校验失败,则根据目前所使用的特性参数组合以及目前的该行地址,以决定出该闪存模块的多个特性参数。
在本发明的另一个实施例中,公开了一种系统芯片,其包括一中央处理器,用以执行一程序代码以进行以下操作:(a)从多个特性参数组合中选择其一来设定一闪存控制器;(b)使用该闪存控制器以根据一列地址与一行地址从该闪存模块读取一P字节数据,其中该P字节数据包括该闪存模块中一区块的一数据页的一数据区间、一卷标区间与一错误更正码区间的数据;(c)对该P字节数据进行解码,若是解码失败,调整该列地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;(d)若是对该P字节数据进行解码成功,根据该卷标区间内的一校验码来校验步骤(c)所解码出的数据是否正确,若是校验正确,调整该行地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;以及(e)若是步骤(d)中的校验失败,则根据目前所使用的特性参数组合以及目前的该行地址,以决定出该闪存模块的多个特性参数。
附图说明
图1为根据本发明一实施例的系统芯片以及一闪存模块的示意图。
图2为闪存模块的架构的示意图。
图3为写入至闪存模块的数据格式的示意图。
图4为根据本发明一实施例的决定闪存模块的特性参数的流程图。
具体实施方式
图1为根据本发明一实施例的系统芯片(System on Chip,SoC)110以及一闪存模块120的示意图。如图1所示,系统芯片110包括一中央处理器112、一闪存控制器114以及一只读存储器116,其中只读存储器116包括一程序代码118。在本实施例中,系统芯片110与闪存模块120可以设置于任何电子装置,例如设置于网络交换机(switch)等网络装置中。
图2为闪存模块120的示意图。如图2所示,闪存模块120包含了至少一个闪存芯片(在本实施例中绘示了闪存芯片210_1、210_2),而每一个闪存芯片包含了多个区块(block)220_1~220_K,其中每一个区块为一个最小抹除单位,亦即区块内的数据需要一起被抹除而无法仅抹除一部分的数据。此外,每一个区块包含了多个数据页(page)P1~PN,其中每一个数据页是一个最小写入单位。
在本实施例中,闪存模块120中会预先写入一些数据,以供系统芯片110在上电后读取这些数据以执行相关的操作。举例来说,在闪存模块120尚未与系统芯片110链接之前,闪存模块120可以在工厂预先将系统芯片110所需的数据写入至其中,之后当系统芯片110与闪存模块120被设置在一电子装置时,系统芯片110便可以读取闪存模块120以执行相关操作。然而,如先前技术中所述,由于闪存模块120可能会因为不同厂商或不同型号而可能会具有不同的特性参数,例如数据页大小、备用区域大小、地址周期、错误更正码需求…等等都可能有所差异,因此,先前技术会需要在系统芯片设置需通过一次性写入内存或是一绑定引脚来取得正确的特性参数及数据格式,以供正确地设定闪存控制器114,但如此一来便会增加系统芯片的设计复杂度。为了解决此一问题,本实施例的系统芯片110不需要上述的一次性写入内存或是绑定引脚,而是通过在程序代码118中设计一种可以主动检测闪存模块120的特性参数的算法,其可以在系统芯片110第一次上电时准确且快速地检测出闪存模块120的至少一部分特性参数,以供设定闪存控制器114来进行后续存取闪存模块120的相关操作。
具体来说,闪存模块120在工厂进行数据预先写入时可以使用一固定的数据格式来进行写入。参考图3所示,需要写入至闪存模块120的数据可以被划分为多个数据区间,其中每一个数据区间的大小为D字节;针对每一组数据区间,加入长度为T字节的卷标区间,其中卷标区间的内容可以包含所对应的数据区间的序号以及相关的校验码,而校验码可以是所对应数据区间的一循环冗余校验(Cyclic Redundancy Check,CRC)码。此外,针对每一组数据区间及接续的卷标区间,加入长度为E字节的错误更正码(Error Correction Code,ECC)区间,其用来对数据区间及卷标区间内的数据进行错误更正。在一实施例中,由于不同厂商或是不同型号的闪存模块120的数据页大小通常具有倍数关系,因此,假设不同厂商或是不同型号的闪存模块120的数据页大小为512字节、1024字节、2048字节,则在设计上述数据区间、卷标区间以及ECC区间时将其数据量大小的总和设计为不同厂商或是不同型号的闪存模块120的数据页大小的最大公因子P,亦即P=D+T+E,但本发明并不以此为限。在一实施例中,P可以是512字节。
接着,当系统芯片110与闪存模块120被设置在一电子装置,且该电子装置开机时,中央处理器112从只读存储器116中读取程序代码118,并执行程序代码118以进行图4所示的操作,以检测出闪存模块120的特性参数。在以下的说明中,是假设不同厂商或是不同型号之闪存模块120的每一个区块所包含的数据页数量具有最大公因子Pnum、闪存模块120所容许的坏区块(bad block)的数量所对应的参考列数量Rmax,部分待测特性参数集合为R,其中R包括多个子集合r1、r2、…,且每一个子集合为一组特性参数组合,但该组特性参数组合中不包含数据页的大小。参考图4的流程,在步骤400,流程开始,且中央处理器112开始执行程序代码118。在步骤402,中央处理器112判断特性参数集合R是否仍包含尚未测试过的子集合,若是,流程进入步骤404;若否,流程进入步骤430并判断系统芯片110不支持闪存模块120,并结束流程。在步骤404中,中央处理器112从特性参数集合R中选取尚未测试过的子集合r,并使用子集合r中的特性参数来设定闪存控制器114。在步骤408,闪存控制器114选择一组内存地址R_addr与C_addr,其中R_addr为代表数据页的列地址(row address),不同列地址即表示了不同的数据页,而C_addr则为行地址(column address)。在一开始,列地址R_addr与行地址C_addr都为0,亦即闪存控制器114选择闪存模块120中第一个区块的第一个数据页的起始地址。
在步骤410,中央处理器112判断列地址R_addr是否小于参考列数量Rmax,若是,流程进入步骤412;若否,流程进入步骤402。
在步骤412中,闪存控制器114从闪存模块120中具有列地址R_addr与行地址C_addr开始读取P字节的数据,其中所读取的P字节的数据包括图3所示的数据区间、卷标区间与ECC区间。在步骤414中,中央处理器112或是闪存控制器114对数据区间、卷标区间与ECC区间进行解码操作,亦即使用ECC区间来对数据区间与卷标区间的内容进行错误更正。在步骤416,中央处理器112闪存控制器114判断解码操作是否成功,若是,流程进入步骤418;若否,流程进入步骤426。其中上述解码失败的可能原因可能是区块为坏区块、所读取的数据遇到了某种边界(例如,数据页的尾端)、或是目前用来设定闪存控制器114的子集合r中的特性参数并不适合闪存模块120。
在步骤418中,中央处理器112根据卷标区间内的校验码来判断步骤414所解码出的数据是否正确,例如将步骤414所解码出的数据进行循环冗余校验运算以产生一计算结果,并判断该计算结果是否与卷标区间内的校验码一致以判断校验是否成功,若是,流程进入步骤422;若否,流程进入步骤426。
在步骤422,中央处理器112将行地址C_addr加上P字节的地址偏移量,且流程回到步骤412以从闪存模块120中具有列地址R_addr与行地址(C_addr+P)开始读取P字节的数据,也就是读取如图3所示的第二笔数据区间、卷标区间与ECC区间。
在步骤424,中央处理器112判断目前所读取的区块有可能是坏区块,也就是其中的部分数据已经毁损,因此,为了避免浪费太多时间在读取坏区块内容,闪存控制器114将列地址R_addr加上Pnum,并将行地址C_addr设为0,且流程回到步骤408,也就是闪存控制器114从闪存模块120中具有列地址(R_addr+Pnum)与行地址C_addr开始读取P字节的数据。
在步骤426,闪存控制器114判断行地址C_addr是否不等于0,若是,流程进入步骤428;若否,则由于在一开始读取数据页的内容便是错误的,则可以判断判断目前所读取的区块有可能是坏区块,而流程进入步骤424。在步骤428中,由于行地址C_addr不等于0,故则代表着所读取的数据可能遇到了某种边界,例如可能是数据页的尾端,其主要理由是之前所读取的P字节都可以通过卷标区间内的校验码来成功校验数据区间的内容,而目前却无法通过卷标区间内的校验码来成功校验数据区间的内容,因此可以判断目前的行地址C_addr即为数据页的大小,而此时用来设定闪存控制器114的子集合r中的特性参数可适用于闪存模块120。
如上所述,在图4所示的流程中,通过采用不同的子集合r再加上相关的数据页大小判断机制,可以在不需要一次性可编程内存或是绑定引脚的情形下,在系统芯片110第一次上电时准确且快速地检测出闪存模块120的至少一部分特性参数,以降低系统芯片110在设计与制造上的成本。
在一实施例中,图4的流程仅需要在系统芯片110第一次上电时执行,而在决定出闪存模块120的特性参数之后,闪存控制器114便可以使用这些特性参数来进行设定,以供后续存取闪存模块120。
需注意的是,图4所示的Pnum、Rmax的数值仅是作为范例说明,而非是对本发明的限制。具体来说,步骤424中使用Pnum来调整列地址R_addr的目的是为了避免闪存控制器114多次读取坏区块中的内容,而步骤410中使用Rmax的目的是避免闪存控制器114持续使用不适合的子集合的特性参数来读取闪存模块120,因此,由于Pnum、Rmax是为了加速算法效能之用,故在设计上可以由设计者来设定一个任意适合的数值。
简要归纳图4中所述的检测闪存模块120的方法,其可依序包括以下步骤:(a)从多个特性参数组合中选择其一来设定一闪存控制器;(b)使用该闪存控制器以根据一列地址与一行地址从该闪存模块读取一P字节数据,其中该P字节数据包括该闪存模块中一区块的一数据页的一数据区间、一卷标区间与一错误更正码区间的数据;(c)对该P字节数据进行解码,若是解码失败,调整该列地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;(d)若是对该P字节数据进行解码成功,根据该卷标区间内的一校验码来校验步骤(c)所解码出的数据是否正确,若是校验正确,调整该行地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;以及(e)若是步骤(d)中的校验失败,判断目前的该行地址是否为该数据页的起始地址;若是该行地址是该数据页的起始地址,调整该列地址并回到步骤(b)以从该闪存模块读取下一笔P字节数据;以及若是该行地址不是该数据页的起始地址,则判断目前所使用的特性参数组合即是该闪存模块的多个特性参数,且判断目前的该行地址即为该数据页的大小。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的等同变化与更改,皆应属本发明的涵盖范围。
【符号说明】
110:系统芯片
112:中央处理器
114:闪存控制器
116:只读存储器
118:程序代码
120:闪存模块
210_1,210_2:闪存芯片
220_1~220_K:区块
P1~PN:数据页
400~430:步骤。
Claims (10)
1.一种检测一闪存模块的方法,包括:
(a)从多个特性参数组合中选择其一来设定一闪存控制器;
(b)使用所述闪存控制器以根据一列地址与一行地址从所述闪存模块读取一P字节数据,其中所述P字节数据包括所述闪存模块中一区块的一数据页的一数据区间、一卷标区间与一错误更正码区间的数据;
(c)对所述P字节数据进行解码,若是解码失败,调整所述列地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;
(d)若是对所述P字节数据进行解码成功,根据所述卷标区间内的一校验码来校验步骤(c)所解码出的数据是否正确,若是校验正确,调整所述行地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;以及
(e)若是步骤(d)中的校验失败,则根据目前所使用的特性参数组合以及目前的所述行地址,以决定出所述闪存模块的多个特性参数。
2.根据权利要求1所述的方法,其中所述数据页的大小为P字节的正整数倍。
3.根据权利要求1所述的方法,其中所述卷标区间包括所述数据区间的数据的一循环冗余校验码,且所述错误更正码区间包括用来对所述数据区间与所述卷标区间内的数据进行解码操作的一错误更正码。
4.根据权利要求1所述的方法,其中步骤(e)包括:
(e1)若是步骤(d)中的校验失败,判断目前的所述行地址是否为所述数据页的起始地址;
(e2)若是所述行地址是所述数据页的起始地址,调整所述列地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;以及
(e3)若是所述行地址不是所述数据页的起始地址,则判断目前所使用的特性参数组合即是所述闪存模块的多个特性参数,且判断目前的所述行地址即为所述数据页的大小。
5.根据权利要求1所述的方法,其中步骤(c)包括:
(c1)对所述P字节数据进行解码,若是解码失败,判断目前的所述行地址是否为所述数据页的起始地址;
(c2)若是所述行地址是所述数据页的起始地址,调整所述列地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;以及
(c3)若是所述行地址不是所述数据页的起始地址,则判断目前所使用的特性参数组合即是所述闪存模块的多个特性参数,且判断目前的所述行地址即为所述数据页的大小。
6.根据权利要求1所述的方法,其中步骤(c)包括:
对所述P字节数据进行解码,若是解码失败,调整所述列地址以使得调整后的所述列地址对应到不同于所述数据页的另一数据页,设定所述行地址为所述另一数据页的起始地址,并回到步骤(b)以从所述闪存模块读取下一笔P字节数据。
7.根据权利要求1所述的方法,还包括:
判断步骤(b)中的所述列地址是否大于一参考列数量;
若是所述步骤(b)中的所述列地址大于所述参考列数量,回到步骤(a)并选择所述多个特性参数组合中的另一特性参数组合来设定所述闪存控制器;以及
若是步骤(b)中的所述列地址不大于所述参考列数量,使用所述闪存控制器以根据所述列地址与所述行地址从所述闪存模块读取所述P字节数据。
8.一种系统芯片,包括:
一中央处理器,用以执行一程序代码以进行以下操作:
(a)从多个特性参数组合中选择其一来设定一闪存控制器;
(b)使用所述闪存控制器以根据一列地址与一行地址从所述闪存模块读取一P字节数据,其中所述P字节数据包括所述闪存模块中一区块的一数据页的一数据区间、一卷标区间与一错误更正码区间的数据;
(c)对所述P字节数据进行解码,若是解码失败,调整所述列地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;
(d)若是对所述P字节数据进行解码成功,根据所述卷标区间内的一校验码来校验步骤(c)所解码出的数据是否正确,若是校验正确,调整所述行地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;以及
(e)若是步骤(d)中的校验失败,则根据目前所使用的特性参数组合以及目前的所述行地址,以决定出所述闪存模块的多个特性参数。
9.根据权利要求8所述的系统芯片,其中所述卷标区间包括所述数据区间的数据的一循环冗余校验码,且所述错误更正码区间包括用来对所述数据区间与所述卷标区间内的数据进行解码操作的一错误更正码。
10.根据权利要求8所述的系统芯片,其中步骤(e)包括:
(e1)若是步骤(d)中的校验失败,判断目前的所述行地址是否为所述数据页的起始地址;
(e2)若是所述行地址是所述数据页的起始地址,调整所述列地址并回到步骤(b)以从所述闪存模块读取下一笔P字节数据;以及
(e3)若是所述行地址不是所述数据页的起始地址,则判断目前所使用的特性参数组合即是所述闪存模块的多个特性参数,且判断目前的所述行地址即为所述数据页的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110534585.5A CN115376601A (zh) | 2021-05-17 | 2021-05-17 | 检测闪存模块的方法及相关的系统芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110534585.5A CN115376601A (zh) | 2021-05-17 | 2021-05-17 | 检测闪存模块的方法及相关的系统芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115376601A true CN115376601A (zh) | 2022-11-22 |
Family
ID=84058941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110534585.5A Pending CN115376601A (zh) | 2021-05-17 | 2021-05-17 | 检测闪存模块的方法及相关的系统芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115376601A (zh) |
-
2021
- 2021-05-17 CN CN202110534585.5A patent/CN115376601A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5100663B2 (ja) | 試験装置および試験方法 | |
US8867289B2 (en) | Chip with embedded non-volatile memory and testing method therefor | |
US8429326B2 (en) | Method and system for NAND-flash identification without reading device ID table | |
US20040255225A1 (en) | Control circuit for error checking and correction and memory controller | |
JP2004118407A (ja) | 不揮発性半導体記憶装置 | |
CN111104246B (zh) | 提升dram的错误检测与纠错的验证效率的方法、装置、计算机设备及存储介质 | |
WO2008027759A1 (en) | Allowable bit errors per sector in memory devices | |
CN114203253A (zh) | 芯片的存储器故障修复装置和芯片 | |
CN108735268B (zh) | 非易失性存储器修复电路 | |
JP2005332436A (ja) | 半導体装置及びそのテスト方法 | |
CN111352594A (zh) | eFuse中写入数据、读取数据的方法及装置 | |
JP4180757B2 (ja) | シミュレーション装置 | |
US6957377B2 (en) | Marking of and searching for initial defective blocks in semiconductor memory | |
US9721665B2 (en) | Data writing method and system | |
CN111048142B (zh) | 应用于闪存控制器的编码器自我测试电路及相关的方法 | |
CN115602242B (zh) | 一种存储装置及其测试方法 | |
TWI779610B (zh) | 偵測快閃記憶體模組的方法及相關的系統晶片 | |
JP6594712B2 (ja) | 半導体メモリ及び半導体メモリのベリファイ方法 | |
CN116434816A (zh) | 芯片内置Flash存储器自检方法、装置和计算机设备 | |
CN115376601A (zh) | 检测闪存模块的方法及相关的系统芯片 | |
US20130124925A1 (en) | Method and apparatus for checking a main memory of a processor | |
CN111124742B (zh) | Flash数据校验方法及Flash控制器、存储介质、设备 | |
CN115705914A (zh) | 闪存坏块的检测方法、检测设备和计算机存储介质 | |
US20240194282A1 (en) | Flash memory module testing method and associated memory controller and memory device | |
CN115620794B (zh) | 快速存储器的测试方法及测试装置、存储介质、芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |