NAND Flash常见应用问题汇总!
掉程序(这里专指使用NAND Flash的主板掉程序),这是一个让工程师浑身发毛的问题。特别是用着用着程序就没有了,往往这个时候很多工程师都无法下手。问题出现的时候你可能根本不在旁边,无法看到具体现象,而且通过测量信号也很难找到原因,这个时候很多工程师可能会采用更换主板器件的方式,用排除法来定位问题。
基本上换一个NAND Flash就可以解决问题了。这个时候很多工程师可能就会表示NAND Flash有问题,需要换厂商,换品牌,但其实还可以更加深入的去了解问题的原因,这里我们总结一下遇到过的NAND Flash掉程序的情况及原因:
1. 电源电压不稳导致的NAND Flash程序错误
很多时候,产品在客户手中出现了问题,工程师把产品拿回来,重新烧录程序产品可以上电启动,反复测试并不会出现掉程序的情况。如果这种产品是带有电池的产品,就可以考虑一下是否在客户实际使用中使用电池的情况。当电池的电量比较低,或者在极端情况下,程序对于电池电量的检测阈值较低,如果这个时候主控刚刚启动,但是很快电量不够,NAND Flash内的程序会乱掉,从而无法正常启动。
很多时候,产品在客户手中出现了问题,工程师把产品拿回来,重新烧录程序产品可以上电启动,反复测试并不会出现掉程序的情况。如果这种产品是带有电池的产品,就可以考虑一下是否在客户实际使用中使用电池的情况。当电池的电量比较低,或者在极端情况下,程序对于电池电量的检测阈值较低,如果这个时候主控刚刚启动,但是很快电量不够,NAND
Flash内的程序会乱掉,从而无法正常启动。解决方法可以在程序中加入或者提高电池电量检测的阈值,保证所有芯片在这个阈值上均可以正常工作。
2. DRAM工作状态不正常导致的NAND Flash程序错误
主控,DRAM和 NAND Flash基本构成了一个产品的核心系统。当系统中的任何一环出现问题,整个系统就可能出现问题。但是当DRAM出现问题时,有可能反映出来的是NAND Flash出错,掉程序或者发现NAND Flash坏块(也称Bad Block)过多。对于这种情况,处理起来会复杂一些。
如果直接重新烧录程序,系统又能正常工作,则说明之前存储在NAND Flash中的程序确实乱了,但是NAND Flash的功能正常。特别是SLC规格的 1-bit ECC 的NAND Flash,出错概率非常小。因为对于NAND Flash来说,只有写数据或者擦除数据时,数据可能产生坏块,当程序只是读取的状态时,由于不涉及电荷的改变,一般不会出现问题。
如果从程序的调试端口读到NAND Flash坏块很多时,看是否有更深入的调试工具,例如JTAG等调试工具,可以深入调试NAND Flash的情况。有些时候,因为一些程序误操作,导致将原本Good Block的标志位标记成了Bad block。用过JTAG调试工具可以修改标志位,并且重新打标,重新烧录一遍程序,有可能主板又能重新启动了。
3. 坏块管理没做好
因为NAND Flash都面临着可能出现坏块的问题,所以必须应该对于坏块进行管理。在规格书中可以看到,坏块产生的三种情况:在编程的时候;在擦出的时候;在读取的时候。
对于这几种情况下,程序应该怎么操作,规格书中也有流程图来说明。
在编程和擦除中,如果出现失败情况,就需要重新换一个块进行目标块的转移,并且对于当前块进行标识,在坏块表中进行更新。通过对于坏块表的维护,达到避免程序写入坏块中的情况。
在读取程序时,也需要对于ECC进行校验,保证读取的程序是真实可靠的。但是很多工程师可能对于坏块管理做的不够仔细,导致产品在实际使用中,会出现掉程序的问题。工程师应该从程序方面着手,分析一下软件系统对于坏块管理是否完善。
从上面三种类型只是部分说明了关于掉程序这个问题的一些原因。特别是对于1-bit ECC 的SLC NAND Flash大部分适用,工程师们可以进行参考。