999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

噴碼機(jī)平臺(tái)WinCE5.0系統(tǒng)的BSP開發(fā)

2014-09-06 10:49:59王宏文李曉燕黃金蘭
關(guān)鍵詞:系統(tǒng)

王宏文,李曉燕,黃金蘭

(河北工業(yè)大學(xué) 控制科學(xué)與工程學(xué)院,天津 300130)

?

噴碼機(jī)平臺(tái)WinCE5.0系統(tǒng)的BSP開發(fā)

王宏文,李曉燕,黃金蘭

(河北工業(yè)大學(xué) 控制科學(xué)與工程學(xué)院,天津 300130)

基于以S3C2440A處理器為核心的噴碼機(jī)硬件開發(fā)平臺(tái),研究了嵌入式WinCE5.0操作系統(tǒng)板級(jí)支持包BSP的開發(fā)。分析了噴碼機(jī)平臺(tái)的硬件組成和BSP的框架結(jié)構(gòu),利用源代碼重用的思想,完成了Bootloader、OAL、驅(qū)動(dòng)程序、配置文件的開發(fā)工作并在BINFS文件系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)Multi-bin成功將內(nèi)核分塊。實(shí)踐表明該BSP在噴碼機(jī)臺(tái)上運(yùn)行穩(wěn)定,可靠性高,能有效提升系統(tǒng)的開機(jī)速度,并使平臺(tái)擁有了運(yùn)行大型噴印軟件的能力。

噴碼機(jī);WinCE5.0;Multi-bin;BSP

引 言

本文在實(shí)現(xiàn)噴碼機(jī)板載系統(tǒng)一體化的目標(biāo)下,研究了噴碼機(jī)軟件系統(tǒng)開發(fā)的操作系統(tǒng)板級(jí)支持包(Board Support Package,BSP)[1]。

1 BSP結(jié)構(gòu)概述

板級(jí)支持包BSP是介于硬件和操作系統(tǒng)之間的一層軟件系統(tǒng),其作用就是抽象操作系統(tǒng)和主板硬件之間的交互接口。基于具體開發(fā)板開發(fā)BSP,必須對(duì)它的結(jié)構(gòu)有一定的了解。一般情況下,WinCE5.0的BSP包含引導(dǎo)程序(BootLoader)、OEM適配層(OEM Adaptation Layer,OAL)、驅(qū)動(dòng)程序、配置文件四部分。

2 開發(fā)板的硬件組成

BSP不僅與特定的操作系統(tǒng)有關(guān),而且與不同的開發(fā)平臺(tái)也是一一對(duì)應(yīng)的。噴碼機(jī)系統(tǒng)的硬件平臺(tái)主要由圖1所示的幾大部分組成。

圖1 開發(fā)板硬件組成

以噴碼機(jī)控制系統(tǒng)的CPU為核心,外圍設(shè)備主要包括兩片HY57V561620F(L)T(P)芯片、一片K9F2G08U0A和EN29LV160AB芯片,使開發(fā)板擁有了64 MB的SDRAM、256 MB的NAND FLASH以及2 MB的 NOR FLASH。網(wǎng)卡采用DM9000,提供互聯(lián)網(wǎng)連接等功能,同時(shí)包含4.3寸的觸摸屏、XJ128噴頭以及豐富的接口資源。

3 BSP開發(fā)

從零開始研發(fā)BSP成本較高、耗時(shí)長(zhǎng),所以現(xiàn)實(shí)中最常采用的方法是根據(jù)需要對(duì)現(xiàn)有的相近BSP源碼進(jìn)行移植。本文就是以相近開發(fā)板的BSP為基礎(chǔ),根據(jù)噴碼機(jī)硬件平臺(tái)的外圍配置,對(duì)BSP的源碼做出對(duì)應(yīng)的修改,使之能夠有效支持硬件系統(tǒng)。主要工作介紹如下。

3.1 BootLoader的實(shí)現(xiàn)

BootLoader是嵌入式軟件系統(tǒng)最底層的一組代碼,是依賴硬件存在的。微軟公司提供了一套WinCE系統(tǒng)BootLoader的基本框架,由Blcommon庫(kù)、Eboot庫(kù)、OEM代碼、EDBG驅(qū)動(dòng)以及存儲(chǔ)管理組成[1]。移植時(shí)前二者無(wú)需改動(dòng),后面三部分則需要根據(jù)開發(fā)板的實(shí)際配置進(jìn)行修改。在實(shí)現(xiàn)過(guò)程中應(yīng)盡量使用微軟提供的支持庫(kù),這樣在保證了規(guī)范性、高效性的同時(shí)還節(jié)省了實(shí)現(xiàn)時(shí)間。

BootLoader需要實(shí)現(xiàn)的代碼主要分為兩部分:由匯編語(yǔ)言編寫的啟動(dòng)代碼以及由C語(yǔ)言編寫的主代碼。匯編代碼startup.s是BootLoader的入口函數(shù),CPU啟動(dòng)后將立即運(yùn)行,完成對(duì)CPU的初始化、地址映射、及BootLoader代碼的搬運(yùn)[2]。以下是平臺(tái)的部分代碼實(shí)現(xiàn):

ResetHandler

movr0, #0

mcrp15, 0, r0, c8, c7, 0 ; flush both TLB

mcrp15, 0, r0, c7, c5, 0 ; invalidate instruction cache

mcrp15, 0, r0, c7, c6, 0 ; invalidate data cache

ldr r0, = WTCON ; disable watch dog

ldr r1, = 0x0

str r1, [r0]

; set INTMSK, INTSUBMSK, disable all interrupts

ldr r0, = INTMSK

ldr r1, = 0xffffffff ; disable all interrupts

str r1, [r0]

ldr r0, = INTSUBMSK

ldr r1, = 0x7fff;disable all sub interrupt

str r1, [r0]

……

;set INTMOD, Configure MPLL, UPLL

……

;Copy boot loader to memory

……

匯編程序執(zhí)行完以后,就會(huì)跳轉(zhuǎn)到主程序main函數(shù)中,調(diào)用BLCOMMON庫(kù)blcommon.c中定義的BootLoaderMain函數(shù)。由它控制著接下來(lái)的整個(gè)代碼執(zhí)行流程,是引導(dǎo)加載程序的主控函數(shù)。

① 調(diào)用KerneRrelocate()函數(shù)(blcommon.c中實(shí)現(xiàn)):將BootLoader中的全局變量重新定位到RAM中。

② 調(diào)用OEMDebugInit()函數(shù)(main.c中實(shí)現(xiàn)):初始化調(diào)試端口,一般情況下就是異步串行通信口UART,調(diào)用OEMInitDebugSerial()函數(shù)實(shí)現(xiàn)。在噴碼機(jī)平臺(tái)中選擇串口UART0作為調(diào)試端口,查看處理器的芯片手冊(cè),要把通用I/O口的GPH2和GPH3用作功能復(fù)用口,設(shè)置它們?yōu)閁ART0的發(fā)送數(shù)據(jù)引腳TXD與接收數(shù)據(jù)引腳RXD,代碼如下:

pIOPortReg->GPHCON &= ~((3 << 4) | (3 << 6));

pIOPortReg->GPHCON |= ((2 << 4) | (2 << 6));

同時(shí),初始化它的傳輸速率、每幀傳輸數(shù)據(jù)位數(shù)、有無(wú)奇偶校驗(yàn)和停止位等,主要是對(duì)UART0的各控制寄存器進(jìn)行設(shè)置,如下:

UFCON0 = 0x0; //設(shè)置串口FIFO控制寄存器,禁用FIFO

UMCON0 = 0x0; //禁用

ULCON0 = 0x3; //選擇每幀數(shù)據(jù)位數(shù)為8,停止位數(shù)為1,無(wú) //奇偶校驗(yàn)

UCON0 = 0x245;//選擇串口波特率時(shí)鐘,發(fā)送模式,接收 //模式

UBRDIV0=( (int)(PCLK/(16*115200) -1 );

//設(shè)置串口波特率

③ 調(diào)用OEMPlatformInit()函數(shù)(main.c中實(shí)現(xiàn)):調(diào)用InitDisplay(),InitUSB(),Isr_Init()等函數(shù)完成平臺(tái)初始化工作。

④ 調(diào)用OEMPreDownload()函數(shù)(main.c中實(shí)現(xiàn)):當(dāng)平臺(tái)的USB下載不可用時(shí),調(diào)用此函數(shù)完成以太網(wǎng)下載前其他的一些準(zhǔn)備工作。獲得IP地址,初始化TFTP傳輸協(xié)議。

⑤ 調(diào)用DownloadImage()函數(shù)(在blcommon.c中實(shí)現(xiàn)):下載操作系統(tǒng)映像到SDRAM中,完成后進(jìn)行TOC簽名的檢查。

⑥ 調(diào)用OEMLaunch()函數(shù)(在main.c中實(shí)現(xiàn)):?jiǎn)?dòng)操作系統(tǒng)映像。

3.2 OAL移植

OAL(OEM Adaptation Layer)從WinCE5.0以后,引入了OAL的新概念:產(chǎn)品質(zhì)量級(jí)OAL,即PQOAL。它使OAL的目錄結(jié)構(gòu)標(biāo)準(zhǔn)化、代碼分布模塊化,降低了移植的難度[3]。WinCE5.0中OAL的代碼主要分成4部分:板級(jí)代碼、SoC芯片級(jí)代碼、體系結(jié)構(gòu)級(jí)代碼和硬件無(wú)關(guān)級(jí)代碼。

噴碼機(jī)平臺(tái)相較于學(xué)習(xí)板主要是在外圍設(shè)備方面做了變動(dòng),因此這里完成OAL移植的主要工作就是修改板級(jí)OAL代碼,位于WINCE500PLATFORM HARDWAER PLATFORM NAMESRC KERNELOAL。在最后的編譯過(guò)程中,OAL是被編譯進(jìn)操作系統(tǒng)內(nèi)核的,因此OAL的啟動(dòng)流程實(shí)際也就是操作系統(tǒng)內(nèi)核的啟動(dòng)流程。圖2是操作系統(tǒng)的初始化啟動(dòng)流程。

圖2 WinCE5.0內(nèi)核啟動(dòng)順序

其中的絕大部分函數(shù)由微軟提供,并不需要修改,只有部分涉及到具體硬件的地方需要實(shí)現(xiàn)。

① startup函數(shù)。這是系統(tǒng)啟動(dòng)時(shí)調(diào)用的第一個(gè)函數(shù),主要完成CPU和硬件的初始化等工作。本系統(tǒng)的OAL由BootLoader引導(dǎo),很多硬件設(shè)備已經(jīng)在那里完成初始化,所以此處startup的主要工作就是完成其余部分初始化然后跳轉(zhuǎn)到OAL的主控函數(shù)KernelStart()處開始執(zhí)行。部分代碼如下:

LEAF_ENTRY StartUp

addr0, pc, #g_oalAddressTable- (.+ 8)

bl KernelStart

ENTRY_END

② 串口調(diào)試函數(shù)OEMInitDebugSerial()。其由ARMInit()函數(shù)調(diào)用,主要完成初始化串口的工作,與BootLoader分享相同的代碼。

③ OEMInit()函數(shù)。OEMInit()函數(shù)也是由ARMInit()調(diào)用,主要完成硬件平臺(tái)的初始化,包括cache globals、中斷、系統(tǒng)時(shí)鐘、KITL等,幾乎完成了所有的硬件初始化工作[4]。如初始化I/O函數(shù)ConfigureGPIO()的部分代碼如下:

s2440IOP->GPBDAT=0x60;

s2440IOP->GPBUP=0x7FF;

s2440IOP->GPBCON=0x2A96A8;

……

s2440IOP->GPGCON=0x16A4F3B4;

s2440IOP->GPGUP=0x9BDC;

……

具體操作就是根據(jù)噴碼機(jī)平臺(tái)對(duì)端口的要求,查S3C2440A芯片手冊(cè)的I/O部分,根據(jù)規(guī)則設(shè)置相關(guān)寄存器來(lái)初始化它們的實(shí)際功用。這些所有的初始化工作都在WINCE500 PLATFORMHARDWAER PLATFORM NAMESRC KERNELOAL init.c中實(shí)現(xiàn)。

④ 中斷初始化函數(shù)OALIntrInit()。由OEMInit()函數(shù)調(diào)用,負(fù)責(zé)初始化外圍硬件的中斷控制器。首先調(diào)用OALIntrMapInit()初始化物理中斷Irq和邏輯中斷SysIntr的映射表,然后清除外部中斷和內(nèi)部中斷,調(diào)用BSPIntrInit()對(duì)BSP中的GPIO中斷進(jìn)行初始化工作,這里移植時(shí)不作修改。

⑤ 中斷處理函數(shù)OEMInterruptHandler()。OAL中對(duì)中斷的處理主要是實(shí)現(xiàn)ISR部分。當(dāng)發(fā)生硬件中斷時(shí),該函數(shù)就會(huì)被調(diào)用完成ISR部分的中斷處理:讀取系統(tǒng)的中斷標(biāo)記位、確定中斷源、屏蔽中斷并返回相應(yīng)的系統(tǒng)中斷號(hào)。然后觸發(fā)相應(yīng)的事件,由具體驅(qū)動(dòng)程序的IST完成真正的中斷處理。代碼存放路徑為WINCE500PLATFORM HARDWAER PLATFORM NAMESRC COMMONINTRintr.c,針對(duì)開發(fā)板實(shí)際設(shè)置的中斷修改此代碼。同時(shí)涉及到中斷處理的函數(shù)OALIntrRequestIrqs()、OALIntrEnableIrqs()、OALIntrDisableIrqs() 和OALIntrDoneIrqs()都在intr.c中實(shí)現(xiàn),它們相應(yīng)地會(huì)調(diào)用BSPIntrRequestIrqs()、BSPIntrEnableIrq()、BSPIntrDisableIrq()、BSPIntrDoneIrq()來(lái)實(shí)現(xiàn)同一CPU的不同開發(fā)板對(duì)中斷所做的一些修改。

⑥ 內(nèi)核初始化函數(shù)KernelInit()。完成初始化系統(tǒng)API函數(shù)調(diào)用表、系統(tǒng)堆、內(nèi)存池、內(nèi)核進(jìn)程和進(jìn)程調(diào)度等工作,由微軟提供。

⑦ FirstSchedule()。這實(shí)際上不是一個(gè)函數(shù),而是armtrap.s文件中的一個(gè)標(biāo)簽,使第一個(gè)處于就緒態(tài)的線程執(zhí)行[4]。

OAL作為內(nèi)核與目標(biāo)硬件之間的接口,主要對(duì)硬件的4種部分加以抽象:RTC、Timers、Caches和調(diào)試端口,針對(duì)實(shí)際情況改變了哪里的硬件就修改對(duì)應(yīng)的代碼。具體到噴碼機(jī)硬件開發(fā)板,移植的重點(diǎn)是硬件初始化部分和中斷處理部分。

3.3 驅(qū)動(dòng)程序的實(shí)現(xiàn)

如果增加或刪改了目標(biāo)板的硬件設(shè)備,那么移植BSP時(shí),就必須修改設(shè)備驅(qū)動(dòng)程序。WinCE開發(fā)平臺(tái)提供了多種類型的設(shè)備驅(qū)動(dòng)程序,它們的源代碼由兩部分組成:與硬件平臺(tái)無(wú)關(guān)的部分位于WINCE500PUBLICCOMMONOAKDRIVERS目錄下,與硬件平臺(tái)有關(guān)的部分位于WINCE500PLATFORM下相應(yīng)BSP目錄的DRIVERS[5]。

我們不需要修改與硬件平臺(tái)無(wú)關(guān)的公共部分,只需要修改與硬件密切相關(guān)的源代碼。具體到噴碼機(jī)平臺(tái),主要就是XJ128噴頭底層驅(qū)動(dòng)的PMJ_Init(初始化設(shè)備)、PMJ_Deinit(卸載設(shè)備)、PMJ_Open(打開設(shè)備)、PMJ_Close(關(guān)閉設(shè)備)、PMJ_Write(寫數(shù)據(jù)到設(shè)備)、PMJ_IOControl(設(shè)備的I/O控制)等12個(gè)流接口驅(qū)動(dòng)函數(shù)。

3.4 移植配置文件

PB5使用兩種配置文件來(lái)生成操作系統(tǒng)運(yùn)行時(shí)的鏡像,一種是源代碼配置文件,另一種是映像配置文件[6]。配置文件的移植主要集中在Dirs、source、BIB以及REG文件。

根據(jù)實(shí)驗(yàn)結(jié)果,導(dǎo)入移植好的BSP編譯出的系統(tǒng)鏡像內(nèi)存太大,燒入噴碼機(jī)平臺(tái)以后系統(tǒng)開機(jī)十分緩慢。因此需要在BINFS基礎(chǔ)上實(shí)現(xiàn)Multi-bin技術(shù)來(lái)將內(nèi)核分塊,解決開機(jī)緩慢的問(wèn)題。其具體實(shí)現(xiàn)主要在配置文件部分:修改config.bib的MEMORY部分如表1所列。

表1 config.bib文件MEMORY部分配置

將內(nèi)核分為XIPKERNEL和NK兩塊,開機(jī)必備的內(nèi)容存放在XIPKERNEL中,其他部分存放在NK中按需調(diào)用。經(jīng)過(guò)實(shí)踐,XIPKERNEL應(yīng)包含如下的幾個(gè)模塊(添加在MODULES段):

MODULES

nk.exe $(_FLATRELEASEDIR)kern.exe XIPKERNEL SH coredll.dll $(_FLATRELEASEDIR)coredll.dll XIPKERNEL SH

filesys.exe $(_FLATRELEASEDIR)filesys.exe XIPKERNEL SH

fsdmgr.dll $(_FLATRELEASEDIR)fsdmgr.dll XIPKERNEL SH

mspart.dll $(_FLATRELEASEDIR)mspart.dll XIPKERNEL SH

binfs.dll $(_FLATRELEASEDIR)infs.dll XIPKERNEL SH

ceddk.dll $(_FLATRELEASEDIR)ceddk.dll XIPKERNEL SH regenum.dll $(_FLATRELEASEDIR) egenum.dll XIPKERNEL SHbusenum.dll $(_FLATRELEASEDIR)usenum.dll XIPKERNEL SH

pm.dll $(_FLATRELEASEDIR)pm.dll XIPKERNEL SH smflash.dll $(_FLATRELEASEDIR)smflash.dll XIPKERNEL SHfatfsd.dll $(_FLATRELEASEDIR)fatfsd.dll XIPKERNEL SH

diskcache.dll $(_FLATRELEASEDIR)diskcache.dll XIPKERNEL SH

fatutil.dll $(_FLATRELEASEDIR)fatutil.dll XIPKERNEL SH

除此之外還要在FILES段添加下面兩個(gè)模塊:

FILESboot.hv $(_FLATRELEASEDIR)oot.hv XIPKERNEL SH

wince.nls $(_FLATRELEASEDIR)wince.nls XIPKERNEL SH

配合修改platform.bib、common.bin文件完善系統(tǒng)各功能模塊的鏡像歸屬問(wèn)題,同時(shí)在platform.reg中添加BINFS文件的支持。所有工作完成后,導(dǎo)入新的BSP,成功編譯出的系統(tǒng)鏡像如圖3所示。

圖3 編譯生成的系統(tǒng)鏡像

最終將XIP.BIN燒寫到噴碼機(jī)平臺(tái),系統(tǒng)啟動(dòng)時(shí)只需將2 MB的XIPKERNEL復(fù)制到RAM中,而不是原來(lái)將近30 MB的NK。

這樣不僅將開機(jī)時(shí)間降低至10 s以內(nèi),同時(shí)增加了29 MB的可用RAM,使系統(tǒng)擁有了運(yùn)行大型應(yīng)用軟件的能力。

結(jié) 語(yǔ)

噴碼機(jī)產(chǎn)品的應(yīng)用領(lǐng)域越來(lái)越廣,針對(duì)不同的需要設(shè)計(jì)開發(fā)板,在定制系統(tǒng)時(shí)就必須有配套的BSP。移植在滿足應(yīng)用要求的同時(shí)可以大大節(jié)省開發(fā)時(shí)間,減少產(chǎn)品的研發(fā)成本。

[1] 何劍鋒,李祥,何月順.基于XScale PXA270處理器平臺(tái)WindowsCE5.0系統(tǒng)的BSP二次開發(fā)[J].化工自動(dòng)化及儀表,2009,36(4):72-75.

[2] 張飛,白瑞林,陸林.WinCE5.0 Bootloader的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(7):232-234.

[3] 趙永志.WinCE5_0在嵌入式平臺(tái)ARK1200上的移植與應(yīng)用[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.

[4] 夏軍,胡景春.基于ARM的Windows CE移植及應(yīng)用開發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(4):129-132.

[5] 李尚柏,鐘瑞.基于ARM的嵌入式Windows CE系統(tǒng)高級(jí)開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2011:192-198.

[6] 張德華.基于AT91SAM9261平臺(tái)的Windows CE的移植[J].工業(yè)控制計(jì)算機(jī),2009,22(4):62-65.

王宏文(教授),研究領(lǐng)域?yàn)楝F(xiàn)代傳動(dòng)控制系統(tǒng)與智能化工程設(shè)備;李曉燕、黃金蘭(碩士研究生),研究領(lǐng)域?yàn)橹悄芑こ萄b備、嵌入式技術(shù)。

Development of BSP Based on WinCE 5.0 and Inkjet Printer Platform

Wang Hongwen,Li Xiaoyan,Huang Jinlan

(School of Control Science and Engineering, Hebei University of Technology, Tianjin 300130, China)

Based on the inkjet printer hardware platform with its core of S3C2440A CPU, the development of BSP based on Windows CE5.0 is introduced. Compositions of inkjet printer platform and the frame construction of BSP are analyzed, and then transplantations of Bootloader, OAL, device driver,configuration files and the implementation approach that divides the kernel into a few pieces on the basis of BINFS and Multi-bin are stated in detail by using the comcept of code reuse. Practices show that the BSP in the inkjet printer platform is stable with high-reliability, and can effectively improve system boot speed. Meanwhile it also has the opportunity to run large-scale printing software.

inkjet printer;WinCE5.0;Multi-bin;BSP

TP316

A

迪娜

2013-12-07)

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 四虎永久免费地址| 国产成+人+综合+亚洲欧美| 久久99精品久久久久纯品| 色哟哟国产精品一区二区| 亚洲美女操| 日韩欧美国产区| 青青草一区二区免费精品| 老熟妇喷水一区二区三区| 亚洲无码精品在线播放| 色偷偷综合网| 九色免费视频| 国产女人水多毛片18| 福利视频一区| 欧美日韩在线成人| 免费AV在线播放观看18禁强制| 婷婷激情五月网| 欧美一级大片在线观看| 国产丝袜无码精品| 国产成人亚洲综合A∨在线播放| 日韩一级毛一欧美一国产| 国产视频一二三区| 日本高清免费不卡视频| 国产欧美日韩视频怡春院| 91福利免费| 亚洲国产高清精品线久久| 国产精品偷伦视频免费观看国产 | 日韩一级二级三级| 97青青青国产在线播放| 91 九色视频丝袜| 色天堂无毒不卡| 婷婷色一二三区波多野衣| 日本久久久久久免费网络| 丁香婷婷激情网| 在线精品亚洲国产| a网站在线观看| 国产精品欧美在线观看| yy6080理论大片一级久久| 无码久看视频| 国产波多野结衣中文在线播放| 久久久久人妻精品一区三寸蜜桃| 中文成人在线| 亚洲AV人人澡人人双人| 精品人妻AV区| 强奷白丝美女在线观看| 波多野结衣无码中文字幕在线观看一区二区| 激情爆乳一区二区| 亚洲精品黄| 久久精品这里只有国产中文精品| 中日韩欧亚无码视频| 国产欧美日韩免费| 成年女人a毛片免费视频| 美女黄网十八禁免费看| 亚洲精品天堂在线观看| 香蕉久久永久视频| 精品国产自在现线看久久| 啪啪啪亚洲无码| 国产亚洲精品97在线观看| 91无码人妻精品一区| 97人妻精品专区久久久久| 久久亚洲国产视频| 国产一区二区三区免费观看| 三上悠亚精品二区在线观看| 亚亚洲乱码一二三四区| 国产成人精品优优av| 中文字幕不卡免费高清视频| 日韩专区欧美| 亚洲色图欧美| 91久久青青草原精品国产| 亚洲精品国产自在现线最新| 成人国产免费| 国产精品久线在线观看| 国产精品亚洲综合久久小说| 久久精品无码一区二区国产区| 国产视频a| 制服丝袜 91视频| 五月天综合网亚洲综合天堂网| 青青草国产一区二区三区| 国内精品久久久久久久久久影视 | 国产精品成人一区二区不卡| 99国产精品一区二区| 中文成人在线| 美美女高清毛片视频免费观看|