[0035] 以下是本发明的具体实施例,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
[0036] 现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的模块和步骤的相对布置和步骤不限制本发明的范围。
[0037] 同时,应当明白,为了便于描述,附图中的流程并不仅仅是单独进行,而是多个步骤相互交叉进行。
[0038] 以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0039] 对于相关领域普通技术人员已知的技术、方法和系统可能不作详细讨论,但在适当情况下,技术、方法和系统应当被视为说明书的一部分。
[0040] 在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
[0041] 现有的一种非易失存储器中文件烧录的方法是,将非易失存储器的版本文件预先烧录到一个空白的非易失闪存母片上;从所述非易失闪存母片中获取所述版本文件烧录后得到的数据段和扩展段,生成一个扩展版本文件,当需要烧录版本文件到非易失存储器中时,将所述扩展版本文件提供给烧录器,由所述烧录器将所述扩展版本文件烧录到非易失存储器中。
[0042] 然后又由于非易失存储器中会随机出现坏块,当烧录器或者嵌入软件遇到坏块时,再采用跳过坏块的方式去处理,也就是把本来应该写在这个块的数据,写到下一个块中,并且标记这个地址段为坏块;如果是读的话,就找下一个块。因此,非易失存储分区时通常会为每个分区预留一些“保留区域”,烧录器或嵌入式软件采用跳过坏块的方式正常的处理这些坏块。
[0043] 可是,即便采用跳过坏块的方式,避开一些坏块,但是对于一个分区来说,保留区域也是有限的,并且,软件处理坏块时可能存在问题,这样就会导致生产线生产时,出现较高的不良率,影响生产进度,提高了成本。
[0044] 实施例一
[0045] 如附图1所述,为了提供一个比较好的模拟生产测试方法,预警问题,及时发现问题及时解决,提高软件的可靠性,节约成本,本发明的一个实施例中一种非易失存储器坏块测试方法,在一个没有坏块的非易失存储器上模拟一个或一些坏块,并且将嵌入式软件烧录至此非易失存储器中,通过观察嵌入式软件是否正常运行,来检查烧录器和嵌入式软件能否正常工作。
[0046] 一种非易失存储器坏块测试方法,具体步骤如下:
[0047] S1:提供一个没有坏块的非易失存储器;
[0048] 所述非易失存储器由厂家提供,必须为没有坏块的非易失存储器,便于后面步骤的测试,如果存在坏块,测试的时候会因为这些坏块的影响造成测试的偏差或无法测试;
[0049] S2:标记所述非易失存储器上至少一个块为坏块;
[0050] 可以一次标记一个,也可以一次多个,根据存储器上分区和预留空间大小,可相应的做出选择;
[0051] S3:烧录嵌入式软件至所述非易失存储器;
[0052] 烧录过程中,跳过标记的坏块进行烧录,跳过该块将该块的数据写入到该块的下一个块中;
[0053] S4:观察嵌入式软件是否正常运行;
[0054] 若所述嵌入式软件不能正常运行,则可以检测得知所述嵌入式软件为不合格。
[0055] 在一个实施例中,在执行步骤S2前,将非易失存储器内容全片擦除;防止非易失存储器中数据和烧录的嵌入式软件数据干扰。
[0056] 在一个实施例中,在执行步骤S2时,将标记的块上的数据均写为空值;将标记的块中的数据全部写成0x00,包括所有PAGE+OOB数据,完成一个坏块的制作,标记的块中无法写入数据,也无法读取数据
[0057] 在一个实施例中,在执行步骤S3时,烧录过程遇到标记的块,跳过标记的块到下一个块进行烧录,将该写入至所述块的数据写入至所述块的下一个块中;
[0058] 在非易失存储器使用过程中发生突发坏块时,将缓存中的数据重新写入到下一个有效块中,该页地址为前面突发坏块中写入出错时的页地址;当记录任务结束后,将之前已经写入突发坏块中的数据拷贝到下一个有效块的对应页中,并更新坏块表,拷回出错前的数据来保持读写带宽不变;坏块表存储在非易失存储器中;在读、写、擦除加载地址之前,根据坏块表,预匹配出下一有效块的物理地址,加载地址时始终加载的是有效块的物理地址。
[0059] 可以用二进制1表示坏块即无效块、用0表示有效块,或用0表示无效块、用1表示有效块,组成二进制序列作为坏块表;先建立初始坏块表。我们以用 0表示无效块、用1表示有效块来做一个实施案例,第三个块标记为坏块,则坏块表上前五个块显示的记录为11011,烧录数据时,前两个块1中数据写入不变,当烧录器遇到第三块0即坏块时,跳过第三个块,将数据写入至第四个块中,后面的数据都各自往后挪,即本应该写入至第N个块中的数据,写入至第N+1个块中。
[0060] 嵌入式软件烧录完成之后,运行所述嵌入式软件,通过观察所述嵌入式软件能否正常运行,判断所述嵌入式软件或烧录器是否正常工作,若所述嵌入式软件不能正常运行,则说明所述嵌入式软件或烧录器不合格,提前做出预警,及时做出应对,提高软件的可靠性。
[0061] 实施例二
[0062] 上述方法可以有效检测出嵌入式软件或烧录器可能存在的问题和隐患,但是部分嵌入式软件或烧录器初次可以运行,但是当转换数据之后却无法运行,造成用户的不便。
[0063] 如图2所示,使用上述方法测试嵌入式软件,在执行步骤S4时若所述嵌入式软件正常运行,将所述块的标记擦除,并标记所述非易失存储器的另一个块为坏块,重复进行步骤S2至步骤S4。
[0064] 所述嵌入式软件能正常运行,不一定代表所述嵌入式软件合格能正常使用,通过多次检测,且检测不同的位置的块,甚至所有的块的检测都进行之后,所述嵌入式软件仍能正常运行,则代表所述嵌入式软件合格能正常使用。
[0065] 仍如图2所示,在观察嵌入式软件能否正常运行之后,若嵌入式软件能正常运行,则开始进行下一个块的检测。
[0066] 先将之前检测标记的块的标记擦除,使之变成有效块,可以正常写入和读取数据;当然擦除坏块标记之后,将整个非易失存储器的数据全部擦除,避免干扰;收到擦除命令之后,生成的擦除的区域为最后写入的物理地址以及以前的块地址,生成的地址只有块地址,而且是累减的,里面的块依次进行数据擦除,擦除一个,自动跳至下一个块进行擦除,块地址减少;擦除完毕后,送出擦除完毕信号。
[0067] 再标记所述非易失存储器的另一个块为坏块,如此模拟另一处坏块的检测;
[0068] 运行所述嵌入式软件,观察能否正常运行;若所述嵌入式软件不能正常运行,则所述嵌入式软件不合格;若所述嵌入式软件能正常运行,则再次检测另一个块。
[0069] 在一个实施例中,由于实际运行时坏块出现位置随机,出现问题时,坏块的位置多种多样,为此,提供以下几种方法:
[0070] 一次标记一个块,当标记一个块时,按照非易失存储器上块的顺序依次标记且一次标记一个块,每一次检测执行步骤S2至步骤S4;
[0071] 当标记多个块时,一次标记一个由多个块组成的区域的块为坏块,执行步骤S2至步骤S4进行测试;
[0072] 当然由于预留空间大小的限制,不宜将过多块的区域标记为坏块,但是在预留空间大小的限制范围内,可随机随意标记坏块,然后进行测试。
[0073] 因为分区的原因,存在一些边界问题,比如分区的第一个块是否允许为坏块。有些时候分区也可能在一个块的地址段的中间。对于这些区域,可以用模拟坏块的方式进行测试。
[0074] 总结用上述任一方法进行检测,都将各种坏块出现的可能尽可能全测试一次,并记录结果。如果所述嵌入式软件都能正常运行,则认定所述嵌入式软件合格,可靠,可以供用户正常使用。
[0075] 实施例三
[0076] 如图3所示,本发明一种非易失存储器坏块测试系统,该系统包括:
[0077] 非易失存储模块,没有坏块的非易失存储器;
[0078] 坏块标记模块,用于标记非易失存储模块中的至少一个块为坏块;
[0079] 烧录模块,将嵌入式软件烧录至非易失存储器;
[0080] 运行模块,运行嵌入式软件;
[0081] 判断模块,判断嵌入式软件是否正常运行,做出判断。
[0082] 使用坏块标记模块标记非易失存储模块上的一个块为坏块,烧录模块将嵌入式软件烧录入非易失存储模块,运行所述嵌入式软件并观察是否正常运行,进行测试判断,若嵌入式软件不能正常运行,则说明嵌入式软件对坏块的处理的能力不足,为不合格品。
[0083] 上述系统还包括:
[0084] 标记擦除模块;
[0085] 若所述嵌入式软件能正常运行,将所述块的标记擦除,并标记所述非易失存储器的另一个块为坏块,重复检测;若所述嵌入式软件不能正常运行,则所述嵌入式软件不合格,也将所述块的标记擦除
[0086] 事实上,不论嵌入式软件能否正常运行,标记擦除模块都应该将坏块标记擦除,方便再次检测。若所述嵌入式软件为合格,换非易失存储模块上另一个块进行测试;若所述嵌入式软件为不合格,则换一个新的嵌入式软件来进行测试。
[0087] 上述系统还包括:
[0088] 记录模块;
[0089] 每进行一次检测,都需要通过记录模块,记录检测结果。如图3所示,判断模块与记录模块相连接,每一次检测进行判断,都将结果发送至记录模块,最终做成检测结果表。
[0090] 检测顺序有很多,根据不同的人选择不同的顺序,依次一个一个块的检测,或者标记一个区域的块均为坏块进行检测,只要将非易失存储器上的各种坏块出现的可能尽可能全测试一次,都可以达到本系统的检测目的。
[0091] 本发明具有以下增益效果:
[0092] 本发明提供一个比较好的模拟生产测试方法,预警问题,及时发现及时解决,提高软件的可靠性,节约成本。
[0093] 虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围,本发明所属技术领域的技术人员可以对所描述的具体实施例来做出各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的方向或者超越所附权利要求书所定义的范围。本领域的技术人员应该理解,凡是依据本发明的技术实质对以上实施方式所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围。