日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECC的代码实现

發布時間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ECC的代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ECC的代碼實現

數據校驗介紹: 

????????通俗的說,就是為保證數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。接收方用同樣的算法計算一次校驗值,如果和隨數據提供的校驗值一樣,就說明數據是完整的。

??????? 如果是時序或者電路方面有什么問題的話,錯誤數據的發生是無法通過數據校驗來進行彌補的,而對于受外界干擾而產生的位翻轉錯誤,則可以一定程度上通過HW或者SW的數據校驗來進行數據的檢測和糾正。

???????常用的數據校驗算法有CRC校驗和ECC校驗等,它們的基本原理很相似。

ECC介紹:

??????? ECC(錯誤檢查和糾正),這種技術也是在原來的數據位上外加校驗位來實現的,具體的原理不再描述,大致的描述可以參照:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.aspx.

??????? 它有一個規律:數據位每增加一倍,ECC只增加一位檢驗位,也就是說當數據位為16位時ECC位為6位,32位時ECC位為7位,數據位為64位時ECC位為8位,依此類推,數據位每增加一倍,ECC位只增加一位。

附件說明:

附件1:256字節ECC校正1比特錯誤代碼實現

附件2:512字節ECC校正1比特錯誤代碼實現

/*************************************************************************************************************/

附件1:256字節ECC校正1比特錯誤代碼實現

// 256ByteECC071123.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"

//071126
unsigned char dat[]={
0x0? ,0x0 ,0x0 ,0x0? ,0x0 ,0x0? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0
};

//071123
unsigned char ECCTable[]={
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0
};

//計算ECC代碼
void NandTranResult(unsigned char reg2,unsigned char reg3,unsigned char *ECCCode)
{
?unsigned char temp1,temp2,i,a,b;

?temp1=temp2=0;
?a=b=0x80;

?for(i=0;i<4;i++)
?{
??if(reg3&a)
???temp1|=b;
??b>>=1;
??if(reg2&a)
???temp1|=b;
??b>>=1;
??a>>=1;
?}

?b=0x80;

?for(i=0;i<4;i++)
?{
??if(reg3&a)
???temp2|=b;
??b>>=1;
??if(reg2&a)
???temp2|=b;
??b>>=1;
??a>>=1;
?}
?
?//將最終的ECC存入數組ECCCode
?ECCCode[0]=temp1;//存放高8bit
?ECCCode[1]=temp2;//存放中間的8bit
}

void NandCalECC(const unsigned char *dat,unsigned char *ECCCode)
{
?unsigned char reg1,reg2,reg3,temp;
?int j;

?reg1=reg2=reg3=0;

?for(j=0;j<256;j++)
?{
??temp=ECCTable[dat[j]];
??reg1^=(temp&0x3f);

??if(temp&0x40)
??{
???reg3^=(unsigned char)j;
???reg2^=(~((unsigned char)j));
??}
?}

?NandTranResult(reg2,reg3,ECCCode);

?//計算最終的ECC碼
?//此處為什么要做一個求非的操作呢?
?//不取非也行,對結果沒有影響
?ECCCode[0]=~ECCCode[0];
?ECCCode[1]=~ECCCode[1];
?
?ECCCode[2]=(((~reg1)<<2)|0x03);
}

/*
* 參數解釋
* dat[]:實際讀取的數據
* ReadECC[]:保存數據時根據原始數據產生的ECC碼
* CalECC[]:讀取數據的同時產生的ECC碼
*/

int NandCorrectData(unsigned char *dat,unsigned char *ReadECC,unsigned char *CalECC)
{
?unsigned char a,b,c,bit,add,i,d1,d2,d3;

?//計算
?d1=ReadECC[0]^CalECC[0];
?d2=ReadECC[1]^CalECC[1];
?d3=ReadECC[2]^CalECC[2];

?//printf("d1=0x%0x,d2=0x%0x,d3=0x%0x/n",d1,d2,d3);

?if((d1|d2|d3) == 0)
?{
??//無錯誤發生
??printf("無錯誤發生/n");
??return 0;
?}
?else
?{
??a=((d1>>1)^d1)&0x55;
??b=((d2>>1)^d2)&0x55;
??c=((d3>>1)^d3)&0x54;

??//此處的理論依據是:如果發生了1bit的ECC錯誤,那么ECC異或地結果是--每個配對的bit數據相反,即為0&1或者1&0
??if((a == 0x55)&(b == 0x55)&(c == 0x54))
??{
???//可校正的1bit ECC錯誤
???
???//首先計算錯誤的Byte
???
???a=b=c=0x80;
???add=0;

???for(i=0;i<4;i++)
???{
????if(d1&a)
?????add|=b;
????a>>=2;
????b>>=1;
???}
???
???for(i=0;i<4;i++)
???{
????if(d2&c)
?????add|=b;
????c>>=2;
????b>>=1;
???}
???
???//計算發生錯誤的Bit
???bit=0;
???a=0x80;
???b=0x04;
???
??//?printf("d3 = 0x%0x/n",d3);

???for(i=0;i<3;i++)
???{
????if(d3&a)
????{
?????bit|=b;
??//???printf("Detected!/n");
????}
????else
????{
?????//printf("d3=0x%0x,a=0x%0x,d3&a=0x%0x/n",d3,a,d3&a);
??//???printf("Not Detected!/n");
????}
????a>>=2;
????b>>=1;
???}

???//進行數據糾正
??//?printf("開始進行數據糾正/n");
??//?printf("Error byte: %2d,Error bit: %2d/n",add,bit);
???b=0x01;
???b<<=bit;
???a=dat[add];
???a^=b;
???dat[add]=a;
???return 1;
??}
??else
??{
???i=0;
??//?printf("計算異或結果d1,d2,d3中1的個數/n");
???//計算異或結果d1,d2,d3中1的個數
???while(d1)
???{
????if(d1&0x01)
?????i++;
????d1>>=1;
???}
???while(d2)
???{
????if(d2&0x01)
?????i++;
????d3>>=1;
???}
???while(d3)
???{
????if(d3&0x01)
?????i++;
????d3>>=1;
???}

???if(i == 1)
???{
????//發生了ECC錯誤,即存放ECC數據的區域發生了錯誤,正常的情況下,無論多少
????//bit發生了反轉,都不會出現i=1的情況,出現了這種情況的原因只可能是ECC代碼本身有問題
???//?printf("存放ECC數據的區域發生了錯誤/n");
????return 2;
???}
???else
???{
????//不可校正的ECC錯誤,即Uncorrectable Error
???//?printf("Uncorrectable Error/n");
????return -1;
???}

??}
?}
?return -1;
}

int main(int argc, char* argv[])
{
?int temp,i,j,k,l,m=0;
?unsigned char ReadECC[3]={0,0,0},CalECC[3]={0,0,0};

?NandCalECC(dat,CalECC);

?for(i=0;i<256;i++)
?{
??j=0x80;
??l=dat[i];
??for(k=0;k<8;k++)
??{
???m++;
?dat[i]^=j;
?j>>=1;
?NandCalECC(dat,ReadECC);
?
?temp=NandCorrectData(dat,ReadECC,CalECC);
?if(temp == 1)
?{
??if(dat[i]==l)
???printf("Success/n");???
??else
???printf("Failed/n");
?//?printf("可以校正的錯誤/n");
?//?printf("dat[0]=0x%0x/n",dat[0]);
?}
?else if(temp == -1)
?{
??//printf("不可以校正的錯誤");
?}
?else if(temp == 0)
?{
??//printf("無錯誤");
?}
?else
?{
?//?printf("數據區發生了錯誤");
?}
??//
???/*
?dat[5]=0x02;
?NandCalECC(dat,ReadECC);
?
?temp=NandCorrectData(dat,ReadECC,CalECC);
?if(temp == 1)
?{
??printf("可以校正的錯誤/n");
??printf("dat[0]=0x%0x/n",dat[0]);
?}
?else if(temp == -1)
?{
??printf("不可以校正的錯誤");
?}
?else if(temp == 0)
?{
??printf("無錯誤");
?}
?else
?{
??printf("數據區發生了錯誤");
?}
*/
?//
??}
?}
?printf("rotate times:%5d/n",m);
?return 0;
}

附件2:512字節ECC校正1比特錯誤的代碼實現?

// 512ByteECC071127.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
// 256ByteECC071123.cpp : Defines the entry point for the console application.
//

//071127
unsigned char dat[]={
0x0? ,0x0 ,0x0 ,0x0? ,0x0 ,0x0? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x0? ,0x0 ,0x0 ,0x0? ,0x0 ,0x0? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0
};

//071123
unsigned char ECCTable[]={
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0? ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0x6a ,0x3f ,0x3c ,0x69 ,0x33 ,0x66 ,0x65 ,0x30 ,0x30 ,0x65 ,0x66 ,0x33 ,0x69 ,0x3c ,0x3f ,0x6a ,
0xf? ,0x5a ,0x59 ,0xc? ,0x56 ,0x3? ,0x0? ,0x55 ,0x55 ,0x0? ,0x3? ,0x56 ,0xc? ,0x59 ,0x5a ,0xf? ,
0xc? ,0x59 ,0x5a ,0xf? ,0x55 ,0x0? ,0x3? ,0x56 ,0x56 ,0x3? ,0x0? ,0x55 ,0xf? ,0x5a ,0x59 ,0xc? ,
0x69 ,0x3c ,0x3f ,0x6a ,0x30 ,0x65 ,0x66 ,0x33 ,0x33 ,0x66 ,0x65 ,0x30 ,0x6a ,0x3f ,0x3c ,0x69 ,
0x3? ,0x56 ,0x55 ,0x0? ,0x5a ,0xf? ,0xc? ,0x59 ,0x59 ,0xc? ,0xf? ,0x5a ,0x0? ,0x55 ,0x56 ,0x3? ,
0x66 ,0x33 ,0x30 ,0x65 ,0x3f ,0x6a ,0x69 ,0x3c ,0x3c ,0x69 ,0x6a ,0x3f ,0x65 ,0x30 ,0x33 ,0x66 ,
0x65 ,0x30 ,0x33 ,0x66 ,0x3c ,0x69 ,0x6a ,0x3f ,0x3f ,0x6a ,0x69 ,0x3c ,0x66 ,0x33 ,0x30 ,0x65 ,
0x0? ,0x55 ,0x56 ,0x3? ,0x59 ,0xc? ,0xf? ,0x5a ,0x5a ,0xf? ,0xc? ,0x59 ,0x3? ,0x56 ,0x55 ,0x0
};

//計算ECC代碼
void NandTranResult(unsigned int *reg1,unsigned int *reg2,unsigned int *reg3)
{
?unsigned char i,a,b;
?unsigned int temp1,temp2,temp3;


?temp1=temp2=temp3=0;
?a=b=0x80;

?for(i=0;i<4;i++)
?{
??if((*reg3)&a)
???temp1|=b;
??b>>=1;
??if((*reg2)&a)
???temp1|=b;
??b>>=1;
??a>>=1;
?}

?b=0x80;

?for(i=0;i<4;i++)
?{
??if((*reg3)&a)
???temp2|=b;
??b>>=1;
??if((*reg2)&a)
???temp2|=b;
??b>>=1;
??a>>=1;
?}

?temp3|=((*reg1)&0x3f);
?temp3<<=2;
?if((*reg3)&0x100)
??temp3|=0x2;
?if((*reg2)&0x100)
??temp3|=0x1;

?*reg1=temp1;
?*reg2=temp2;
?*reg3=temp3;
}

void NandCalECC(const unsigned char *dat,unsigned char *ECCCode)
{
?unsigned int reg1,reg2,reg3,temp;
?unsigned int j;

?reg1=reg2=reg3=0;

?for(j=0;j<512;j++)
?{
??temp=ECCTable[dat[j]];
??reg1^=(temp&0x3f);

??if(temp&0x40)
??{????
???reg3^=(j&0x1ff);???//取出變量j低9個bit的數據
???reg2^=(~(j&0x1ff));//同樣的道理取出9的bit數據
??//?if(j==0||j==256)
??//??printf("[NandCalECC] Byte:%3d,reg3:0x%0x,reg2:0x%0x/n",j,reg3,reg2);
??}
?}

?//printf("[NandCalECC] reg1=0x%0x,reg2=0x%0x,reg3=0x%0x/n",reg1,reg2,reg3);

?NandTranResult(&reg1,&reg2,&reg3);

?//?printf("[NandCalECC] reg1=0x%0x,reg2=0x%0x,reg3=0x%0x/n",reg1,reg2,reg3);

?ECCCode[0]=~((unsigned char)reg1);
?ECCCode[1]=~((unsigned char)reg2);?
?ECCCode[2]=~((unsigned char)reg3);
?
?//計算最終的ECC碼
?//此處為什么要做一個求非的操作呢??????,如果不做非操作也沒有問題
?/*
?ECCCode[0]=~ECCCode[0];
?ECCCode[1]=~ECCCode[1];
?
?ECCCode[2]=(((~reg1)<<2)|0x03);
?*/
?/*
?ECCCode[0]=ECCCode[0];
?ECCCode[1]=ECCCode[1];
?
?ECCCode[2]=(((reg1)<<2)|0x03);
?*/
}

/*
* 參數解釋
* dat[]:實際讀取的數據
* ReadECC[]:保存數據時根據原始數據產生的ECC碼
* CalECC[]:讀取數據的同時產生的ECC碼
*/

int NandCorrectData(unsigned char *dat,unsigned char *ReadECC,unsigned char *CalECC)
{
?unsigned char bit,i;
?unsigned int add,a,b,c,d1,d2,d3;

?add=a=b=c=d1=d3=d2=0;

?//計算
?d1=ReadECC[0]^CalECC[0];
?d2=ReadECC[1]^CalECC[1];
?d3=ReadECC[2]^CalECC[2];

?//printf("[NandCorrectData] d1=0x%0x,d2=0x%0x,d3=0x%0x/n",d1,d2,d3);

?if((d1|d2|d3) == 0)
?{
??//無錯誤發生
??printf("無錯誤發生/n");
??return 0;
?}
?else
?{
??a=((d1>>1)^d1)&0x55;
??b=((d2>>1)^d2)&0x55;
??//c=((d3>>1)^d3)&0x54;
??c=((d3>>1)^d3)&0x55;

??//此處的理論依據是:如果發生了1bit的ECC錯誤,那么ECC異或地結果是--每個配對的bit數據相反,即為0&1或者1&0
??if((a == 0x55)&(b == 0x55)&(c == 0x55))
??{
???//可校正的1bit ECC錯誤
???
???//首先計算錯誤的Byte
???
???a=b=c=0x80;
???add=0;

???for(i=0;i<4;i++)
???{
????if(d1&a)
?????add|=b;
????a>>=2;
????b>>=1;
???}
???
???for(i=0;i<4;i++)
???{
????if(d2&c)
?????add|=b;
????c>>=2;
????b>>=1;
???}
???
???//檢查P2048對應位置的值
???if(d3&0x2)
???{
????add|=0x100;
???//?printf("[NandCorrectData] add|=0x100/n");
???}

???//計算發生錯誤的Bit
???bit=0;
???a=0x80;
???b=0x04;
???
??//?printf("d3 = 0x%0x/n",d3);

???for(i=0;i<3;i++)
???{
????if(d3&a)
????{
?????bit|=b;
??//???printf("Detected!/n");
????}
????else
????{
?????//printf("d3=0x%0x,a=0x%0x,d3&a=0x%0x/n",d3,a,d3&a);
??//???printf("Not Detected!/n");
????}
????a>>=2;
????b>>=1;
???}

???//進行數據糾正
???//printf("開始進行數據糾正/n");
???//printf("[NandCorrectData] Error byte: %5d,Error bit: %5d/n",add,bit);
???b=0x01;
???b<<=bit;
???a=dat[add];
???a^=b;
???dat[add]=a;
???return 1;
??}
??else
??{
???i=0;
???//printf("計算異或結果d1,d2,d3中1的個數/n");
???//計算異或結果d1,d2,d3中1的個數
???while(d1)
???{
????if(d1&0x01)
?????i++;
????d1>>=1;
???}
???while(d2)
???{
????if(d2&0x01)
?????i++;
????d3>>=1;
???}
???while(d3)
???{
????if(d3&0x01)
?????i++;
????d3>>=1;
???}

???if(i == 1)
???{
????//發生了ECC錯誤,即存放ECC數據的區域發生了錯誤,正常的情況下,無論多少
????//bit發生了反轉,都不會出現i=1的情況,出現了這種情況的原因只可能是ECC代碼本身有問題
????//printf("存放ECC數據的區域發生了錯誤/n");
????return 2;
???}
???else
???{
????//不可校正的ECC錯誤,多于1比特的錯誤即Uncorrectable Error
????//printf("Uncorrectable Error/n");
????return -1;
???}

??}
?}
?return -1;
}

int main(int argc, char* argv[])
{
?int temp,i,j,k,l,m=0,n=0;
?unsigned char ReadECC[3]={0,0,0},CalECC[3]={0,0,0};

?printf("*****************Program start******************/n");
?NandCalECC(dat,CalECC);
?printf("/n/n");

?for(i=0;i<512;i++)
?{
??j=0x80;

??l=dat[i];//記錄下人為修改之前的數據
??
??for(k=0;k<8;k++)
??{
???//m++;//記錄該循環執行的次數

???dat[i]^=j;//改變原始數據的某一個Bit

???j>>=1;??//為改變原始數據的下一個Bit做準備

???NandCalECC(dat,ReadECC);//計算修改過512字節數據的ECC值
?
???temp=NandCorrectData(dat,ReadECC,CalECC);//對數據進行ECC

???if(temp == 1)
???{
????if(dat[i]==l)
????//?printf("Success/n");???
?????n++;
????else
????{
?????m++;
?????printf("Failed at byte:%5d,bit:%5d/n",i,k);
????}
????//?printf("可以校正的錯誤/n");
????//?printf("dat[0]=0x%0x/n",dat[0]);
???}
???else if(temp == -1)
???{
????//printf("不可以校正的錯誤");
???}
???else if(temp == 0)
???{
????//printf("無錯誤");
???}
???else
???{
???//?printf("數據區發生了錯誤");
???}
???//printf("/n/n");
??}
?}
?printf("Success times:%5d,failed times:%5d/n",n,m);
?printf("*******************Program end******************/n");
?return 0;
}

??????????????????????????????????????????????????????????????????????????????????????????????????????????????- -20071127晚

/*************************************************************************************************************/
/**********************************************
* 如有疑問,歡迎聯系guopeixin@126.com
***********************************************/

/*************************************************************************************************************/

總結

以上是生活随笔為你收集整理的ECC的代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

青草视频在线免费 | 亚洲精品男人天堂 | av看片网| 午夜精品成人一区二区三区 | 欧美精品久久天天躁 | 亚洲四虎| 又黄又爽又色无遮挡免费 | 成人午夜电影在线观看 | 国产精品久久网 | 99精品在线视频播放 | 最新久久久 | 国产在线播放一区 | 92精品国产成人观看免费 | 欧美精品国产精品 | 久久精品一区二区三区中文字幕 | 久久成人亚洲欧美电影 | 久操视频在线播放 | av日韩不卡 | 国产一区二区三区在线 | 99免费在线播放99久久免费 | 制服丝袜在线 | av一级片| 色婷婷色| 婷婷丁香自拍 | 久久人人看| 亚洲国产精品一区二区久久,亚洲午夜 | 麻豆精品传媒视频 | 狠色在线 | 色综合久久综合网 | 国产精品黄色影片导航在线观看 | 久久影视精品 | 国产精品一区二区你懂的 | 国产麻豆果冻传媒在线观看 | 国产精品自拍在线 | 国产精品久久久久一区二区 | 精品人人人| 欧美另类亚洲 | 欧美另类交在线观看 | 天天射成人| 欧美日韩在线观看视频 | 欧美成人黄 | 97色婷婷 | 日本激情动作片免费看 | 国产香蕉视频 | 亚洲激情综合网 | 麻豆视频观看 | 99久久婷婷国产综合亚洲 | 日韩免费在线观看 | 五月婷婷婷婷婷 | 国产一区二区在线免费播放 | 99热精品国产一区二区在线观看 | 在线视频一区二区 | 日韩三级av | 日韩亚洲精品电影 | 黄色av影视 | 色噜噜日韩精品欧美一区二区 | 亚洲国产片色 | 日韩中文字幕a | 国产精品久久久久久久久搜平片 | 黄免费在线观看 | 91精品久久久久久综合五月天 | 欧美人人爱 | 国产精品 国产精品 | 国产精品久久久久影院 | 在线观看精品一区 | 婷婷婷国产在线视频 | 99激情网| 亚洲欧美999 | 中文字幕色综合网 | 日韩伦理片一区二区三区 | 国产伦理精品一区二区 | 国际精品久久久 | 97视频在线观看成人 | 六月激情网 | 色婷婷激婷婷情综天天 | 久久久黄色 | 中文字幕中文字幕在线中文字幕三区 | 深爱激情综合 | 五月婷婷激情六月 | 在线一区电影 | 亚洲视频在线观看网站 | 欧美综合在线视频 | 国产精品久久嫩一区二区免费 | 激情深爱五月 | 一区二区精 | 伊人狠狠色 | 91精品国产综合久久婷婷香蕉 | 久久免费高清视频 | 久久综合九色综合欧美狠狠 | 444av| 91精品视频在线免费观看 | 久草在线免费看视频 | 国产精品免费成人 | 国产这里只有精品 | 国产精品成人免费精品自在线观看 | 成年人网站免费在线观看 | 欧美人操人 | 国产一区在线不卡 | 久久久免费 | 久久久 激情 | 久草网在线观看 | 国产视频网站在线观看 | 久久精品视频4 | 久久久久久久久黄色 | 这里只有精品视频在线观看 | 草久久av| 亚洲精品乱码久久久久久写真 | av在线日韩| 日韩精品一区在线播放 | 91丨九色丨国产女 | 天天操夜夜爱 | 有码视频在线观看 | 日韩videos高潮hd| 久久久免费网站 | 久久久成人精品 | 亚洲黄色片在线 | 91最新地址永久入口 | 国产精美视频 | 超碰日韩在线 | 久久99九九99精品 | 成人一级| 五月激情亚洲 | 午夜视频在线瓜伦 | 色夜影院 | 18久久久久久 | 伊人婷婷 | 手机看片中文字幕 | 亚洲国产精品久久久久婷婷884 | 国产成人三级在线播放 | 精品一区二三区 | 日韩av电影免费在线观看 | 2019中文字幕网站 | 特级西西444www大精品视频免费看 | 久久天天操 | 激情五月亚洲 | 日韩久久久久久久久 | 久久久不卡影院 | 在线色资源 | 亚洲精品国产成人av在线 | 91污污视频在线观看 | 久久伊人婷婷 | 亚洲黄网站 | 国产精品理论片 | 国产精品手机看片 | 久草在线免费资源站 | 国产一级做a爱片久久毛片a | 狠狠干中文字幕 | 91亚色免费视频 | 欧洲精品在线视频 | 日韩欧美电影在线 | 成人资源在线播放 | 久久99久国产精品黄毛片入口 | 欧美 日韩 国产 成人 在线 | 国产字幕在线观看 | 国产综合久久 | 黄色毛片在线观看 | 成人免费观看a | 色综合天天综合网国产成人网 | 91久久在线观看 | 黄色a视频免费 | 国产精品伦一区二区三区视频 | 最新av在线网址 | 欧美影院久久 | 五月开心婷婷 | 成人精品999 | 色欧美成人精品a∨在线观看 | 日韩美女免费线视频 | 国产精品毛片一区 | 婷婷丁香色综合狠狠色 | 久久天堂亚洲 | 成人黄大片 | 免费网站污| 成人欧美一区二区三区在线观看 | 91精品免费在线 | 六月丁香综合网 | 久久超级碰视频 | 国产精品视频你懂的 | 国产无套精品久久久久久 | 不卡av免费在线观看 | 中文字幕在线观看国产 | 国产69精品久久app免费版 | 天天综合成人 | 最近中文字幕免费观看 | 国产手机在线精品 | 91人人射| 婷婷五综合 | 99精品在线免费在线观看 | 日韩电影在线一区二区 | 日韩激情视频在线 | 麻豆91精品 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 亚洲精品动漫成人3d无尽在线 | 免费一级片久久 | 免费久草视频 | 日韩精品免费在线观看视频 | 色噜噜在线观看视频 | 伊人狠狠操 | 成人欧美一区二区三区黑人麻豆 | www.狠狠干 | 亚洲最新视频在线 | 国产亚洲精品久久 | 99视频在线精品免费观看2 | 国产成人一二片 | 日本久久久精品视频 | 亚洲精品视频 | 成人免费共享视频 | av不卡中文 | 久久亚洲综合色 | 在线午夜电影神马影院 | 精品一区二三区 | 免费男女羞羞的视频网站中文字幕 | av福利在线 | 天天草天天干 | 中文字幕电影一区 | 久久国产精品久久精品 | 国产精品久久99综合免费观看尤物 | 国产一区精品在线 | 亚洲精品99 | 九九热在线观看 | 亚洲免费高清视频 | 中文字幕在线观看视频一区二区三区 | 精品久久久免费 | 在线观看一级 | 国产69久久精品成人看 | 狠狠色丁香婷婷 | 激情av网址 | 亚洲在线视频免费观看 | 在线观看国产日韩 | 欧美成人理伦片 | 免费在线看成人av | 国产精品综合在线观看 | 国产伦精品一区二区三区在线 | 午夜精品久久久久久久99 | 九九视频在线播放 | 91精品黄色 | 国产精品综合久久久 | 免费福利片| 欧美一级视频在线观看 | 美女性爽视频国产免费app | 久久久国产99久久国产一 | 久久久久久久久久久久99 | 黄色影院在线免费观看 | 日韩精品无 | 色噜噜狠狠狠狠色综合久不 | 欧美精选一区二区三区 | 亚洲在线视频免费 | www.久久91| www.狠狠 | 日韩手机在线观看 | 日韩性xxx| 国产一级视频在线 | 综合视频在线 | 99精品在线视频观看 | 日韩免费在线观看视频 | 日日夜夜亚洲 | 日韩天天干 | 成人a v视频 | 日韩精品一区二区三区免费观看视频 | 成人精品99 | 黄色软件网站在线观看 | 亚洲区另类春色综合小说校园片 | 91亚洲精品乱码久久久久久蜜桃 | 成人在线免费观看网站 | 成人av午夜 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 国产精品麻豆一区二区三区 | 欧美国产日韩一区二区三区 | 国产一区二区电影在线观看 | 亚洲精品在线观看av | 日本精品一区二区三区在线播放视频 | 久久精品视频在线看 | 成人app在线播放 | 99在线热播 | 婷婷草| zzijzzij亚洲日本少妇熟睡 | 亚洲一区二区精品在线 | 亚洲精品免费观看视频 | 国产一在线精品一区在线观看 | 精品不卡av | 奇米影视999 | 在线观看免费成人 | 久久久久亚洲精品男人的天堂 | 一区二区三区免费看 | 国产一区在线免费 | 国产精品视频永久免费播放 | 精品专区一区二区 | 天天av综合网 | 夜夜夜精品 | 午夜色影院 | 日韩欧美视频在线免费观看 | 九九99视频 | 91手机视频在线 | 色资源网免费观看视频 | 日韩免费电影网 | 国产精品国产三级国产不产一地 | 亚洲jizzjizz日本少妇 | 黄色软件在线观看 | 最新日本中文字幕 | 中文字幕免费观看全部电影 | 日韩中文字幕免费视频 | 久久综合婷婷国产二区高清 | 国产高清av| av成人资源| 欧美二区视频 | 国产视频每日更新 | 精品国产123 | 五月婷香蕉久色在线看 | 国产毛片久久 | 欧美高清成人 | 九九热精品视频在线播放 | 99精品国产aⅴ | 婷婷色网视频在线播放 | 国产一区二区久久久久 | 国产一线二线三线在线观看 | 欧洲亚洲精品 | 婷婷免费视频 | 2023天天干 | 免费观看国产成人 | 欧美一区二区在线免费看 | 天天草天天干天天射 | 五月婷婷激情网 | 亚洲精品国偷拍自产在线观看 | 91精品免费 | 一级免费av | 丁香六月网 | 国产一级免费视频 | 草久草久 | 中文字幕日韩电影 | 亚洲黑丝少妇 | 国产精品一区二区三区99 | 波多野结衣在线视频免费观看 | 91九色视频网站 | 免费男女羞羞的视频网站中文字幕 | 香蕉视频亚洲 | 亚洲黄色影院 | 欧美日韩国产一区二区在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 亚洲成aⅴ人在线观看 | 欧美日韩中文在线观看 | 国产精品久久久久久久久久不蜜月 | 国产精品乱码一区二三区 | 久久综合干| 激情欧美一区二区三区 | 视频直播国产精品 | 久久国产精品二国产精品中国洋人 | 中文字幕在线播放日韩 | 在线导航av | 美女黄濒 | 色欧美综合 | 国产亚洲欧美在线视频 | 九九热在线精品视频 | 国产乱老熟视频网88av | 亚洲第一香蕉视频 | 综合亚洲视频 | 国产一区在线观看免费 | 97视频免费在线看 | 在线免费色 | 天天射综合网视频 | 亚洲国产精品视频在线观看 | 97香蕉超级碰碰久久免费软件 | www.亚洲视频| 一级成人免费视频 | 久久视频6 | 91精品视频一区 | 午夜精品一区二区三区视频免费看 | 夜夜操天天摸 | 欧美精品久久久久久久久久丰满 | 亚洲高清资源 | 精品久久久久久久久久 | 夜色资源站wwwcom | 国产一级精品在线观看 | av中文天堂 | 国内精品久久久久久久久久清纯 | 日韩资源在线观看 | 91最新在线视频 | 亚洲四虎| 久久精品精品 | 午夜性生活片 | 亚洲激情综合网 | 97久久精品午夜一区二区 | 国产精品五月天 | 久久99精品国产99久久6尤 | 国产99久久 | 日韩欧美在线一区 | 色婷婷久久一区二区 | 超碰在线人人 | 久久综合精品一区 | 国产精品一二三 | 国产成人三级在线播放 | 色婷婷欧美 | 国产精品大全 | 亚洲码国产日韩欧美高潮在线播放 | 99免费视频 | 亚洲视频大全 | 九九一级片 | 亚洲欧美日韩国产一区二区 | 久草在线视频在线 | 精品国产乱码久久久久久三级人 | 日韩在线播放av | 久艹在线播放 | 三级动态视频在线观看 | 久久精品精品电影网 | 国产短视频在线播放 | 久久理论视频 | 五月天色站 | 九九精品在线观看 | 香蕉视频在线免费看 | 精品久久久久久久久久 | 日韩电影在线观看一区 | 中文字幕第一页av | 在线免费观看视频一区二区三区 | 久久精品视频免费播放 | 狠色狠色综合久久 | 99成人免费视频 | 欧美少妇影院 | 综合黄色网 | 中文字幕日韩精品有码视频 | 91在线播| 国产在线精 | 久黄色 | 日韩视频中文 | 中文字幕 国产视频 | 999国产 | 亚洲最新毛片 | 久久激情片| 亚洲精品国产精品国自 | 国产精品视频app | 国产网站色| 91在线操| 亚洲免费观看在线视频 | 国产在线91精品 | 成人av一区二区三区 | 精品国产一区二区三区久久久蜜月 | 黄色三级免费看 | 美女网站在线 | 日韩91在线 | 国产精品国产三级国产专区53 | 亚洲激情免费 | 91在线你懂的 | 欧美日韩a视频 | 综合色婷婷 | 日韩xxxx视频 | 亚洲成人av一区 | 亚a在线 | 国产精品视频观看 | 国产精品一区二区三区99 | 色wwww| 国产精品av免费在线观看 | 菠萝菠萝在线精品视频 | 亚洲人视频在线 | 婷婷丁香社区 | 日本中文字幕在线免费观看 | av三区在线 | 激情婷婷综合 | 99久久精品久久久久久清纯 | 欧美午夜性生活 | 99久久激情视频 | 久久久麻豆 | 五月婷婷丁香综合 | 欧美a在线免费观看 | 免费高清看电视网站 | 久久久2o19精品| 最新av网站在线观看 | 国产成人精品亚洲日本在线观看 | 日韩欧美有码在线 | 天天在线操 | 玖玖综合网 | 国产精品久久久久婷婷二区次 | 亚洲综合欧美精品电影 | 国产视频精选 | 中文字幕在线播放日韩 | 精品国产一区二区三区久久 | 91av中文| 精品999国产 | 国产成人综 | 欧美国产不卡 | 精品国产一区二区三区久久久蜜月 | 久久国产精品久久精品国产演员表 | 久久精品伊人 | 久久久影片| 国产精品白丝jk白祙 | 久久国产精品久久国产精品 | 99精品视频网 | 午夜美女av| 欧美日韩国产亚洲乱码字幕 | 国产999 | 永久免费av在线播放 | 国产亚洲精品久久久网站好莱 | 色婷婷av一区| 久久伊人操| 91成人在线免费观看 | 日日干,天天干 | 中文资源在线播放 | 国产涩图| 午夜91视频| 91在线入口 | 国产高清黄 | 国产一区欧美日韩 | 深爱开心激情网 | 99精品国产一区二区三区麻豆 | 欧美日韩亚洲精品在线 | 天天操天天草 | 黄色大片免费网站 | 久久超碰在线 | 奇米网777 | 亚洲欧美视频在线播放 | 亚洲精品字幕 | 久久久久久久久黄色 | 在线欧美中文字幕 | 中文在线免费观看 | 日韩精品在线看 | 国产在线一区二区 | 99亚洲精品在线 | 国产精品入口麻豆 | 中文av字幕在线观看 | 日韩1级片 | 中字幕视频在线永久在线观看免费 | 亚洲精品国产区 | 精品一区二区电影 | av网站在线观看免费 | 国产精品美女久久久久久久久久久 | 亚洲黄色成人网 | 一区二区精品在线视频 | 四虎成人精品在永久免费 | 欧美精品中文 | 夜夜夜夜操 | 五月婷婷丁香综合 | 色在线国产 | 黄av免费在线观看 | 国产男女免费完整视频 | 国产日韩一区在线 | 少妇性xxx | 欧美在线视频日韩 | a天堂中文在线 | 99色免费| 亚洲精品动漫成人3d无尽在线 | 欧美色黄| 国产又粗又猛又爽又黄的视频先 | 国产麻豆传媒 | 亚洲va欧洲va国产va不卡 | 成人黄色在线 | 91久久人澡人人添人人爽欧美 | 亚洲视频在线观看 | 中文字幕第一页在线 | 国产生活一级片 | 久久久精品欧美一区二区免费 | 天天操天天干天天爽 | 欧美日韩免费观看一区二区三区 | 久久综合综合久久综合 | 成人毛片在线观看视频 | 五月婷婷视频在线观看 | 丰满少妇久久久 | 日韩欧美视频 | 九9热这里真品2 | 美女久久久 | 日韩精品一区二区三区免费观看 | 在线视频 日韩 | 日韩欧美99| 国产精品免费在线 | se视频网址 | 久久艹99| 日本黄色免费看 | 黄色网www| 久久狠狠一本精品综合网 | 色伊人网| 欧美日一级片 | 免费在线观看国产黄 | 欧美日韩一级久久久久久免费看 | 人人看人人草 | 国产精品久久久久久久久久99 | www激情com| 欧美五月婷婷 | 色婷婷一| 中文字幕在线看视频国产 | 亚洲高清av在线 | www.天天色 | 99爱精品视频 | 69国产精品成人在线播放 | 91麻豆文化传媒在线观看 | 日韩在线网 | 亚洲精品黄 | 亚洲婷婷综合色高清在线 | 日韩一区二区三区高清在线观看 | 看片网站黄色 | 美女视频黄的免费的 | 中文字幕一区二 | 永久免费看av| 成年人在线 | 国产国产人免费人成免费视频 | 午夜久久影视 | 日韩理论电影在线观看 | av动图 | 日韩av一区二区在线 | 欧美整片sss | 亚洲视频免费在线观看 | 国产亚洲精品久久 | 九九导航 | 国产精品不卡视频 | 超碰97人人射妻 | 69国产盗摄一区二区三区五区 | 99国产视频 | 91在线日本| 久久免费视频在线观看30 | 日本中文字幕久久 | 热久久最新地址 | 九色视频自拍 | 一本一本久久a久久精品综合小说 | 国产精品一区二区中文字幕 | 精品国产欧美 | 国产剧情一区二区在线观看 | 国产不卡视频在线 | 天天人人综合 | 狠狠的干狠狠的操 | 欧美aa在线 | 久久五月情影视 | 9797在线看片亚洲精品 | 国产高清一 | 亚洲精品午夜国产va久久成人 | 欧美韩日视频 | 伊人狠狠干 | 久久高清免费视频 | 日韩色视频在线观看 | 国产精品久久久亚洲 | 91av中文字幕 | 碰超在线 | 国精产品满18岁在线 | 日日爽夜夜操 | 免费黄色av | 天天激情站 | 亚洲精品久久久久久中文传媒 | 免费av高清| 久久国产视频网站 | 久久国产区 | 国产精品免费在线 | 欧美一级专区免费大片 | 美女视频网 | 日本电影久久 | 国产综合片 | 美女视频黄免费网站 | 樱空桃av | 91亚洲激情| 91精选在线 | 国产精品久久久影视 | 亚洲在线视频网站 | 亚洲一区精品人人爽人人躁 | 最新午夜电影 | 国产精品18p| 国产粉嫩在线 | 91精品麻豆 | 久久草av | 亚洲成人av片在线观看 | 国产精品免费久久久久影院仙踪林 | 欧美性生活一级片 | 一级国产视频 | 91福利专区 | 手机在线黄色网址 | 四虎永久国产精品 | 中文字幕在线观看视频一区二区三区 | 国产精品v欧美精品 | 亚洲精品理论片 | 国产伦理久久精品久久久久_ | 五月婷婷开心 | 亚洲艳情| 97超碰国产精品女人人人爽 | 激情电影影院 | 日韩高清一二三区 | 丁香影院在线 | 国产日韩中文在线 | 亚洲aⅴ乱码精品成人区 | 色国产精品一区在线观看 | 色婷婷免费| 亚洲精品在线播放视频 | 手机av观看 | 人人搞人人干 | 久久久精品99 | 在线看日韩av | 久久最新网址 | 国产精品成人在线 | 射综合网 | 96精品视频 | 亚洲电影一区二区 | 激情五月网站 | 国产成视频在线观看 | 精品国产诱惑 | 日日干日日操 | 色婷婷九月 | 97精品国产97久久久久久春色 | 亚洲精品乱码白浆高清久久久久久 | 国产毛片久久 | 久久免费看a级毛毛片 | 黄色成人av| 超碰97中文 | 日韩欧美精品免费 | 999久久久久久久久6666 | av色影院 | 在线成人av | 不卡的av在线 | 在线日韩中文 | 激情五月色播五月 | 麻豆视频免费看 | 久久精品香蕉视频 | 综合网久久| 中文在线免费视频 | 91精品在线免费观看视频 | 久久久久免费精品视频 | 黄色一集片 | 日韩视频中文字幕 | 成人久久影院 | 久久精品国产美女 | 日韩大片在线免费观看 | 久久久久久久久亚洲精品 | 国产99久久| 亚洲免费高清视频 | 欧美精品久久久久久久亚洲调教 | 一区二区三区四区影院 | 麻豆视频免费入口 | 在线观看完整版 | av福利在线免费观看 | 91成年视频 | 日韩资源在线 | 久久久久亚洲精品男人的天堂 | 欧美精品一区二区在线观看 | 久久精品国产99国产 | 一区二区三区四区五区在线视频 | 亚洲成熟女人毛片在线 | 欧美精品久久久久 | 99精品免费在线观看 | 欧美日比视频 | 日韩精品一区二区三区电影 | 五月亚洲综合 | 亚洲视频第一页 | 国内综合精品午夜久久资源 | 久久久久国产精品午夜一区 | 日韩电影中文,亚洲精品乱码 | 久草在线手机观看 | 国产在线国偷精品产拍免费yy | 久久精品99国产国产 | 国产日韩中文字幕 | 五月色综合 | 欧美精品亚洲二区 | 国产精品久久久久久久免费大片 | 中文字幕亚洲欧美日韩2019 | 91福利在线观看 | 四虎在线免费观看视频 | 人人爱爱 | 国产aa免费视频 | 九九色网 | 探花视频在线观看 | 粉嫩av一区二区三区四区五区 | 日本不卡一区二区三区在线观看 | 2022中文字幕在线观看 | 成人中文字幕在线 | 视频一区在线免费观看 | 久久久久亚洲国产精品 | 黄色av免费电影 | 天天操人人要 | 亚洲成人资源在线 | 欧美久久久久久久久久久久 | 欧美肥妇free | 韩日精品中文字幕 | 国产人成精品一区二区三 | 精品福利视频在线观看 | 中文资源在线观看 | 天天草天天干天天射 | 日本mv大片欧洲mv大片 | 亚洲美女精品区人人人人 | 婷婷去俺也去六月色 | 91精品视频一区 | 麻豆视频在线免费看 | 天天爽夜夜操 | 免费看黄色毛片 | 国产乱码精品一区二区蜜臀 | 久久人人97超碰国产公开结果 | 国产成人a亚洲精品 | 97爱爱爱| 69人人 | 国产成人一区二区三区在线观看 | 又大又硬又黄又爽视频在线观看 | 午夜免费电影院 | 国产亚洲91 | 波多野结衣在线中文字幕 | 热久久免费视频精品 | 激情av资源 | 成人久久视频 | 中文字幕久久精品 | 亚洲精品美女在线观看 | 久久99国产精品二区护士 | 日日干天天插 | 免费国产一区二区 | 99国产精品免费网站 | 色播五月婷婷 | 粉嫩av一区二区三区四区在线观看 | 毛片永久新网址首页 | 亚洲黄色成人 | 黄网站色 | 国产视频在线观看一区 | japanesexxxhd奶水 91在线精品一区二区 | 国产 欧美 日产久久 | 黄色a视频免费 | 日韩精品一区不卡 | 夜色在线资源 | 欧美亚洲精品一区 | 国产二区精品 | 91麻豆精品国产91久久久无限制版 | 精品国产色 | 伊人五月天 | 黄色成人av | 免费观看av网站 | 黄www在线观看 | 国产在线免费av | 国产精品一区二区免费视频 | 国产精品美女网站 | 成人91视频 | 天天操综合网站 | 久久国产精品第一页 | 日韩有码在线播放 | 涩涩网站在线播放 | 中文字幕在线播放一区二区 | 在线成人欧美 | 热精品| 99精品国产在热久久下载 | 91久久久久久久一区二区 | 麻豆国产精品永久免费视频 | 99视频国产精品免费观看 | 99精品乱码国产在线观看 | 国产精品久一 | 国产精品xxxx18a99 | 欧美xxxxx在线视频 | 免费在线观看国产黄 | 欧美国产日韩一区二区 | 国产一区二区在线看 | 成人精品久久久 | 亚洲激情网站免费观看 | 欧美国产精品久久久久久免费 | 久久久久久久久久久福利 | 黄色大片日本免费大片 | 国产又粗又长的视频 | 国产91精品一区二区麻豆亚洲 | 免费手机黄色网址 | 免费a视频 | 欧美日韩超碰 | 黄色精品久久久 | 亚洲精品美女久久久 | 久久久五月婷婷 | 成人天堂网 | 91香蕉国产在线观看软件 | 欧美一级片在线免费观看 | 国产自偷自拍 | 欧美一级视频在线观看 | 大片网站久久 | 狠狠做深爱婷婷综合一区 | 日本视频高清 | 在线欧美最极品的av | 在线观看免费版高清版 | 狠狠干在线 | 992tv人人网tv亚洲精品 | 欧美精品网站 | a午夜在线 | 伊人狠狠 | 天堂av中文字幕 | 欧美亚洲国产精品久久高清浪潮 | 久久久性 | 超碰在线日韩 | 在线观看视频亚洲 | 少妇高潮流白浆在线观看 | 中文字幕在线影院 | 狠狠躁18三区二区一区ai明星 | 午夜视频一区二区三区 | 色婷婷狠狠五月综合天色拍 | 国产视频导航 | 美女网站免费福利视频 | 91中文在线视频 | 中文字幕精品一区 | 国产精品福利在线 | 在线中文字幕视频 | www.国产视频 | 97国产精品一区二区 | 欧美精品久久久久久久久久久 | 国产一级在线播放 | 色婷婷精品| 婷婷5月色| 欧美一区二视频在线免费观看 | 欧美日韩一区二区三区在线免费观看 | 一二区精品 | 日韩视频在线不卡 | 国产97在线看 | 久草在线欧美 | 最新av网址在线观看 | 玖玖在线视频观看 | 中文国产字幕在线观看 | 日本中文字幕视频 | 色婷av | 黄色小网站在线 | 日韩专区 在线 | 国产精品 日韩 欧美 | 亚洲另类交 | 色综合久久88色综合天天免费 | 国产精品久久久久aaaa | 爱爱av在线 | 国产成人精品999 | 国产精品亚洲综合久久 | 精品久久久久久久久久久久久久久久 | 久久久五月婷婷 | 99久久99久久综合 | 91看片成人 | 亚洲国产成人av网 | 免费在线观看日韩视频 | 日本中文一级片 | 天天视频亚洲 | 九九热在线播放 | 免费看的黄网站软件 | 婷婷激情综合五月天 | 日韩网站在线播放 | www.婷婷com | 欧美精品久久久久久久亚洲调教 | 91av超碰| 99视频在线免费看 | 五月色婷 | 日韩高清免费无专码区 | 婷婷国产精品 | 久久久久久久久久国产精品 | 国产91av视频在线观看 | 天天色天天干天天 | 国产精品99久久久久久久久久久久 | 免费观看91| 亚洲综合成人在线 | 国产精品免费高清 | 国产一区二区三区视频在线 | 久久影院亚洲 | 日本韩国精品一区二区在线观看 | 日本丶国产丶欧美色综合 | 欧美一级性生活 | 国产麻豆精品一区 | 久草电影在线观看 | avcom在线 | 日日天天狠狠 | 在线观看日韩av | 亚洲狠狠干 | 亚洲精品美女在线观看播放 | 色婷婷导航 | 97在线观视频免费观看 | 黄色毛片在线 | 久久久久久久久免费视频 | 欧美视频在线观看免费网址 | 中文字幕中文中文字幕 | 色综合久久88色综合天天 | 午夜精品视频免费在线观看 | 国产成人精品一区二区在线观看 | 精品一区二区三区久久 | 91色综合| 五月天天在线 | 五月天六月婷 | 综合天堂av久久久久久久 | 五月婷婷深开心 | 国际精品久久久久 | 欧美日韩精品电影 | 日韩精品一区二区免费 | 婷婷丁香av| 亚洲九九 | 国产精品成人免费 | 亚洲一区网 | 午夜精选视频 | 久久综合视频网 | 天天射网站| 九九免费观看视频 | 99精品在这里 | 国产成人三级一区二区在线观看一 | 精品久久99| a级国产乱理论片在线观看 特级毛片在线观看 | 丁香六月在线 | 久日视频 | 午夜私人影院 | 日韩中文在线观看 | 久久久久国产精品一区二区 | 91av片| 日韩在线观看影院 | 欧美淫aaa免费观看 日韩激情免费视频 | www天天操| www色网站 | 日韩小视频网站 | 国产精品电影一区二区 | 亚洲香蕉在线观看 | 天堂av在线网站 | 黄色片网站免费 | 午夜久久影院 | 免费看日韩片 | x99av成人免费 | 一级免费av | 波多野结衣视频网址 | 我要看黄色一级片 | 一区二区av | 免费福利在线播放 | 成年人视频免费在线 | 国产精品久久嫩一区二区免费 | 天天色天天爱天天射综合 | 最新国产在线 | 国产精品午夜在线 | 综合视频在线 |