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

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

?? binload.c

?? 完整的基于Xmodem協議的嵌入式系統側FLASH Loader程序。該程序是基于三菱的M16C/60系列MCU
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*/ binload.c : BINFile的DownLoad和Flash寫入。/*/
//Writemode         FLASH Vendor
//      0                     AMD, FUJITSU and so on
//      1                       SST
//      2                       WINBOND

#include "uapdef.h" 
#include "binload.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#pragma INTERRUPT OnUARTTxEnd
#pragma INTERRUPT OnUARTRxEnd


#pragma ADDRESS S0TIC   51H
#pragma ADDRESS S0RIC   52H
#pragma ADDRESS U0MR    3A0H
#pragma ADDRESS U0BRG   3A1H
#pragma ADDRESS U0TB    3A2H
#pragma ADDRESS U0C0    3A4H
#pragma ADDRESS U0C1    3A5H
#pragma ADDRESS U0RB    3A6H
#pragma ADDRESS UCON    3B0H
#pragma ADDRESS TA4IC   59H
#pragma ADDRESS TABSR   380H
#pragma ADDRESS ONSF    382H
#pragma ADDRESS TRGSR   383H
#pragma ADDRESS UDF     384H
#pragma ADDRESS TA4     38EH
#pragma ADDRESS TA4MR   39AH
#pragma ADDRESS CPSRF   381H
#pragma ADDRESS PM0     04H
#pragma ADDRESS PRCR    0AH
#pragma ADDRESS PD7     3EFH
#pragma ADDRESS P7      3EDH
#pragma ADDRESS PD9     3F3H
#pragma ADDRESS P9      3F1H
#pragma ADDRESS SYSCLK  40F9H
#pragma ADDRESS BANKEN  4128H
#pragma ADDRESS BANKREG 4129H
#pragma ADDRESS PRCR    000AH

struct _PORT {
	BYTE bit0:1;
	BYTE bit1:1;
	BYTE bit2:1;
	BYTE bit3:1;
	BYTE bit4:1;
	BYTE bit5:1;
	BYTE bit6:1;
	BYTE bit7:1;
};

WORD U0TB, U0RB, TA4;
BYTE S0TIC, S0RIC, U0MR, U0BRG, U0C0, U0C1, UCON;
BYTE TA4IC, TABSR, ONSF, TRGSR, UDF, TA4MR, CPSRF, PM0, PRCR;
BYTE PD9, P9, PD7, P7;
BYTE SYSCLK;
BYTE BANKEN, BANKREG;

#define MAXUARTTXBUFFER 255 /*/// 送信BufferSize。/*/
#define MAXUARTRXBUFFER 255 /*/// 受信BufferSize。/*/

#define FLASHTYPE_UNDEFINED 0
#define FLASHTYPE_8MTOPBOOT 1
#define FLASHTYPE_COMBOFALSH 2
#define FLASHTYPE_16MTOPBOOT 4
BYTE FlashType = FLASHTYPE_UNDEFINED;


RINGBUFF UARTTx, UARTRx;

BYTE abTxData[MAXUARTTXBUFFER];	/*/// 送信DataBuffer。/*/
BYTE abRxData[MAXUARTRXBUFFER];	/*/ 受信DataBuffer。/*/

BYTE bXModemSequenceBlockNumber;	/*/ 受信XModem的Sequence.Block號碼/*/

BYTE cbXModemRxCharacter;	/*/ XModem的DataBlock受信Byte數/*/

BYTE far * npabXModemFileWrite;	/*/ 受信File的寫入Pointer/*/
BYTE abXModemFileWrite[512];	/*/ 受信File的寫入Buffer,每次256字節,乒乓工作/*/

BYTE abXModemFreeBlock[4];	/*/ File的寫入Buffer中,空的Block/*/

BYTE bXModemWritingBlock;	/*/ 寫入中的Buffer的Block號碼/*/

BINFILEHEADER BinFileHeader;	/*/ BINFile的Header的保存Buffer/*/
BYTE SectorStartAddressIndex;       /*/邊界地址的序號/*/

BYTE szDial[10];	/*/ 設為原狀的程序中,工作使用的Buffer/*/
BYTE bStatus;	/*/ 現在的狀態。 /*/
BYTE far * lpabFlashMemory;	/*/ 指向將要寫入的FlashMemory的Pointer/*/
BYTE far * lpabFlashMemoryEnd;	/*/ 將要寫入的FlashMemory的終了Address/*/
//BYTE bWriteMode;	/*/ 寫入模式。 /*/

BYTE ManufacturerCode, DeviceCode;  /*/ 生產商代碼和器件代碼 /*/
DWORD WriteAddress;

/*/波特率為115200的下載程序版本號為3以上。/*/
/*/4.0版增加了對FLASH擦除時超時的處理/*/
//const BYTE szVersionMessage[] = "Welcome to flash downloader V3.0.\r\n";
const BYTE szExit[] = "Exit? (Yes/No/Reset)\r\n";
//const BYTE szDownloadPrompt[] = "Please send the bin file to flash by Xmodem protocol.\r\n";
const BYTE szProgramFailure[] = "Undefined Flash Type. Program failed\r\n";
const BYTE szVersion[] = "EPFLASHV3.0\r\n";

void CS0AddressTransform(DWORD dwPhysicalAddress);
BOOL DetectFlashType(void);
BOOL FlashEraseSector(DWORD sectoraddr);
void FlashReset(void);
void FlashChipErase(void);


/////////////////////////////////////////////////////////////////////////////
// main : binload的MainRoutine。

void main(void)
{
	BYTE c;	/*/ 為了數據的發送的變量。 /*/

	SYSCLK = 0x02;      /*/ 采用9.6M的時鐘 /*/
	
    
    P9  &= 0x7f;    /*/ 關綠指示燈 /*/
    P9 |= 0x40;    /*/點亮紅指示燈 /*/
    
    PRCR|=0x04;     /*/ PRCR 寫入允許 /*/
    
    PD9 |= 0xc0;   /*/ 關紅綠指示燈 /*/
    
   	PRCR&=0xfb;//PD9的操作的禁止/

    
   	BANKEN = 0x91;//10010001B;         /*/CS0\CS2擴展/*/

	UARTTx.abData = abTxData;	/*/ 送信Buffer的設定。 /*/
	UARTTx.cbData = 0;	/*/ Data數的清除。 /*/
	UARTTx.bWriteIndex = 0;	/*/ 寫入位置設為先頭。 /*/
	UARTTx.bReadIndex = 0;	/*/ 讀入位置設為先頭。 /*/
	UARTTx.bSize = MAXUARTTXBUFFER;	/*/ 送信BufferSize的設定。 /*/

	UARTRx.abData = abRxData;	/*/ 受信Buffer的設定。 /*/
	UARTRx.cbData = 0;	/*/ Data數的清除。 /*/
	UARTRx.bWriteIndex = 0;	/*/ 寫入位置設為先頭。 /*/
	UARTRx.bReadIndex = 0;	/*/ 讀入位置設為先頭。 /*/
	UARTRx.bSize = MAXUARTRXBUFFER;	/*/ 受信BufferSize的設定。 /*/

	U0MR = 0x05;	/*/ 流控無效、Parity無、Stop1、內部Clock、8Bit。 /*/
	U0C0 = 0x10;	/*/ TxD0為CMOS、CTS禁止、CountSource設為f1。LSB FIRST!!!!! /*/
	UCON = 0x00;	/*/ CTS和RTS設為共通端子。 /*/

	U0BRG = 4;	/*/ 設為5分頻。9.6MHz/16/5 = 120000bps。 /*/

	U0C1 = 0x05;	/*/ 送受信許可。 /*/
	S0TIC = 0x03;	/*/ UART0送信中斷控制Register的IPL設為3。 /*/
	S0RIC = 0x03;	/*/ UART0受信中斷控制Register的IPL設為3。 /*/

	asm("fclr I");	/*/ 中斷禁止。 /*/
	P9 &= 0xfd;		/*/ WP設為Low。	 /*/	 
	PRCR |= 0x04;	 /*/// ProtectRegister的Bit2設為1。 /*/
	PD9 |= 0x02;	/*/ WP設為輸出Port。 /*/	// upd 2000.02.08 sawada 0x03(WR_PRT1、WR_PRT2) -> 0x02(WP)
	asm("fset I");	/*/ 中斷許可。 /*/
	
        BinFileHeader.Struct.WriteMode = 0;     //default JDDEC command set
        
        
	bStatus = 1;	/*/ 現在的狀態設為最初的CR等待狀態。 /*/
	TA4IC = 0;	/*/ TimerA4中斷要求的清除。 /*/
    
	while (TRUE) {	/*/ 無限Loop。 /*/
		if (UARTRx.cbData || TA4IC & 0x08) {	/*/ 受信Data有的時候、TimerA4為OneShortTimeOut時 /*/
			switch (bStatus) {	
				case 1 :	/*/ CR等待狀態 /*/
					ReadUART(&c, 1);	/*/ 1Byte受信。 /*/
					if (c == CR) {	// CR detect
						FlashUART();	/*/ 送受信Buffer的Flash。 /*/
                                        DetectFlashType();      /*/判斷FLASH類型,并將結果輸出到超級終端/*/
						c = NAK;	/*/ NAK的裝入。 /*/
						WriteUART(&c, 1);	/*/ NAK的送信。 /*/
						TA4MR = 0x82;	/*/ TimerA4以4.8/32MHz=150KHz設為OneShortTimer。 /*/
						TA4IC = 0;	/*/ TimerA4中斷要求的清除。 /*/
						TA4 = 0xFFFF;	/*/ 0.43秒的TimeOut。 /*/
						CPSRF = 0x80;	/*/ 時鐘用的Prescale的Reset。 /*/
						TABSR |= 0x10;	/*/ TimerA4Count開始Flag的Set /*/
						ONSF |= 0x10;	/*/ OneShort開始。 /*/
						c = 0;	/*/ 在NAKTimer的Count中使用。 /*/
						bStatus = 2;	/*/ XModem的開始等待狀態。	 /*/
					}
					break;
				case 2 :	/*/ XModem的開始等待狀態 /*/
					if (UARTRx.cbData) {	/*/ 受信Data有的時候 /*/
						bXModemSequenceBlockNumber = 0xFF;	/*/ 受信XModem的Sequence.Block號碼進行初始化。 /*/
						cbXModemRxCharacter = 0;	/*/ XModem的DataBlock受信Byte數進行初始化。 /*/
						npabXModemFileWrite = abXModemFileWrite;	/*/ 寫入受信File的Pointer設置到Buffer的先頭。 /*/
						abXModemFreeBlock[0] = abXModemFreeBlock[1] = abXModemFreeBlock[2] = abXModemFreeBlock[3] = 0;	/*/ 寫入File的Buffer的Block設為全Block空。 /*/
						bXModemWritingBlock = 0;	/*/ 寫入中的Block號碼設為先頭。 /*/
						TABSR &= (~0x10);	/*/ TimerA4Count開始Flag進行Reset。 /*/
						TA4IC = 0;	/*/ TimerA4中斷要求的清除。 /*/
						bStatus = 3;	/*/ BINHeader等待狀態。 /*/
						break;	/*/ 跳出Loop,用XModem開始進行受信。 /*/
					} else if (TA4IC & 0x08) {	/*/ OneShortTimeOut時 /*/
						c ++;	/*/ TimeOut回數的增加。 /*/
						if (c == 5) {	/*/ 5回TimeOut時 /*/
							c = NAK;	/*/ NAK的裝入。 /*/
							WriteUART(&c, 1);	/*/ NAK的送信。 /*/
							c = 0;	/*/ Counter的清除。 /*/
   						}
						TA4IC = 0;	/*/ TimerA4中斷要求的清除。 /*/
						ONSF |= 0x10;	/*/ OneShort開始。 /*/
					}
					break;
				case 3 :	/*/ BINHeader等待狀態 /*/
					c = OnRxXModem();	/*/ File的受信。 /*/
					switch (c) {	
						case 1 :	 /*/// 2Block受信時 /*/
							memcpy(BinFileHeader.abBINHeader, abXModemFileWrite, 256);	 /*/// BINFileHeader的拷貝。 /*/
							abXModemFreeBlock[0] = abXModemFreeBlock[1] = 0;	/*/ Block設為空。 /*/
							if (StartProgram(BinFileHeader.abBINHeader)) {	 /*/// Flash寫入能夠開始時 /*/
								c = ACK;	 /*/// ACK的裝入。 /*/
								WriteUART(&c, 1);	 /*/// ACK的送信。 /*/
								bStatus = 4;	 /*/// Flash寫入狀態。 /*/
							} else {	/*/ Flash寫入不能開始時 /*/
								c = CAN;	 /*/// CAN的裝入。 /*/
								WriteUART(&c, 1);	/*/ CAN的送信。 /*/
								WriteUART(szProgramFailure, 16);	 /*/// 寫入失敗Message的輸出。 /*/
								WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
								bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							}
							break;
						case 0 :
						case 2 :
						case 3 :	 /*/// 受信Block號碼時 /*/
							c = ACK;	 /*/// ACK的裝入。 /*/
							WriteUART(&c, 1);	 /*/// ACK的送信。 /*/
							break;
						case 4 :	 /*/// XModem終了時 /*/
							WriteUART("Unexpected EOF\r\n", 16);	 /*/// 異常File終了Message的輸出。 /*/
							WriteUART(szProgramFailure, 16);	 /*/// 中斷的Message的輸出。 /*/
							WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
							bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							break;
					}
					break;
				case 4 :	 /*/// Flash寫入狀態 /*/
					c = OnRxXModem();	 /*/// File的受信。 /*/
					switch (c) {	 /*/// 返回值。 /*/
						case 1 :
							if (WritePage(abXModemFileWrite)) {	 /*/// 0、1Block寫入到Flash中 /*/
								abXModemFreeBlock[0] = abXModemFreeBlock[1] = 0;	 /*/// Block設為空。 /*/
								c = ACK;	 /*/// ACK的裝入。 /*/
								WriteUART(&c, 1);	 /*/// ACK的送信。 /*/
							} else {	 /*/// 寫入失敗時 /*/
								c = CAN;	 /*/// CAN的裝入。 /*/
								WriteUART(&c, 1);	 /*/// CAN的送信。 /*/
								WriteUART(szProgramFailure, 16);	 /*/// 寫入失敗Message的輸出。 /*/
								WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
								bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							}
							break;
						case 3 :	 /*/// 2Block受信時 /*/
							if (WritePage(abXModemFileWrite + 256)) {	 /*/// 2、3Block寫入到Flash中 /*/
								abXModemFreeBlock[2] = abXModemFreeBlock[3] = 0;	 /*/// Block設為空。 /*/
								c = ACK;	 /*/// ACK的裝入。 /*/
								WriteUART(&c, 1);	 /*/// ACK的送信。 /*/
							} else {	 /*/// 寫入失敗時 /*/
								c = CAN;	 /*/// CAN的裝入。 /*/
								WriteUART(&c, 1);	 /*/// CAN的送信。 /*/
								WriteUART(szProgramFailure, 16);	 /*/// 寫入失敗Message的輸出。 /*/
								WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
								bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							}
							break;
						case 0 :
						case 2 :	 /*/// 受信Block號碼時 /*/
							c = ACK;	 /*/// ACK的裝入。 /*/
							WriteUART(&c, 1);	 /*/// ACK的送信。 /*/
							break;
						case 4 :	 /*/// XModem終了時 /*/
							switch (bXModemWritingBlock) {	 /*/// 下一個寫入Block號碼。 /*/
								case 1 :	/*/// 下一個應該向Block1中寫入時 /*/
									bzero(abXModemFileWrite + 128, 128);	 /*/// Block1的清除。 /*/
									c = WritePage(abXModemFileWrite);	 /*/// 0、1Block寫入到Flash。 /*/
									break;
								case 3 :	 /*/// 下一個應該寫入Block3時 /*/
									bzero(abXModemFileWrite + 384, 128);	 /*/// Block3的清除。 /*/
									c = WritePage(abXModemFileWrite + 256);	 /*/// 2、3Block寫入到Flash。 /*/
									break;
							}
							if (c) {	 /*/// 寫入成功時 /*/
								StopProgram();	 /*/// Flash寫入的終了。 /*/
								WriteUART("Program Complete\r\n", 18);	 /*/// Program終了Message的輸出。 /*/
								WriteUART("\r\n", 2);	 /*/// 1行改行。 /*/
							//	WriteUART(BinFileHeader.abBINHeader, 200);	 /*/// Header的輸出。 /*/
							//	while (UARTTx.bSize - UARTTx.cbData < 100) {	 /*/// 空的UART送信Buffer到為止一直等待。 /*/
							//	}
							//	WriteUART(BinFileHeader.abBINHeader + 200, 56);	 /*/// Header的剩余的輸出。 /*/
								WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
								bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							} else {	 /*/// 寫入失敗時 /*/
								c = CAN;	 /*/// CAN的裝入。 /*/
								WriteUART(&c, 1);	 /*/// CAN的送信。 /*/
								WriteUART(szProgramFailure, 16);	 /*/// 寫入失敗Message的輸出。 /*/
								WriteUART(szExit, 22);	 /*/// 終了提示符的輸出。 /*/
								bStatus = 5;	 /*/// 終了確認等待狀態。 /*/
							}
							break;
					}
					break;
				case 5 :	 /*/ 終了確認等待狀態 /*/
					ReadUART(&c, 1);	 /*/// 1Byte受信。 /*/
					if (c == 'Y' || c == 'y') {	 /*/// Yes時 /*/
						return;	 /*/// 終了。 /*/
					} else if (c == 'N' || c == 'n') {	 /*/// No時 /*/
						FlashUART();	 /*/// 送受信Buffer的Flash。 /*/
//						WriteUART(szVersionMessage, 35);	 /*/// 起動Message的輸出。 /*/
//						WriteUART(szDownloadPrompt, 43);	 /*/// BINFile的DownLoadMessage的輸出。 /*/
						c = NAK;	 /*/// NAK的裝入。 /*/
						WriteUART(&c, 1);	 /*/// NAK的送信。 /*/
						TA4MR = 0x82;	/*/ TimerA4以4.8/32MHz=150KHz設為OneShortTimer。 /*/
						TA4IC = 0;	/*/ TimerA4中斷要求的清除。 /*/
						TA4 = 0xFFFF;	/*/ 0.43秒的TimeOut。 /*/
						CPSRF = 0x80;	/*/ 時鐘用Prescale進行Reset。 /*/
						TABSR |= 0x10;	/*/ TimerA4Count開始Flag的SET。 /*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久国产综合色|国产精品| 91麻豆视频网站| 国产激情91久久精品导航| 99精品欧美一区| 日韩欧美亚洲国产另类| 亚洲精品视频一区| 国产福利一区在线| 欧美一区日韩一区| 一区二区在线观看视频| 国产成人日日夜夜| 日韩女优电影在线观看| 亚洲国产日韩精品| 91一区二区三区在线观看| 久久久久国产精品麻豆ai换脸| 夜夜嗨av一区二区三区四季av | 国产欧美一区二区精品久导航| 一区二区在线免费观看| 成人美女视频在线看| 日韩欧美国产高清| 视频一区国产视频| 欧美视频自拍偷拍| 又紧又大又爽精品一区二区| 成人av在线资源网站| 久久久久国产精品人| 韩国在线一区二区| 精品久久久久一区| 精品在线播放免费| 欧美一卡二卡三卡| 亚洲成av人片在线| 欧美男人的天堂一二区| 亚洲精品一二三| 色婷婷综合久色| 亚洲精品高清在线| 久久午夜国产精品| 久久精品国产一区二区三| 欧美一区二区三区小说| 美国毛片一区二区| 欧美一区二区三区免费观看视频| 亚洲va欧美va天堂v国产综合| 91黄视频在线观看| 午夜精品视频一区| 欧美丰满嫩嫩电影| 美女mm1313爽爽久久久蜜臀| 日韩精品一区二区三区在线播放| 蜜桃视频一区二区| 国产亚洲制服色| eeuss鲁片一区二区三区| 亚洲精品视频在线看| 欧美中文字幕一区二区三区| 伊人性伊人情综合网| 欧美三级电影网站| 五月天一区二区| 26uuu欧美日本| 成人午夜在线播放| 亚洲一区在线观看免费观看电影高清| 91高清视频免费看| 日本不卡视频在线| 久久久精品日韩欧美| av电影在线观看不卡| 亚洲综合久久久| 日韩精品一区二区三区三区免费| 国产中文字幕精品| 国产精品美女久久福利网站| 2023国产精品自拍| 成人手机在线视频| 亚洲一二三四在线观看| 欧美精品一区二区不卡| gogogo免费视频观看亚洲一| 天堂va蜜桃一区二区三区漫画版| 欧美电影免费观看完整版| 成人精品鲁一区一区二区| 亚洲午夜激情网页| 精品99一区二区三区| 色婷婷久久久亚洲一区二区三区| 日韩黄色免费电影| 中文字幕制服丝袜一区二区三区 | 日本不卡高清视频| 中文子幕无线码一区tr| 欧美日韩dvd在线观看| 国产91在线看| 日本不卡一区二区三区| 亚洲视频免费观看| www国产成人| 在线播放日韩导航| 91视频com| 国产福利一区二区三区| 日韩国产欧美三级| 亚洲激情男女视频| 国产欧美精品区一区二区三区 | 国产欧美综合色| 欧美日韩小视频| 99精品热视频| 国产成人av一区二区三区在线| 亚洲狠狠爱一区二区三区| 国产精品国产精品国产专区不蜜 | 久久天堂av综合合色蜜桃网| 欧美日韩亚洲另类| 在线亚洲+欧美+日本专区| zzijzzij亚洲日本少妇熟睡| 一本到三区不卡视频| 国产综合久久久久久久久久久久 | 在线国产亚洲欧美| 成人爱爱电影网址| 国产精品一区专区| 免费黄网站欧美| 亚洲超碰精品一区二区| 一区二区三区.www| 亚洲欧洲韩国日本视频| 中国av一区二区三区| 精品国产91九色蝌蚪| 欧美成人乱码一区二区三区| 制服丝袜一区二区三区| 欧美丰满嫩嫩电影| 555夜色666亚洲国产免| 91麻豆精品国产| 欧美精品三级在线观看| 欧美日韩精品一区二区三区四区| 91福利国产精品| 在线观看国产精品网站| 色94色欧美sute亚洲线路一ni| 不卡电影一区二区三区| 99精品一区二区| 91免费版在线看| 欧美视频在线观看一区| 欧美理论电影在线| 日韩欧美在线影院| 久久综合久久综合亚洲| 久久久久久黄色| 国产精品电影一区二区| 亚洲人成亚洲人成在线观看图片| 亚洲精品乱码久久久久久黑人| 一区二区成人在线| 日本在线不卡视频一二三区| 精品一区二区三区在线播放视频 | 91精品国产综合久久国产大片| 欧美日韩一区 二区 三区 久久精品| 欧美综合一区二区| 日韩欧美美女一区二区三区| 久久综合成人精品亚洲另类欧美| 欧美高清在线一区二区| 最好看的中文字幕久久| 亚洲最大的成人av| 美女www一区二区| 不卡免费追剧大全电视剧网站| 91高清视频免费看| 精品国产污网站| 中文字幕中文乱码欧美一区二区| 亚洲一区二区三区自拍| 国产中文字幕精品| 91黄色小视频| 精品久久久网站| 一区二区三区中文字幕在线观看| 青青青爽久久午夜综合久久午夜| 国产999精品久久久久久| 欧美系列在线观看| 日本一区二区三区久久久久久久久不| 一区二区三区在线视频播放| 久久国产免费看| 色激情天天射综合网| 2023国产精华国产精品| 一区二区三区毛片| 国产aⅴ精品一区二区三区色成熟| 色94色欧美sute亚洲线路二| 久久一区二区视频| 亚洲综合成人在线| 国产大片一区二区| 欧美精品少妇一区二区三区| 国产精品久久久久久久久久免费看 | 制服.丝袜.亚洲.中文.综合| 亚洲成人免费在线观看| 成人精品在线视频观看| 日韩欧美国产一区二区三区 | 亚洲欧洲国产专区| 精品制服美女久久| 欧美色视频在线观看| 国产精品美女久久久久久| 麻豆一区二区三区| 欧美日韩视频一区二区| 中文字幕中文在线不卡住| 精久久久久久久久久久| 6080亚洲精品一区二区| 亚洲人成网站精品片在线观看| 国产一区亚洲一区| 欧美一区二区精品在线| 亚洲一区二区欧美激情| 99这里都是精品| 国产精品美女久久久久久久网站| 免费成人美女在线观看.| 欧美亚洲国产一区二区三区 | 欧美三级电影在线看| 亚洲精品水蜜桃| 99vv1com这只有精品| 国产精品久久久久四虎| 国产成人在线影院| 久久久99精品久久| 国产精品自产自拍| 久久综合九色综合久久久精品综合| 日韩成人一区二区三区在线观看| 欧美日韩三级视频| 日韩精品一二三|