专利名称:基于NandFlash存储介质的固件程序检测方法
技术领域:
本发明涉及电数字数据处理,特别是涉及电数字数据处理中通过软件的测试或调试防止错误,尤其涉及基本Nand Flash作为存储介质的固件程序检测方法。
背景技术Nand Flash即"与-非"闪存是一种非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何Nand Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。参见图3,现有技术在固件程序Firmware管理数据的时候,当需要写入数据到块A中的某个位置时,则需要选择一个可用块B,将B擦除干净,然后分别把A的数据Al搬到Bl,把需要写入的数据写入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领域中的开发难点主要包括坏块管理、损耗平衡、逻辑映射,其中验证逻辑映射算法的正确性是一件复杂的工作,具有调试难、覆盖算法分支难、问题重现难的特点,通常研发人员在编写程序完成后,都是交付测试部门的人员,通过文件拷贝进行逻辑算法正确性的验证。通过拷贝比较来发现逻辑映射算法不足之处主要有两个途径,一个是手工拷贝文件到存储器中,拷满后,通过文件比较工具Fi 1 e 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可为l至256中任一整数。
本发明采用的上述技术方法的有益效果在于 1)测试时间短,具有针对性。本发明合理选择了单次测试的数据长度为1 255
扇区,随机选择写入地址,能够尽量覆盖逻辑映射算法中的不同分支,如跨区Zone、跨块
Block、连续读写,本发明的方法能够在尽量减少测试数据长度的前提下进行覆盖; 2)可以生成测试脚本。在测试过程中,将每次测试的写入地址、数据长度都保存到
一个脚本文件中,如果读写数据不匹配,还会将两次的数据保存到磁盘中,供研发人员查看
比较不匹配的原因,推测具体是由数据搬移错误还是漏搬引起。研发人员还可以通过重新
执行引起错误的测试脚本,复现现象,从而给调试带来便利。 3)辅助研发人员分析原因。由于测试过程中,自动保存了测试脚本,研发人员可以查看测试脚本的写入地址和长度,根据NandFlash的参数,推测引起错误的原因,是因为执行到哪个算法分支后处理不当导致,从而提高了调试效率。
图l是本发明基本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"中。再执 行步骤Bi 在步骤B中所述"随机选择N个扇区",其中N可为1至255中任一整数。
在步骤C中所述"M个扇区"中,其中M可为l至256中任一整数。
由于算法对于不同参数配置的NandFlash可能存在差异,通常需要针对不同的 NandFlash分别进行测试,如果采用拷贝比较的方法,由于NandFlash的写入速度比较慢, 尽量减少测试的数据非常必要。根据NandFlash的特性,写入的数据长度为1 255个 扇区,即可保证一定覆盖跨Zone、跨Block的算法分支,因为目前市面的NandFlash单个 Block的容量没有超过255个扇区的,当随机测试的数据长度大于Block的容量时,就能覆 盖跨Block的算法分支,在这种情况下,即使测试的数据长度大于255个扇区,也是没有什 么意义了。随机产生的测试地址,加上随机产生的随机长度,能够覆盖一些边缘情况。
测试的数据很重要,合适的数据可以给研发工程师很多额外的辅助信息,用于分 析遇到的数据不匹配原因。例如设定一个较小的测试容量范围,进行数据填充,填充的内容 为数据区所在的扇区地址(意思就是说扇区0里面填充的数据都是0x00000000,扇区1里 面填充的数据都是0x00000001),假设预填充了 100个扇区的数据,那么,在进行写入操作 之后,检测目标写入地址边缘的区域发现数据不匹配,说明在搬运关联区域的数据出错了, 由于我们数据里面写入的是逻辑地址的值,通过查看出错的数据为哪个逻辑地址,即可猜 测搬错的原因。 以往的拷贝匹配测试软件都是产生随机数,然后顺序写入或者随机写入测试存储 器,没有任何的测试信息输出可供研发人员、测试人员参考,以致于出现不匹配的现象后无 法重现问题而耽误调试进度。本发明的方法在测试过程中,对每一次随机产生的地址、测试 长度都会进行保存,并且在读写发生不匹配的时候,可以将写入前后的数据保存到文件中, 供研发人员分析。对于一些比较特殊的错误现象需要Firmware跟踪调试的,还可以通过重 新执行保存的脚本命令,重现出现问题的步骤。
权利要求
一种基于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. 如权利要l所述基于NandFlash作为存储介质的固件程序检测方法,其特征在于步骤C中所述"M个扇区"中,其中M可为1至256中任一整数。
全文摘要
一种基于NandFlash存储介质的固件程序检测方法,用于在NandFlash存储器生产过程中对其固件程序检测,包括步骤对新生产的基本NandFlash存储介质存储器以随机数进行全盘填充;在所述存储器逻辑读写范围内随机选择一个逻辑地址Addr,然后随机选择N个扇区作为操作长度;读取所选目标数据的前后M个扇区;从所述逻辑地址Addr起,写入N个扇区的随机数据;从所述逻辑地址Addr前M个扇区地址开始,连续读取所述N扇区及其前后各M扇区的数据,获取写入后当前目标设备逻辑地址上的数据;判定写入前后数据是否匹配,并将不匹配的数据文件进行保存。本发明的有益效果在于解决测试时间长、没有针对性、无法生成测试脚本、无法复现错误、无法给研发人员分析问题所在提供有价值的参考信息等缺陷。
文档编号G06F12/02GK101710302SQ20091010493
公开日2010年5月19日 申请日期2009年1月9日 优先权日2009年1月9日
发明者李志雄, 覃敏 申请人:深圳市江波龙电子有限公司