标签:
nand flash ECC实战
2015-1-31
实战平台:
硬件环境:S3C2440
软件环境:裸机
static u8 ecc_t(const unsigned char *pData)
{
	unsigned int Line,Column;
	unsigned char ecc[8],ecc_tmp,ecc_column,ecc_line[256];
	
	// _CP_ //_LP_
	ecc_column = 0;
	for(Line = 0 ;  Line < 256; Line ++ ){
		ecc_column ^= pData[Line];
		ecc_line[Line] = 0;
		for(Column = 0 ; Column < 8 ; Column ++ ){
			ecc_line[Line] ^= (pData[Line] & (1<<Column))>>Column;
		}
	}
	
	//CP0:0,2,4,6
	ecc[0]= ((ecc_column) & (1<<0)>>0) ^ 
			((ecc_column) & (1<<2)>>2) ^
			((ecc_column) & (1<<4)>>4) ^
			((ecc_column) & (1<<6)>>6);
	//CP1:1,3,5,7
	ecc[1] =((ecc_column) & (1<<1)>>1) ^ 
			((ecc_column) & (1<<3)>>3) ^
			((ecc_column) & (1<<5)>>5) ^
			((ecc_column) & (1<<7)>>7);	
	//CP2:0,1,4,5
	ecc[2]= ((ecc_column) & (1<<0)>>0) ^ 
			((ecc_column) & (1<<1)>>1) ^
			((ecc_column) & (1<<4)>>4) ^
			((ecc_column) & (1<<5)>>5);
	//CP3:2,3,6,7
	ecc[3] =((ecc_column) & (1<<2)>>2) ^ 
			((ecc_column) & (1<<3)>>3) ^
			((ecc_column) & (1<<6)>>6) ^
			((ecc_column) & (1<<7)>>7);	
	//CP4:0,1,2,3
	ecc[4]= ((ecc_column) & (1<<0)>>0) ^ 
			((ecc_column) & (1<<1)>>1) ^
			((ecc_column) & (1<<2)>>2) ^
			((ecc_column) & (1<<3)>>3);
	//CP5:4,5,6,7
	ecc[5] =((ecc_column) & (1<<4)>>4) ^ 
			((ecc_column) & (1<<5)>>5) ^
			((ecc_column) & (1<<6)>>6) ^
			((ecc_column) & (1<<7)>>7);		
}标签:
原文地址:http://blog.csdn.net/lr2131/article/details/43344321