标签:
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