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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ddfrom.c

?? Atmal Flash驅動以及基于驅動之上的Flash頁讀寫實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************/
/* Copyright (c) 2005,夏新電子通信事業部									*/
/* All rights reserved.														*/
/*                   														*/
/* 文件名稱:Ddfrom.c             										*/
/* 摘    要:該文件包含Atmel Flash驅動中間層的函數定義						*/
/*                    														*/
/* 當前版本:1.0               												*/
/* 作    者:王勁濤              											*/
/* 完成日期:2005年6月14日 創建           									*/
/*                   														*/
/****************************************************************************/

#ifdef __cplusplus
    extern   "C"
    {
#endif


/************************************************************************/
/*      INCLUDE FILES                                                   */
/************************************************************************/
#include	<stdio.h>
#include 	"stdlib.h"
#include    <string.h>
#include	"Tdef.h"
#include 	"DFR_def.h"
#include	"Ddfrom.h"

//#define SHARP
#define ATMEL

/************************************************************************/
/*      全局變量                                                  		*/
/************************************************************************/
byte LogicPage[MAX_USE_BLOCK][MAX_LOGIC_PAGE_NUM];	//邏輯頁號對應的物理頁號數組
ulong LogicBlock[MAX_USE_BLOCK];					//已用塊物理地址數組
byte FreePage[MAX_USE_BLOCK];						//最小可用物理頁號數組
ulong FreeBlock[MAX_FREE_BLOCK];					//備用塊物理地址數組
word FML_RAMLock[ERASE_PROG_CODE_SIZE];
word FML_RAMProg[ERASE_PROG_CODE_SIZE];			//用于將FML_ProgOneWord函數轉存到內存
word FML_RAMErase[ERASE_PROG_CODE_SIZE];			//用于將FML_BlockErase函數轉存到內存

//所使用Block的相對地址
const ulong fml_block_address[MAX_USE_BLOCK + MAX_FREE_BLOCK] = 
{	0x020000, 0x028000, 0x030000, 0x038000 };

/************************************************************************/
/*	函數名:	FfxFlashFormat											*/
/*	功能:		格式化Flash中用于存放可變數據的塊						*/
/*	輸入參數:	mode, 為兼容原接口保留,無實際意義						*/
/*	輸出參數:	無														*/
/*	返回值:	如果成功返回FSYS_FMDFORMAT_OK,否則返回FSYS_FMDFORMAT_ERR*/
/*																		*/
/************************************************************************/
word dDFRomFormat(void)
{
	word count = 0;
	ulong temp_addr;
	FML_RESULT rel = FML_SUCCESS;

	while ( count < MAX_USE_BLOCK )
	{
		temp_addr = fml_block_address[count];
		rel = FML_BlockErase(temp_addr);
		rel |= FML_ProgOneWord(temp_addr, BLOCK_IN_USE);
		temp_addr++;
		count++;
		rel |= FML_ProgOneWord(temp_addr, count);
		if ( rel != FML_SUCCESS )
		{
			return DDFR_NG;
		}
		
	}

	while ( count < MAX_USE_BLOCK + MAX_FREE_BLOCK )
	{
		temp_addr = fml_block_address[count];
		rel = FML_BlockErase(temp_addr);
		if ( rel != FML_SUCCESS )
		{
			return DDFR_NG;
		}
		count++;
	}
	return DDFR_OK;
}



#if 1
/************************************************************************/
/*	函數名:	FfxInitialize											*/
/*	功能:		初始化驅動中間層的管理									*/
/*	輸入參數:	無														*/
/*	輸出參數:	無														*/
/*	返回值:	如果成功返回CMN_FSY_OK,否則返回CMN_FSY_DRIVER_ERROR	*/
/*																		*/
/************************************************************************/
word dDFRomInit(void)
{
	word temp_data;
	ulong temp_addr, count, i;
	word flash_sts;
	FML_RESULT rel;
	byte phy_page_count;			//物理塊號計數
	PAT_UNIT_INFO page_info;
	byte free_block_count = 0;
	ulong block_addr;

	FML_init();				
	memset(LogicBlock, 0xFF, MAX_USE_BLOCK * sizeof(ulong));
	memset(LogicPage, 0xFF, MAX_USE_BLOCK * MAX_LOGIC_PAGE_NUM);	
	for ( count = 0; count < MAX_USE_BLOCK + MAX_FREE_BLOCK; count++ )
	{
		flash_sts = *sysAddress(fml_block_address[count]);
		temp_addr = fml_block_address[count];
		temp_data = *sysAddress(temp_addr + 1);		//第3、4個字節為邏輯塊號數據

		//如果該塊已使用
		if ( flash_sts == BLOCK_IN_USE )
		{
			//chg start by wjt 2005.11.01
			if (temp_data > 0 && temp_data <= MAX_USE_BLOCK)	//邏輯塊號合法
			{
				LogicBlock[temp_data - 1] = temp_addr;	//存儲邏輯塊對應的物理塊首地址
				temp_addr = LogicBlock[temp_data - 1] + BLOCK_INFO_SIZE;	//PAT起始地址

				//依次讀取PAT中每個單元的管理信息作相應處理
				FreePage[temp_data - 1] = MAX_PHY_PAGE_NUM + 1;
				for ( phy_page_count = 0; phy_page_count < MAX_PHY_PAGE_NUM; phy_page_count++, temp_addr++)
				{
					page_info = *((volatile PAT_UNIT_INFO*)( ROM_BASE + temp_addr*2));	//讀取PAT單元信息			
					if ( page_info.page_sts == PAGE_USED )		//如果該頁已使用
					{
						if ( page_info.page_lid <= MAX_LOGIC_PAGE_NUM && page_info.page_lid != 0 )	//如果塊內邏輯頁號合法
						{
							LogicPage[temp_data - 1][page_info.page_lid - 1] = phy_page_count + 1;		//存儲物理塊號到數組LogicPage中
						}
						else if( page_info.page_lid > MAX_LOGIC_PAGE_NUM )		//該邏輯頁號超出范圍(寫入頁號時斷電)
						{
							FML_ProgOneWord( temp_addr, PAGE_INVALID);				//將出錯的邏輯頁號修改為00
						}
						else 		//PAT單元信息為0x0000
						{
							continue;
						}					
					}
				
					else if ( page_info.page_sts == PAGE_FREE )	//該頁未使用
					{
						//如果該頁為最小空閑物理頁,則把物理頁號存入數組FreePage
						if ( phy_page_count + 1 < FreePage[temp_data - 1] )
						{
							FreePage[temp_data - 1] = phy_page_count + 1;
						}
					}
				
					else //寫入頁狀態時斷電
					{
						FML_ProgOneWord(temp_addr, PAGE_INVALID);		//將出錯的邏輯頁狀態修改為00
					}
				}
			}

			else	//存儲的邏輯塊號非法
			{
				//對該塊進行擦除操作
				rel = FML_BlockErase(fml_block_address[count]);
				if ( rel == FML_FAILURE )
				{
					return CMN_FSY_DRIVER_ERROR;
				}
				if ( free_block_count < MAX_FREE_BLOCK)
				{
					//將該塊物理地址填入FreeBlock數組
					FreeBlock[free_block_count] = fml_block_address[count];
					free_block_count++;
				}
			}		
		}
		//chg end by wjt 2005.11.01
		
		//如果該塊未使用,將該塊物理地址填入FreeBlock數組
		else if ( flash_sts == BLOCK_FREE )
		{
			if ( temp_data != 0xFFFF )		//新塊數據寫入時斷電
			{
				rel = FML_BlockErase(fml_block_address[count]);
				if ( rel == FML_FAILURE )
				{
					return CMN_FSY_DRIVER_ERROR;
				}
			}
			if ( free_block_count < MAX_FREE_BLOCK)
			{
				FreeBlock[free_block_count] = fml_block_address[count];
				free_block_count++;
			}
		}

		//如果該塊已廢棄(表明上次擦除工作因意外未完成)
		else if ( flash_sts == BLOCK_INVALID )
		{
			//對該塊進行擦除操作
			rel = FML_BlockErase(fml_block_address[count]);
			if ( rel == FML_FAILURE )
			{
				return CMN_FSY_DRIVER_ERROR;
			}
			if ( free_block_count < MAX_FREE_BLOCK)
			{
				//將該塊物理地址填入FreeBlock數組
				FreeBlock[free_block_count] = fml_block_address[count];
				free_block_count++;
			}
		}
		
		//塊狀態修改時斷電
		else
		{
			//對該塊進行擦除操作
			rel = FML_BlockErase(fml_block_address[count]);
			if ( rel == FML_FAILURE )
			{
				return CMN_FSY_DRIVER_ERROR;
			}
			if ( free_block_count < MAX_FREE_BLOCK)
			{
				//將該塊物理地址填入FreeBlock數組
				FreeBlock[free_block_count] = fml_block_address[count];
				free_block_count++;
			}
		}
	}

	//add start by wjt 2005.10.21 文件系統容錯性處理
	for ( count = 0; count < MAX_USE_BLOCK; count++ )
	{
		if ( LogicBlock[count] == 0xFFFFFFFF )
		{
			temp_addr = FreeBlock[0];
			rel = FML_ProgOneWord(temp_addr, BLOCK_IN_USE);
			temp_addr++;
			rel |= FML_ProgOneWord(temp_addr, count + 1);
			LogicBlock[count] = FreeBlock[0];
			for ( i = 0; i < MAX_USE_BLOCK + MAX_FREE_BLOCK; i++ )
			{
				if ( *sysAddress(fml_block_address[i]) == BLOCK_FREE )
				{
					FreeBlock[0] = fml_block_address[i];
					break;
				}
			}
		}
	}
	//add end by wjt 2005.10.21
	return CMN_FSY_OK;
}
	

/************************************************************************/
/*	函數名:	FfxSectorRead											*/
/*	功能:		根據起始邏輯頁號從Flash上讀入一頁或幾頁的信息			*/
/*	輸入參數:	nID -- 起始的邏輯頁號									*/
/*		  		num -- 需要讀入的頁數									*/
/*	輸出參數:	*pcBuffer -- 存儲讀出的數據								*/
/*	返回值:	如果成功返回FSYS_FMDREDANS_OK,否則返回FSYS_FMDREDANS_NG*/
/*																		*/
/************************************************************************/
word dDFRomRead(word aUnit, word nID, byte *pcBuffer)
{
	ulong i;
	byte num;
	ulong page_lid;				//邏輯頁號
	byte page_pid;				//塊內物理頁號
	ulong page_addr;
	byte block_id;
	word *buffer = (word *)pcBuffer;
	FML_RESULT rel;
	FML_FLASH_STATUS flash_sts;

	if ( nID > MAX_USE_BLOCK * MAX_LOGIC_PAGE_NUM ) return DDFR_NG;
	if (((nID % MAX_LOGIC_PAGE_NUM)!=1) && (aUnit == DDFR_BLOCK)) return DDFR_NG;
	switch (aUnit)
	{
		case DDFR_PAGE:
			num = 1;
		case DDFR_BLOCK:
			num = MAX_LOGIC_PAGE_NUM;
		default:
			num = 1;
	}
	
	for (i = 0; i < num; i++)
	{
		page_lid = nID + i;
		flash_sts = FML_GetRealAddr(page_lid, &block_id, &page_pid, &page_addr);
		if ( flash_sts == FML_FLASH_FREE )	
		{
			memset((byte *)buffer, 0xff, PAGE_SIZE*2);
			//return FSYS_FMDREDANS_NG;
		}
		else
		{
			rel = FML_ReadOnePage(page_addr, buffer);
		}
		buffer += PAGE_SIZE;		//因為buffer為byte*, 而PAGE_SIZE是按16bit記數
	}
	
	return DDFR_OK;
}


/************************************************************************/
/*	函數名:	FfxSectorWrite											*/
/*	功能:		根據起始邏輯頁號向Flash上寫入一頁的信息					*/
/*	輸入參數:	nID -- 起始的邏輯頁號									*/
/*		  		aSrcAddr -- 將要被寫入的內容							*/
/*		 																*/
/*	輸出參數:	無														*/
/*	返回值:	如果成功返回FSYS_FMDWRTANS_OK,否則返回FSYS_FMDWRTANS_NG*/
/*																		*/
/************************************************************************/
word dDFRomWrite(word nID, byte *aSrcAddr)
{
	byte block_id;		//邏輯塊號
	word free_page_id = 0;
	byte phy_page_in_block;					//塊內物理頁號
	byte logic_page_in_block;					//塊內邏輯頁號
	ulong logic_page_id = nID;					//總邏輯頁號
	ulong page_addr;							//頁物理地址
	ulong pat_addr;								//PAT單元地址
	byte *alt_data_addr = aSrcAddr;			//源數據地址
	word *data_addr = (word *)alt_data_addr;
	FML_RESULT rel;
	FML_FLASH_STATUS flash_sts;

	if ( nID > MAX_USE_BLOCK * MAX_LOGIC_PAGE_NUM ) return DDFR_NG;

	logic_page_in_block = logic_page_id % MAX_LOGIC_PAGE_NUM;
	if (logic_page_in_block == 0) logic_page_in_block = MAX_LOGIC_PAGE_NUM;
	flash_sts = FML_GetRealAddr( logic_page_id, &block_id, &phy_page_in_block, &page_addr);
	if (flash_sts !=  FML_FLASH_FREE) 
	{
		FML_AllocNewPage(block_id, &pat_addr, &page_addr);
		phy_page_in_block = LogicPage[block_id - 1][logic_page_in_block - 1];
	}
	else
	{
		free_page_id = FreePage[block_id - 1];
		//add start by wjt 2005.11.14 for overrun bug
		if (free_page_id > MAX_PHY_PAGE_NUM) 
		{
			rel = FML_BlockCopy(block_id);
			if (rel != FML_SUCCESS) return FML_FAILURE;
			free_page_id = FreePage[block_id - 1];
		}
		//add end by wjt 2005.11.14 for overrun bug
		FreePage[block_id - 1]++;
		//計算物理頁管理信息地址
		page_addr = LogicBlock[block_id - 1] + (free_page_id - 1) * PAGE_SIZE + BLOCK_INFO_SIZE + PAT_SIZE;
		pat_addr = LogicBlock[block_id - 1] + (free_page_id - 1) + BLOCK_INFO_SIZE ;
		FML_ProgOneWord(pat_addr, 0x00FF);
	}
			
	//將一頁信息寫入到Flash中
	rel = FML_ProgOnePage(page_addr, data_addr);
	if ( rel == FML_FAILURE )
	{
		return DDFR_NG;
	}
	//寫入成功后修改在相應的PAT單元中寫入邏輯頁號并更新數組FreePage
	FML_ProgOneWord(pat_addr, 0x00FF&logic_page_in_block);
	LogicPage[block_id - 1][logic_page_in_block - 1] = FreePage[block_id - 1] - 1;
	if ( flash_sts !=  FML_FLASH_FREE )
	{
		pat_addr = LogicBlock[block_id - 1] + BLOCK_INFO_SIZE + (phy_page_in_block - 1);
		FML_ProgOneWord(pat_addr, 0x0000);
	}

	return DDFR_OK; 
}


/************************************************************************/
/*	函數名:	dDFRomStatusChk											*/
/*	功能:		本函數是為兼容原有文件系統而保留,不做具體操作			*/
/*	輸入參數:	無														*/
/*	輸出參數:	無														*/
/*	返回值:	無														*/
/*																		*/
/************************************************************************/
word dDFRomStatusChk(void)
{
	return DDFR_OK;
}


/************************************************************************/
/*	函數名:	dDFRomReWriteSet											*/
/*	功能:		本函數是為兼容原有文件系統而保留,不做具體操作			*/
/*	輸入參數:	無														*/
/*	輸出參數:	無														*/
/*	返回值:	無														*/
/*																		*/
/************************************************************************/
word dDFRomReWriteSet(word aMode)
{
	return DDFR_OK;
}
#endif


/************************************************************************/
/*	函數名:	FML_init					*/
/*	功能:		解除開機后所有FML管理下的Flash塊的soft-lock	*/
/*	輸入參數:	sector -- 被解鎖的塊物理地址			*/
/*	輸出參數:	無														*/
/*	返回值:	無				*/
/*																		*/
/************************************************************************/
void FML_init(void)
{
 	ulong i, block_sum;
	ulong sector_addr = 0;
	word length = 0;
	ulong p1 = (ulong)FML_BlockEraseF;
	ulong p2 = (ulong)FML_ProgOneWordF;

	length = p2 - p1;
	if ((length % 2) != 0) length++;
	for (i = 0; i < length/2; i++)
	{
		FML_RAMErase[i] = *((volatile word *)p1);
		p1+=2;
	}

	p1 = FML_ProgOnePage;
	length = p1 - p2;
	if ((length % 2) != 0) length++;
	for (i = 0; i < length/2; i++)
	{
		FML_RAMProg[i] = *((volatile word *)p2);
		p2+=2;
	}

	#ifdef SHARP
	p1 = (ulong)FML_BlockEraseF;
	p2 = (ulong)FML_SectorLockF;
	length = p1 - p2;
	if ((length % 2) != 0) length++;
	for (i = 0; i < length/2; i++)
	{
		FML_RAMLock[i] = *((volatile word *)p2);
		p2+=2;
	}
	#endif
	#ifdef ATMEL_1601
	//Lock font's block
	for (i = 0; i < FONT_BLOCK_NUM; i++)
	{
		sector_addr = i * MAIN_BLOCK_SIZE;
		FML_SectorLockF(sector_addr);	
	}

	//Lock program's block
	block_sum = FONT_BLOCK_NUM + MAX_USE_BLOCK + MAX_FREE_BLOCK;
	for (i = block_sum; i < MAIN_BLOCK_NUM; i++)
	{
		sector_addr = i * MAIN_BLOCK_SIZE;
		FML_SectorLockF(sector_addr);	
	}

	for (i = 0; i < PARA_BLOCK_NUM; i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女一区二区三区| 亚洲午夜免费视频| 国产成人免费在线| 国产亚洲精久久久久久| 成人午夜激情影院| 综合分类小说区另类春色亚洲小说欧美| 日本在线不卡一区| 日韩综合小视频| 国产精品一区在线观看乱码| 狠狠色丁香婷婷综合久久片| 久久色在线观看| 777a∨成人精品桃花网| 日韩欧美国产高清| 一区二区在线观看视频| 日本韩国一区二区三区| 亚洲午夜免费电影| 日韩网站在线看片你懂的| 国产一区在线看| 亚洲欧美偷拍三级| 欧美人动与zoxxxx乱| 精品一区二区三区视频在线观看| 久久久www成人免费无遮挡大片| 成人一级片网址| 亚洲一区二区三区国产| 日韩女优视频免费观看| 成人污污视频在线观看| 亚洲一区二区三区中文字幕| 日韩欧美不卡在线观看视频| 成人美女视频在线观看18| 亚洲一区二区三区四区在线| 欧美www视频| 一本大道久久a久久精二百| 青青草国产精品97视觉盛宴| 国产精品网曝门| 欧美日韩国产精选| 成人动漫在线一区| 免费观看一级特黄欧美大片| 国产精品传媒视频| 日韩欧美精品在线| 欧洲人成人精品| 国产成人亚洲综合a∨猫咪 | 91福利区一区二区三区| 美女国产一区二区三区| 亚洲精品免费在线观看| 26uuu精品一区二区| 欧美日韩一区二区三区高清| 国产91色综合久久免费分享| 日韩和欧美的一区| 亚洲蜜臀av乱码久久精品| xvideos.蜜桃一区二区| 欧美系列日韩一区| eeuss影院一区二区三区| 久久99精品一区二区三区三区| 亚洲精品福利视频网站| 国产精品乱子久久久久| 精品国产乱码久久久久久牛牛| 日本韩国精品一区二区在线观看| 精品一区二区在线免费观看| 亚洲一区二区视频| 亚洲人精品一区| 国产精品第五页| 中文字幕不卡三区| 欧美精品一区二区在线观看| 7777精品伊人久久久大香线蕉| 91国偷自产一区二区使用方法| 国产精品一区三区| 国产乱人伦偷精品视频免下载| 日本网站在线观看一区二区三区| 一级日本不卡的影视| 亚洲色图第一区| 中文一区二区在线观看| 久久精品亚洲精品国产欧美| 日韩欧美亚洲另类制服综合在线| 欧美人牲a欧美精品| 欧美日韩在线三级| 欧美日韩小视频| 欧美三日本三级三级在线播放| 日本道免费精品一区二区三区| 91啪亚洲精品| 一本久久精品一区二区| 色综合欧美在线视频区| 一本一本大道香蕉久在线精品| 99久久精品费精品国产一区二区| 成人午夜激情影院| 色综合一区二区三区| 色一区在线观看| 欧美视频在线观看一区| 欧美日韩国产首页在线观看| 欧美蜜桃一区二区三区| 日韩一区二区在线播放| 日韩精品一区二区三区在线播放| 精品国产三级a在线观看| 久久伊人蜜桃av一区二区| 久久精品一级爱片| 日本一区二区久久| 亚洲欧美日韩小说| 无码av中文一区二区三区桃花岛| 毛片基地黄久久久久久天堂| 国模少妇一区二区三区| 成人一区二区三区在线观看| 91农村精品一区二区在线| 91久久精品午夜一区二区| 欧美一区日韩一区| 国产视频一区二区在线| 亚洲男人的天堂网| 日韩av电影免费观看高清完整版 | 毛片av中文字幕一区二区| 国产一区二区三区久久悠悠色av| 国产v综合v亚洲欧| 欧美怡红院视频| 精品成人私密视频| 亚洲少妇30p| 日本 国产 欧美色综合| 成人综合在线观看| 欧美精品精品一区| 久久久久久97三级| 亚洲综合在线电影| 韩国av一区二区三区| 色狠狠色噜噜噜综合网| 日韩欧美电影在线| 亚洲免费在线电影| 经典三级在线一区| 色婷婷久久久亚洲一区二区三区| 91精品国产黑色紧身裤美女| 中文久久乱码一区二区| 日韩电影在线免费观看| 色噜噜夜夜夜综合网| 欧美精品一区二区三区蜜桃视频 | 久久色在线视频| 亚洲电影激情视频网站| 国产精品1区二区.| 欧美精品丝袜久久久中文字幕| 国产精品视频一二| 亚洲成av人影院在线观看网| 国产+成+人+亚洲欧洲自线| 欧美剧情片在线观看| 国产女人aaa级久久久级 | 亚欧色一区w666天堂| 成人午夜免费av| 欧美tickling挠脚心丨vk| 一区二区三区国产| 成人晚上爱看视频| 8x福利精品第一导航| 亚洲四区在线观看| 国内精品嫩模私拍在线| 884aa四虎影成人精品一区| 日韩美女视频19| 国产成人综合视频| 91精品国产综合久久精品图片| 亚洲精品久久7777| av电影天堂一区二区在线| 国产亚洲欧美中文| 韩日欧美一区二区三区| 在线电影院国产精品| 亚洲成人av中文| 欧美影院一区二区| 一区二区三区日韩欧美| 91色porny在线视频| 亚洲视频一区二区免费在线观看| 丁香六月久久综合狠狠色| 久久久久久久久免费| 国产真实乱子伦精品视频| 欧美成人性福生活免费看| 免费视频最近日韩| 日韩欧美第一区| 久久国产乱子精品免费女| 日韩午夜激情视频| 裸体健美xxxx欧美裸体表演| 日韩视频免费观看高清在线视频| 日韩综合小视频| 日韩免费电影一区| 国产一区二区三区电影在线观看| 欧美xxxx在线观看| 国产精品综合av一区二区国产馆| 久久亚洲精精品中文字幕早川悠里| 麻豆一区二区三| 精品盗摄一区二区三区| 国产ts人妖一区二区| 最新久久zyz资源站| 色老头久久综合| 免费高清视频精品| 久久久亚洲精华液精华液精华液 | 日日噜噜夜夜狠狠视频欧美人| 91麻豆精品国产91久久久| 免费高清视频精品| 久久蜜桃一区二区| 成人理论电影网| 亚洲精品中文字幕在线观看| 欧美日韩一级黄| 精品中文字幕一区二区小辣椒| 久久综合999| 99久久精品国产一区二区三区| 亚洲一区免费视频| 久久亚洲综合av| 91在线观看视频| 日韩电影免费一区| 国产精品丝袜黑色高跟| 在线视频欧美精品| 麻豆高清免费国产一区| 亚洲视频中文字幕|