• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Gadget Configfs的研究及在USB虛擬串口的應(yīng)用

    2025-01-17 00:00:00張怡鮑愛達(dá)郭鑫劉昕沂
    現(xiàn)代電子技術(shù) 2025年2期
    關(guān)鍵詞:結(jié)構(gòu)功能設(shè)備

    摘" 要: 針對Linux下通過USB Gadget框架將USB接口模擬成其他USB設(shè)備時存在設(shè)備配置信息修改不方便的問題,可以使用Configfs動態(tài)配置USB設(shè)備。文中介紹了USB Gadget的框架與原理,重點分析了Configfs的主要數(shù)據(jù)結(jié)構(gòu)和內(nèi)部實現(xiàn)機制,給出了使用Configfs在用戶模式配置USB設(shè)備的具體方法,并在I.MX6ULL平臺上將Gadget功能驅(qū)動層已有的串口功能驅(qū)動程序使用Configfs進行配置后,實現(xiàn)了將USB接口虛擬成USB串口設(shè)備。經(jīng)過測試,虛擬串口設(shè)備傳輸正常,為開發(fā)人員在USB Gadget下使用Configfs配置USB設(shè)備提供了參考。

    關(guān)鍵詞: 虛擬串口; USB Gadget; Configfs; Linux; 串口設(shè)備; I.MX6ULL

    中圖分類號: TN919?34; TP368.1; TP316.81" " " " " 文獻(xiàn)標(biāo)識碼: A" " " " " " " "文章編號: 1004?373X(2025)02?0046?05

    Research on Gadget Configfs and its application in USB virtual serial port

    ZHANG Yi1, BAO Aida1, GUO Xin2, LIU Xinyi1

    (1. College of Instrumentation and Electronics, North University of China, Taiyuan 030051, China;

    2. School of Information and Communication Engineering, North University of China, Taiyuan 030051, China)

    Abstract: In allusion to the problem of inconvenient modification of device configuration information when simulating USB interfaces to other USB devices by means of the USB Gadget framework under Linux, Configfs can be used to configure USB devices dynamically. The framework and principle of USB Gadget is introduced, and the main data structure and internal mechanism of Configfs is analyzed stressly. A specific method for configuring USB devices in user mode using Configfs is provided. After configuring the existing serial port function driver program of the Gadget function driver layer on the I.MX6ULL platform using Configfs, the USB interface was virtualized into a USB serial port device. The testing results show that the virtual serial device transmission is normal, providing a reference for developers to configure USB devices using Configfs under USB Gadget.

    Keywords: virtual serial port; USB Gadget; Configfs; Linux; serial port device; I.MX6ULL

    0" 引" 言

    隨著嵌入式系統(tǒng)的發(fā)展,在Linux下通過通用的Gadget驅(qū)動框架將USB接口模擬成其他類型設(shè)備,從而滿足開發(fā)人員在不需要實際硬件設(shè)備的情況下進行軟件開發(fā)和測試需求的方法也日益增多[1?6]。而以往通過Gadget驅(qū)動框架實現(xiàn)USB設(shè)備端驅(qū)動時,需要在gadget\legacy功能驅(qū)動層編寫驅(qū)動代碼配置設(shè)備信息,存在配置更改不方便的問題。利用內(nèi)核提供的Configfs允許用戶直接通過文件系統(tǒng)的操作,在運行時根據(jù)需要動態(tài)配置USB Gadget的參數(shù)和屬性,而無需重新編譯內(nèi)核或啟動系統(tǒng),配置設(shè)備信息更加靈活便捷,這對于需要適應(yīng)不同應(yīng)用場景和需求的嵌入式系統(tǒng)特別有用。因此本文研究了如何通過Configfs配置USB Gadget虛擬的串口設(shè)備。介紹了USB Gadget框架與原理;重點分析了Configfs的數(shù)據(jù)結(jié)構(gòu)和內(nèi)部實現(xiàn)機制,并給出了通過Configfs配置Gadget以實現(xiàn)USB接口虛擬成USB串口設(shè)備的具體操作方法;最后編寫串口測試程序,在應(yīng)用程序中設(shè)置好串口參數(shù)進行測試。結(jié)果表明,該方法傳輸正常,為開發(fā)人員在USB Gadget下使用Configfs配置USB設(shè)備提供了參考。

    1" USB Gadget框架結(jié)構(gòu)與原理

    USB Gadget驅(qū)動框架主要分為三層:UDC驅(qū)動層、Gadget中間層、Gadget功能驅(qū)動層[7?8],USB Gadget框架圖如圖1所示。UDC驅(qū)動作為USB設(shè)備控制器的硬件驅(qū)動,負(fù)責(zé)USB設(shè)備控制器與主機側(cè)USB控制器之間的數(shù)據(jù)通信,同時向Gadget中間層提供了與UDC硬件相關(guān)的操作函數(shù)接口[9],包括底層寄存器配置、中斷處理等。Gadget中間層是對UDC驅(qū)動層函數(shù)的封裝,向上提供一套與具體UDC硬件無關(guān)的統(tǒng)一接口,能夠?qū)⒌讓佑布ㄐ排c上層功能實現(xiàn)分離,以便不同的功能能夠以統(tǒng)一的方式與不同的UDC驅(qū)動進行交互,避免了每個Gadget功能驅(qū)動都得單獨實現(xiàn)USB設(shè)備驅(qū)動的情況,提高了開發(fā)效率[10]。Gadget功能層通過調(diào)用Gadget中間層提供的統(tǒng)一接口來控制USB設(shè)備功能的實現(xiàn),如實現(xiàn)大容量存儲設(shè)備、人機接口設(shè)備、USB虛擬成串口等。

    UDC驅(qū)動層中使用usb_gadget結(jié)構(gòu)體描述UDC,結(jié)構(gòu)體內(nèi)通過usb_gadget_ops操作函數(shù)集完成UDC電源管理、設(shè)備自供電特征相關(guān)設(shè)置或清理、喚醒與設(shè)備相連接的主機等功能;使用usb_ep結(jié)構(gòu)體描述端點,結(jié)構(gòu)體內(nèi)通過usb_ep_ops端點操作函數(shù)集完成配置端點、將請求插入端點隊列等功能。Gadget中間層中usb_gadget_driver結(jié)構(gòu)體內(nèi)定義了bind綁定、connect連接等函數(shù)指針,主要通過調(diào)用usb_gadget_probe_driver(structusb_gadget_driver *driver)函數(shù)找到對應(yīng)的UDC,然后在udc_bind_to_driver函數(shù)中通過usb_udc結(jié)構(gòu)體中指向usb_gadget結(jié)構(gòu)體和usb_gadget_driver結(jié)構(gòu)體的指針,將UDC驅(qū)動層與Gadget中間層聯(lián)系起來[11]。Gadget中間層中usb_composite_driver結(jié)構(gòu)體內(nèi)定義了bind綁定、connect連接等函數(shù)指針,主要通過調(diào)用usb_composite_probe(structusb_composite_driver*driver)函數(shù)為usb_composite_driver結(jié)構(gòu)體中成員usb_gadget_driver設(shè)置統(tǒng)一的模板composite_driver_template,然后調(diào)用composite_bind函數(shù)完成與Gadget功能驅(qū)動層的交互;使用usb_composite_dev結(jié)構(gòu)體表示一個USB設(shè)備,結(jié)構(gòu)體中含有USB設(shè)備的設(shè)備描述符和配置描述符,一般通過usb_composite_driver結(jié)構(gòu)體對其進行初始化和配置,結(jié)構(gòu)體內(nèi)通過指向usb_gadget結(jié)構(gòu)體和usb_composite_driver的指針,將UDC驅(qū)動層與Gadget功能驅(qū)動層聯(lián)系起來。

    Gadget功能層,在gadget\legacy功能層中調(diào)用usb_get_function_instance函數(shù)獲得function實例,調(diào)用usb_get_function函數(shù)獲得function,再通過usb_add_config_only函數(shù)給設(shè)備添加配置,最后調(diào)用usb_add_function函數(shù)將function放入配置鏈表,根據(jù)配置鏈表所含function決定設(shè)備具備哪些功能。在gadget\function功能層中實現(xiàn)所模擬的function功能,function的功能實現(xiàn)過程主要是完成數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)暮诵膶ο笫嵌它c。主要實現(xiàn)流程如下:通過端點描述符usb_endpoint_descriptor表明端點類型與方向,然后調(diào)用功能驅(qū)動里bind函數(shù),根據(jù)endpoint描述符調(diào)用usb_ep_autoconfig函數(shù)向底層申請分配endpoint,調(diào)用enable_endpoint函數(shù)使能endpoint;然后調(diào)用usb_ep_alloc_reques函數(shù),給endpoint分配USB請求,調(diào)用lb_alloc_ep_req函數(shù)給USB請求分配buffer,再為USB請求設(shè)置好回調(diào)函數(shù);最后調(diào)用usb_ep_queue函數(shù)將USB請求放入隊列,UDC與Host完成USB傳輸后就會觸發(fā)中斷,調(diào)用USB請求中的回調(diào)函數(shù)。

    2" Configfs結(jié)構(gòu)分析與程序設(shè)計

    Configfs是Linux內(nèi)核中一個層次分明的虛擬文件系統(tǒng),主要由幾個相關(guān)聯(lián)的結(jié)構(gòu)體構(gòu)成,其核心概念是對象和屬性,對象表示內(nèi)核中的實體,而屬性則是這些實體的配置參數(shù),用戶可以通過在文件系統(tǒng)中創(chuàng)建對象和屬性的方式,動態(tài)地創(chuàng)建和配置內(nèi)核參數(shù)、設(shè)備和子系統(tǒng)。從頂向下分析其主要結(jié)構(gòu)體間的層級關(guān)系,有助于理解如何使用Configfs來配置虛擬設(shè)備的參數(shù),Configfs主要數(shù)據(jù)結(jié)構(gòu)間關(guān)系圖如圖2所示。config_group結(jié)構(gòu)體描述一個可創(chuàng)建子目錄的目錄,結(jié)構(gòu)體內(nèi)主要定義了config_item結(jié)構(gòu)體;config_item結(jié)構(gòu)體描述一個不含有子目錄的目錄,結(jié)構(gòu)體內(nèi)主要定義了可用于管理配置項的結(jié)構(gòu)體config_item_type以及目錄名;config_item_type結(jié)構(gòu)體內(nèi)主要定義了鏈接文件操作結(jié)構(gòu)體configfs_item_operations、目錄下文件結(jié)構(gòu)體configfs_attribute以及目錄下操作結(jié)構(gòu)體configfs_group_operations;configfs_item_operations結(jié)構(gòu)體主要定義了allow_link/drop_link操作鏈接文件;configfs_attribute結(jié)構(gòu)體主要定義了show/strote操作文件讀寫。configfs_group_operations結(jié)構(gòu)體主要定義了make_item創(chuàng)建config_item結(jié)構(gòu)體,make_group創(chuàng)建config_group結(jié)構(gòu)體。

    使用Configfs文件系統(tǒng)配置和控制acm串口功能,需要在gadget\function\f_acm.c中提供與Configfs項相關(guān)的操作,可通過config_group_init_type_name函數(shù)添加config_item_type結(jié)構(gòu)體,使配置組關(guān)聯(lián)到acm功能上,從而管理與acm功能相關(guān)的配置項。構(gòu)造to_f_serial_opts函數(shù),將acm功能的數(shù)據(jù)結(jié)構(gòu)與Configfs項的私有數(shù)據(jù)關(guān)聯(lián),將給定的config_item轉(zhuǎn)換為相應(yīng)的f_serial_opts結(jié)構(gòu)體指針;構(gòu)造acm_attr_release函數(shù)釋放與acm功能配置項相關(guān)的資源,包括釋放USB功能實例相關(guān)的資源;構(gòu)造f_acm_port_num_show函數(shù)讀取acm功能配置項的端口號屬性,并將其格式化到給定的緩沖區(qū)中,以便用戶空間程序能夠獲取和顯示這一屬性的值。

    在drivers\usb\gadget\configfs.c中調(diào)用configfs_register_subsystem,就會創(chuàng)建subsystem子系統(tǒng),它對應(yīng)Configfs文件系統(tǒng)中的頂層目錄usb_gadget,其本質(zhì)是特殊的config_item。本文使用Configfs配置Gadget框架中的虛擬串口驅(qū)動,主要通過設(shè)計腳本命令程序在usb_gadget目錄下完成配置,可替代原來gadget\legacy功能驅(qū)動層中serial.c串口程序完成設(shè)置串口設(shè)備描述符信息、配置描述符信息,以及指定使用gadget\function功能驅(qū)動層中哪個功能并添加到配置鏈表中等配置工作。腳本程序中關(guān)鍵命令執(zhí)行目的及在Configfs內(nèi)部中相關(guān)調(diào)用工作如下。

    在usb_gadget目錄下執(zhí)行mkdirtest_serial命令,會創(chuàng)建名為test_serial的目錄,最終會調(diào)用到頂層目錄usb_gadget的目錄操作結(jié)構(gòu)體configfs_group_operation中make_group所指向的gadgets_make函數(shù),函數(shù)中通過configfs_add_default_group函數(shù)創(chuàng)建配置、功能等目錄,通過config_group_init_type_name函數(shù)生成一系列與設(shè)備描述符相關(guān)文件,并給創(chuàng)建的配置、功能等目錄添加config_item_type結(jié)構(gòu)體。test_serial目錄如圖3所示。

    在test_serial目錄下執(zhí)行echo ${VENDOR_ID}gt;idVendor等命令,會調(diào)用到configfs_attribute結(jié)構(gòu)體中函數(shù)指針show和store讀寫設(shè)備描述符文件,完成設(shè)備描述符的配置工作;在test_serial/configs目錄下執(zhí)行mkdir c.1命令會創(chuàng)建名為c.1的目錄,最終會調(diào)用到configs目錄的目錄操作結(jié)構(gòu)體configfs_group_operation中make_group所指向的config_desc_make函數(shù),其通過執(zhí)行usb_add_config_only函數(shù)給設(shè)備添加配置;在test_serial/functions目錄下執(zhí)行mkdir acm.t_est1命令會創(chuàng)建名為acm.t_est1的文件,最終會調(diào)用到function目錄的目錄操作結(jié)構(gòu)體中make_group所指向的function_make函數(shù),函數(shù)中執(zhí)行usb_get_function_instance(func_name)會根據(jù)功能名acm找到對應(yīng)gadget功能層gadget\function\f_acm.c的虛擬串口功能驅(qū)動,并在test_serial目錄下安裝對應(yīng)的usb_f_acm.ko驅(qū)動;在test_serial目錄下執(zhí)行l(wèi)n ?s functions/acm.t_est1 configs/c.1/命令會創(chuàng)建符號鏈接,最終會調(diào)用到鏈接文件操作結(jié)構(gòu)體configfs_item_operations中allow_link所指向的config_usb_cfg_link函數(shù),其通過執(zhí)行usb_get_function函數(shù)給c.1配置添加acm功能,并通過list_add_tail(amp;f?gt;list, amp;cfg?gt;func_list)將功能放入配置功能鏈表中;在test_serial目錄下執(zhí)行echo ci_hdrc.0 gt; UDC命令會使能名為ci_hdrc.0的UDC,實質(zhì)是根據(jù)UDC名最終調(diào)用usb_gadget_probe_driver函數(shù)使能對應(yīng)UDC。

    3" 串口測試程序設(shè)計

    在PC?Linux端編寫串口測試程序,首先打開串口,設(shè)置串口為阻塞模式;再通過函數(shù)set_opt(fd, 115 200, 8, 'N', 1)規(guī)定好串口的波特率、數(shù)據(jù)位、停止位等通信參數(shù)[12?14],在函數(shù)中使用tcgetattr()、tcsetattr()等函數(shù)獲取與設(shè)置termios結(jié)構(gòu)體中與串口通信相關(guān)的行規(guī)程配置參數(shù)。termios結(jié)構(gòu)體主要成員如下:

    structtermios{

    tcflag_tc_iflag; " " " " " " " " " " " " " " " "/*輸入模式標(biāo)志*/

    tcflag_tc_oflag; " " " " " " " " " " " " " " " "/*輸出模式標(biāo)志*/

    tcflag_tc_cflag; " " " " " " " " " " " " " " " "/*控制模式標(biāo)志*/

    tcflag_tc_lflag; " " " " " " " " " " " " " " " "/*局部模式標(biāo)志*/

    cc_tc_line; " " " " " " " " " " " " " " " " " " " " " " " "/*行控制*/

    cc_tc_cc[NCCS];" " " " " " " " " " " " " " " " "/*控制字符特性*/

    };

    之后創(chuàng)建讀寫線程,調(diào)用read/write函數(shù)實現(xiàn)串口的收發(fā)數(shù)據(jù),完成操作后執(zhí)行tcsetattr(0,tcsnow,amp;old),恢復(fù)終端的原始設(shè)置。

    4" 測試驗證

    使用USB線連接I.MX6ULL的OTG口、PC的USB口,在usb_gadget目錄下執(zhí)行所編寫腳本程序,執(zhí)行完echo ci_hdrc.0 gt; UDC命令后,PC機會提示選擇安裝USB設(shè)備端模擬的串口設(shè)備的位置,若選擇Windows主機端安裝,在設(shè)備管理器會出現(xiàn)新的串口設(shè)備圖標(biāo),如圖4所示。本次測試選擇安裝在VMware的Linux系統(tǒng)上,開發(fā)板上出現(xiàn)設(shè)備節(jié)點/dev/ttyGS0,Ubuntu上出現(xiàn)設(shè)備節(jié)點/dev/ttyACM0,串口信息及設(shè)備節(jié)點如圖5所示。

    將PC?Linux端編寫好的串口測試程序,在以下PC?Linux端分別執(zhí)行:

    gcc ?o serial_send_recv_pcserial_test.c ?lpthreadarm?buildroot?linux?gnueabihf?gcc ?o serial_send_recvserial_test.c ?lpthread

    將測試程序編譯為PC?Linux和ARM兩個版本,分別在Ubuntu和開發(fā)板上執(zhí)行,在Ubuntu上發(fā)送一個字符串“This is Ubuntu send”加上4個退格鍵,開發(fā)板能夠正常接收并顯示字符串“This is Ubuntu”,如圖6所示。在開發(fā)板上發(fā)送一個字符串“This is usb gadget se”加上2個退格鍵與“aa”字符,Ubuntu同樣能夠正常接收并顯示字符串“This is usb gadget aa”,如圖7所示。這兩張圖說明經(jīng)過Configfs配置后,USB設(shè)備虛擬成的串口傳輸正常。

    5" 結(jié)" 語

    本文采用Configfs來配置USB Gadget所模擬的串口設(shè)備。介紹了USB Gadget框架與原理;重點分析了Configfs的數(shù)據(jù)結(jié)構(gòu)和內(nèi)部實現(xiàn)機制,并給出了通過Configfs配置實現(xiàn)USB接口虛擬成USB串口設(shè)備的具體操作方法,結(jié)果表明傳輸正常。針對目前使用USB Gadget模擬其他類型設(shè)備的需求增加,而Configfs參考資料較少的情況,開發(fā)人員可以參考本文所使用的Configfs配置USB Gadget的方法降低開發(fā)難度,提高開發(fā)效率。

    注:本文通訊作者為鮑愛達(dá)。

    參考文獻(xiàn)

    [1] 黃少濱.嵌入式系統(tǒng)USB Gadget驅(qū)動研究與實現(xiàn)[D].廣州:華南理工大學(xué),2012.

    [2] 焦新泉,袁小康,儲成群.基于ARM?Linux平臺的USB數(shù)據(jù)存儲設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2019,42(6):6?9.

    [3] 李校林,孫文華,李銀.基于Linux平臺的OV2715驅(qū)動研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2016,39(22):71?75.

    [4] 付志鵬,馮丹,陳紅,等.基于國產(chǎn)服務(wù)器的國產(chǎn)Linux操作系統(tǒng)適配研究[J].計算機技術(shù)與發(fā)展,2023,33(4):89?95.

    [5] 鄧佳偉,張梅娟,王琪,等.PowperPC架構(gòu)下USB 3.0的IP核軟硬件協(xié)作驗證[J].電子技術(shù)應(yīng)用,2022,48(5):37?41.

    [6] 姜悅.基于龍芯2K1000的嵌入式Linux系統(tǒng)移植和驅(qū)動程序設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2021.

    [7] 趙昕,郭恩全,林成文.Linux集成下USB Gadget的USB虛擬網(wǎng)口設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2021,21(7):2?6.

    [8] 蒲澤坤,沈勇,陳旅超.USB接口的CDCamp;MSC復(fù)合設(shè)備設(shè)計與應(yīng)用[J].單片機與嵌入式系統(tǒng)應(yīng)用,2023,23(7):53?56.

    [9] 陳剛,肖鐵軍,郭林.Linux Gadget框架的研究及在USB程控中的應(yīng)用[J].計算機測量與控制,2013,21(7):2011?2014.

    [10] 秦建鑫.基于USB 3.0的平板顯示器系統(tǒng)設(shè)計與實現(xiàn)[D].上海:上海交通大學(xué),2017.

    [11] 王振麗.Android底層開發(fā)技術(shù)實戰(zhàn)詳解[M].北京:電子工業(yè)出版社,2015.

    [12] GAO J, XU J. The multi?serial port driving research of video monitoring system based on the Internet of things [J]. MATEC web of conferences, 2018, 173: 02014.

    [13] 陳偉.基于申威831非POSIX標(biāo)準(zhǔn)串口波特率的研究與實現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2023(7):56?58.

    [14] 宋躍,楊雷,雷瑞庭,等.基于ARM9與LINUX的RS 485總線的通信接口設(shè)計[J].儀表技術(shù)與傳感器,2014(5):35?37.

    猜你喜歡
    結(jié)構(gòu)功能設(shè)備
    也談詩的“功能”
    中華詩詞(2022年6期)2022-12-31 06:41:24
    諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
    《形而上學(xué)》△卷的結(jié)構(gòu)和位置
    論結(jié)構(gòu)
    中華詩詞(2019年7期)2019-11-25 01:43:04
    基于MPU6050簡單控制設(shè)備
    電子制作(2018年11期)2018-08-04 03:26:08
    關(guān)于非首都功能疏解的幾點思考
    論《日出》的結(jié)構(gòu)
    500kV輸變電設(shè)備運行維護探討
    創(chuàng)新治理結(jié)構(gòu)促進中小企業(yè)持續(xù)成長
    原來他們都是可穿戴設(shè)備
    消費者報道(2014年7期)2014-07-31 11:23:57
    黄色一级大片看看| 成人免费观看视频高清| 宅男免费午夜| 岛国毛片在线播放| 日本欧美视频一区| 国产91精品成人一区二区三区 | 午夜久久久在线观看| √禁漫天堂资源中文www| 欧美久久黑人一区二区| 2018国产大陆天天弄谢| netflix在线观看网站| 国产黄色视频一区二区在线观看| 无限看片的www在线观看| 免费日韩欧美在线观看| 不卡av一区二区三区| 亚洲精品日本国产第一区| 国产黄色视频一区二区在线观看| 欧美日韩黄片免| 亚洲图色成人| 亚洲国产精品国产精品| 亚洲久久久国产精品| av有码第一页| 国产成人影院久久av| 国产国语露脸激情在线看| 日韩大片免费观看网站| 国产成人免费观看mmmm| 精品国产乱码久久久久久小说| 国产精品三级大全| 天堂8中文在线网| 国产99久久九九免费精品| 9191精品国产免费久久| 亚洲欧美清纯卡通| 在现免费观看毛片| 9热在线视频观看99| 亚洲熟女毛片儿| 久久久久久免费高清国产稀缺| 久久久久久久大尺度免费视频| 每晚都被弄得嗷嗷叫到高潮| 精品人妻一区二区三区麻豆| 成年动漫av网址| 国产在线视频一区二区| 美女脱内裤让男人舔精品视频| 国产精品久久久久久人妻精品电影 | 精品欧美一区二区三区在线| 日本一区二区免费在线视频| 欧美国产精品一级二级三级| 亚洲精品久久午夜乱码| 午夜福利影视在线免费观看| 9191精品国产免费久久| 午夜两性在线视频| 国产成人欧美| 在线观看人妻少妇| 日韩欧美一区视频在线观看| 国产成人一区二区在线| 精品国产乱码久久久久久男人| 久久久久久久久久久久大奶| 久久99精品国语久久久| 亚洲欧美成人综合另类久久久| 熟女少妇亚洲综合色aaa.| 久久久久久久久免费视频了| 欧美乱码精品一区二区三区| 亚洲午夜精品一区,二区,三区| 老司机亚洲免费影院| 国产免费一区二区三区四区乱码| 久久精品国产综合久久久| 国产精品久久久久成人av| 一级黄色大片毛片| 三上悠亚av全集在线观看| 亚洲国产看品久久| 亚洲精品美女久久久久99蜜臀 | 亚洲中文日韩欧美视频| 在现免费观看毛片| 欧美 日韩 精品 国产| 午夜影院在线不卡| 亚洲中文av在线| 母亲3免费完整高清在线观看| 久久精品久久久久久噜噜老黄| 美女扒开内裤让男人捅视频| 另类精品久久| 精品久久久久久久毛片微露脸 | 亚洲欧洲日产国产| 久久久精品区二区三区| 女性生殖器流出的白浆| 国产男人的电影天堂91| 水蜜桃什么品种好| 91精品三级在线观看| 久久天躁狠狠躁夜夜2o2o | 在线天堂中文资源库| 亚洲人成电影免费在线| 亚洲成人手机| 国产又爽黄色视频| 男的添女的下面高潮视频| 欧美中文综合在线视频| 啦啦啦啦在线视频资源| 成人亚洲欧美一区二区av| 老司机午夜十八禁免费视频| 在线 av 中文字幕| 午夜福利,免费看| 观看av在线不卡| 真人做人爱边吃奶动态| 久久国产精品男人的天堂亚洲| 交换朋友夫妻互换小说| av天堂久久9| 丰满饥渴人妻一区二区三| 男女床上黄色一级片免费看| 99久久精品国产亚洲精品| 一本大道久久a久久精品| 天天影视国产精品| 伊人亚洲综合成人网| av一本久久久久| 国产精品一二三区在线看| 久久鲁丝午夜福利片| 又大又黄又爽视频免费| 最近手机中文字幕大全| 18禁国产床啪视频网站| 国产精品一国产av| 欧美人与性动交α欧美软件| 18禁国产床啪视频网站| 亚洲av男天堂| 一本久久精品| 亚洲精品日本国产第一区| 每晚都被弄得嗷嗷叫到高潮| 赤兔流量卡办理| 欧美xxⅹ黑人| 色婷婷av一区二区三区视频| 好男人视频免费观看在线| 欧美人与性动交α欧美软件| 亚洲精品中文字幕在线视频| 久久狼人影院| 女人久久www免费人成看片| 久久99精品国语久久久| 日本猛色少妇xxxxx猛交久久| 人妻人人澡人人爽人人| 少妇粗大呻吟视频| 久久精品aⅴ一区二区三区四区| 黑丝袜美女国产一区| 欧美精品一区二区免费开放| av网站在线播放免费| 日韩免费高清中文字幕av| 丝瓜视频免费看黄片| 久久精品国产亚洲av涩爱| 欧美在线一区亚洲| 精品国产一区二区久久| 成人影院久久| 热99国产精品久久久久久7| av线在线观看网站| 中文字幕人妻丝袜制服| 国产熟女午夜一区二区三区| 国产精品免费大片| 99久久99久久久精品蜜桃| 啦啦啦啦在线视频资源| 午夜免费男女啪啪视频观看| 大型av网站在线播放| 亚洲色图 男人天堂 中文字幕| 国产精品免费大片| 免费在线观看视频国产中文字幕亚洲 | 精品一区二区三卡| 亚洲天堂av无毛| 精品国产国语对白av| 精品一区二区三卡| 午夜av观看不卡| 亚洲av片天天在线观看| 亚洲成人国产一区在线观看 | 日韩电影二区| 免费在线观看黄色视频的| 中文字幕精品免费在线观看视频| 免费看不卡的av| 精品国产乱码久久久久久小说| 亚洲中文日韩欧美视频| 国产91精品成人一区二区三区 | 精品少妇黑人巨大在线播放| 亚洲五月婷婷丁香| 夫妻午夜视频| 777久久人妻少妇嫩草av网站| 国产日韩欧美在线精品| 性色av乱码一区二区三区2| 99香蕉大伊视频| 丰满迷人的少妇在线观看| 国产精品一区二区精品视频观看| 国产日韩欧美在线精品| 成在线人永久免费视频| 久久精品久久久久久噜噜老黄| 我的亚洲天堂| 激情视频va一区二区三区| 热99久久久久精品小说推荐| a级毛片在线看网站| 国产男女内射视频| xxx大片免费视频| 午夜福利视频精品| 国产精品久久久久久精品古装| 国产欧美日韩一区二区三 | 日本午夜av视频| 热99国产精品久久久久久7| 午夜福利,免费看| 亚洲av男天堂| 欧美成人精品欧美一级黄| 你懂的网址亚洲精品在线观看| 搡老乐熟女国产| 亚洲精品一区蜜桃| 后天国语完整版免费观看| 中文字幕精品免费在线观看视频| 日韩,欧美,国产一区二区三区| 91麻豆av在线| 国产成人欧美| 日本a在线网址| 天堂8中文在线网| 另类精品久久| 捣出白浆h1v1| 男人操女人黄网站| 欧美人与性动交α欧美软件| 人妻一区二区av| 十分钟在线观看高清视频www| 日韩 亚洲 欧美在线| 黄色视频不卡| 国产一区二区 视频在线| 午夜免费成人在线视频| 亚洲色图 男人天堂 中文字幕| av不卡在线播放| 精品少妇黑人巨大在线播放| xxx大片免费视频| 午夜两性在线视频| 亚洲av欧美aⅴ国产| 亚洲精品av麻豆狂野| 男人添女人高潮全过程视频| 18禁黄网站禁片午夜丰满| 9热在线视频观看99| 亚洲中文av在线| 免费av中文字幕在线| 自线自在国产av| 婷婷色麻豆天堂久久| 天天躁日日躁夜夜躁夜夜| 蜜桃在线观看..| 一级毛片 在线播放| 亚洲欧美激情在线| 欧美xxⅹ黑人| 天天躁日日躁夜夜躁夜夜| 午夜福利,免费看| 日韩制服骚丝袜av| 欧美乱码精品一区二区三区| 天天躁夜夜躁狠狠躁躁| 久久久国产精品麻豆| 日韩一卡2卡3卡4卡2021年| 天天躁日日躁夜夜躁夜夜| 丝袜喷水一区| 观看av在线不卡| 午夜激情av网站| 亚洲人成77777在线视频| av天堂久久9| 国产精品麻豆人妻色哟哟久久| 欧美人与性动交α欧美精品济南到| 亚洲国产最新在线播放| 老司机靠b影院| 亚洲欧美日韩高清在线视频 | 久久中文字幕一级| 婷婷色综合大香蕉| 欧美久久黑人一区二区| h视频一区二区三区| 国产成人一区二区三区免费视频网站 | 少妇精品久久久久久久| 国产成人av教育| 亚洲熟女毛片儿| 国产免费福利视频在线观看| av天堂久久9| 亚洲成人免费电影在线观看 | 啦啦啦在线观看免费高清www| 国产高清视频在线播放一区 | 国产精品免费大片| 日本欧美视频一区| 亚洲欧美成人综合另类久久久| 中文字幕精品免费在线观看视频| 新久久久久国产一级毛片| 国产精品.久久久| 精品国产乱码久久久久久小说| 久久 成人 亚洲| 亚洲精品国产区一区二| 赤兔流量卡办理| 色94色欧美一区二区| 免费不卡黄色视频| 欧美人与性动交α欧美软件| 成人午夜精彩视频在线观看| 制服诱惑二区| 午夜日韩欧美国产| 免费少妇av软件| 亚洲人成电影观看| 脱女人内裤的视频| 日本五十路高清| 人成视频在线观看免费观看| 夫妻午夜视频| 狠狠精品人妻久久久久久综合| 日韩免费高清中文字幕av| 国产在线观看jvid| 日韩av不卡免费在线播放| 国产熟女欧美一区二区| 成人国语在线视频| 久久精品亚洲熟妇少妇任你| 国产在线视频一区二区| 国产成人啪精品午夜网站| 国产精品一二三区在线看| 黄色视频不卡| 大片电影免费在线观看免费| 一级黄色大片毛片| 一二三四社区在线视频社区8| 日韩制服骚丝袜av| 97人妻天天添夜夜摸| 看十八女毛片水多多多| 在线观看国产h片| 国产xxxxx性猛交| 亚洲熟女精品中文字幕| 久久精品国产综合久久久| 欧美老熟妇乱子伦牲交| 少妇的丰满在线观看| 欧美成人精品欧美一级黄| 国产福利在线免费观看视频| 高清不卡的av网站| 久久久精品免费免费高清| 日本一区二区免费在线视频| 久久国产精品影院| 大陆偷拍与自拍| 色视频在线一区二区三区| 日本欧美视频一区| 只有这里有精品99| 王馨瑶露胸无遮挡在线观看| 久热这里只有精品99| 黄色片一级片一级黄色片| 一二三四在线观看免费中文在| 午夜福利,免费看| 成年女人毛片免费观看观看9 | 国精品久久久久久国模美| 日本91视频免费播放| 免费人妻精品一区二区三区视频| 欧美另类一区| 久久久久久免费高清国产稀缺| 成人亚洲欧美一区二区av| 伦理电影免费视频| 伊人久久大香线蕉亚洲五| 男的添女的下面高潮视频| 啦啦啦中文免费视频观看日本| 欧美97在线视频| 日本色播在线视频| 老司机亚洲免费影院| 亚洲精品美女久久av网站| 亚洲国产欧美在线一区| 免费看av在线观看网站| 叶爱在线成人免费视频播放| 搡老乐熟女国产| 国产日韩欧美亚洲二区| 这个男人来自地球电影免费观看| 9191精品国产免费久久| a级片在线免费高清观看视频| 久久这里只有精品19| 国产精品99久久99久久久不卡| 性高湖久久久久久久久免费观看| 国产男人的电影天堂91| 亚洲 国产 在线| 欧美日韩福利视频一区二区| 好男人电影高清在线观看| 免费在线观看黄色视频的| 女人被躁到高潮嗷嗷叫费观| 日韩伦理黄色片| 中文字幕制服av| 国产熟女午夜一区二区三区| 在线亚洲精品国产二区图片欧美| 午夜老司机福利片| 十八禁高潮呻吟视频| 极品人妻少妇av视频| av线在线观看网站| 在线av久久热| 国产淫语在线视频| 精品欧美一区二区三区在线| 黄色 视频免费看| 中文字幕人妻丝袜制服| 精品少妇久久久久久888优播| 欧美97在线视频| 日韩一卡2卡3卡4卡2021年| 亚洲熟女毛片儿| 亚洲黑人精品在线| 亚洲av电影在线观看一区二区三区| 久久精品国产a三级三级三级| 视频在线观看一区二区三区| 午夜日韩欧美国产| 欧美黑人精品巨大| 少妇人妻 视频| 一级黄片播放器| 国产精品av久久久久免费| 天堂8中文在线网| 国产淫语在线视频| 日韩一卡2卡3卡4卡2021年| 久久久久久免费高清国产稀缺| 肉色欧美久久久久久久蜜桃| 看免费av毛片| 国产免费又黄又爽又色| 一区二区av电影网| 亚洲精品在线美女| 久久人妻熟女aⅴ| 国产成人免费无遮挡视频| 精品人妻在线不人妻| 色婷婷av一区二区三区视频| 日本91视频免费播放| 国产一区亚洲一区在线观看| 80岁老熟妇乱子伦牲交| 精品第一国产精品| 九草在线视频观看| 天天躁日日躁夜夜躁夜夜| 天天添夜夜摸| 黄色毛片三级朝国网站| 国产精品国产av在线观看| 大码成人一级视频| 亚洲国产欧美日韩在线播放| 欧美精品一区二区大全| xxxhd国产人妻xxx| 国产一区二区三区综合在线观看| 在线观看免费高清a一片| 色94色欧美一区二区| 国语对白做爰xxxⅹ性视频网站| 精品免费久久久久久久清纯 | 国产黄色免费在线视频| 悠悠久久av| bbb黄色大片| 人人妻,人人澡人人爽秒播 | av线在线观看网站| 国产精品人妻久久久影院| av欧美777| 搡老乐熟女国产| 精品少妇黑人巨大在线播放| 好男人视频免费观看在线| 欧美激情高清一区二区三区| 亚洲欧美中文字幕日韩二区| 91国产中文字幕| 午夜视频精品福利| 亚洲伊人久久精品综合| av在线老鸭窝| 欧美少妇被猛烈插入视频| 欧美激情 高清一区二区三区| 亚洲欧美日韩高清在线视频 | 激情五月婷婷亚洲| 欧美黄色片欧美黄色片| 国产成人a∨麻豆精品| 精品国产乱码久久久久久男人| 国产片特级美女逼逼视频| 中国美女看黄片| 婷婷色av中文字幕| 亚洲国产av新网站| 美女午夜性视频免费| 黑人猛操日本美女一级片| 免费观看a级毛片全部| 黄色 视频免费看| 精品一区二区三区四区五区乱码 | 视频区图区小说| 十八禁高潮呻吟视频| 色综合欧美亚洲国产小说| 久久久欧美国产精品| 一级毛片女人18水好多 | 免费在线观看视频国产中文字幕亚洲 | 18在线观看网站| 亚洲精品中文字幕在线视频| 七月丁香在线播放| 欧美变态另类bdsm刘玥| 脱女人内裤的视频| 免费女性裸体啪啪无遮挡网站| 亚洲精品一卡2卡三卡4卡5卡 | 一本—道久久a久久精品蜜桃钙片| 国产精品香港三级国产av潘金莲 | 国产精品一区二区在线观看99| 欧美 亚洲 国产 日韩一| 一级,二级,三级黄色视频| 久久精品久久久久久久性| 99热国产这里只有精品6| 久久久久久人人人人人| 国产熟女午夜一区二区三区| 国产成人欧美| 亚洲熟女精品中文字幕| 秋霞在线观看毛片| 人成视频在线观看免费观看| av不卡在线播放| 欧美日韩亚洲综合一区二区三区_| 少妇猛男粗大的猛烈进出视频| 日韩,欧美,国产一区二区三区| 丁香六月欧美| 高清黄色对白视频在线免费看| 一级黄片播放器| 日本一区二区免费在线视频| 男人添女人高潮全过程视频| 色视频在线一区二区三区| 色网站视频免费| 美女国产高潮福利片在线看| 亚洲美女黄色视频免费看| 99久久人妻综合| 国产精品免费大片| 九草在线视频观看| 在现免费观看毛片| 欧美精品一区二区免费开放| 久久久国产欧美日韩av| 青春草亚洲视频在线观看| 国产免费现黄频在线看| 中文乱码字字幕精品一区二区三区| 最新的欧美精品一区二区| 亚洲精品国产av蜜桃| 少妇的丰满在线观看| 宅男免费午夜| 欧美乱码精品一区二区三区| 最新的欧美精品一区二区| www.自偷自拍.com| 国产精品欧美亚洲77777| 国产一区二区三区综合在线观看| 老司机深夜福利视频在线观看 | 国产成人av激情在线播放| 99精国产麻豆久久婷婷| 亚洲欧美激情在线| 两人在一起打扑克的视频| 午夜免费男女啪啪视频观看| 亚洲av片天天在线观看| 男女边摸边吃奶| 欧美+亚洲+日韩+国产| 午夜久久久在线观看| 啦啦啦 在线观看视频| 在现免费观看毛片| 69精品国产乱码久久久| 日韩视频在线欧美| 国产99久久九九免费精品| 国产免费福利视频在线观看| 老汉色∧v一级毛片| 少妇的丰满在线观看| 亚洲男人天堂网一区| 日韩免费高清中文字幕av| 免费人妻精品一区二区三区视频| 国产野战对白在线观看| 久久影院123| 精品国产一区二区三区久久久樱花| 侵犯人妻中文字幕一二三四区| 又大又黄又爽视频免费| 考比视频在线观看| 国产成人精品久久二区二区免费| 久久天躁狠狠躁夜夜2o2o | 国产成人啪精品午夜网站| 看免费成人av毛片| 精品福利观看| 亚洲国产av新网站| 蜜桃在线观看..| 天天躁日日躁夜夜躁夜夜| 十八禁人妻一区二区| 男女午夜视频在线观看| 国产精品一区二区免费欧美 | 一级片'在线观看视频| 欧美日本中文国产一区发布| 老司机亚洲免费影院| 亚洲精品自拍成人| 秋霞在线观看毛片| 香蕉国产在线看| 每晚都被弄得嗷嗷叫到高潮| 少妇人妻 视频| 久久久国产欧美日韩av| 婷婷丁香在线五月| 久久亚洲精品不卡| 国产人伦9x9x在线观看| a级片在线免费高清观看视频| 黄片播放在线免费| 欧美激情极品国产一区二区三区| 午夜日韩欧美国产| 性色av乱码一区二区三区2| 手机成人av网站| 亚洲精品久久久久久婷婷小说| 免费在线观看影片大全网站 | 晚上一个人看的免费电影| 美女扒开内裤让男人捅视频| 色94色欧美一区二区| 欧美精品啪啪一区二区三区 | 美女脱内裤让男人舔精品视频| 91九色精品人成在线观看| 成年美女黄网站色视频大全免费| 9热在线视频观看99| 超色免费av| 中文字幕制服av| 最新在线观看一区二区三区 | 成年人黄色毛片网站| 三上悠亚av全集在线观看| 女人精品久久久久毛片| 午夜福利一区二区在线看| 欧美乱码精品一区二区三区| 日本av免费视频播放| 国产淫语在线视频| 王馨瑶露胸无遮挡在线观看| 国产色视频综合| 男女无遮挡免费网站观看| 午夜福利视频精品| 亚洲人成电影观看| 国产又爽黄色视频| 中文字幕最新亚洲高清| 岛国毛片在线播放| 欧美人与性动交α欧美软件| 一级,二级,三级黄色视频| 天堂俺去俺来也www色官网| 国产极品粉嫩免费观看在线| videos熟女内射| 欧美少妇被猛烈插入视频| 精品人妻熟女毛片av久久网站| 99久久99久久久精品蜜桃| 大话2 男鬼变身卡| 亚洲成人免费电影在线观看 | 久久久国产欧美日韩av| 国产亚洲午夜精品一区二区久久| 亚洲精品一二三| 高清不卡的av网站| 黄频高清免费视频| 国产视频一区二区在线看| 最黄视频免费看| 欧美av亚洲av综合av国产av| 成人影院久久| 看十八女毛片水多多多| 老司机影院成人| 成年人黄色毛片网站| 久久亚洲精品不卡| 亚洲欧美清纯卡通| 日本一区二区免费在线视频| 免费在线观看完整版高清| 下体分泌物呈黄色|