亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? k9g8g08.c

?? s3c6410的jtag程序sjf6410_1.0
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
#include <stdio.h>
#include "..\include\pin6410.h"
#include "..\include\Jtag.h"
#include "..\include\K9g8g08.h"
#include "..\include\sjf6410.h"


//#define BAD_CHECK	(0)
#define BAD_CHECK	(1)
#define ECC_CHECK	(0)
 
//#define unsigned char U8

extern void enc_reg(msg_len, fdin, chk_parity);
extern void ECC_GenM(U8 *pEcc, U32 *pBuf, U8 nBW);
void Make_1bit_ECC(int spareBuf_addr);
void Make_4bit_ECC(int spareBuf_addr);
void Make_4bit_ECC2(int spareBuf_addr);
void Make_4bit_SpareECC(int spareBuf_addr);
void Make_4bit_SpareECC2(int spareBuf_addr);
static int NF_2Plane_WritePage(U32 block,U32 page,U8 *buffer,U8 *spareBuf,U8 *spareBuf2);

// 1bit ECC use only 4Byte, 4th Byte is 0xff
U8 chk_parity_1bitECC[4] = {0xff,0xff,0xff,0xff};	// 1bit ECC Data

// 4bit ECC use only 7Byte, 8th Byte is 0x00.
unsigned char chk_parity[8] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00};	// 4bit ECC Data


U8 spareBuf[64]=
	{0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	 
U8 spareBuf2[64]=
	{0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	 
U8 spareECC_Buf[512];	
U8 spareECC_Buf2[512];
	 
int msg_len = 512;
U8 *srcPt;
U32 *srcPt32;


//*************** JTAG dependent functions ***************
void K9g8g08_JtagInit(void);
static void NF_CMD(U8 cmd);
static void NF_ADDR(U8 addr);
static void NF_Xm0CSn2_OUT_L(void);
static void NF_Xm0CSn2_OUT_H(void);
static U8 NF_RDDATA(void);
static void NF_WRDATA(U8 data);
static void NF_WAITRB(void);
//*************** H/W dependent functions ***************
static U16 NF_CheckId(void);
static int NF_EraseBlock(U32 blockNum);
static int NF_ReadPage(U32 block,U32 page,U8 *buffer,U8 *spareBuf);
static int NF_WritePage(U32 block,U32 page,U8 *buffer,U8 *spareBuf);
//buffer size is 512 bytes
static int NF_IsBadBlock(U32 block);
static int NF_MarkBadBlock(U32 block);
static void NF_Reset(void);
static void NF_Init(void);
//*******************************************************

void K9g8g08_PrintBlock(void);
void K9g8g08_Program(void);
void K9g8g08_Program_SLC(void);
void K9g8g08_2Plain_Program(void);


static U32 targetBlock;	    // Block number (0 ~ 4095)
static U32 UseBlockNumber;	
static U32 targetSize;	    // Total byte size 
static U32 barcount=0;
static U32 spacecount=0;
static U8 bar[34];
static U8 space[34];

static U8 blockBuf[0x80000]; 

static void *function[][2]=
{
    (void *)K9g8g08_Program,		"K9g8g08 Program",
    (void *)K9g8g08_Program_SLC,	"K9g8g08 Program like SLC (34page fix)",
    (void *)K9g8g08_2Plain_Program, "K9g8g08 two Plain program",
    (void *)K9g8g08_PrintBlock,		"K9g8g08 Print blkPage  ",
    (void *)1,			    	    "Exit                ",
    0,0
};


void K9g8g08_Menu(void)
{
    int i;
    U16 id;

	printf("\n[K9G8G08 NAND Flash JTAG Programmer]\n");
    K9g8g08_JtagInit();
    NF_Init();    
    

    id=NF_CheckId();
    
	if((id!=0xecd3)&&(id!=0xecd5)) // K9g808Q0A Device Id = dc    : msp4 2006/09/27
    {
		printf("ERROR: K9G8G08 or K9LAG08 is not detected.\n Detected ID=0x%x.\n",id);
		return;
    }
    else if (id == 0xecd3)
		printf("K9G8G08 is detected. ID=0x%x\n\n",id);
    else if (id == 0xecd5)
		printf("K9LAG08 is detected. ID=0x%x\n\n",id);

    while(1)
    {

	i=0;
    	while(1)
	{   //display menu
	    printf( "%2d : %s\n",i,function[i][1]);
	    i++;
	    if((int)(function[i][0])==0)
	    {
		printf("\n");
		break;
	    }	    
	}
	
	for(barcount=0;barcount<34;barcount++){
		bar[barcount] = '=';
		space[barcount] = ' ';
	}

	printf("Select the function to test : ");
	scanf("%d",&i);
	if( i>=0 && (i<((sizeof(function)/8)-2)) ) 
	    ( (void (*)(void)) (function[i][0]) )();  
	else
	    break; //Exit menu
    }
}

void K9g8g08_Program(void)
{
    U32 i;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 percent=0;
    U32 progSize=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash Writing Program]\n");    
    printf("\nSource size:0h~%xh\n",imageSize-1);
	printf("\nAvailable target block number : 0~4096\n"); // msp4 2006.09.27 
    printf("Input target block number : ");
    scanf("%d",&targetBlock);    
    blockIndex=targetBlock;
    printf("blockIndex = %d\n", blockIndex);
    while(1)
    {
	if(noLoad==0)
	{
		LoadImageFile(blockBuf,imageSize);
	}                                       
	noLoad=0;		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif

	for(i=0;i<(imageSize/(2048*128)+1);i++){
		if(!NF_EraseBlock(blockIndex + i))
		{
		    blockIndex++;   // for next block
		    noLoad=1;
		    continue;
		}
		printf("block #%d erase done\n",blockIndex + i);
	}
		
	srcPt=blockBuf;	

#if 0 // in case of "for(i=0;i<34;i++)", display.
	printf("Page Program |");
#else
	printf("page programing : #0");
#endif
	printf("%c",0x0D);
	

	//for(i=0;i<34;i++)
	for(i=0;i<(imageSize/2048 + 1);i++)
	{						
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_4bit_ECC(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC(56);// 56 ~ 63(Spare ECC Copy)		
		
		srcPt=blockBuf+(i*2048);// back to the 'srcPt' value.	
		/*******************************************************/	
		
		if(!NF_WritePage(blockIndex,i,srcPt,spareBuf))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }

		srcPt+=2048;	// Increase buffer addr one page size

	    //printf("page #%d program done", i);

#if 0	// in case of "for(i=0;i<34;i++)", display.
	    printf("Page Program |");
	    for(barcount=0; barcount<(i+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<34-(i+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    printf("| %d%% page #0 ~ #%d",(i+1)*3,i);
	    printf("%c",0x0D);
#else
		printf("page programing : #0 ~ #%d", i);
	    printf("%c",0x0D);
#endif
	}
	
	printf("\npage program done\n\n");
	//printf("block %d, %d program complete!\n\n", blockIndex, blockIndex+1);	
	
    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}
	

	progSize+=imageSize;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

void K9g8g08_Program_SLC(void)
{
	U32 i, pagenum = 0;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 progSize=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash Writing Program]\n");
    
    printf("\nSource size:0h~%xh\n",imageSize-1);
	printf("\nAvailable target block number : 0~4096\n"); // msp4 2006.09.27 
    printf("Input target block number : ");
    scanf("%d",&targetBlock);    
    blockIndex=targetBlock;
    printf("blockIndex = %d\n", blockIndex);
    while(1)
    {
	if(noLoad==0)
	    LoadImageFile(blockBuf,0x40000);// 1block = 128page = 256KByte = 0x40000
		                                // but used the 34page.
	noLoad=0;
		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif

	if(!NF_EraseBlock(blockIndex))
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
	
	printf("\nblock %d erase done\n",blockIndex);
	srcPt=blockBuf;	
	printf("Page Program |");
	printf("%c",0x0D);
	
	// K9G8G08(1 block = 128 page) 1st block
	//for(i=0;i<128;i++)    
	for(i=0;i<34;i++)    // Block 0 image : only 34 page
	{	
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_1bit_ECC(16);// 16 ~ 19(Sector 0)
		Make_1bit_ECC(20);// 20 ~ 23(Sector 1)
		Make_1bit_ECC(24);// 24 ~ 27(Sector 2)
		Make_1bit_ECC(28);// 28 ~ 31(Sector 3)
				
		srcPt=blockBuf+(i*2048);// back to the 'srcPt' value.		
		/*******************************************************/	
		
	    if(!NF_WritePage(blockIndex,pagenum,srcPt,spareBuf))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }
	    
	    pagenum = pagenum + 2;

		srcPt+=2048;	// Increase buffer addr one page size
	    
	    //printf("page #%d program done", i);	    
		printf("Page Program |");
	    for(barcount=0; barcount<(i+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<34-(i+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    printf("| %d%% page #0 ~ #%d",(i+1)*3,i);
	    printf("%c",0x0D);
	}
	
	printf("page program done                                                     \n");
	printf("block %d program complete!\n\n", blockIndex);	
	
    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}
	
	progSize+=0x40000;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

void K9g8g08_2Plain_Program(void)
{
    U32 i;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 progSize=0;
    U32 percent=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash two plane Writing Program]\n");
    
    printf("\nSource size:0h~%xh\n",imageSize-1);
    printf("Available target two plane block number : 0~2096\n");
    printf("Input target block number : ");
    scanf("%d",&targetBlock);   
    
    blockIndex=targetBlock;
    printf("two plane block index = %d\n", blockIndex);
    printf("physical block = %d, %d\n", blockIndex*2, blockIndex*2+1);
    while(1)
    {
	if(noLoad==0)
	{	    
	    LoadImageFile(blockBuf,0x80000);// 2block = 2*128page = 2*256KByte = 0x80000
	}
	noLoad=0;
		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif
	
	NF_EraseBlock(blockIndex*2);
	NF_EraseBlock(blockIndex*2+1);
		
	printf("\nblock %d, %d erase done\n",blockIndex*2,blockIndex*2+1);	
	srcPt=blockBuf;	
	printf("Page Program |");
	printf("%c",0x0D);
	
	// K9G8G08(1 block = 128 page) 2~3 block
	for(i=0;i<128;i++)    // if y download the testcode or OS image, y replace 4 to 64.
	{	
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_4bit_ECC(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC(56);// 56 ~ 63(Spare ECC Copy)	
		
		Make_4bit_ECC2(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC2(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC2(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC2(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC2(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC2(56);// 56 ~ 63(Spare ECC Copy)	
		
		srcPt=blockBuf+(i*4096);// back to the 'srcPt' value.	
		/*******************************************************/	
		
		//printf("\nSpare Area #%d: ", i);
		//for(j=0;j<64;j++)
		//	printf("%X ",spareBuf[j]);
			
		//printf("\n");  		
	    
	    if(!NF_2Plane_WritePage(blockIndex,i,srcPt,spareBuf,spareBuf2))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }
	    		
		srcPt+=4096;	// Increase buffer addr 2 page size
	 	percent = 0.78125*(i+1);
	    //printf("page #%d program done\n", i);
	    printf("Page Program |");
	    
	    for(barcount=0; barcount<(i/4+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<32-(i/4+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    	
	    printf("| %d%% page #0 ~ #%d", percent, i);
	    printf("%c",0x0D);
	}
	
	printf("page program done                                                     \n");
	printf("block %d, %d two plane program complete!\n\n",blockIndex*2,blockIndex*2+1);

    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}	

	progSize+=0x80000;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

/** MLC Spare Area Layout using like SLC(64Byte per 1page(2KByte)) **/
//
//  0      : Bad Mark(0xff)
//  1      : Clean Mark(0x00)
//  2 ~ 3  : Reserved(0xff)
//  4 ~ 15 : Spare context(0xff)
// 16 ~ 19 : Sector0 ECC
// 20 ~ 23 : Sector1 ECC
// 24 ~ 27 : Sector2 ECC
// 28 ~ 31 : Sector3 ECC
// 32 ~ 63 : NOT USED(0xff)
/********************************************************************/
void Make_1bit_ECC(int spareBuf_addr)
{
	int spareBuf_count=0;				
	
	//ECC_GenM(U8 *pEcc, U32 *pBuf, U8 nBW);
	ECC_GenM(chk_parity_1bitECC, srcPt, 0);
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<4;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity_1bitECC[spareBuf_count];	
}



/** MLC Spare Area Layout(64Byte per 1page(2KByte)) **/
//
//  0      : Bad Mark(0xff)
//  1      : Clean Mark(0x00)
//  2 ~ 3  : Reserved(0xff)
//  4 ~ 15 : Spare context(0xff)
// 16 ~ 23 : Sector0 ECC
// 24 ~ 31 : Sector1 ECC
// 32 ~ 39 : Sector2 ECC
// 40 ~ 47 : Sector3 ECC
// 48 ~ 55 : Spare ECC
// 56 ~ 63 : Spare ECC Copy
/*****************************************************/

void Make_4bit_ECC(int spareBuf_addr) 
{	
	int spareBuf_count=0;		
		
	enc_reg(msg_len, srcPt, chk_parity);// msg_len = 512
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_ECC2(int spareBuf_addr) 
{	
	int spareBuf_count=0;		
		
	enc_reg(msg_len, srcPt, chk_parity);// msg_len = 512
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf2[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_SpareECC(int spareBuf_addr) 
{	
	int spareBuf_count=0, i;		
		
	for(i=0;i<512;i++)
		spareECC_Buf[i] = 0xFF;
		
	for(i=0;i<44;i++)
		spareECC_Buf[i] = spareBuf[i+4];// spareECC_Buf : 512 buffer, spareBuf : 64 buffer

	enc_reg(msg_len, spareECC_Buf, chk_parity);// msg_len = 512
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_SpareECC2(int spareBuf_addr) 
{	
	int spareBuf_count=0, i;		
		
	for(i=0;i<512;i++)
		spareECC_Buf2[i] = 0xFF;
		
	for(i=0;i<44;i++)
		spareECC_Buf2[i] = spareBuf2[i+4];// spareECC_Buf2 : 512 buffer, spareBuf2 : 64 buffer

	enc_reg(msg_len, spareECC_Buf2, chk_parity);// msg_len = 512
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf2[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void K9g8g08_PrintBlock(void)// Printf one page
{
    int i;
    U16 id;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re热视频精品| 国产成人亚洲精品狼色在线 | 国产高清不卡一区二区| 午夜视黄欧洲亚洲| 亚洲美女在线国产| 日韩伦理电影网| 1000精品久久久久久久久| 国产精品欧美综合在线| 中文字幕精品—区二区四季| 国产精品午夜在线观看| 日本一区二区高清| 国产精品久久精品日日| 亚洲欧美综合在线精品| 亚洲免费观看高清在线观看| 亚洲欧美综合另类在线卡通| 亚洲品质自拍视频| 亚洲国产一区二区在线播放| 午夜精彩视频在线观看不卡| 免费看日韩精品| 国内成人免费视频| 波多野结衣中文字幕一区二区三区 | 亚洲va天堂va国产va久| 亚洲福中文字幕伊人影院| 水蜜桃久久夜色精品一区的特点| 午夜精品福利久久久| 久久99日本精品| 国产精品99久久久久久宅男| 成人a免费在线看| 色国产综合视频| 欧美一区午夜视频在线观看| 久久久久久久久久久久电影 | 国产mv日韩mv欧美| 色综合天天综合给合国产| 欧美日韩国产三级| 精品av久久707| 成人欧美一区二区三区白人| 日韩av电影免费观看高清完整版| 麻豆国产精品一区二区三区| 成人精品视频一区二区三区| 欧美在线不卡视频| 久久久99久久精品欧美| 亚洲精品免费在线播放| 久久av资源站| 日本道色综合久久| 精品久久久网站| 亚洲国产精品麻豆| 国产一区二区在线影院| 欧美自拍偷拍一区| 欧美国产日韩精品免费观看| 亚洲电影你懂得| 不卡视频在线看| 日韩女优制服丝袜电影| 一区二区三区在线视频免费| 激情小说亚洲一区| 欧美日韩一本到| 国产精品久久久久永久免费观看 | 欧美电影在线免费观看| 国产精品美女久久久久久久| 美女高潮久久久| 在线观看成人免费视频| 国产视频视频一区| 久久99久久精品欧美| 欧美日韩aaaaa| 综合分类小说区另类春色亚洲小说欧美 | 欧美一级在线视频| 亚洲亚洲精品在线观看| 成人app网站| 国产欧美视频在线观看| 极品少妇一区二区| 日韩欧美三级在线| 日韩激情视频网站| 9191成人精品久久| 日韩专区一卡二卡| 欧美日韩在线播放三区| 一区二区三区中文在线观看| 91蝌蚪porny| 中文字幕日韩精品一区| 国产a区久久久| 国产欧美日韩综合精品一区二区| 九九九久久久精品| 欧美精品一区二区三区在线播放 | 日韩一级成人av| 日韩高清电影一区| 欧美一级一级性生活免费录像| 性做久久久久久免费观看| 欧美日韩国产在线观看| 日韩在线卡一卡二| 欧美大片日本大片免费观看| 蜜臀久久99精品久久久画质超高清 | 日韩精品一区二区三区swag| 免费在线观看日韩欧美| 精品免费一区二区三区| 国产一区二区三区蝌蚪| 国产视频一区在线播放| 成人av在线资源| 一区二区三区波多野结衣在线观看| 91色九色蝌蚪| 午夜精品久久久久久| 欧美一区三区二区| 国产乱国产乱300精品| 亚洲国产精品黑人久久久| eeuss鲁一区二区三区| 亚洲伦理在线精品| 欧美蜜桃一区二区三区| 麻豆高清免费国产一区| 欧美国产综合一区二区| 日本伦理一区二区| 麻豆精品视频在线观看免费 | 国产成人免费av在线| 中文字幕日韩欧美一区二区三区| 色综合夜色一区| 青青草97国产精品免费观看无弹窗版| 精品噜噜噜噜久久久久久久久试看 | 91成人在线免费观看| 免费在线看一区| 日韩一区有码在线| 欧美电影在线免费观看| 国产大陆精品国产| 天天爽夜夜爽夜夜爽精品视频| 日韩一区二区精品葵司在线 | 国产精品毛片大码女人| 欧美色图第一页| 国产suv一区二区三区88区| 一区二区三区在线视频观看| 日韩一区二区三区四区| 91视频观看免费| 国产永久精品大片wwwapp | 亚洲大片精品永久免费| 久久精品一区二区三区不卡| 欧美亚洲一区三区| 国产91丝袜在线观看| 青青草原综合久久大伊人精品| 欧美国产乱子伦| 欧美一级一区二区| 欧美三级电影网| 99久久国产免费看| 国产一区二区h| 欧美a一区二区| 夜色激情一区二区| 亚洲人成在线观看一区二区| 久久久亚洲午夜电影| 91精品国产综合久久蜜臀| 色哟哟精品一区| 成人av影院在线| 亚洲欧美日韩国产综合在线| 精品对白一区国产伦| 欧美人狂配大交3d怪物一区| 99久久99久久精品国产片果冻| 国产一区二区美女| 久88久久88久久久| 国产一区二区调教| 久久国产生活片100| 日韩电影免费一区| 亚洲成人一区在线| 亚洲高清不卡在线观看| 亚洲成人激情av| 亚洲一区二区高清| 亚洲一二三四久久| 亚洲国产精品久久不卡毛片 | 欧美日韩视频在线观看一区二区三区 | 性欧美疯狂xxxxbbbb| 夜夜嗨av一区二区三区网页| 亚洲女性喷水在线观看一区| 亚洲欧美综合色| 亚洲综合图片区| 午夜精品国产更新| 免费在线欧美视频| 国产自产v一区二区三区c| 国产高清无密码一区二区三区| 国产一区二区网址| 成人激情小说网站| 色婷婷av一区| 91精品国产综合久久久蜜臀粉嫩| 91精品国产欧美一区二区成人| 在线不卡一区二区| 精品少妇一区二区三区在线播放| 欧美精品一区二区蜜臀亚洲| 国产亚洲婷婷免费| 亚洲欧美国产77777| 亚洲福利国产精品| 免费一级片91| 丁香六月综合激情| 91精彩视频在线| 欧美卡1卡2卡| 国产色产综合产在线视频| 亚洲婷婷国产精品电影人久久| 亚洲影视资源网| 激情六月婷婷综合| 色综合久久中文综合久久97 | 欧美一区二区三区播放老司机| 日韩午夜av一区| 国产精品欧美久久久久无广告| 一区二区三区视频在线看| 蜜桃视频一区二区三区| 国产999精品久久| 欧美日韩精品三区| 国产调教视频一区| 婷婷六月综合亚洲| 91视频一区二区| 26uuu亚洲|