4.ECC校验码分为main区的ECC和spare区的ECC,它们一般都会存放在64字节的spare区内,下面是翻译2440手册的关于ECC编程的内容: 3)在你完成读或者写一个页后(不包含备用数据域),给 MainECCLock 1(lock) 。 ECC 校验码被锁上, ECC 状态寄存器的值将不会被改变。 5)任何时候读或者写数据时,备用域 ECC 模块在寄存器 NFSECC 上产生 ECC 校验码。 6)在完成读或者写备用域后,给 SpareECCLock 1(lock) 。 ECC 校验码被锁上, ECC 状态寄存器的值将不会被改变。 return -1;//错误返回-1,这个-1表示的是的nandflash一直忙,这里是有问题的 rNFSTAT = (1 < <2);//清忙标志,没有超时,我给你正常设为清闲,返回值也没问题 num=num*64;//表示要擦除的块地址,这种nandflash每一个块有64页,其他的就不一定了哈哈 if (rNFDATA8&1)//如果最高位是1,下面报错,就是说擦除这个块没有成功,这个得记住! //这样的话addr是有格式要求的比如末尾几个零,结果这个函数里面没有加上所谓“对齐判断”失败啊!! //检测忙,这里有相当于是复位nandflash后检测nandflash,复位都不相信了,擦!
|