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