在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于VxWorks的網(wǎng)卡驅(qū)動設(shè)計案例

冬至子 ? 來源:北南南北 ? 作者:gaitpu ? 2023-06-15 11:24 ? 次閱讀

摘 要:隨著嵌入式技術(shù)在軍工、信息家電中的應(yīng)用,如何在嵌入式實時系統(tǒng)下對網(wǎng)卡進(jìn)行驅(qū)動程序的設(shè)計以及實現(xiàn)網(wǎng)絡(luò)通信和管理,成為非常重要的技術(shù)。本文首先從整體上VxWorks網(wǎng)絡(luò)系統(tǒng)得基本原理和與結(jié)構(gòu),然后以Intel82557網(wǎng)卡驅(qū)動為例,著重介紹網(wǎng)絡(luò)設(shè)備驅(qū)動程序設(shè)計與實現(xiàn)過程。本文對所有基于MUX機制下的VxWorks網(wǎng)絡(luò)設(shè)備驅(qū)動程序開發(fā)者具有參考價值。

引言

VxWorks 是一個具有微內(nèi)核、可裁剪的高性能強實時操作系統(tǒng),它以其良好的可靠性和卓越的實時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中。我校研制的綜合導(dǎo)航顯控臺采用VxWorks操作系統(tǒng),它作為艦船導(dǎo)航系統(tǒng)的核心設(shè)備實時為導(dǎo)航、通信、駕控系統(tǒng)提供各種信息。當(dāng)需要更改海圖模塊硬盤中一些及時需要修改的數(shù)據(jù)、程序和電子海圖等信息時,為避免拆卸設(shè)備,可以通過網(wǎng)絡(luò)傳輸來解決上述問題。可以本文以Intel82557網(wǎng)卡為例 ,給出了基于VxWorks的網(wǎng)絡(luò)設(shè)備驅(qū)動程序的開發(fā)方法和實現(xiàn)流程。

1 VXWORKS的網(wǎng)絡(luò)結(jié)構(gòu)

VxWorks提供了與其他TCP/IP網(wǎng)絡(luò)系統(tǒng)間“透明”的存取方式、BSD Socket兼用的編程接口,遠(yuǎn)程過程調(diào)用(RPC),遠(yuǎn)程文件存取等。網(wǎng)絡(luò)驅(qū)動程序和上層網(wǎng)絡(luò)協(xié)議棧可以有兩種實現(xiàn)形式:BSD方式和MUX方式。在VxWorks中, MUX與END合稱 SENS驅(qū)動(可裁剪增強型網(wǎng)絡(luò)驅(qū)動)。網(wǎng)卡驅(qū)動程序的層次結(jié)構(gòu)使網(wǎng)卡驅(qū)動程序的實現(xiàn)和移植更加方便。而且VxWorks為編寫網(wǎng)卡增強型驅(qū)動程序(SENS)提供了很好的接口和規(guī)范。下圖是VxWorks的網(wǎng)絡(luò)系統(tǒng)。

圖片

圖1 VxWorks的網(wǎng)絡(luò)系統(tǒng)

2 END驅(qū)動概述

2.1 MUX與END

VxWorks網(wǎng)絡(luò)協(xié)議棧可以分為以下幾層:應(yīng)用層 、傳輸層、IP層、MUX層、數(shù)據(jù)鏈路層和物理層。如圖2所示。

圖片

圖2 VxWorks網(wǎng)絡(luò)協(xié)議棧分層結(jié)構(gòu)示意圖

從上圖看出,與其他TCP/IP 協(xié)議相比VxWorks網(wǎng)絡(luò)協(xié)議棧增加一層MUX層。MUX層是VxWorks為方便在網(wǎng)絡(luò)接口硬件上實現(xiàn)多種協(xié)議而增加的一層 。它主要用于管理底層的多種硬件的設(shè)備驅(qū)動,向上層不同協(xié)議提供統(tǒng)一的接口,降低了上層協(xié)議與底層物理硬件的藕合,使得網(wǎng)絡(luò)驅(qū)動和上層協(xié)議彼此保持獨立,既方便在現(xiàn)有硬件基礎(chǔ)上實現(xiàn)新的上層協(xié)議,也利于用新的硬件支持原有的上層協(xié)議。

MUX與END的交互是通過提供一套可供底層調(diào)用接口服務(wù)來實現(xiàn)的,實現(xiàn)END驅(qū)動必須遵循這套接口關(guān)系。如圖3所示

圖片

圖3 MUX與END的接口關(guān)系

上圖中右邊框中列出的函數(shù)是驅(qū)動需要實現(xiàn)的函數(shù),供MUX層調(diào)用在必要的時間調(diào)用,如當(dāng)上層使用該網(wǎng)卡發(fā)送數(shù)據(jù)時,MUX會調(diào)用該網(wǎng)卡END驅(qū)動提供的Send函數(shù),將數(shù)據(jù)提交給網(wǎng)卡芯片硬件。

2.2 緩沖池數(shù)據(jù)結(jié)構(gòu)

網(wǎng)絡(luò)設(shè)備驅(qū)動與上層協(xié)議進(jìn)行數(shù)據(jù)交換需要相應(yīng)的內(nèi)存緩沖,并且管理這些緩沖也需要相應(yīng)的函數(shù)。VxWorks提供了netBufLib函數(shù)庫用于創(chuàng)建和管理網(wǎng)絡(luò)設(shè)備用到的內(nèi)存緩沖池,網(wǎng)絡(luò)設(shè)備驅(qū)動可以直接使用也可以在此基礎(chǔ)上設(shè)計自己特定的內(nèi)存緩沖池。數(shù)據(jù)以簇的形式保存,數(shù)據(jù)結(jié)構(gòu)mBlks(內(nèi)存塊)和clBlks(簇塊)形成的數(shù)據(jù)鏈結(jié)構(gòu)則用于指定各個簇。

在clBlk之上是mBlk結(jié)構(gòu)。該結(jié)構(gòu)存儲一個到clBlk的連接,也可以存儲一個到另一個mBlk的連接。通過mBlk的連接,可以引用任意數(shù)量的數(shù)據(jù),如圖4所示

圖片

圖4 mBlks和clBlks的數(shù)據(jù)結(jié)構(gòu)

3 END驅(qū)動實現(xiàn)

3.1 END設(shè)備驅(qū)動程序裝載過程

END設(shè)備驅(qū)動程序裝載過程實際上是分三個步驟完成的。即指定END設(shè)備、裝載END設(shè)備和啟動END設(shè)備。

3.1.1 指定END設(shè)備

網(wǎng)絡(luò)設(shè)備的驅(qū)動程序安裝時通過修改相應(yīng)的BSP實現(xiàn)。在修改BSP之前,首先看一下BSP中的END設(shè)備驅(qū)動程序入口表END_TBL_ENTRY的結(jié)構(gòu)。在BSP的configNet.h文件中定義著 END_TBL_ENTRY結(jié)構(gòu)的數(shù)組endDevTbl[],其結(jié)構(gòu)原型如下所示:

END_TBL_ENTRY endDevTbl[]=
{
-----
#ifdef  INCLUDE_FEI_END
{0,FEI82557_LOAD_FUNC,FEI82557_LOAD_
STRING,FEI82557_BUFF_LOAN,NULL,FALSE},
#endif    /*INCLUDE_FEI_END*/
#ifdef   INCLUDE_ELT_3C509_END
{0,END_3C509_LOAD_FUNC,END_3C509_LOAD_STRING,END_3C509_BUFF_LOAN,NULL,FALSE}
#endif  /*INCLUDE_ELT_3C509_END*/
-----
};

該數(shù)組描述了系統(tǒng)中的所有網(wǎng)絡(luò)設(shè)備的裝載函數(shù)入口點及其相關(guān)參數(shù)。將網(wǎng)絡(luò)設(shè)備驅(qū)動程序的裝載函數(shù)fei82557EndLoad()入口點及相關(guān)參數(shù)添加到網(wǎng)絡(luò)設(shè)備表endDevTbl[] 中,而后在config.h中加入“#define INCLUDE_END”以使系統(tǒng)準(zhǔn)備初始化MUX并通過MUX裝載網(wǎng)絡(luò)設(shè)備驅(qū)動程序。

在VxWorks網(wǎng)絡(luò)驅(qū)動程序的編程規(guī)范中,為了系統(tǒng)的高移植性、兼容性和可裁剪型等,通常在configNet.h文件中對系統(tǒng)支持的INTEL82557網(wǎng)絡(luò)設(shè)備定義一些宏,其編寫規(guī)范如下所示:

#ifdef  INCLUDE_FEI_END
#define FEI82557_LOAD_FUNC  fei82557EndLoad /*設(shè)備驅(qū)動程序裝載函數(shù)*/
#define FEI82557_BUFF_LOAN 1/*允許緩沖借出*/
/*
*fei82557End初始化字符串格式:
*::::
*/
#define FEI82557_LOAD_STRING“-1:0x00:0x20:0x20:0x00”
IMPORT END_OBJ*FEI82557_LOAD_FUNC(char*,
void*);
#endif  /*INCLUDE_FEI_END*/

3.1.2 裝載及啟動END設(shè)備

裝載及啟動END設(shè)備的系統(tǒng)函數(shù)主要用到以下幾個:

(1) muxDevLoad() 該函數(shù)裝載指定設(shè)備的驅(qū)動程序裝載函數(shù)。如果要裝載END 設(shè)備,系統(tǒng)必須調(diào)用muxDevLoad()函數(shù)。

(2) muxDevStart()啟動設(shè)備函數(shù)

(3) muxBind() muxBind()可以將協(xié)議綁定到指定的END 設(shè)備上。其調(diào)用過程是系統(tǒng)調(diào)用ipAttach()函數(shù),而該函數(shù)調(diào)用muxBind()函數(shù),綁定協(xié)議堆棧到MUX上的一個指定的網(wǎng)絡(luò)接口。當(dāng)一個網(wǎng)絡(luò)接口被關(guān)閉時,ipAttach()函數(shù)將釋放網(wǎng)絡(luò)接口所關(guān)聯(lián)的TCP/IP堆棧模塊。

裝載及啟動END設(shè)備驅(qū)動程序的流程如下:使用指定的END設(shè)備驅(qū)動程序的BSP引導(dǎo)VxWorks系統(tǒng)時,在引導(dǎo)過程中,系統(tǒng)將執(zhí)行任務(wù)tUsrRoot來完成如下各項:

1、初始化網(wǎng)絡(luò)任務(wù)的工作隊列;

2、創(chuàng)建tNetTask任務(wù)來處理網(wǎng)絡(luò)任務(wù)工作隊列的條目;

3、調(diào)用muxDevLoad()裝載指定的網(wǎng)絡(luò)驅(qū)動程序;

4、調(diào)用muxDevStart()啟動指定的網(wǎng)絡(luò)驅(qū)動程序;

tUsrRoot任務(wù)調(diào)用MUX設(shè)備裝載函數(shù)muxDevLoad()和設(shè)備啟動函數(shù)muxDevStart(),通過這兩個函數(shù)來裝載和啟動設(shè)備驅(qū)動程序。muxDevLoad()函數(shù)會根據(jù)網(wǎng)絡(luò)設(shè)備表endDevTbl[]中的定義逐一調(diào)用各網(wǎng)絡(luò)設(shè)備的裝載函數(shù),其中這個函數(shù)是muxDevLoad()的一個輸入?yún)?shù)。muxDevStart()函數(shù)也會根據(jù)endDevTbl[]逐一調(diào)用網(wǎng)絡(luò)設(shè)備所定義的設(shè)備開始函數(shù)。至此MUX的歘石化以及END 驅(qū)動程序的初始化工作已經(jīng)完成。但是網(wǎng)絡(luò)設(shè)備還是不可以使用,因為還需要將協(xié)議綁定到指定的END 指定的設(shè)備上,這一步需要用muxBind()函數(shù)實現(xiàn)。

在VxWorks中,系統(tǒng)通過usrRoot()函數(shù)調(diào)用usrNetInit()函數(shù)完成MUX的初始化、裝載網(wǎng)絡(luò)設(shè)備表endDevTbl[]中描述的所有設(shè)備并將IP協(xié)議綁定到網(wǎng)絡(luò)引導(dǎo)設(shè)備上等工作。

網(wǎng)絡(luò)設(shè)備驅(qū)動程序的安裝過程即下圖所示的網(wǎng)絡(luò)初始化順序。

圖片

圖5 網(wǎng)絡(luò)初始化順序

3.3 發(fā)送數(shù)據(jù)

在VxWorks網(wǎng)絡(luò)系統(tǒng)中,發(fā)送數(shù)據(jù)的流程如下圖

圖片

通過對上圖分析,主要包含以下幾個處理。

(1) 用戶調(diào)用write()函數(shù),通過套接字訪問網(wǎng)絡(luò)。

(2) 網(wǎng)絡(luò)協(xié)議拷貝需要發(fā)送的數(shù)據(jù)到網(wǎng)絡(luò)緩 區(qū)中,并調(diào)用協(xié)議驅(qū)動程序的發(fā)送程序。

(3) 協(xié)議驅(qū)動程序調(diào)用muxSend()啟動發(fā)送循環(huán)。

(4) muxSend()通過調(diào)用send()回調(diào)函數(shù),把緩沖區(qū)傳遞給END。

(5) 數(shù)據(jù)發(fā)送程序把數(shù)據(jù)拷貝到設(shè)備緩沖區(qū)中,并 把它放置到設(shè)備的發(fā)送隊列中。

(6) 當(dāng)產(chǎn)生發(fā)送中斷時,驅(qū)動程序的中斷服務(wù)程序調(diào)度程序丟棄已發(fā)送的數(shù)據(jù)包,徹底清理發(fā)送隊列。

3.4 接收數(shù)據(jù)

在VxWorks網(wǎng)絡(luò)系統(tǒng)中,接收數(shù)據(jù)的流程如下圖

圖片

通過對上圖進(jìn)行分析,它主要包含以下幾個處理。

(1) 設(shè)備接收到數(shù)據(jù)包后直接把數(shù)據(jù)存放到預(yù)先分配的簇中。

(2) 當(dāng)接收到中斷時,驅(qū)動程序的中斷服務(wù)程序調(diào)度任務(wù)級接收程序進(jìn)行如下操作。

  • clBlk結(jié)構(gòu)和簇連接;mBlk和clBlk連接;最后構(gòu)成緩沖區(qū)。
  • 通過調(diào)用receiveRtn()函數(shù),把緩沖區(qū)傳遞給更高級別的協(xié)議。

(3) muxReceive()調(diào)用協(xié)議的stackRcvRtn()函數(shù),把成列的緩沖區(qū)傳遞給應(yīng)用。用戶使用read()函數(shù),通過套接字訪問網(wǎng)絡(luò)中的成列緩沖區(qū)

3.5 驅(qū)動程序的中斷處理

中斷處理函數(shù)fei82557INT處理設(shè)備中斷。當(dāng)網(wǎng)絡(luò)接口產(chǎn)生中斷時,系統(tǒng)調(diào)用用戶驅(qū)動程序注冊的中斷服務(wù)程序。中斷程序主要完成將數(shù)據(jù)包從本地網(wǎng)絡(luò)設(shè)備送出的操作。為了排列任務(wù)級的包接收處理工作,網(wǎng)絡(luò)驅(qū)動程序中斷服務(wù)程序必須調(diào)用netJobAdd()函數(shù)。在調(diào)用netJobAdd()函數(shù)時,應(yīng)當(dāng)指定任務(wù)級處理數(shù)據(jù)包的驅(qū)動程序入口。然后由netJobAdd()把函數(shù)指派到網(wǎng)絡(luò)系統(tǒng)任務(wù)——tNetTask的工作隊列中。VxWorks通過tNetTask處理任務(wù)級的網(wǎng)絡(luò)處理。

tNetTask調(diào)用隊列中處理程序如下:

(1)包接收程序:把接收到的數(shù)據(jù)包上傳到網(wǎng)絡(luò)緩沖區(qū)的堆棧中,通過一個調(diào)用上傳給MUX。

(2)釋放所有發(fā)送幀程序:程序調(diào)用netClFree()函數(shù)釋放發(fā)送緩沖區(qū)中所有已經(jīng)發(fā)送的數(shù)據(jù)幀。

4 結(jié)束語

本文分析了VxWorks下網(wǎng)卡驅(qū)動程序的原理,并以Intel82557網(wǎng)卡為例具體說明了網(wǎng)卡驅(qū)動的設(shè)計開發(fā)過程。主要就VxWorks下網(wǎng)卡驅(qū)動程序的共性做了闡述, 比如VxWorks下網(wǎng)卡驅(qū)動的在結(jié)構(gòu)、在整個系統(tǒng)中的位置,中斷處理,收發(fā)包存儲空間分配等。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • VxWorks
    +關(guān)注

    關(guān)注

    3

    文章

    351

    瀏覽量

    97077
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11536
  • 網(wǎng)卡驅(qū)動
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    17690
  • BSD
    BSD
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    10414
  • 嵌入式實時系統(tǒng)

    關(guān)注

    0

    文章

    3

    瀏覽量

    1549
收藏 人收藏

    評論

    相關(guān)推薦

    vxworks下面rtl8180/intel 8257x千兆網(wǎng)卡驅(qū)動

    本人決定開放多年前的vxworks下rtl8180/intel 8257x千兆網(wǎng)卡驅(qū)動。有需要的請聯(lián)系我(qq 195467679)
    發(fā)表于 10-17 12:15

    基于VxWorks環(huán)境的雙冗余以太網(wǎng)卡技術(shù)在底層驅(qū)動中的實現(xiàn)

    所示。 目前版本的MUX支持2種網(wǎng)絡(luò)驅(qū)動程序接口模式:增強型網(wǎng)絡(luò)驅(qū)動程序接口( END)和網(wǎng)絡(luò)協(xié)議工具包(NPT)驅(qū)動程序接口。現(xiàn)以END型網(wǎng)卡驅(qū)動
    發(fā)表于 05-05 09:29

    SL811HS VxWorks Host驅(qū)動

    SL811HS VxWorks Host驅(qū)動
    發(fā)表于 03-25 16:55 ?23次下載

    pci網(wǎng)卡驅(qū)動下載

    pci網(wǎng)卡驅(qū)動免費下載
    發(fā)表于 03-16 08:58 ?20次下載

    usb ethernet網(wǎng)卡驅(qū)動

    usb ethernet網(wǎng)卡驅(qū)動免費下載。。
    發(fā)表于 03-16 08:59 ?286次下載

    VxWorks設(shè)備驅(qū)動介紹 (詳細(xì)說明)

    VxWorks設(shè)備驅(qū)動介紹 (詳細(xì)說明)
    發(fā)表于 03-28 09:53 ?27次下載

    基于VxWorks的顯卡實時驅(qū)動程序的設(shè)計

    基于VxWorks的顯卡實時驅(qū)動程序的設(shè)計
    發(fā)表于 03-29 12:29 ?12次下載

    VxWorks網(wǎng)卡驅(qū)動程序的開發(fā)Development o

    本文首先從整體上分析VxWorks 網(wǎng)卡驅(qū)動程序的原理和結(jié)構(gòu),然后深入地分析Rtl8139C 網(wǎng)卡驅(qū)動程序的結(jié)構(gòu)以及實現(xiàn),本文對于
    發(fā)表于 06-06 13:47 ?20次下載

    基于Vxworks的PXI板卡驅(qū)動程序開發(fā)

    對嵌人式實時系統(tǒng)VxworkS中的設(shè)備驅(qū)動程序開發(fā)進(jìn)行了簡要的介紹,討論了Vxworks操作系統(tǒng)下的/10系統(tǒng)和設(shè)備驅(qū)動程序、應(yīng)用程序之問的關(guān)系,說明了
    發(fā)表于 07-16 14:23 ?20次下載

    VxWorks下雙網(wǎng)卡冗余熱切換技術(shù)的研究

    詳述了嵌入式實時操作系統(tǒng)VxWorks 下雙網(wǎng)卡冗余熱切換技術(shù)的實現(xiàn)方法。文中在分析了PCI 總線型網(wǎng)絡(luò)適配器驅(qū)動裝載機制及冗余切換原理的基礎(chǔ)上,給出了相應(yīng)的BSP 配置和冗余切
    發(fā)表于 08-31 10:23 ?32次下載

    VxWorks網(wǎng)卡驅(qū)動程序的開發(fā)

    本文首先從整體上分析VxWorks網(wǎng)卡驅(qū)動程序的原理和結(jié)構(gòu)。然后深入地分析Rd8139C網(wǎng)卡驅(qū)動程序的結(jié)構(gòu)以及實現(xiàn),本文對于
    發(fā)表于 11-28 16:40 ?22次下載

    Realtek 百兆網(wǎng)卡驅(qū)動

    Realtek 百兆網(wǎng)卡驅(qū)動.zip
    發(fā)表于 01-29 17:03 ?13次下載

    Vxworks系統(tǒng)usb驅(qū)動原理

    摘要)Vxworks是一種由風(fēng)河公司開發(fā)的先進(jìn)的實時操作系統(tǒng),廣泛地應(yīng)用于各種嵌入式實時應(yīng)用領(lǐng)域。論文 是作者實踐的結(jié)果。首先在簡單介紹了)Vxworks系統(tǒng) 這種先進(jìn)的實時操作系統(tǒng)后,具體地分析了)*Vxworks系統(tǒng)下的US
    發(fā)表于 02-22 16:00 ?51次下載
    <b class='flag-5'>Vxworks</b>系統(tǒng)usb<b class='flag-5'>驅(qū)動</b>原理

    VxWorks設(shè)備驅(qū)動之字符設(shè)備驅(qū)動詳解

    VxWorks設(shè)備驅(qū)動之字符設(shè)備驅(qū)動詳解
    發(fā)表于 10-26 10:28 ?7次下載
    <b class='flag-5'>VxWorks</b>設(shè)備<b class='flag-5'>驅(qū)動</b>之字符設(shè)備<b class='flag-5'>驅(qū)動</b>詳解

    linux安裝網(wǎng)卡驅(qū)動教程

    在Linux系統(tǒng)中安裝網(wǎng)卡驅(qū)動是一個比較基礎(chǔ)的操作,下面我將為你詳細(xì)講解如何安裝網(wǎng)卡驅(qū)動。 第一步,檢查網(wǎng)卡型號和
    的頭像 發(fā)表于 11-17 11:11 ?4037次閱讀
    主站蜘蛛池模板: 一级免费看片| 亚洲天堂爱爱| 亚洲电影一区二区| 久久国产精品久久久久久| 午夜毛片免费观看视频| 初恋视频黄色| 四虎影库在线播放| www.色午夜| 日本19xxxxxxxxx69| 亚洲国产精品婷婷久久久久| 韩国三级在线不卡播放| 国产小视频在线观看www| jlzzjlzzjlzz日本亚洲| 亚洲婷婷综合中文字幕第一页| 天天看视频| 1717国产精品久久| avbobo官网在线入口| 日本免费色网站| 手机看片福利| 国产超爽人人爽人人做| 另类性欧美喷潮videofree| 免费国产午夜在线观看| 一色屋成人免费精品网| 国产一区二区三区影院| 91极品女神私人尤物在线播放| 网友自拍区一区二区三区| 91久久青草精品38国产| 一区二区三区四区在线| 性xxxxfreexxxxx国产| 99久久99久久免费精品蜜桃| www.欧美成| 蕾丝视频成人★在线观看| 国产破苞合集 magnet| 特极毛片| 久久本道综合色狠狠五月| 东北美女野外bbwbbw免费| 四虎影在永久地址在线观看| 一本大道加勒比久久| 精品一区二区三区在线视频| 国产色婷婷精品综合在线观看 | 性高清|