《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于OMAP3530的Windows Embedded Compact 7 BSP的開發與移植
基于OMAP3530的Windows Embedded Compact 7 BSP的開發與移植
來源:電子技術應用2012年第2期
韓德強,劉立哲,劉 濤,聶 帥
北京工業大學 計算機學院,北京100124
摘要: 介紹了TI公司的OMAP3530雙核處理器和基于該處理器設計的開發板,描述了BSP的一般概念及開發方法。通過實例說明了在嵌入式系統開發中如何實現Windows Embedded Compact 7 BSP的開發和移植。
中圖分類號: TP316.7
文獻標識碼: A
文章編號: 0258-7998(2012)02-0014-04
The development of BSP under Windows Embedded Compact 7 based on OMAP3530
Han Deqiang,Liu Lizhe,Liu Tao,Nie Shuai
College of Computer, Beijing University of Technology, Beijing 100124,China
Abstract: This paper produces the architecture of OMAP3530 microprocessor of TI Corporation and demo board based on this processor. It discusses the general concept of BSP and solutions in board development. It illustrates the method and steps to develop Windows Embedded Compact 7 BSP.
Key words : BSP replant;OMAP3530;Windows Embedded Compact 7

    Windows Embedded Compact 7(以下簡稱Compact 7)操作系統在訪問底層硬件時,不直接訪問硬件,而是通過抽象出來的函數訪問。抽象出來的函數層,就是通常所說的板支持包BSP(Board Support Package)[1]。BSP介于底層硬件和操作系統之間,完成硬件初始化并將控制權切換給操作系統。由于嵌入式系統的底層硬件具有無標準、非規范等特性,操作系統都存在著BSP移植的問題,這就要求BSP開發人員在BSP開發過程中熟練掌握具體的硬件原理和軟件實現方法。

    Compact 7與之前的Windows CE版本一樣,提供了一整套平臺開發工具Platform Builder,使開發人員能夠快速靈活地創建解決方案[2]。而且Platform Builder本身也提供了多種目標板的BSP樣例,可以在開發移植BSP時作參考。
1 OMAP3530處理器
    TI公司推出的OMAP3530是一款技術先進的高性能嵌入式異構雙核處理器,主要由一個600 MHz的CortexTM-A8 ARM核和一個430 MHz的DSP 核組成。嵌入式操作系統在ARM核上運行,與數字信號處理相關的任務則由DSP核負責。盡管OMAP3530是一個異構多核架構的微處理器,但DSP核對于基于ARM核開發的工程師而言是透明的。在軟件工具鏈中,TI引入了DSP橋的概念。DSP橋是針對ARM應用程序開發提供的一組面向DSP算法的應用程序接口(API),以便應用程序獲取DSP核的計算資源和數據資源。
2 Compact 7操作系統
    Windows Embedded Compact 7是Windows CE 6.0的后續產品,它不僅是一個功能強大的實時操作系統,而且還為開發者提供了全套開發工具。作為Windows CE家族的換代產品,Compact 7繼承了之前Windows CE系統的優良傳統,又在其上增加了對ARMv7構架的支持;對Windows CE先前版本的強大功能進行了進一步的擴充和豐富,如支持多點觸控、優化電源管理等。
    與Windows CE 6.0不同,Compact 7的平臺開發工具Platform Builder依托于Visual Studio 2008,內嵌的Silverlight for Windows Embedded有利于減輕開發者開發界面的負擔。在軟件開發上,Compact 7徹底摒棄傳統的MFC程序框架,轉而全面支持.Net framework。高效的開發框架,將最大限度地提高開發者的工作效率,有助于提高產品的市場競爭力。
3 OMAP3530開發板硬件構成
    開發板硬件平臺主要以TI公司的OMAP3530雙核處理器為核心,配有256 MB SDRAM和512 MB Nand Flash用以啟動系統和存儲運行程序。同時,還配有電源管理、USB、UART、以太網控制器、液晶屏等外圍電路。基于OMAP3530處理器開發板的硬件結構框圖如圖1所示。

4 Compact 7操作系統下BSP開發與移植
    Compact 7中BSP是由Boot Loader、OEM適配層、設備驅動程序、內核獨立傳輸層(KITL)以及鏡像配置文件五部分組成[3]。關于各部分之間的相互聯系以及與硬件平臺之間的關系如圖2所示。

4.1 Clone BSP
    Compact 7提供了兩種方法開發BSP,一種是從零開始進行BSP開發的方法,另一種是克隆已有的BSP再進行移植的方法。Clone BSP實質就是對現有的BSP進行復制并按照開發者要求改變BSP的名稱等信息。Clone BSP保留了原有BSP的程序架構和全部代碼,開發者只需對BSP中部分代碼進行修改添加即可實現新開發板的功能,簡化了開發流程,提高了開發效率。考慮到從零開始開發BSP相當困難,OMAP3530開發板的BSP開發就采用Clone相似平臺的BSP的方法進行移植。這樣的實現方法可以大幅度降低開發BSP的難度并縮短開發周期。
    具體方法是,在Platform Builder中使用其自帶的Clone BSP工具,克隆TI公司提供的OMAP3530樣例BSP,并自行定義名稱(如MyBSP),然后設置相關描述(如平臺目錄名稱、供應商名稱以及版本號等信息)。如果設置信息合法,單擊Clone按鈕后會提示成功克隆BSP。克隆出的BSP位于%_WINCEROOT%\PLATFORM目錄下。
4.2 移植Boot Loader
    BSP移植首先要實現Boot Loader的功能。Boot Loader是一段啟動引導程序,主要在Compact 7系統加載前初始化相關硬件,并把系統鏡像加載到內存中運行。根據鏡像boot的方式,Boot Loader分為nboot、eboot和uboot等。
    OMAP3530處理器內嵌的RAM只有64 KB,對Boot Loader生成的可執行文件而言過于小,無法將其加載到內部RAM中,所以只能使用外部RAM進行加載。但OMAP3530上電時不能自動初始化memory controller,無法讀寫外部RAM。因此,需要一個程序負責初始化外部的RAM控制器,把可執行文件從 Nand Flash或者SD卡中讀取到外部RAM中,然后跳轉到入口處執行。實現這一功能的程序稱為x-Loader,x-Loader是Compact 7啟動之后運行的第一段程序,實質上是一個精簡版的Boot Loader。x-Loader運行的第一個函數是startup()函數,startup()采用匯編語言編寫,首要功能是對目標系統的CPU進行最基本的初始化。例如,清空TLB和cache、關閉中斷、配置PLL、設置內存控制器、設置跳轉到main的函數地址等。OMAP3530開發板上電后,CPU會自動從Nand Flash或者SD卡中加載x-Loader到內部RAM,然后執行初始化任務,最后將控制權交給Boot Loader。Startup()函數實現main函數跳轉地址代碼如下:
    ldr sp, =( XLDR_STACK_PA+XLDR_STACK_SIZE)
    b        XLDRMain
    其中,XLDR_STACK_PA和XLDR_STACK_ SIZE是任務堆棧起始地址和大小,系統通過使sp指針指向x-Loader中的任務堆棧起始地址的方法實現程序的跳轉。
    x-Loader位于BSP目錄下的boot文件夾中,需要修改其中的platform.c和main.c兩個文件。platform.c的作用是對OMAP3530功能進行設置,文件中包括PinMuxSetup()、GpioSetup()、ClockSetup()、MemorySetup()等幾個重要的函數。
    PinMuxSetup()函數專門用于設置引腳功能,這樣做的好處是可以有統一的啟動代碼并且不必擔心在啟動過程中對復用引腳功能的再度修改。其實現樣例代碼如下:
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D0,
    (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));
    OUTREG16函數用于設置OMAP3530 中的16 bit寄存器,該函數通過CONTROL_PADCONF_SDRC_D0獲得處理器相應管腳的寄存器地址;通過設置INPUT_ENABLE、PULL_INACTIVE等參數來實現對管腳屬性的定義;通過設置MUX_MODE_X的方法實現管腳功能的定義。具體MUX_MODE_X代表的功能定義,可參閱OMAP3530技術手冊。
    MemorySetup()函數用于初始化通用存儲控制器(GPMC)和外部RAM(SDRC)。由于GPMC信號在Flash和以太網控制器上都用到。因此,在MemorySetup()函數中需要對GPMC片選信號進行設置。實現樣例代碼如下:
    OUTREG32(&pGpmc->GPMC_CONFIG1_3,
    BSP_GPMC_LAN_CONFIG1);
    OUTREG32函數用于設置OMAP3530 中的32 bit寄存器,通過GPMC_CONFIG獲得設置寄存器的地址;通過宏定義BSP_GPMC_LAN+CONFIG1設置具體數值。
    main.c文件是x-Loader的主程序,在RELEASE模式下能夠生成MLO執行文件,在DEBUG模式下編譯配置文件 sources 跳過了對其的編譯。因為x-Loader對大小有要求, 若DEBUG 編譯文件過大,即使生成可執行文件也無法加載到OMAP3530內部RAM中。
    x-Loader移植完成后,需要進行Boot Loader的移植。為了與x-Loader一致,Boot Loader下執行的第一個函數也是Startup()函數。Boot Loader下的Startup()函數同樣是采用匯編語言編寫的,主要完成靜態邏輯地址到物理地址的映射以及跳轉到BootloaderMain函數執行的功能。
    Boot Loader開發重點是實現OEMPlatformInit()函數用以硬件初始化,這個函數與硬件具有高度的相關性[4]??偟膩碚f,OEMPlatforminit()函數需要完成五項初始化任務:首先是通過OEMEthGetSecs()函數初始化定時器,其次初始化Nand Flash存儲器,再次是復位外圍設備,然后初始化用于下載鏡像的以太網控制器,最后初始化操作系統的內存空間。
    為了使Boot Loader支持以太網下載方式,需要實現與以太網控制器相關的函數。開發板以太網控制器選用SMSC公司的Lan9220芯片。其具體的實現過程如下:
    (1)在%_WINCEROOT\PLATFORM\MyBSP\SRC\BOOT\
EBOOT下添加Lan9220dbg.c。
    (2)在Lan9220dbg.c文件中實現LAN9220_Init、LAN-
9220_SendFrame和LAN9220_GetFrame 3個函數。
    (3)在%_WINCEROOT\PLATFORM\MyBSP\SRC\INC下的kitl_cfg.h文件中聲明上述3個函數,并定義BSP_ETHDRV_LAN9220結構體。結構體定義如下:
    #define BSP_ETHDRV_LAN9220 {
    (OAL_KITLETH_INIT) LAN9220_Init, NULL, NULL,
    (OAL_KITLETH_SEND_FRAME) LAN9220_SendFrame,
    (OAL_KITLETH_GET_FRAME) LAN9220_GetFrame,
    NULL, NULL, NULL, NULL,  NULL, NULL }
    (4)在%_WINCEROOT\PLATFORM\MyBSP\SRC\BOOT\
EBOOT下的boot_cfg.h文件中添加BSP_ETHDRV_LAN-
9220到g_bootDevices內容中即可。
    初始化傳輸端口通過修改OEMPreDownload()函數實現,在OEMPreDownload函數中首先需要為硬件平臺指點一個靜態IP地址,其次通過設置g_bootCfg.kitlFlags變量來設置IP協議,然后將boot方式設置成以太網下載模式,最后調用OEMLaunch函數來下載鏡像。OEMLaunch函數的功能是下載鏡像,并將程序計數器的指針直接設置到操作系統鏡像的開始地址。它是啟動操作系統前Boot Loader的最后一個函數,沒有返回值。可以參考微軟提供的標準BSP中的代碼實現該函數。實現此函數后,Boot Loader的功能基本完成。
4.3 移植OEM適配層
    OEM適配層OAL(OEM Adaptation Layer)邏輯上位于Compact 7內核和硬件平臺之間。物理上可以生成可執行文件(NK.EXE)。OAL的出現大大方便了操作系統和硬件平臺之間的通信。OAL還用來處理中斷、控制時鐘、管理電源、控制I/O接口等。
    通常情況下,OAL創建的方法就是復制與自己開發平臺相近且已經成功應用的OAL文件,然后進行適當的修改,OAL文件位于%_WINCEROOT\PLATFORM\MyBSP\SRC\OAL目錄下。移植過程中需要修改OEMInit函數,該函數是在OEM適配層中初始化中斷、時鐘、KITL、計數器以及看門狗功能的。需要注意的是,如果要打開串口的debug功能,也要在OEMInit函數中進行設置,將OEMDeinitDebugSerial()函數注釋掉。
4.4 開發設備驅動程序
    BSP驅動程序屬于內置驅動,與流驅動不一樣的是,它不用設備管理器來管理,也不用導出與流驅動程序類似的API接口。此類驅動通常放在硬件平臺的目錄之下,如LCD顯示、USB接口驅動就放在SRC\DRIVERS目錄下。
    以Touch的開發為例,簡要介紹Compact 7下內置驅動的開發過程。Compact 7中Touch驅動采用分層方式實現,分為MDD(Model Device Driver)層和PDD(Platform Dependent Driver)層,分層結構方便了驅動程序的維護和移植。Touch驅動分層示意圖如圖3所示。

 

 

    Touch驅動程序接收用戶的觸摸信息,并將其轉換為觸摸屏上的位置坐標信息,再傳給圖形、窗口和事件的子系統GWES(Graphics,Windowing, and Events Subsystem)模塊。主要的工作是處理用戶交互和圖形輸出等任務。觸摸屏驅動就是被它加載的,同時被GWES加載的還有鼠標驅動、鍵盤驅動以及顯示設備驅動。
    對于初學者只需實現PDD層函數以及與MDD層通信的DDSI函數即可。MDD層與GWES模塊通信的DDI函數已由微軟實現。這樣驅動開發的工作量會少很多,而代碼的可靠性則有了更好的保證。
    Compact 7觸摸屏驅動程序采用中斷方式對按下狀態進行檢測,如果檢測到觸摸動作時將產生中斷并觸發一個事件通知一個工作線程開始采集數據。同時,驅動將打開一個定時器,若觸摸動作仍然存在,則定時觸發同一個事件通知工作線程采集數據。驅動中采用了觸摸屏中斷以及定時器中斷2個中斷源,不僅可以監控觸摸筆按下和抬起的動作,還可以檢測到觸摸屏按下時的拖動軌跡[5]。
    由于OMAP3530開發板與觸摸屏之間采用I2C總線通信,而Compact 7提供的樣例是以SPI接口進行數據通信,因此,需要修改PDDInitializeHardware函數和PDDGetControllerData函數。對SPI接口的讀寫改為對I2C總線的讀寫;之后在PDDTouchPanelGetPoint函數中修改代碼,按照具體觸摸屏控制芯片的數據定義格式進行坐標轉換;最后更改.reg文件中的注冊信息,定義管腳號、驅動加載位置等。Compact 7系統啟動過程中加載GWES模塊后,GWES模塊將根據注冊表的信息加載觸摸屏驅動。
4.5 移植內核獨立傳輸層
    在Windows CE系統中使用了內核獨立傳輸層KITL(Kernel Independent Transport Layer)技術,其設計目標是向開發者提供一種簡單的開發方式以支持調試服務。從Windows CE 6.0開始,KITL模塊已經獨立出OAL,在操作系統運行時已經有了一個獨立的KITL.dll動態鏈接庫。Compact 7操作系統繼承了這一特性,同時也提供了大量的程序樣例用于開發參考。
    KITL的開發過程只需要完善OEM部分代碼即可,這部分代碼位于\SRC\KITL目錄下。用戶需要實現OEMKitlStartup函數、OEMKitlInit函數,同時需要構造相關結構體數據。OEMKitlStartup的功能是構造實際參數的數據,如代表KITL連接設備的標識符字符串、記錄用戶對系統KITL功能配置的數據以及所有可選KITL連接設備的硬件位置。OEMKitlInit的功能是構造一個設置KITL傳輸層端口的結構體數據。
    OMAP3530開發板的KITL采用中斷方式進行驅動。中斷方式在OEMKitlStartup函數中設置。具體代碼如下:
    // Prepare interrupt
    pGPIORegs = OALPAtoUA(BSP_ETHER_GPIO_PA);
    SETREG32(&pGPIORegs->OE,
            1 << (BSP_IRQ_ETHER_KITL % 32));
    // Interrupt on falling edge
    SETREG32(&pGPIORegs->FALLINGDETECT,
            1 << (BSP_IRQ_ETHER_KITL % 32));
    OEMKitlEnableClocks(FALSE);
    之后在OEMKitlEnableClocks函數中修改IRQ管腳對時鐘的響應。具體代碼如下:
    // IRQ pin
    clockRoutines.pfnEnableDeviceFClock(OMAP_DEVICE_GPIO,
bEnable);
    其中宏定義BSP_IRQ_ETHER_KITL和OMAP_DEVICE_GPIO的值由開發板上實際連接到LAN9220的中斷信號的管腳決定。移植過程中對這兩個宏定義進行修改即可實現KITL的功能。
4.6 設置配置文件
    當創建一個Compact 7的工程時,可以通過添加環境變量、修改.bib和.reg等文件來重新配置BSP。Compact 7將配置文件分為兩類,一類是源代碼配置文件,如Dirs文件、Makefile文件以及Sources文件;另一類是鏡像配置文件,如.bib文件、.reg文件、.dat文件等。開發人員必須理解相關配置文件的作用和使用方法才能合理地配置系統資源。
    至此,BSP的開發流程已基本完成。開發移植好的BSP要在Platform Builder中編譯生成可以在硬件開發平臺上運行的二進制代碼,通過SD卡將MLO和eboot.nb0下載到Nand Flash上,然后再通過以太網下載NK.bin到開發板上。
    開發BSP 是一個基于具體硬件和軟件的復雜過程,需要開發者對硬件和軟件知識都有較為深入的了解[6]。BSP開發的正確性將直接影響到系統運行的穩定性。
參考文獻
[1] 周建設.Windows CE設備驅動及BSP開發指南[M].北京:中國電力出版社,2009.
[2] 陳瑞,張永瑞,歐陽雄.基于XSCALE架構處理器WinCE系統BSP開發[J].電子科技,2006(2).
[3] Microsoft.BSP porting guide for Windows Embedded Compact 7[Z].2010.
[4] 李大為.Windows CE工程實踐完全解析[M].北京:中國電力出版社,2008.
[5] 張毅,王海濤.基于S3C2410A的WinCE 5.0下觸摸屏驅動的實現[J].重慶郵電大學學報(自然科學版),2008(6).
[6] 李海林,趙惠林,熊文峰.基于XScale PXA255處理器WinCE 420系統BSP開發[J].艦船電子工程,2006(3).

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          你懂的网址国产 欧美| 久久久99精品免费观看不卡| 久久频这里精品99香蕉| 亚洲在线免费视频| 亚洲少妇在线| 亚洲一区国产| 久久久久久久久久久一区| 午夜欧美精品| 日韩亚洲精品电影| 亚洲福利一区| 亚洲欧洲精品一区二区精品久久久| 亚洲欧洲av一区二区| 日韩午夜av| 99国内精品久久久久久久软件| 一区二区激情视频| 欧美日韩在线不卡| 欧美日韩在线一区二区| 一区二区三区|亚洲午夜| 日韩视频免费观看高清在线视频| 国产亚洲欧美一区二区| 一区二区日韩免费看| 欧美91视频| 国产噜噜噜噜噜久久久久久久久| 亚洲国产高清一区| 亚洲在线成人精品| 国产精品综合不卡av| 亚洲国产精品一区二区尤物区| 亚洲美女在线一区| 国产农村妇女毛片精品久久麻豆| 日韩午夜激情电影| 亚洲青涩在线| 美日韩丰满少妇在线观看| 国产欧美日韩亚洲| 亚洲精品之草原avav久久| 国产欧美亚洲精品| 国产一区二区电影在线观看| 亚洲盗摄视频| 欧美风情在线观看| 国产精品女主播| 欧美极品欧美精品欧美视频| 国产农村妇女精品| 亚洲女女做受ⅹxx高潮| 久久日韩粉嫩一区二区三区| 在线精品亚洲| 国产日韩欧美在线播放不卡| 国产精品国产三级国产aⅴ无密码| 亚洲永久在线| 亚洲一区二区三区乱码aⅴ| 欧美日韩国产小视频在线观看| 欧美日本不卡| 国产日韩精品在线| 国模 一区 二区 三区| 欧美激情自拍| 国产精品美女久久久久久免费| 另类天堂视频在线观看| 欧美精品一区二区三区很污很色的| 国产性猛交xxxx免费看久久| 亚洲精品女av网站| 亚洲视频中文字幕| 欧美深夜福利| 日韩视频免费在线| 午夜视频在线观看一区| 亚洲专区国产精品| 国产精品黄页免费高清在线观看| 日韩午夜三级在线| 亚洲黄一区二区三区| 国产欧美一区二区精品秋霞影院| 欧美成人黄色小视频| 91久久在线视频| 毛片一区二区三区| 在线天堂一区av电影| 国产欧美一区二区视频| 性伦欧美刺激片在线观看| 欧美性猛交视频| 国产一区二区三区久久精品| 久久在线观看视频| 亚洲一区二区视频在线| 欧美精品在线看| 激情五月综合色婷婷一区二区| 一本一本久久a久久精品综合麻豆| 久久精品国产亚洲aⅴ| 国产精品盗摄一区二区三区| 久久久国产精品一区二区三区| 亚洲精品日韩综合观看成人91| 久久人人爽爽爽人久久久| 久久久久久尹人网香蕉| 亚洲人成久久| 亚洲大胆人体视频| 亚洲午夜一区二区三区| 欧美精品自拍| 国内精品一区二区| 欧美激情日韩| 国产香蕉97碰碰久久人人| 欧美一区二区黄色| 亚洲国产午夜| 亚洲第一区中文99精品| 欧美日韩高清一区| 亚洲综合欧美日韩| 亚洲日本欧美日韩高观看| 一区二区在线观看视频在线观看| 亚洲欧美在线x视频| 亚洲日本电影在线| 狠狠色狠狠色综合系列| 欧美视频在线视频| 国产一区久久久| 99在线精品免费视频九九视| 在线中文字幕不卡| 亚洲一区二区三区乱码aⅴ| 亚洲第一成人在线| 一本久道久久综合中文字幕| 亚洲伦理一区| 欧美日韩在线一区二区| 欧美影院一区| 亚洲一区二区三区色| 欧美大胆a视频| 国产一区二区欧美日韩| 亚洲国产美女| 一区二区在线观看视频在线观看| 欧美日韩国产美女| 久久精彩免费视频| 91久久国产综合久久蜜月精品| 国产伦精品一区二区三区免费| 亚洲第一黄网| 欧美紧缚bdsm在线视频| 免费在线看成人av| 乱人伦精品视频在线观看| 久久影视三级福利片| 亚洲在线国产日韩欧美| 国产自产v一区二区三区c| 国产精品夫妻自拍| 国产精品视频网站| 91久久精品国产91久久性色tv| 久久久精品tv| 欧美精品在线观看播放| 亚洲视频专区在线| 久久精品亚洲国产奇米99| 午夜精品久久久久久久99水蜜桃| 国产精品热久久久久夜色精品三区| 亚洲精品一区在线| 伊人久久大香线蕉综合热线| 欧美日韩一区二区视频在线观看| 久久久精品午夜少妇| 国产精品一区二区久久久久| 欧美日韩精品| 激情久久综合| 国产精品视频不卡| 狠狠色狠狠色综合日日五| 欧美日本一区二区三区| 西西裸体人体做爰大胆久久久| 亚洲国产精品一区二区www| 久久精品视频在线观看| 亚洲男女自偷自拍| 欧美影院久久久| 国产精品日日做人人爱| 国内精品久久国产| 最近看过的日韩成人| 久久av免费一区| 裸体歌舞表演一区二区| 国产精品videosex极品| 极品中文字幕一区| 国产精品一二一区| 亚洲一区在线直播| 久久久久久久综合| 亚洲神马久久| 欧美性久久久| 亚洲一区二区在线免费观看视频| 亚洲永久免费精品| 国产偷国产偷精品高清尤物| avtt综合网| 欧美激情一区二区在线| 午夜精品免费视频| 国产亚洲视频在线观看| 国产精品每日更新| 亚洲欧美日韩综合一区| 国产精品成人aaaaa网站| 欧美日本一区二区高清播放视频| 欧美亚洲尤物久久| 伊人久久久大香线蕉综合直播| 91久久久国产精品| 欧美在线观看一区二区| 亚洲欧美日韩精品久久奇米色影视| 国产综合自拍| 欧美麻豆久久久久久中文| 欧美一区二区三区免费在线看| 亚洲曰本av电影| 国产美女搞久久| 欧美99久久| 亚洲国产日韩在线一区模特| 国产免费观看久久| 亚洲欧美制服另类日韩| 亚洲视频免费在线观看| 午夜在线电影亚洲一区| 欧美日韩国产美女| 亚洲精品视频免费在线观看| 西瓜成人精品人成网站| 欧美性jizz18性欧美| 亚洲最新视频在线播放| 欧美一区午夜视频在线观看| 亚洲欧美在线视频观看| 欧美精品18+| 久久久精品tv| 欧美va天堂va视频va在线| 欧美一区二区视频免费观看| 国产日韩欧美麻豆| 国内一区二区在线视频观看| 国产亚洲综合精品| 欧美一区二区三区喷汁尤物| 欧美绝品在线观看成人午夜影视| 亚洲欧洲一二三| 久久亚洲欧洲| 久久久www成人免费无遮挡大片| 久久全国免费视频| 亚洲无吗在线| 美女露胸一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 国产精品v欧美精品v日韩| 国产精品日产欧美久久久久| 精品不卡一区二区三区| 欧美三级不卡| 国产精品扒开腿做爽爽爽软件| 欧美一区在线直播| 欧美日韩1080p| 欧美日韩免费观看一区二区三区| 亚洲免费黄色| 伊人久久成人| 国产精品综合不卡av| 久久精品国产v日韩v亚洲| 欧美私人啪啪vps| 激情视频一区二区| 狂野欧美激情性xxxx欧美| 国产一区二区三区高清播放| 午夜精品影院在线观看| 亚洲人体大胆视频| 一本到高清视频免费精品| 欧美日韩国产区| 国产精品久久久久久久久免费樱桃| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品综合精品自拍| 久久一区精品| 亚洲国产视频一区二区| 国产精品啊啊啊| 欧美多人爱爱视频网站| 欧美日韩在线一区二区三区| 国产精品99久久久久久www| 亚洲精品欧洲精品| 欧美国产成人在线| 欧美精品系列| 在线电影院国产精品| 欧美一区二区成人6969| 好吊妞**欧美| 性欧美超级视频| 国产欧美日韩不卡免费| 一本色道久久综合狠狠躁篇的优点| 亚洲一区二区毛片| 欧美日韩亚洲一区二| 久久大香伊蕉在人线观看热2| 国产视频久久久久久久| 亚洲女同同性videoxma| 欧美成人激情视频免费观看| 久久精品国产精品| 欧美亚洲视频在线观看| 欧美国产综合视频| 1024成人| 国产一区二区三区黄| 亚洲经典在线| 日韩亚洲国产欧美| 欧美日精品一区视频| 国产精品三上| 久久久久久**毛片大全| 久久精品一区二区| 国产精品久久久一区二区三区| 国产日韩欧美综合| 亚洲精品一区二区三区婷婷月| 欧美图区在线视频| 在线精品视频一区二区三四| 欧美精品免费观看二区| 伊人久久婷婷色综合98网| 欧美精品国产精品日韩精品| 国产精品久久久久999| 国产精品极品美女粉嫩高清在线| 欧美日韩国产首页在线观看| 91久久精品国产91久久| 国语自产精品视频在线看| 国产婷婷成人久久av免费高清| 亚洲人成网站999久久久综合| 亚洲一区二区三区精品在线| 在线看不卡av| 国产精品一区二区三区久久久| 亚洲综合电影| 国产精品亚洲网站| 亚洲一区在线观看视频| 欧美精品免费播放| 亚洲深夜福利网站| 亚洲欧美另类在线观看| 欧美精品一区二区在线播放| 精品成人一区二区三区四区| 国产亚洲aⅴaaaaaa毛片| 国产精品99久久久久久久久| 国内精品模特av私拍在线观看| 尤物九九久久国产精品的特点| 蜜臀91精品一区二区三区| 国产日韩欧美在线看| 亚洲一区图片| 麻豆久久久9性大片| 亚洲激情国产精品| 亚洲新中文字幕| 精品成人久久| 亚洲国产老妈| 亚洲国产成人在线| 欧美日韩成人网| 美日韩免费视频| 欧美亚洲视频| 欧美中文在线字幕| 欧美三日本三级少妇三99| 欧美成人激情视频免费观看| 久久精品国产v日韩v亚洲| 久久久国产91| 久久精品欧美| 国产精自产拍久久久久久| 欧美激情麻豆| 午夜亚洲伦理| 99视频精品全国免费| 亚洲欧洲日本专区| 一区二区高清| 亚洲日本无吗高清不卡| 黄色日韩网站视频| 欧美亚洲视频在线观看| 亚洲与欧洲av电影|