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

基于Qt/Embedded的嵌入式GUI顯示架構實現

2017-06-05 14:15:40
計算機技術與發展 2017年5期
關鍵詞:嵌入式設備系統

王 凱

(南京航空航天大學 計算機科學與技術學院,江蘇 南京 210016)

基于Qt/Embedded的嵌入式GUI顯示架構實現

王 凱

(南京航空航天大學 計算機科學與技術學院,江蘇 南京 210016)

嵌入式操作系統VxWorks原有的圖形支持WindML對于開發高級GUI圖形應用比較困難,WindML不支持可視化的圖形界面開發,也沒有大量的圖形控件供開發者使用。通過對Qt/Embedded的圖形驅動架構和Qt/Embedded的服務器/客戶端架構的研究,以及對VxWorks下的圖形庫WindML的顯示體系結構和圖形驅動支持能力的分析,提出了一個VxWorks下的基于Qt/Embedded的GUI顯示架構。該顯示架構通過引入Qt/Embedded嵌入式支持層,將Qt/Embedded庫內幀緩沖驅動支持類和嵌入式系統VxWorks圖形支持庫WindML融合在一起,實現了WindML在源碼層級對Qt/Embedded庫的支持。給出了Qt/Embedded嵌入式圖形顯示支持的具體實現方法,通過修改Qt/Embedded庫的VxWorks圖形顯示支持部分的源代碼,使用WindML API獲取到了上層Qt幀緩沖驅動需要的寬度、高度、像素格式、幀緩沖地址等重要信息,實現了圖形顯示設備的打開,注冊以及訪問功能,建立了基于Qt/Embedded的GUI顯示系統。

Qt/Embedded;嵌入式系統;VxWorks;圖形用戶界面

0 引 言

VxWorks操作系統是美國的WindRiver公司于1983年設計開發的一種嵌入式實時操作系統(RTOS),是嵌入式開發環境的關鍵組成部分。VxWorks系統擁有良好的持續發展能力、高性能的內核以及友好的用戶開發環境,以其良好的可靠性和卓越的實時性在軍事、通信、航空、航天等實時性要求極高的領域中應用廣泛[1]。近年來,嵌入式領域圖形界面得到了越來越廣泛的應用,為用戶提供一個友好的人機交互界面已成為嵌入式開發的一個重要組成部分。隨著嵌入式設備硬件的飛速發展,嵌入式領域圖形GUI技術已經日趨成熟,用戶對于嵌入式設備人機交互的要求也越來越高,人們需要的不是晦澀難明的字符界面,而是直觀,操作邏輯簡單,功能強大的圖形GUI交互功能。

Qt/Embedded是Trolltech公司推出的一個跨平臺的C++圖形用戶界面應用程序框架。它給程序開發者提供了建立圖形用戶界面所需的所有功能[2]。Qt/Embedded庫是完全面向對象的,很容易擴展,并且允許真正的組件編程。Qt/Embedded庫是一套開源的C++圖形用戶界面庫[3],擁有種類豐富的圖形對象可供開發者使用,采用名為signal/slot信號槽的事件信號傳遞機制。它擁有跨平臺的集成開發環境Qt Creator,對于開發者來說,開發難度低,開發環境友好。同時,它擁有面向嵌入式系統的版本,豐富的控件資源以及良好的可移植性,完全能夠滿足用戶對GUI界面的需要[4]。通過分析Qt/Embedded庫和VxWorks圖形支持庫WindML的體系結構、源碼,提出了一種新的基于Qt/Embedded庫的VxWorks下的圖形支持架構。在該架構中,增加了VxWorks圖形支持庫WindML的支持,針對在嵌入式系統VxWorks下移植和使用Qt/Embedded庫的問題,進行了深入研究。

1 Qt/Embedded的體系結構

1.1 Qt圖形驅動架構

Qt/Embedded庫是Qt圖形界面庫的嵌入式版本,為了適應嵌入式操作系統環境,進行了許多改動和調整,它在構建GUI環境時放棄使用原來的X Window體系,因此也就不需要使用較大的Xlib庫,所以內存占用十分小,能夠適應嵌入式開發的需求。在放棄了X Window體系之后,Qt/Embedded庫底層使用幀緩沖體系作為底層圖形接口[5],并使用輸入事件作為具體的輸入設備的抽象,比如keyboard和mouse輸入事件等;在上層,Qt/Embedded庫繼續使用原本的Qt架構,從而保證用戶使用的便利性和一致性,并能夠與X Window系統下的程序部分兼容,使得用戶便于進行程序移植[6]。圖1給出了Qt/Embedded庫的軟件架構。

Qt/Embedded庫的軟件總體架構可分為以下三層:

(1)上層控件層:直接提供用戶使用的GUI控件,給用戶界面開發提供了基于widget的GUI開發控件。

(2)上層圖形層:該層是低級別的繪圖層,提供了對幀緩沖的繪圖操作,在這一層中,需要獲得幀緩沖驅動體系所需的具體硬件信息,從而為下一層驅動提供支持,與此同時,完成對底層幀緩沖驅動圖形操作的抽象,供給上層使用。

(3)圖形引擎和事件驅動層:在這一層中直接進行對底層幀緩沖驅動的訪問,并將具體的輸入設備抽象為事件。

圖形幀緩沖(Framebuffer)體系架構是Qt/Embedded圖形引擎的基礎,Framebuffer驅動最重要的功能就是給用戶提供一個進程空間映射到實際物理顯示內存的接口,該接口通過系統調用mmap來實現[7-8],具體原理如下:在幀緩沖體系中,顯示硬件設備被抽象為幀緩沖區,從開發者的角度看,向幀緩沖寫入指定格式的數據即是向屏幕輸出內容,整個幀緩沖就對應屏幕上圖像的一幀。通過不斷向Framebuffer中寫入數據,顯示控制器就自動地從Framebuffer中取數據并顯示出來。在VxWorks下的GUI顯示體系結構中,幀緩沖位于上層GUI庫和底層具體的顯示硬件設備之間,目的是為了屏蔽各種顯示硬件之間不同的操作[9]。這種圖形幀緩沖體系結構也獲得了VxWorks系統內核的支持,能夠應用于VxWorks系統上。

1.2 Qt/Embedded的客戶端/服務器架構

Qt/Embedded框架依然采用了客戶端/服務器的架構,所以,所有基于Qt/Embedded的用戶程序運行前必須連接到Qt/Embedded服務器。在服務器端,Qt/Embedded對鍵盤、鼠標、屏幕等輸入輸出設備進行管理,同時也需要對各個客戶端創建的窗口進行管理,處理窗口的創建與銷毀、窗口的重疊與移動、窗口焦點的轉換等操作。客戶端重要的工作是處理服務器端發送的圖形事件,在繪制完畢后通知服務器端并由服務器端顯示。客戶端的其他工作還包括處理窗口內部GUI控件的管理工作,繪制Widget,對網絡訪問進行控制,處理文件系統的讀寫操作,等等。Qt/Embedded的客戶端/服務器架構如圖2所示。

由于Qt/Embedded庫為了適應嵌入式平臺的硬件特點,做了許多兼容工作,并對Server端進行了簡化,從而使得Qt/Embedded庫移植的困難程度大大降低,只需要實現鍵盤、鼠標和屏幕顯示驅動,就能實現Qt/Embedded的移植。

從靈活性和節省資源的角度考慮,Qt/Embedded的Server端并不是一個獨立的進程,而是包含在嵌入式系統下第一個啟動的Qt/Embedded進程內;從開發者的角度來說,它和普通的Client端進程表現相同,但這個進程控制著對所有輸入輸出設備的訪問。

圖2 Qt/Embedded的客戶端/服務器架構

2 VxWorks圖形體系結構

WindML(Wind Media Library)是嵌入式操作系統VxWorks下的多媒體庫[10],它提供基本的圖形、視頻、音頻開發接口供VxWorks下的開發者使用。WindML庫提供了一套完整的多媒體設備驅動開發框架(見圖3),同時附帶了一系列用來處理輸入輸出設備和過程事件的工具。

圖3 WindML多媒體開發組件框架

WindML中共有2個子組件:軟件開發工具包(SDK)和驅動開發工具包(DDK)。

SDK用于開發上層應用,它提供輸入輸出設備、字體、音頻和圖形的API集合,使得開發者可以編寫面向硬件透明的代碼,并在不同的硬件平臺下測試和運行。

DDK用于開發底層對應特定硬件的驅動程序。在DDK中,包含許多通用硬件的驅動程序模板,從而使得開發者可以快速開發出特定驅動的API函數,同時,DDK為開發者提供了可定制性和可擴展性。

在VxWorks下,由WindML為Qt/Embedded庫提供幀緩沖驅動的嵌入式支持。WindML圖形驅動支持主要通過2D應用層、通用圖形庫和圖形設備驅動層與圖形硬件進行通信[11],WindML圖形驅動支持體系結構如圖4所示。

圖4 WindML圖形驅動支持體系結構

其中,2D應用層通過通用圖形庫中的UGL圖形接口對圖形設備驅動(ugl_ugi_driver結構)進行訪問。驅動程序主要提供符合上層UGL圖形調用接口并能驅動顯卡硬件的一些接口函數[12]。ugl_ugi_driver結構如下所示:

typedef struct ugl_ugi_driver * UGL DEVICE ID;

typedef struct ugl_ugi_driver{

/*數據成員*/

UGI_MODE *pMode; /*顯示模式*/

UGI_PAGE *pPageZero; /*第一個顯示頁面地址*/

void * extension; /*可選的擴展驅動部分*/

/*通用函數*/

UGI_STATUS(*info)(struct ugl_ugi_driver * pDriver,

UGI_INFO_REQinfoRequest,void * info);

UGL STATUS(*destroy)(struct ugl_ugi_driver *

pDriver);

/*支持的模式*/

UGL STATUS(*modeSet)(struct ugl_ugl_driver *

pDriver,UGL_MODE * pMode);

……

}

VxWorks下任何顯卡驅動都是將主要功能函數,如模式設置、公用畫點、畫線等圖形函數的函數指針注冊到UGL_DEVICE_ID結構體中,因此,雖然底層硬件不同導致函數功能實現方式不同,但面向上層時的函數接口保持一致性,函數的名稱和參數都是相同的。

3 Qt/Embedded圖形界面架構實現

3.1 VxWorks下的Qt/Embedded架構

通過Qt/Embedded的圖形引擎類提供給Framebuffer設備的支持和WindML DDK提供的API集合支持,可以提出一種自上而下的嵌入式實時系統VxWorks下的GUI顯示體系結構,如圖5所示。

從圖5可以看出,Qt幀緩沖驅動依賴于Qt/Embedded嵌入式支持,Qt/Embedded嵌入式支持又是依靠WindML DDK函數與底層VxWorks操作系統進行通信。通過關鍵部分Qt幀緩沖驅動和Qt/Embedded嵌入式支持,構建起VxWorks下的GUI顯示體系結構。

圖5 VxWorks下的Qt/Embedded架構

Qt幀緩沖驅動以類的形式存在于QtGui源代碼中,該類繼承自QScreen,通過實現這個類的具體功能代碼,使得Qt中的QWSServer圖形事件服務高效而穩定的運行。在實現功能的過程中,使用WindML DDK函數優化幀緩沖驅動獲得硬件相關信息的過程(比如屏幕分辨率、緩沖地址等),快速而有效地完成幀緩沖驅動作為上層應用和底層顯示設備之間抽象層的功能。同時,通過對圖5中Qt/Embedded嵌入式支持中間層的修改,實現WindML DDK對Qt幀緩沖驅動的功能支持。

3.2 Qt/Embedded嵌入式支持實現

VxWorks下構建一個完整的GUI顯示體系結構需要從上層界面到底層系統的完整支持。上層準備使用Qt/Embedded圖形引擎,它是基于C++類庫實現的,Qt/Embedded類庫封裝了適應不同操作系統的訪問細節,能夠跨平臺實現GUI的顯示功能。Qt/Embedded庫對目標系統的要求是:只要這個系統有一個線性地址的緩沖幀并支持C++的編譯器[13]。它通過自帶的幀緩沖驅動與底層操作系統進行通信聯系。VxWorks系統本身支持GUN C++的編譯[14],同時該系統的顯示驅動模式支持幀緩沖驅動抽象的工作方式,通過幀緩沖這個橋梁,Qt/Embedded庫可以很好地與VxWorks系統結合在一起。

Qt/Embedded中,QScreem類是抽象出底層顯示設備的基類,其中聲明了對底層顯示設備的基本描述和操作方式,Qt/Embedded庫對具體的顯示設備,如VxWorks Framebuffer做的抽象類接口都是繼承并重載基類中的函數來實現。Qt/Embedded庫幀緩沖驅動的實現類為文件qscreenvxworksfb_qws.cpp中的QvxWorksFbScreen類,下面給出qscreenvxworksfb_qws.cpp文件中的Qt/Embedded幀緩沖的主要代碼:

bool QVxWorksFbScreen::connect(const QString &)

{

if(!vxDisplayOpen()) return false;

//調用設備打開主函數,失敗則返回

int format;

vxDisplayGet(&w,&h,&d,&format,&data,&lstep);

//獲取顯示設備信息

dw=w;

dh=h;

mapsize=size=h*lstep;

……(略)

QWSServer::setDefaultMouse("vxworks");

QWSServer::setDefaultKeyboard("vxworks");

//設置鼠標鍵盤

return true;

}

從代碼中可以看出,Qt/Embedded幀緩沖驅動的功能主要通過vxDisplayOpen和vxDisplayGet兩個函數來實現。vxDisplayOpen實現打開顯卡設備并向VxWorks系統注冊該設備,獲取設備資源;vxDisplayGet實現獲取顯示的具體信息,比如LCD屏幕的寬度、高度等相關信息,同時,給基類QScreen的成員變量data賦值,該變量保存了在Qt/Embedded嵌入式支持層獲取的幀緩沖映射地址。在Qt/Embedded幀緩沖驅動代碼的最后,向QWSServer圖形事件服務注冊了使用的輸入設備驅動,在這里,鍵盤鼠標都使用了VxWorks系統驅動。

如上所述,Qt/Embedded幀緩沖驅動通過調用vxDisplayOpen和vxDisplayGet兩個函數來獲得Qt/Embedded嵌入式支持層的支持,這兩個函數具體實現在qvxworksdisplay.c文件中,vxDisplayOpen函數主要代碼如下:

int vxDisplayOpen(void)

{

char *pDisplayName=UGL_NULL;

UGL_UINT32displayNumber;

UGL_STATUS status;

UGL_REG_DATA *pRegistryData;

UGL_FB_INFOfbInfo;

status=uglDisplayOpen(UGL_NULL,&pDisplayName,&displayNumber);

//使用UGL庫函數根據默認名打開顯示設備

……(略)

pRegistryData=uglRegistryFind(UGL_DISPLAY_TYPE,&displayNumber,0,0);

//使用UGL庫函數注冊顯示設備

if(pRegistryData==UGL_NULL)

{

printf("Display not found. ");

uglDisplayClose( UGL_NULL);

return FALSE;

}

vxDisplayId=(UGL_DEVICE_ID) pRegistryData->id;

//顯示設備注冊成功后,從注冊結構體中提取顯示ID

……(略)

return TRUE;

}

在上述代碼中,通過WindML DDK函數uglDisplayOpen打開顯示設備,然后通過調用uglRegistryFind函數向VxWorks系統注冊顯示設備,并通過pRegistryData->id獲得了UGL_DEVICE_ID結構體的相關信息,該結構體包含了所有的圖形接口信息,并把UGL_DEVICE_ID結構體的信息保存在vxDisplayId變量中。

在vxDisplayGet函數中,使用vxDisplayId變量,調用WindML DDK的uglInfo函數,獲取到了上層Qt幀緩沖驅動需要的寬度、高度、像素、像素格式、幀緩沖地址等重要信息,主要代碼如下:

void vxDisplayGet(int *width,int *height,int *bitsPerPixel,int *pixelFormat,unsigned char **data,int *strideBytes)

{

……(略)

uglInfo(vxDisplayId,UGL_MODE_INFO_REQ,&modeInfo);

//根據顯示設備ID,獲取顯示相關信息

uglARGBSpecGet(modeInfo.colorFormat, &colorSpec);

//獲取顏色相關信息

*width=modeInfo.width;

*height=modeInfo.height;

*bitsPerPixel=colorSpec.numBytesPerARGB*8;

*pixelFormat=modeInfo.colorFormat;

……(略)

*data=(unsigned char *)modeInfo.fbAddress;

//通過modeInfo結構體提取幀緩沖地址傳入到Qt類中

……(略)

}

至此,通過對Qt/Embedded內部的VxWorks系統支持源代碼的分析和修改,獲取到了Qt幀緩沖驅動的所有重要硬件信息,完成了幀緩沖驅動的基本功能,從而實現了Qt/Embedded嵌入式支持層對Qt幀緩沖驅動層的支持,也實現了對Qt/Embedded在VxWorks系統下的移植。

3.3 Qt/Embedded顯示支持代碼框架結構

在Qt庫的QVxWorksFbScreen類中,通過在connect函數中調用的兩個重要函數vxDisplayGet和vxDisplayOpen,實現了Qt庫與WindML庫UGL庫函數的結合,通過UGL庫函數獲取到了顯示寬度、高度、像素信息等圖形顯示關鍵參數,同時獲取到了顯示幀緩沖內存地址等重要信息,從而實現了Qt/Embedded庫在VxWorks環境下對顯示設備的支持。顯示支持代碼框架結構如圖6所示。

圖6 Qt/Embedded顯示支持代碼框架結構圖

最后,在交叉編譯環境下編譯修改后的Qt/Embedded庫源代碼,生成.so庫文件,即可在VxWorks操作系統環境下加載使用。

4 結束語

為了實現VxWorks下便捷、易用的圖形GUI系統,實現Qt/Embedded庫與VxWorks的完美兼容,在研究分析Qt/Embedded庫的圖形驅動架構和VxWorks系統的圖形顯示體系結構以及在VxWorks下實現圖形GUI原理的基礎上,通過對Qt/Embedded庫幀緩沖驅動的二次開發修改,實現了Qt GUI界面在VxWorks下的完美運行。Qt/Embedded延續了Qt在桌面系統的所有功能,豐富的API接口和基于組件的編程模型使得嵌入式VxWorks系統中的GUI應用程序開發更加便捷。

[1] 向孝龍,陳 欣,李春濤.基于RTW和VxWorks的無人機仿真系統設計與實現[J].計算機測量與控制,2014,22(4):1291-1293.

[2] 吳燕燕,賀鋒濤.基于ARM9平臺上Qt/Embedded的移植與開發[J].液晶與顯示,2013,28(2):261-265.

[3] 楊 柳,岳 坤,龐和明,等.Qt/Embedded及嵌入式Linux在智能監控系統控制中的應用[J].計算機應用,2010,30(S1):289-291.

[4] Chen F,Fan X.Embedded system’s performance analysis with RTC and QT[C]//International symposium on advanced parallel processing technologies.Guangzhou,China:[s.n.],2007:569-579.

[5] 連照亮,徐世國.基于Qt/Embedded在嵌入式linux下的應用研究[J].微計算機信息,2010,26(17):81-82.

[6] 曾劍元.ARM9平臺上基于Qt/Embedded的嵌入式GUI的研究與實現[D].長春:吉林大學,2010.

[7] Yang L,Sander P V,Lawrence J.Geometry-aware framebuffer level of detail[J].Computer Graphics Forum,2008,27(4):1183-1188.

[8] Mao C,Johnson K M.Fast-switching liquid-crystal-on-silicon microdisplay with framebuffer pixels and surface-mode optically compensated birefringence[J].Optical Engineering,2006,45(12):1269-1278.

[9] 吳子平,徐愛鈞.基于Qt/Embedded的嵌入式GUI的研究與構建[J].電腦開發與應用,2012,25(1):13-16.

[10] Battye T G G,Kontogiannis L,Johnson O,et al.iMOSFLM:a new graphical interface for diffraction-image processing with MOSFLM[J].Acta Crystallographica,2011,67(4):271-281.

[11] 王 璐,官 琴.基于PowerPC嵌入式平臺的WindML圖形驅動設計[J].兵工自動化,2013,32(5):95-96.

[12] 張繼偉.基于WindML環境下的顯卡驅動設計[J].現代電子技術,2010,33(14):78-80.

[13] 李 鴿.基于VxWorks WindML組件的SM502顯卡驅動開發[D].西安:西安電子科技大學,2014.

[14] 謝周標.嵌入式二維圖形硬件加速引擎研究與設計[D].長沙:湖南大學,2013.

Implementation of Embedded GUI Display Architecture Based on Qt/Embedded

WANG Kai

(College of Computer Science and Technology,Nanjing University of Aeronautics & Astronautics,Nanjing 210016,China)

It is very difficult for the development of advanced GUI graphics applications that the original graphics support WindML of embedded operating system,VxWorks.WindML does not support the visual graphical interface development and can’t provide large number of graphical controls for developers to use.Through the research on the Qt/Embedded graphics driver architecture and Qt/Embedded server/client architecture,as well as the analysis of the display architecture and graphics drivers support capabilities of the WindML graphics library under VxWorks,a VxWorks GUI with QT/Embedded display architecture has been implemented which can display architecture by introducing the embedded QT/embedded support layer.Combined both QT/embedded database frame buffer drive support and embedded system VxWorks graphics library WindML,the WindML support to QT/embedded library at the source code level has been achieved.The concrete realization method of Qt/Embedded embedded support has been presented.By modifying the source code part of Qt/Embedded Library that supported graphics display and by using WindML API to get the important information such as width,height,pixel format,frame buffer address that is needed by the upper Qt/Embedded layer,opening,registration and accessing to the graphics display device have been achieved and thus GUI display system with Qt/Embedded has been realized.

Qt/Embedded;embedded system;VxWorks;graphical user interface

2016-06-01

2016-09-08 網絡出版時間:2017-03-13

國防科工局“十三五”重點基礎科研項目(JCKY2016206B001)

王 凱(1984-),男,碩士研究生,研究方向為軟件體系結構。

http://kns.cnki.net/kcms/detail/61.1450.TP.20170313.1546.070.html

TP311

A

1673-629X(2017)05-0144-05

10.3969/j.issn.1673-629X.2017.05.030

猜你喜歡
嵌入式設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 欧美日本在线一区二区三区| 又猛又黄又爽无遮挡的视频网站 | 久久亚洲高清国产| 日韩高清欧美| 日韩在线播放中文字幕| 久青草国产高清在线视频| 国产精品成| 高清国产在线| 国产一二三区视频| 九九视频在线免费观看| 国产在线91在线电影| 亚洲欧美国产五月天综合| 国模极品一区二区三区| 久久99久久无码毛片一区二区| 99久久国产自偷自偷免费一区| 国产成人高清精品免费| 国产亚洲欧美在线专区| 久久精品视频亚洲| 国产Av无码精品色午夜| 青青草原偷拍视频| 久久精品日日躁夜夜躁欧美| 亚洲娇小与黑人巨大交| 国内老司机精品视频在线播出| 91毛片网| 无码区日韩专区免费系列| 亚洲欧美自拍中文| 国产精品尤物在线| 精品一区二区久久久久网站| 狠狠色成人综合首页| 久久黄色小视频| 国外欧美一区另类中文字幕| 亚洲成人一区二区| 大陆精大陆国产国语精品1024| 久久久久青草线综合超碰| 亚洲欧美日韩中文字幕一区二区三区 | 国产鲁鲁视频在线观看| 国产色偷丝袜婷婷无码麻豆制服| 无码'专区第一页| 成人另类稀缺在线观看| 热思思久久免费视频| 亚洲成aⅴ人在线观看| 欧美三级自拍| 国产精品丝袜在线| 999在线免费视频| 欧美一级在线看| 欧美日韩在线第一页| 久久久久久久久亚洲精品| 日韩美毛片| 九九九精品成人免费视频7| 亚洲国产无码有码| 狼友视频一区二区三区| 久久精品人人做人人爽电影蜜月 | 小说区 亚洲 自拍 另类| 性欧美精品xxxx| 无码又爽又刺激的高潮视频| 欧美激情视频一区| 欧美国产日韩一区二区三区精品影视| 国产最爽的乱婬视频国语对白| 老色鬼欧美精品| 欧美精品成人| 国产网站在线看| 欧美伦理一区| 久久青草精品一区二区三区| 四虎免费视频网站| 国产香蕉在线| 日本一区中文字幕最新在线| 一级爆乳无码av| 国产91透明丝袜美腿在线| 亚洲视频二| 亚洲欧美日韩综合二区三区| 国产www网站| 亚洲精品少妇熟女| 久久人搡人人玩人妻精品 | 四虎影院国产| 国产人成在线观看| 国产毛片片精品天天看视频| 美臀人妻中出中文字幕在线| 波多野结衣中文字幕久久| 国产成人无码AV在线播放动漫| 精品无码人妻一区二区| 婷婷丁香在线观看| 亚洲侵犯无码网址在线观看|