如果flash 容易出现ECC 校验错误导致wince 系统不启动,有可能是什么问题呢?

 
 
问题现象,不是所有机器都这样的。有一批机器是这样,客户用了一段时间就不启动了,甚至有些在仓库放一段时间就不动了,后来回来拆机发现很多ecc 错误。

这个机器已经量产了有一年多,以前卖很多都没有问题。现在突然频繁出现,超过30% 的机器会出现。

首先怀疑是来料问题,因为别的一个同CPU的机器不会,果然换掉nandflash 就不会了,出问题的机器换到不出问题的机器也会有这种现象。

所以第一步是换料

第二步是重新格式化整个flash,把坏块处理一下。



是否也有一些是硬件原因呢?

这个帖子里面说的现象和我的太像了,虽然我的是SLC nandflash

http://topic.csdn.net/u/20100709/11/74da915c-d800-404e-bd5f-f6a996c3099c.html?seed=1778424306&r=79669232#r_79669232

CPU用的是S3C2451,和S3C2450没什么区别,BSP用的是S3C2450的,CE6.0,在烧录BOOTLOADER和OS以及启动OS等过程中,只要涉及到ECC的校验就容易出错。用的是MLC的NAND FLASH。

当我把TACLS、TWRPH0、TWRPH1三个值设置成BSP自带的数值时ECC每次都出错,EBOOT和OS根本无法启动。
// Default NAND Flash timing @HCLK 133MHz (tHCLK = 7.5ns)
#define	 DEFAULT_TACLS	 (1)	// 1 HCLK (7.5ns)
#define	 DEFAULT_TWRPH0	(4)	// 5 HCLK (37.5ns)
#define	 DEFAULT_TWRPH1	(1)	// 2 HCLK (15ns)

// for ECC decoding with Dummy Data
#define	 DUMMY_R_TACLS	(0)
#define	 DUMMY_R_TWRPH0	(1)
#define	 DUMMY_R_TWRPH1	(1)

// for ECC encoding with Dummy Data
#define	 DUMMY_W_TACLS	(0)
#define	 DUMMY_W_TWRPH0	(0)
#define	 DUMMY_W_TWRPH1	(0)

---------------------------------------------------------------------------------
而当我把以上9个值都设置成最大值7的时候,ECC出错的问题才能得到一定的改善,但是偶尔仍然会出错导致无法启动OS,7已经是寄存器能够设置的最大值。

在另一个产品中用的是S3C2416,使用同样的MLC NAND FLASH,CE5.0,用BSP自带的数值就不会有错。

所以麻烦大家指点一下可能是什么原因。
硬件上可能会导致这样的问题,但是估计不会这么严重,是否其它的一些寄存器配置还需要注意呢?比如一些时钟配置之类的?

谢谢!


结帖了,是VDD_SRAM的电压不足导致的,因为NAND相应的读写控制信号是GPA,而GPA的相应电压与VDD_SRAM有关。



这位兄弟的现象和我的很像,现在先测试一下看是否对先。

 


你可能感兴趣的:(c,测试,OS,Flash,WinCE,encoding)