CN101710302A - 基于NandFlash存储介质的固件程序检测方法 - Google Patents
基于NandFlash存储介质的固件程序检测方法 Download PDFInfo
- Publication number
- CN101710302A CN101710302A CN200910104931A CN200910104931A CN101710302A CN 101710302 A CN101710302 A CN 101710302A CN 200910104931 A CN200910104931 A CN 200910104931A CN 200910104931 A CN200910104931 A CN 200910104931A CN 101710302 A CN101710302 A CN 101710302A
- Authority
- CN
- China
- Prior art keywords
- data
- sector
- nandflash
- sectors
- write
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种基于NandFlash存储介质的固件程序检测方法,用于在NandFlash存储器生产过程中对其固件程序检测,包括步骤:对新生产的基本NandFlash存储介质存储器以随机数进行全盘填充;在所述存储器逻辑读写范围内随机选择一个逻辑地址Addr,然后随机选择N个扇区作为操作长度;读取所选目标数据的前后M个扇区;从所述逻辑地址Addr起,写入N个扇区的随机数据;从所述逻辑地址Addr前M个扇区地址开始,连续读取所述N扇区及其前后各M扇区的数据,获取写入后当前目标设备逻辑地址上的数据;判定写入前后数据是否匹配,并将不匹配的数据文件进行保存。本发明的有益效果在于:解决测试时间长、没有针对性、无法生成测试脚本、无法复现错误、无法给研发人员分析问题所在提供有价值的参考信息等缺陷。
Description
技术领域 本发明涉及电数字数据处理,特别是涉及电数字数据处理中通过软件的测试或调试防止错误,尤其涉及基本Nand Flash作为存储介质的固件程序检测方法。
背景技术 Nand Flash即“与-非”闪存是一种非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何Nand Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。参见图3,现有技术在固件程序Firmware管理数据的时候,当需要写入数据到块A中的某个位置时,则需要选择一个可用块B,将B擦除干净,然后分别把A的数据A1搬到B1,把需要写入的数据写入B2,把A3数据写入B3,再把逻辑映射表指向B块,从而完成一次写入。实际操作中,考虑到速度的优化,在地址连续写入的时候,或者跨区Zone轮流写入的时候,还有更复杂的闪存Flash管理流程。
目前,测试固件程序FW逻辑读写的方式都采用文件拷贝比较或者Burn In Test测试软件,其方式都是写入数据B2,然后读取B2,看是否匹配;这两种方式都有在Flash管理中需要频繁搬运数据的特点。但是存在这种现象:B2是搬对了,但是B1和B3在从A1、A3过来的时候搬错了,对于这些搬错的B1、B3,上述的拷贝比较工具并不能及时发现。甚至在后面的操作中,覆盖了B1或者B3,从而忽略了曾经发生的错误。
传统的测试方法是做文件拷贝后进行数据比较,或者用测试软件做全盘数据写入后进行读取匹配,这些方法都存在测试覆盖Firmware算法分支不全面,并且发生数据不匹配后无法辅助分析Firmware错误原因的缺陷。
Nand Flash领域中的开发难点主要包括坏块管理、损耗平衡、逻辑映射,其中验证逻辑映射算法的正确性是一件复杂的工作,具有调试难、覆盖算法分支难、问题重现难的特点,通常研发人员在编写程序完成后,都是交付测试部门的人员,通过文件拷贝进行逻辑算法正确性的验证。通过拷贝比较来发现逻辑映射算法不足之处主要有两个途径,一个是手工拷贝文件到存储器中,拷满后,通过文件比较工具File Compare进行数据比较,发现其中数据不匹配的情况,再反馈给研发人员;另外一种方法是使用随机数填充、比较软件进行测试,例如Burnin软件、wrtest软件等,自动进行随机写入和读取比较,从而发现写入和读取不匹配的情况。以上两种方法都有着明显的缺陷是:测试时间长,没有针对性,无法生成测试脚本,无法复现错误,无法给研发人员分析问题所在提供有价值的参考信息。
发明内容 本发明要解决的技术问题在于避免上述现有技术的不足而提出一种的基于NandFlash存储介质的固件程序检测方法,从而令现有技术中存在的测试时间长、没有针对性、无法生成测试脚本、,无法复现错误、无法给研发人员分析问题所在提供有价值的参考信息等缺陷得到解决。
本发明解决所述技术问题可以通过采用以下技术方案来实现,该方案是基于NandFlash存储介质的固件程序检测方法,包括步骤:
A.判定待测试的基本NandFlash的存储器是否为新生产的存储器,如是,即对所述存储器以随机数进行全盘填充;如否,则执行步骤B;
B.在所述存储器逻辑读写范围内随机选择一个逻辑地址Addr,然后随机选择N个扇区作为操作长度;
C.读取步骤B中已选中地址Addr前面M个地址的M个扇区数据,再读取从地址Addr+N开始的M个扇区数据,即读取所选目标数据的前后M个扇区;
D.从所述逻辑地址Addr起,写入N个扇区的随机数据;如果超过SCSI命令限制的一次64k的限制,则拆分后写入;
E.从所述逻辑地址Addr前M个扇区地址开始,连续读取所述N扇区及其前后各M扇区的数据,获取写入后当前目标设备逻辑地址上的数据;
F.将步骤C读取的数据与步骤E读取的数据进行比较,判定写入前后数据是否匹配;如是,则执行步骤B;如否,则将所述两组数据分别存入两个文件中,再执行步骤B。
在步骤B中所述“随机选择N个扇区”,其中N可为1至255中任一整数。
在步骤C中所述“M个扇区”中,其中M可为1至256中任一整数。
本发明采用的上述技术方法的有益效果在于:
1)测试时间短,具有针对性。本发明合理选择了单次测试的数据长度为1~255扇区,随机选择写入地址,能够尽量覆盖逻辑映射算法中的不同分支,如跨区Zone、跨块Block、连续读写,本发明的方法能够在尽量减少测试数据长度的前提下进行覆盖;
2)可以生成测试脚本。在测试过程中,将每次测试的写入地址、数据长度都保存到一个脚本文件中,如果读写数据不匹配,还会将两次的数据保存到磁盘中,供研发人员查看比较不匹配的原因,推测具体是由数据搬移错误还是漏搬引起。研发人员还可以通过重新执行引起错误的测试脚本,复现现象,从而给调试带来便利。
3)辅助研发人员分析原因。由于测试过程中,自动保存了测试脚本,研发人员可以查看测试脚本的写入地址和长度,根据NandFlash的参数,推测引起错误的原因,是因为执行到哪个算法分支后处理不当导致,从而提高了调试效率。
附图说明 图1是本发明基本NandFlash存储介质的固件程序检测方法实施流程图;
图2是所述方法实施时读取目标数据前后M个扇区的示意图;
图3是现有技术中块Block数据搬运示意图
具体实施方式 以下结合附图1、2所示实施作进一步详述。
本发明基本NandFlash存储介质的固件程序检测方法,包括步骤
A.判定待测试的基本NandFlash的存储器是否为新生产的存储器,如是,即对所述存储器以随机数进行全盘填充;如否,则执行步骤B;
B.在所述存储器逻辑读写范围内随机选择一个逻辑地址Addr,然后随机选择N个扇区作为操作长度;
C.读取步骤B中已选中地址Addr前面M个地址的M个扇区数据,再读取从地址Addr+N开始的M个扇区数据,即读取所选目标数据的前后M个扇区;
D.从所述逻辑地址Addr起,写入N个扇区的随机数据;如果超过SCSI命令限制的一次64k的限制,则拆分后写入;
E.从所述逻辑地址Addr前M个扇区地址开始,连续读取所述N扇区及其前后各M扇区的数据,获取写入后当前目标设备逻辑地址上的数据;
F.将步骤C读取的数据与步骤E读取的数据进行比较,判定写入前后数据是否匹配;如是,则执行步骤B;如否,则将所述两组数据分别存入两个文件中:如图1所示,在本实施例中可将写入前M+N+M扇区的数据保存到日志文件“时间-地址-长度-写.dat”中,将写入操作后M+N+M扇区的数据保存到日志文件“时间-地址-长度-读.dat”中。再执行步骤
在步骤B中所述“随机选择N个扇区”,其中N可为1至255中任一整数。
在步骤C中所述“M个扇区”中,其中M可为1至256中任一整数。
由于算法对于不同参数配置的NandFlash可能存在差异,通常需要针对不同的NandFlash分别进行测试,如果采用拷贝比较的方法,由于NandFlash的写入速度比较慢,尽量减少测试的数据非常必要。根据NandFlash的特性,写入的数据长度为1~255个扇区,即可保证一定覆盖跨Zone、跨Block的算法分支,因为目前市面的NandFlash单个Block的容量没有超过255个扇区的,当随机测试的数据长度大于Block的容量时,就能覆盖跨Block的算法分支,在这种情况下,即使测试的数据长度大于255个扇区,也是没有什么意义了。随机产生的测试地址,加上随机产生的随机长度,能够覆盖一些边缘情况。
测试的数据很重要,合适的数据可以给研发工程师很多额外的辅助信息,用于分析遇到的数据不匹配原因。例如设定一个较小的测试容量范围,进行数据填充,填充的内容为数据区所在的扇区地址(意思就是说扇区0里面填充的数据都是0x00000000,扇区1里面填充的数据都是0x00000001),假设预填充了100个扇区的数据,那么,在进行写入操作之后,检测目标写入地址边缘的区域发现数据不匹配,说明在搬运关联区域的数据出错了,由于我们数据里面写入的是逻辑地址的值,通过查看出错的数据为哪个逻辑地址,即可猜测搬错的原因。
以往的拷贝匹配测试软件都是产生随机数,然后顺序写入或者随机写入测试存储器,没有任何的测试信息输出可供研发人员、测试人员参考,以致于出现不匹配的现象后无法重现问题而耽误调试进度。本发明的方法在测试过程中,对每一次随机产生的地址、测试长度都会进行保存,并且在读写发生不匹配的时候,可以将写入前后的数据保存到文件中,供研发人员分析。对于一些比较特殊的错误现象需要Firmware跟踪调试的,还可以通过重新执行保存的脚本命令,重现出现问题的步骤。
Claims (3)
1.一种基于NandFlash存储介质的固件程序检测方法,用于在NandFlash存储器生产过程中对其固件程序检测,其特征在于,包括步骤:
A.判定待测试的基本NandFlash的存储器是否为新生产的存储器,如是,即对所述存储器以随机数进行全盘填充;如否,则执行步骤B;
B.在所述存储器逻辑读写范围内随机选择一个逻辑地址Addr,然后随机选择N个扇区作为操作长度;
C.读取步骤B中已选中地址Addr前面M个地址的M个扇区数据,再读取从地址Addr+N开始的M个扇区数据,即读取所选目标数据的前后M个扇区;
D.从所述逻辑地址Addr起,写入N个扇区的随机数据;如果超过SCSI命令限制的一次64k的限制,则拆分后写入;
E.从所述逻辑地址Addr前M个扇区地址开始,连续读取所述N扇区及其前后各M扇区的数据,获取写入后当前目标设备逻辑地址上的数据;
F.将步骤C读取的数据与步骤E读取的数据进行比较,判定写入前后数据是否匹配;如是,则执行步骤B;如否,则将所述两组数据分别存入两个文件中,再执行步骤B。
2.如权利要1所述基于NandFlash作为存储介质的固件程序检测方法,其特征在于:步骤B中所述“随机选择N个扇区”,其中N可为1至255中任一整数。
3.如权利要1所述基于NandFlash作为存储介质的固件程序检测方法,其特征在于:步骤C中所述“M个扇区”中,其中M可为1至256中任一整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101049315A CN101710302B (zh) | 2009-01-09 | 2009-01-09 | 基于NandFlash存储介质的固件程序检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101049315A CN101710302B (zh) | 2009-01-09 | 2009-01-09 | 基于NandFlash存储介质的固件程序检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101710302A true CN101710302A (zh) | 2010-05-19 |
CN101710302B CN101710302B (zh) | 2011-08-17 |
Family
ID=42403094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101049315A Expired - Fee Related CN101710302B (zh) | 2009-01-09 | 2009-01-09 | 基于NandFlash存储介质的固件程序检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101710302B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388583A (zh) * | 2018-10-10 | 2019-02-26 | 深圳芯邦科技股份有限公司 | 一种参数检测的方法及相关设备 |
CN111949426A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种固件程序错误的检测方法、装置及存储设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999032977A1 (fr) * | 1997-12-22 | 1999-07-01 | Tdk Corporation | Systeme de memoire flash |
CN1728284B (zh) * | 2004-07-26 | 2012-08-22 | 深圳市朗科科技股份有限公司 | 一种扫描闪存盘的闪存芯片的方法 |
CN100395704C (zh) * | 2005-08-27 | 2008-06-18 | 海信集团有限公司 | 一种在Nand Flash存储器中直接建立只读文件系统的方法 |
-
2009
- 2009-01-09 CN CN2009101049315A patent/CN101710302B/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388583A (zh) * | 2018-10-10 | 2019-02-26 | 深圳芯邦科技股份有限公司 | 一种参数检测的方法及相关设备 |
CN109388583B (zh) * | 2018-10-10 | 2024-01-12 | 深圳芯邦科技股份有限公司 | 一种参数检测的方法及相关设备 |
CN111949426A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种固件程序错误的检测方法、装置及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101710302B (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI486957B (zh) | Nand快閃記憶體燒錄資料的處理、使用方法及裝置、運行系統 | |
CN103136211A (zh) | 一种a2l文件的自动生成方法和装置 | |
CN101419843A (zh) | 快闪存储器识别方法、识别装置、芯片控制器 | |
CN103984613A (zh) | 一种自动测试cpu浮点运算性能测试方法 | |
CN101308701A (zh) | 管理非易失性存储器的映射表的设备和方法 | |
CN101710302B (zh) | 基于NandFlash存储介质的固件程序检测方法 | |
US20230297263A1 (en) | Method and system for testing conversion relationship between block reading and page reading in flash memory chip | |
CN114664369A (zh) | 一种存储芯片测试方法及装置 | |
CN113157512B (zh) | 实现大容量ssd在小内存机器上进行数据校验测试的方法 | |
CN107632778A (zh) | 一种Nand Flash扫描检测方法和系统 | |
US20230342084A1 (en) | Generating command snapshots in memory devices | |
CN116612803B (zh) | 一种闪存的测试方法、系统、装置及存储介质 | |
CN113571120A (zh) | 基于错误率变化型式在编程擦除循环期间对数据单元的选择性采样 | |
CN102360568B (zh) | 一种并行异步存储器及其数据读取方法 | |
CN106681893A (zh) | 一种nand flash模拟器的实现方法 | |
Shey et al. | Inferring trimming activity of solid-state drives based on energy consumption | |
KR101530587B1 (ko) | 고속 Fail Memory 데이터 취득 장치 및 그 방법 | |
CN115938464A (zh) | 固态硬盘的测试方法、系统、电子设备及可读存储介质 | |
CN114153670A (zh) | 一种随机测试方法、装置、设备及存储介质 | |
CN106408790B (zh) | 金融设备循环机芯日志信息写入方法及读取方法 | |
CN112083891B (zh) | 一种存储器中数据块的检测方法及相关设备 | |
CN109408277B (zh) | 一种aep内存的数据块链路特性测试方法 | |
CN107885640B (zh) | 一种硬盘管理方法及装置 | |
CN116884469B (zh) | 一种闪存性能的检测方法、装置、设备及介质 | |
CN110444244A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110817 Termination date: 20170109 |