日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)

發布時間:2025/3/19 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 arm 設備中串口是很常用的一個外設,不僅可以用來打印信息,還可以用于外接設備和其他傳感器通信。根據不同的電平,串口分為 TTL 和 RS232,但是在Linux內核中的驅動程序是一樣的,在串口上外接RS485 類似的芯片就可以把 RS232 信號轉換為 RS485 信號,非常方便。在 i.MX6UL 終結者開發板上,RS232、

RS485 和GPS模塊都接到了 UART3 接口上,內核驅動都是一樣的。在本章來學習一下串口驅動。

53.1 Linux??下的 UART??驅動框架

53.1.1 uart_driver??結構體

在 Linux 中 uart 和 I2C、SPI 一樣,提供了串口驅動框架,只需要按照提供的串口框架函數編譯驅動即可。一般來說串口驅動都已經實現好了,我們需要做的就是在設備樹文件中,添加相應的設備節點。當設備和驅動匹配成功后,串口就能夠正常工作。

在 Linux 中,用 uart_driver 結構體來描述串口,uart_driver 定義在 include/linux/serial_core.h 文件中,內容如下:

295 struct uart_driver {

296 struct module *owner; /* 模塊所屬者 */

297 const char *driver_name; /* 驅動名字 */

298 const char *dev_name; /* 設備名字 */

299 int major; /* 主設備號 */

300 int minor; /* 次設備號 */

301 int nr; /* 設備數 */

302 struct console *cons; /* 控制臺 */

303

304 /*

305 * these are private; the low level driver should not

306 * touch these; they should be initialised to NULL

307 */

308 struct uart_state *state;

309 struct tty_driver *tty_driver;

310 };

一般在開發板上有幾個串口,每個串口驅動都需要定義一個 uart_driver 結構體來表示。

同其他設備一樣,當 uart_driver 結構體創建好后,然后注冊到內核中去。使用 uart_register_driver 函數來完成注冊行為,函數原型如下:

int uart_register_driver(struct uart_driver *drv)

參數 drv 就是創建好要注冊的 uart_driver 結構體,返回 0,表示成功,失敗返回負值。

既然有注冊函數,同樣的也有注銷函數 uart_unregister_driver,函數原型如下:

void uart_unregister_driver(struct uart_driver *drv)

參數 drv 是要注銷的 uart_driver 結構體,沒有返回值。

53.1.2 uart_port??結構體

uart_port 用于描述一個 UART 端口(直接對應于一個串口)的 I/O 端口或 I/O 內存地址、FIFO 大小、端口類型等信息。

uart_port 定義在 include/linux/serial_core.h 文件,部分內容如下:

117 struct uart_port {

118 spinlock_t lock; /* port lock */

119 unsigned long iobase; /* in/out[bwl] */

120 unsigned char __iomem *membase; /* read/write[bwl] */

......

235 const struct uart_ops *ops;

236 unsigned int custom_divisor;

237 unsigned int line; /* port index */

238 unsigned int minor;

239 resource_size_t mapbase; /* for ioremap */

240 resource_size_t mapsize;

241 struct device *dev; /* parent device */

......

250 };

在 uart_port 結構體中主要關注 ops 成員,ops 成員包含了串口的具體驅動函數,后面具體了解。

每個 UART 都有一個 uart_port 結構體,那么 uart_port 和 uart_driver 是如何結合起來的,要用到

uart_add_one_port 函數,函數原型如下:

int uart_add_one_port(struct uart_driver *drv,

struct uart_port *uport)

drv:與 uart_port 對應的 uart_driver 結構體,

uport:要添加到 uart_driver 結構體中的 uart_port 結構體。

返回值:0,表示成功,負值,表示失敗。

卸載 UART 驅動時,也需要將 uart_port 從相應的 uart_driver 中移除,使用 uart_remove_one_port 函數來實現,函數原型如下:

int uart_remove_one_port(struct uart_driver *drv, struct uart_port *uport)

drv:要卸載的 uart_port 對應的 uart_driver。

uport:要卸載的 uart_port。

返回值:0,表示成功,負值,表示失敗。

53.1.3 uart_ops??結構體

uart_ops 結構體中包含了 UART 框架中具體的驅動函數,Linux 系統收發數據最終調用的都是 ops 中的函數。ops 是 uart_ops 類型的結構體指針變量,uart_ops 定義在 include/linux/serial_core.h 文件中,內容如下:

49 struct uart_ops {

50 unsigned int (*tx_empty)(struct uart_port *);

51 void (*set_mctrl)(struct uart_port *, unsigned int mctrl);

52 unsigned int (*get_mctrl)(struct uart_port *);

53 void (*stop_tx)(struct uart_port *);

54 void (*start_tx)(struct uart_port *);

55 void (*throttle)(struct uart_port *);

56 void (*unthrottle)(struct uart_port *);

57 void (*send_xchar)(struct uart_port *, char ch);

58 void (*stop_rx)(struct uart_port *);

59 void (*enable_ms)(struct uart_port *);

60 void (*break_ctl)(struct uart_port *, int ctl);

61 int (*startup)(struct uart_port *);

62 void (*shutdown)(struct uart_port *);

63 void (*flush_buffer)(struct uart_port *);

64 void (*set_termios)(struct uart_port *, struct ktermios *new,

65 struct ktermios *old);

66 void (*set_ldisc)(struct uart_port *, struct ktermios *);

67 void (*pm)(struct uart_port *, unsigned int state,

68 unsigned int oldstate);

69

70 /*

71 * Return a string describing the type of the port

72 */

73 const char *(*type)(struct uart_port *);

74

75 /*

76 * Release IO and memory resources used by the port.

77 * This includes iounmap if necessary.

78 */

79 void (*release_port)(struct uart_port *);

80

81 /*

82 * Request IO and memory resources used by the port.

83 * This includes iomapping the port if necessary.

84 */

85 int (*request_port)(struct uart_port *);

86 void (*config_port)(struct uart_port *, int);

87 int (*verify_port)(struct uart_port *, struct serial_struct *);

88 int (*ioctl)(struct uart_port *, unsigned int, unsigned long);

89 #ifdef CONFIG_CONSOLE_POLL

90 int (*poll_init)(struct uart_port *);

91 void (*poll_put_char)(struct uart_port *, unsigned char);

92 int (*poll_get_char)(struct uart_port *);

93 #endif

94 };

UART 驅動編寫人員需要實現 uart_ops,因為 uart_ops 是最底層的 UART 驅動接口,是實實在在的和UART 寄存器打交道的。關于 uart_ops 結構體中的這些函數的具體含義請參考 Documentation/serial/driver這個文檔。

53.2 i.MX6UL UART??驅動分析

53.2.1 uart 的 的 platform??驅動框架

首先看一下在設備樹文件 imx6ull.dtsi 中,串口 UART3 對應的設備節點,內容如下:

1 uart3: serial@021ec000 {

2 compatible = "fsl,imx6ul-uart",

3 "fsl,imx6q-uart", "fsl,imx21-uart";

4 reg = <0x021ec000 0x4000>;

5 interrupts =;

6 clocks = ,

7 ;

8 clock-names = "ipg", "per";

9 dmas = , ;

10 dma-names = "rx", "tx";

11 status = "disabled";

12 };

其中,根據 compatible 屬性值:“fsl,imx6ul-uart”、“fsl,imx6q-uar”和“fsl,imx21-uart”。在內核源碼中搜索這三個值即可找到對應的 UART 驅動文件,此文件為 drivers/tty/serial/imx.c,在此文件中可以找到如下內容:

267 static struct platform_device_id imx_uart_devtype[] = {

268 {

269 .name = "imx1-uart",

270 .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX1_UART],

271 }, {

272 .name = "imx21-uart",

273 .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX21_UART],

274 }, {

275 .name = "imx6q-uart",

276 .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX6Q_UART],

277 }, {

278 /* sentinel */

279 }

280 };

281 MODULE_DEVICE_TABLE(platform, imx_uart_devtype);

282

283 static const struct of_device_id imx_uart_dt_ids[] = {

284 { .compatible = "fsl,imx6q-uart", .data = &imx_uart_devdata[IMX6Q_UART], },

285 { .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], },

286 { .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], },

287 { /* sentinel */ }

288 };

......

2071 static struct platform_driver serial_imx_driver = {

2072 .probe = serial_imx_probe,

2073 .remove = serial_imx_remove,

2074

2075 .suspend = serial_imx_suspend,

2076 .resume = serial_imx_resume,

2077 .id_table = imx_uart_devtype,

2078 .driver = {

2079 .name = "imx-uart",

2080 .of_match_table = imx_uart_dt_ids,

2081 },

2082 };

2083

2084 static int __init imx_serial_init(void)

2085 {

2086 int ret = uart_register_driver(&imx_reg);

2087

2088 if (ret)

2089 return ret;

2090

2091 ret = platform_driver_register(&serial_imx_driver);

2092 if (ret != 0)

2093 uart_unregister_driver(&imx_reg);

2094

2095 return ret;

2096 }

2097

2098 static void __exit imx_serial_exit(void)

2099 {

2100 platform_driver_unregister(&serial_imx_driver);

2101 uart_unregister_driver(&imx_reg);

2102 }

2103

2104 module_init(imx_serial_init);

2105 module_exit(imx_serial_exit);

從上述代碼可以看出,uart 驅動文件使用了 platform_driver 結構體,本質上是一個 platform 驅動。

第 267~280 行,imx_uart_devtype 為傳統匹配表。

第 283~288 行,設備樹所使用的匹配表,第 284 行的 compatible 屬性值為“fsl,imx6q-uart”。

第 2071~2082 行,platform 驅動框架結構體 serial_imx_driver。

第 2084~2096 行,驅動入口函數,第 2086 行調用 uart_register_driver 函數向 Linux 內核注冊uart_driver,在這里就是 imx_reg。

第 2098~2102 行,驅動出口函數,第 2101 行調用 uart_unregister_driver 函數注銷掉前面注冊的uart_driver,也就是 imx_reg。

53.2.2 uart_driver??初始化

在 imx_serial_init 函數中向 Linux 內核注冊了 imx_reg,imx_reg 就是 uart_driver 類型的結構體變量,imx_reg 定義如下:

1836 static struct uart_driver imx_reg = {

1837 .owner = THIS_MODULE,

1838 .driver_name = DRIVER_NAME,

1839 .dev_name = DEV_NAME,

1840 .major = SERIAL_IMX_MAJOR,

1841 .minor = MINOR_START,

1842 .nr = ARRAY_SIZE(imx_ports),

1843 .cons = IMX_CONSOLE,

1844 };

53.2.3 uart_port??初始化和注冊

當 UART 設備和驅動匹配成功以后 serial_imx_probe 函數就會執行,此函數的重點工作就是初始化uart_port,然后將其添加到對應的 uart_driver 中。在看 serial_imx_probe 函數之前先來看一下 imx_port 結構體,imx_port 是?NXP?為 I.MX 系列 SOC 定義的一個設備結構體,此結構體內部就包含了 uart_port 成

員變量,imx_port 結構體內容如下所示(有縮減):

216 struct imx_port {

217 struct uart_port port;

218 struct timer_list timer;

219 unsigned int old_status;

220 unsigned int have_rtscts:1;

221 unsigned int dte_mode:1;

222 unsigned int irda_inv_rx:1;

223 unsigned int irda_inv_tx:1;

224 unsigned short trcv_delay; /* transceiver delay */

......

243 unsigned long flags;

245 };

第 217 行,uart_port 成員變量 port。

接下來看一下 serial_imx_probe 函數,函數內容如下:

1969 static int serial_imx_probe(struct platform_device *pdev)

1970 {

1971 struct imx_port *sport;

1972 void __iomem *base;

1973 int ret = 0;

1974 struct resource *res;

1975 int txirq, rxirq, rtsirq;

1976

1977 sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL);

1978 if (!sport)

1979 return -ENOMEM;

1980

1981 ret = serial_imx_probe_dt(sport, pdev);

1982 if (ret > 0)

1983 serial_imx_probe_pdata(sport, pdev);

1984 else if (ret < 0)

1985 return ret;

1986

1987 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

1988 base = devm_ioremap_resource(&pdev->dev, res);

1989 if (IS_ERR(base))

1990 return PTR_ERR(base);

1991

1992 rxirq = platform_get_irq(pdev, 0);

1993 txirq = platform_get_irq(pdev, 1);

1994 rtsirq = platform_get_irq(pdev, 2);

1995

1996 sport->port.dev = &pdev->dev;

1997 sport->port.mapbase = res->start;

1998 sport->port.membase = base;

1999 sport->port.type = PORT_IMX,

2000 sport->port.iotype = UPIO_MEM;

2001 sport->port.irq = rxirq;

2002 sport->port.fifosize = 32;

2003 sport->port.ops = &imx_pops;

2004 sport->port.rs485_config = imx_rs485_config;

2005 sport->port.rs485.flags =

2006 SER_RS485_RTS_ON_SEND | SER_RS485_RX_DURING_TX;

2007 sport->port.flags = UPF_BOOT_AUTOCONF;

2008 init_timer(&sport->timer);

2009 sport->timer.function = imx_timeout;

2010 sport->timer.data = (unsigned long)sport;

2011

2012 sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg");

2013 if (IS_ERR(sport->clk_ipg)) {

2014 ret = PTR_ERR(sport->clk_ipg);

2015 dev_err(&pdev->dev, "failed to get ipg clk: %d\n", ret);

2016 return ret;

2017 }

2018

2019 sport->clk_per = devm_clk_get(&pdev->dev, "per");

2020 if (IS_ERR(sport->clk_per)) {

2021 ret = PTR_ERR(sport->clk_per);

2022 dev_err(&pdev->dev, "failed to get per clk: %d\n", ret);

2023 return ret;

2024 }

2025

2026 sport->port.uartclk = clk_get_rate(sport->clk_per);

2027 if (sport->port.uartclk > IMX_MODULE_MAX_CLK_RATE) {

2028 ret = clk_set_rate(sport->clk_per, IMX_MODULE_MAX_CLK_RATE);

2029 if (ret < 0) {

2030 dev_err(&pdev->dev, "clk_set_rate() failed\n");

2031 return ret;

2032 }

2033 }

2034 sport->port.uartclk = clk_get_rate(sport->clk_per);

2035

2036 /*

2037 * Allocate the IRQ(s) i.MX1 has three interrupts whereas later

2038 * chips only have one interrupt.

2039 */

2040 if (txirq > 0) {

2041 ret = devm_request_irq(&pdev->dev, rxirq, imx_rxint, 0,

2042 dev_name(&pdev->dev), sport);

2043 if (ret)

2044 return ret;

2045

2046 ret = devm_request_irq(&pdev->dev, txirq, imx_txint, 0,

2047 dev_name(&pdev->dev), sport);

2048 if (ret)

2049 return ret;

2050 } else {

2051 ret = devm_request_irq(&pdev->dev, rxirq, imx_int, 0,

2052 dev_name(&pdev->dev), sport);

2053 if (ret)

2054 return ret;

2055 }

2056

2057 imx_ports[sport->port.line] = sport;

2058

2059 platform_set_drvdata(pdev, sport);

2060

2061 return uart_add_one_port(&imx_reg, &sport->port);

2062 }

第 1971 行,定義一個 imx_port 類型的結構體指針變量 sport。

第 1977 行,為 sport 申請內存。

第 1987~1988 行,從設備樹中獲取 I.MX 系列 SOC UART 外設寄存器首地址,對于I.MX6ULL 的 UART3 來說就是 0X021EC000。得到寄存器首地址以后對其進行內存映射,得到對應的虛擬地址。

第 1992~1994 行,獲取中斷信息。

第 1996~2034 行,初始化 sport,我們重點關注的就是第 2003 行初始化 sport 的 port 成員變量,也就是設置 uart_ops 為 imx_pops,imx_pops 就是 I.MX6ULL 最底層的驅動函數集合,稍后再來看。

第 2040~2055 行,申請中斷。

第 2061 行,使用 uart_add_one_port 向 uart_driver 添加 uart_port,在這里就是向 imx_reg 添加sport->port。

53.2.4 imx_pops??結構體

imx_pops 就是 uart_ops 類型的結構體變量,保存了 I.MX6ULL 串口最底層的操作函數,imx_pops 定義如下:

1611 static struct uart_ops imx_pops = {

1612 .tx_empty = imx_tx_empty,

1613 .set_mctrl = imx_set_mctrl,

1614 .get_mctrl = imx_get_mctrl,

1615 .stop_tx = imx_stop_tx,

1616 .start_tx = imx_start_tx,

1617 .stop_rx = imx_stop_rx,

1618 .enable_ms = imx_enable_ms,

1619 .break_ctl = imx_break_ctl,

1620 .startup = imx_startup,

1621 .shutdown = imx_shutdown,

1622 .flush_buffer = imx_flush_buffer,

1623 .set_termios = imx_set_termios,

1624 .type = imx_type,

1625 .config_port = imx_config_port,

1626 .verify_port = imx_verify_port,

1627 #if defined(CONFIG_CONSOLE_POLL)

1628 .poll_init = imx_poll_init,

1629 .poll_get_char = imx_poll_get_char,

1630 .poll_put_char = imx_poll_put_char,

1631 #endif

1632 };

imx_pops 中的函數基本都是和 I.MX6ULL 的 UART 寄存器打交道的,這里就不去詳細的分析了。

總結

以上是生活随笔為你收集整理的迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久久久激情电影 | 黄色av观看 | 日韩三级中文字幕 | 久艹视频在线观看 | 亚洲精品午夜久久久久久久久久久 | 国产专区精品 | 中文字幕在线观看播放 | av黄免费看 | 四虎永久免费网站 | 超碰.com| 国产精品一区二区中文字幕 | 亚洲激情网站免费观看 | 99久热在线精品视频 | 性色av香蕉一区二区 | av超碰免费在线 | www.一区二区三区 | 天天干亚洲 | 在线免费观看视频一区二区三区 | 国产日韩三级 | 成人在线视频在线观看 | 91九色蝌蚪视频 | 成人性生交视频 | 欧美一区二区三区在线视频观看 | 六月丁香在线视频 | 五月天久久狠狠 | 婷婷久久亚洲 | 国产在线更新 | 久久精品欧美日韩精品 | 在线精品在线 | 婷婷激情五月综合 | 国产在线小视频 | 国产精品久久久久久久久久免费看 | 99精品国产在热久久下载 | 亚洲国产片 | 国产精品自在欧美一区 | 国产91免费看 | zzijzzij亚洲成熟少妇 | 亚洲污视频 | 特级西西人体444是什么意思 | www.在线观看视频 | 91成人精品在线 | 久久黄色网页 | 色网站在线看 | 久久久久久国产精品免费 | 国产精品区免费视频 | 中文字幕有码在线播放 | 黄色特级片 | 成人 亚洲 欧美 | 久精品在线| 成年人av在线播放 | 日韩精品一区二区三区高清免费 | 日本一区二区三区视频在线播放 | 伊人色综合网 | 欧美福利精品 | 在线观看完整版免费 | 一区二区 久久 | 国产精品电影在线 | 91视频 - x99av | 久久久久久中文字幕 | av在线短片 | 在线国产一区二区三区 | 麻豆免费在线视频 | 深夜免费小视频 | 精品毛片在线 | 91免费版成人 | 精品视频 | 91日韩在线播放 | 99在线视频播放 | av福利在线看 | 久久综合国产伦精品免费 | 91在线你懂的 | 成人在线免费观看网站 | 91视频在线观看免费 | 99高清视频有精品视频 | 日批在线看 | 亚洲国产免费av | av在线网站大全 | 亚洲国产午夜视频 | 麻花传媒mv免费观看 | 欧洲精品久久久久毛片完整版 | 一区二区三区动漫 | 国产高清无av久久 | 人人干网站 | 在线视频 精品 | 亚洲人成人99网站 | 91福利区一区二区三区 | 日日摸日日添夜夜爽97 | 国产精品毛片一区 | 日韩免费中文 | 国产精品毛片一区二区 | 久久成人在线视频 | 欧美日韩成人一区 | 婷婷色中文字幕 | 人人草网站 | 日韩免费成人 | 中文字幕 国产 一区 | 美女国产精品 | 免费国产黄线在线观看视频 | 日本一区二区高清不卡 | 丁香婷婷激情国产高清秒播 | 国产美女精品视频 | 婷婷激情五月综合 | 夜夜视频| www.久久婷婷 | 超碰人人av | 日批网站在线观看 | 91久久精品一区二区三区 | 亚洲在线不卡 | 97在线观视频免费观看 | 中文字幕观看av | 精品av网站 | 精品在线一区二区 | 国产高清第一页 | 中文字幕一区二区三区四区视频 | 国产高清精品在线观看 | 国产亚州av | 婷婷五综合 | 激情网在线观看 | 国产69熟 | 九九在线精品视频 | 黄色不卡av | 最近免费中文字幕 | 成人av一区二区在线观看 | av免费黄色 | 91av视频导航 | 91精品国产网站 | 国产精品久久久久久久免费大片 | 国产精品视频 | 久久久免费在线观看 | 国产精品久久久久久麻豆一区 | 96av麻豆蜜桃一区二区 | 天天噜天天色 | 丁香综合 | 国产精品一区二区久久精品爱涩 | 日韩免费专区 | 美女黄网久久 | 午夜久久视频 | 亚洲五月六月 | 久久人人爽人人爽 | 免费在线观看一区 | av一区二区三区在线播放 | 色爱区综合激月婷婷 | 蜜桃视频日韩 | 成人aaa毛片 | 国产成人一二三 | 日韩女同一区二区三区在线观看 | 欧美成年人在线观看 | 久久免费看片 | 国产精品视频你懂的 | 国产亚洲精品免费 | 9999毛片| 97超碰网 | 毛片.com| 精品国产一区二区在线 | 免费看片网址 | 又黄又爽又无遮挡的视频 | 91亚洲精品久久久中文字幕 | 久久国产精品网站 | 懂色av懂色av粉嫩av分享吧 | 日日夜夜免费精品视频 | 特级xxxxx欧美 | 亚洲人在线视频 | 久久专区 | 国产黄色av| 涩涩爱夜夜爱 | 97成人精品| 欧美色综合天天久久综合精品 | 高清国产午夜精品久久久久久 | 96久久精品 | 亚洲精品午夜aaa久久久 | 91福利视频一区 | 黄色在线免费观看网站 | 日韩欧美在线不卡 | av中文字幕在线播放 | 免费观看成人av | 亚洲精品国产精品久久99 | 免费福利视频网站 | 国产伦精品一区二区三区照片91 | 91视频这里只有精品 | 久久99精品久久久久蜜臀 | 国产精品久久久久婷婷二区次 | 成人精品一区二区三区中文字幕 | 中文字幕视频网站 | 亚洲视频在线观看网站 | 国产麻豆成人传媒免费观看 | 九九九九精品九九九九 | 亚洲一区二区视频在线播放 | 久久国内精品99久久6app | 国产亚洲精品久久 | 激情欧美一区二区三区免费看 | 99久久精品久久久久久动态片 | 欧美a级成人淫片免费看 | 婷婷丁香五 | 亚洲精品成人在线 | 91色偷偷| 综合网天天射 | 午夜狠狠干 | 亚洲精品久久久蜜臀下载官网 | 免费在线观看av网址 | 色综合人人 | 日韩精品久久久久久中文字幕8 | 99国产免费网址 | 久久精品—区二区三区 | 午夜视频日本 | 日本激情视频中文字幕 | 亚洲欧美精品在线 | 国产91精品一区二区绿帽 | 免费99视频| 国产中文视 | 91探花视频| 天天操天天舔天天干 | 日韩在线观看一区 | 亚洲精品欧美成人 | 国内久久久久久 | 99精品视频精品精品视频 | av千婊在线免费观看 | 成人黄色资源 | 国产香蕉久久精品综合网 | 国产精品 美女 | 五月婷婷久草 | 粉嫩av一区二区三区四区五区 | 麻豆精品视频在线 | 亚洲高清精品在线 | 99在线播放 | 久久国内免费视频 | 国产二级视频 | 亚洲精选在线 | 久久精品视频网 | 亚洲精品99久久久久久 | 欧美男同网站 | 亚洲影院一区 | 久久综合五月 | 亚洲精品乱码久久久久 | 国产高清精品在线 | 日韩精品视频第一页 | 国产精品精品国产婷婷这里av | 久久视频在线观看中文字幕 | 天堂在线一区二区三区 | 伊人伊成久久人综合网小说 | 国内精品久久久久久久久久清纯 | 亚洲永久字幕 | 欧美一区二区三区在线播放 | 五月婷婷激情 | 特级西西444www大精品视频免费看 | 国产精品久久一卡二卡 | 国产系列 在线观看 | 综合色婷婷 | 日本精品va在线观看 | 日韩,精品电影 | 中文字幕色在线 | 三级黄色免费片 | 国产一级片在线播放 | 婷婷丁香在线观看 | 免费影视大全推荐 | 国产一区欧美二区 | av黄色成人 | 国产黄色片免费观看 | 91porny九色91啦中文 | 欧美在线观看视频一区二区 | 日韩色高清 | 久久精品国产精品亚洲 | 久久精品这里都是精品 | 免费不卡中文字幕视频 | 欧美a视频在线观看 | 国产91av视频在线观看 | 国产免费不卡 | 欧美日韩亚洲在线 | 国产亚洲精品久久19p | 精品国产伦一区二区三区观看方式 | 国产精品日韩久久久久 | 中午字幕在线观看 | 日韩天天干| 欧美精品一二三 | 超碰97人人在线 | 色香天天| 综合天天网| 77国产精品| 日韩视 | www.操.com| 久久官网 | 亚洲精品成人av在线 | 国产色网 | 国产亚洲精品中文字幕 | 亚洲人xxx | 久久艹欧美| www.亚洲在线| 亚洲精品中文在线资源 | 日韩欧美视频免费在线观看 | 狠狠干,狠狠操 | 久草视频首页 | 又黄又刺激的视频 | 成人在线播放免费观看 | 夜色成人av | av7777777 | 91免费视频国产 | 国产专区视频 | 免费在线观看日韩欧美 | 午夜精品久久一牛影视 | 狠狠操狠狠 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 激情图片区 | 狠狠干狠狠色 | 91在线视频一区 | 亚洲精品综合在线观看 | 亚洲一级免费观看 | 91网址在线观看 | 五月开心六月伊人色婷婷 | 国产一区在线视频观看 | 国产一级免费av | av免费电影在线 | 成人在线观看免费视频 | 久久久免费国产 | 日韩在线观看你懂得 | 美女视频黄免费网站 | 久久综合网色—综合色88 | 狂野欧美激情性xxxx | 欧美日韩精品免费观看视频 | 91人人在线| 91精品视频播放 | 亚洲禁18久人片 | 国产色视频123区 | 91免费版在线 | 免费观看的av | 蜜臀av性久久久久蜜臀av | 中文字幕4 | 色综合久久88色综合天天人守婷 | 午夜影视av| 国产97在线观看 | 色综合天天色综合 | 99久久综合国产精品二区 | 欧美性超爽 | 狠狠干狠狠艹 | 99中文字幕在线观看 | 激情五月看片 | 黄色成品视频 | 国产一级高清视频 | 久久免费视频精品 | 亚洲黄色激情小说 | 97人人模人人爽人人喊网 | 在线观看日韩免费视频 | 国内精品亚洲 | 777久久久 | 国产三级久久久 | 中文字幕亚洲字幕 | 天天爽网站 | 青青啪| 在线看v片成人 | 国内精品视频久久 | av丝袜在线| 免费国产在线观看 | 国产精品一区二区三区久久久 | 五月天婷婷丁香花 | 在线观看岛国 | 激情综合色图 | 中文字幕最新精品 | 人人插人人射 | 综合网五月天 | 国产精品一区二区果冻传媒 | 国产乱对白刺激视频在线观看女王 | 国产91免费观看 | 黄网站app在线观看免费视频 | 国产亚洲欧美精品久久久久久 | 国产精品久久视频 | 亚洲一级理论片 | 手机av资源| 欧美中文字幕第一页 | 中文字幕在线影院 | 精品久久久久国产 | 51精品国自产在线 | 91九色蝌蚪视频 | 91成人黄色 | 激情xxxx| 亚洲三级影院 | 亚洲精品视频免费观看 | 手机看片99| 丰满少妇对白在线偷拍 | 久久久久国产一区二区三区四区 | 日韩一级黄色大片 | 日本中文在线播放 | 天天爱天天爽 | 国产精品人成电影在线观看 | 亚洲不卡av一区二区三区 | 婷婷六月久久 | 精品国产伦一区二区三区观看说明 | 久久久久夜色 | 黄色网址在线播放 | 国产黄色片久久久 | 国产不卡精品 | www,黄视频 | av在线在线 | 亚洲综合五月 | 久草干 | 国产精品久久久久久久久免费看 | 国产无吗一区二区三区在线欢 | 伊人狠狠干 | 亚洲九九九在线观看 | 国内精品久久久久久中文字幕 | 91热精品| 免费在线观看黄色网 | 亚洲国产中文字幕在线 | 久久99九九99精品 | 国产白浆在线观看 | 成人免费在线观看电影 | 精品视频在线视频 | 激情电影影院 | 丁香网五月天 | 在线免费观看国产黄色 | 在线观看中文字幕dvd播放 | 精品国产中文字幕 | 久久久国产影院 | 蜜臀av麻豆 | 日韩免费av片 | 亚洲欧美综合精品久久成人 | 国产主播大尺度精品福利免费 | 国产精品一区二区在线 | 欧美片网站yy | 欧美综合国产 | 91九色视频导航 | 日韩成人邪恶影片 | 456免费视频 | 91香蕉视频黄色 | 亚洲动漫在线观看 | 99热精品国产一区二区在线观看 | 色爱成人网 | 日韩久久精品一区二区三区下载 | 精品久久久久久久久久久久久久久久久久 | 日本黄色大片儿 | 国产精品一区二区三区视频免费 | 日韩免费电影网站 | 精品一区二区三区久久久 | 国产视频一区在线播放 | 丝袜美腿亚洲综合 | 久久精品99国产精品亚洲最刺激 | 黄色www | 日韩欧美国产免费播放 | 国产黄色av影视 | 日韩一二区在线 | 狠狠综合| 亚洲精品高清视频 | 亚洲闷骚少妇在线观看网站 | 九九九热精品免费视频观看 | 色欧美视频 | 亚洲视频在线观看网站 | www.婷婷com| 久久综合久久八八 | 国模视频一区二区 | 亚洲国产精品久久久久婷婷884 | 国产偷v国产偷∨精品视频 在线草 | 欧美日韩精品免费观看视频 | 精品在线观看一区二区三区 | 9色在线视频 | 久久久精品欧美 | 天天干天天想 | 特级黄色电影 | 天天色天天干天天 | 欧美精品一区二区在线播放 | 天堂在线一区二区 | 久久久2o19精品 | 亚洲一级特黄 | 91专区在线观看 | a国产精品 | 免费在线观看av网站 | 探花视频在线观看+在线播放 | 国产精品欧美一区二区三区不卡 | 亚洲精品黄色在线观看 | 99久在线精品99re8热视频 | 色网站在线免费观看 | 公开超碰在线 | 婷婷丁香狠狠爱 | 精品女同一区二区三区在线观看 | 91天堂在线观看 | 免费色视频网站 | av888.com | 久久成人国产精品入口 | 91欧美国产 | 韩国精品福利一区二区三区 | 国产黄免费 | 国产精品自产拍在线观看网站 | av一区二区三区在线 | 亚洲精品 在线视频 | 免费av电影网站 | 天天插综合 | 91热视频在线观看 | 久久精品视频国产 | 日韩特黄一级欧美毛片特黄 | 亚洲精品国偷自产在线91正片 | 久久国产视屏 | 亚洲精品国产区 | 欧美在线a视频 | 久久国产电影 | 91麻豆精品国产91久久久久久久久 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久久99在线视频 | 久草综合视频 | 日本久久久久久久久久 | 中文字幕xxxx| 国产精品久久99精品毛片三a | 色五月色开心色婷婷色丁香 | 精品毛片一区二区免费看 | av成人在线观看 | 久久艹国产 | 亚洲伦理中文字幕 | 久久婷婷视频 | 国产一在线精品一区在线观看 | 欧美日韩网站 | 免费在线观看亚洲视频 | 久久 在线 | 天天玩天天干 | 久久精品一区二区国产 | 麻豆传媒视频在线播放 | 国产精品免费不卡 | 欧美日韩国产三级 | 人人干干人人 | 色综合久久精品 | 久久精品韩国 | 91秒拍国产福利一区 | 国产在线不卡精品 | 国产视频高清 | 韩国av免费在线 | 日本视频久久久 | 五月婷婷香蕉 | 国精产品永久999 | 五月婷婷色播 | 91最新国产 | 91精品婷婷国产综合久久蝌蚪 | 日韩中文字幕免费在线观看 | 亚洲一区 影院 | 激情偷乱人伦小说视频在线观看 | 黄色a视频免费 | 中文一区在线观看 | 欧美xxxx性xxxxx高清 | 毛片网在线 | 夜夜骑首页 | 波多野结衣一区三区 | 亚洲六月丁香色婷婷综合久久 | 中文字幕在线视频第一页 | 99视频99 | 国产精品视频999 | 能在线观看的日韩av | 视频在线观看一区 | 在线观看免费高清视频大全追剧 | 在线视频 区 | 在线免费观看成人 | 999久久国产| 色偷偷88888欧美精品久久 | 992tv又爽又黄的免费视频 | 日韩69av | 午夜久久影院 | 国产精品日韩久久久久 | 在线视频一区二区 | 免费黄色在线网址 | 色婷婷成人网 | 天天干 夜夜操 | 久久人人爽爽人人爽人人片av | 亚洲综合日韩在线 | 天天射天天干天天爽 | 99久久精品免费看国产四区 | 免费裸体视频网 | 成人免费视频视频在线观看 免费 | 国产 视频 高清 免费 | 免费观看av网站 | 日韩av成人免费看 | 欧美嫩草影院 | 亚洲精品日韩一区二区电影 | 日韩高清不卡在线 | 在线免费观看视频一区 | 中文字幕中文字幕在线中文字幕三区 | 亚洲国产小视频在线观看 | 日韩高清二区 | 久久99精品国产99久久 | av一级片 | 看国产黄色片 | 毛片精品免费在线观看 | 狠狠干狠狠久久 | 99久久日韩精品免费热麻豆美女 | 99福利影院 | 操操综合| 一级黄色片在线观看 | 国产网红在线观看 | 日韩av资源在线观看 | 免费福利片2019潦草影视午夜 | 九色琪琪久久综合网天天 | 亚洲毛片视频 | 丝袜美女在线观看 | 欧美国产日韩一区二区三区 | 国产精品美女网站 | 在线观看成年人 | www亚洲精品 | av丝袜在线| 日韩欧美一区二区在线观看 | 久久精品屋 | 欧美精品久久久久久久久久白贞 | 四虎欧美 | 日日精品| 九九热1| 成人毛片a | 亚洲精品啊啊啊 | 激情综合色播五月 | 日韩精品一区二区三区丰满 | 国内成人综合 | 成人高清在线观看 | 免费看精品久久片 | 欧美一级日韩免费不卡 | 亚洲成人第一区 | 欧美日韩二区在线 | 最近乱久中文字幕 | 久久成人高清视频 | 五月天综合婷婷 | 久久久www免费电影网 | 在线视频第一页 | 国产欧美精品在线观看 | 婷婷久久综合网 | 91精品在线播放 | 久久综合久久综合这里只有精品 | 免费观看久久 | 制服丝袜亚洲 | 中文字幕在线播放一区 | 97在线影院| 91在线一区 | 亚洲精品综合一二三区在线观看 | 热久久99这里有精品 | 天天操天天干天天摸 | 久久草草影视免费网 | 国产精品久久久久av | 国产成人在线综合 | 中文字幕中文字幕在线中文字幕三区 | 国产成人精品久久二区二区 | 国产999精品久久久 免费a网站 | 久久免费视频这里只有精品 | 欧美91视频| 在线播放第一页 | 狠狠色噜噜狠狠狠狠2021天天 | 国产精品一区久久久久 | 黄色一区二区在线观看 | 久草线| 欧美视频www | 国产aa免费视频 | 日韩欧美一区二区三区黑寡妇 | 三级黄色大片在线观看 | 国产在线精品一区 | 欧美日韩视频网站 | 在线观看你懂的网站 | 婷婷国产视频 | 久久国产视频网 | 国产亚洲精品美女 | 中文字幕在线免费观看视频 | 久久久国产精品亚洲一区 | 久草视频在线免费播放 | 午夜视频在线观看一区二区三区 | 五月激情视频 | 91女人18片女毛片60分钟 | 狠狠色丁香婷婷综合最新地址 | 在线看成人 | 成人亚洲网 | 日韩久久久 | 在线黄色免费av | 亚洲精品在线视频播放 | 亚洲成人资源在线观看 | 不卡的av电影 | 最近中文字幕免费av | 国产亚洲精品久久久久久大师 | 碰碰影院| 91大神一区二区三区 | 麻豆视频免费在线观看 | 国产中文字幕三区 | 91av在线视频免费观看 | 人人爽人人爽人人爽人人爽 | 久久久wwww| 国产成人久久av977小说 | 中文字幕永久 | 国产专区视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 日韩美av在线 | 激情电影影院 | 久久国产精品免费一区二区三区 | 欧美在线18 | 黄色av成人在线观看 | 国产一区二区免费 | 99精品视频在线播放观看 | 天天天天爱天天躁 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 色婷婷综合久久久中文字幕 | 国产精品黄 | 在线观看成年人 | 亚洲精品国产成人av在线 | 在线天堂中文在线资源网 | 久久久精品欧美一区二区免费 | 伊人资源站 | 99精品国产一区二区 | 久久男人影院 | 黄色免费视频在线观看 | 97视频免费播放 | 国产无吗一区二区三区在线欢 | 国产伦精品一区二区三区四区视频 | 99久久精品国产网站 | 在线观看网站黄 | 国产精品第10页 | 亚洲最大av网 | 精品国产色| 欧美看片| 欧美伦理电影一区二区 | 国产精品99久久久久久小说 | 国产亚洲精品久久久久久网站 | 亚洲国产中文字幕 | 西西www4444大胆在线 | 国产精品一区免费看8c0m | 国产麻豆精品传媒av国产下载 | 摸阴视频| 日日摸日日添日日躁av | 日韩精品一区二区三区不卡 | 天天做天天看 | 亚洲自拍偷拍色图 | 在线激情影院一区 | 久久久久久国产精品美女 | 中文日韩在线视频 | 99精品视频99 | 天天干天天拍天天操天天拍 | 日日夜夜狠狠干 | 国产五月婷 | 欧美激情第八页 | 麻豆av电影 | 久久看看 | 日韩精品首页 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 婷婷视频在线播放 | 91在线视频网址 | 色视频网站在线 | 日本三级不卡视频 | 国产精品普通话 | 黄色av电影 | 99久久夜色精品国产亚洲96 | 久久久久久久国产精品影院 | 国产亚洲情侣一区二区无 | 爱爱av网 | 又黄又爽又湿又无遮挡的在线视频 | 久久久国产网站 | 免费看黄在线 | 一级一片免费看 | 久久精品日本啪啪涩涩 | 国产在线视频一区二区 | 男女全黄一级一级高潮免费看 | 天天天天天天操 | 久久久在线观看 | 国产精品毛片一区视频 | a在线观看视频 | 国产一区二区成人 | 97免费视频在线 | 久久国产精品久久久 | 99精品在线| 91视频专区| 日韩精品无码一区二区三区 | 免费a一级 | 亚洲日本在线视频观看 | 国产在线无| 91成人精品国产刺激国语对白 | 免费三及片 | 91精品天码美女少妇 | 免费黄色av电影 | 久草在线免费新视频 | 九热精品 | 亚洲综合视频在线 | 亚洲电影黄色 | 亚洲久草视频 | 免费国产一区二区 | www.五月天色| 亚洲 中文 在线 精品 | 草久久久久久 | av九九九 | 久久一区二区三区超碰国产精品 | 日韩动漫免费观看高清完整版在线观看 | 国产亚洲精品久久久久久移动网络 | 久久永久免费视频 | 91视频免费观看 | 成人啊 v| 久久精品国产久精国产 | 最新日韩在线 | 亚洲国产电影在线观看 | 国产99久久九九精品免费 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 日韩美在线观看 | 色综合中文字幕 | 美女国产免费 | 国产精品麻豆三级一区视频 | 免费黄在线看 | 四虎影视成人永久免费观看视频 | 一级性生活片 | 91av99| www视频在线观看 | 日韩爱爱片 | 又黄又刺激的视频 | 国产亲近乱来精品 | 天天爱天天操天天爽 | 国产精品久久久免费 | 丁香九月激情综合 | 操高跟美女 | 丁香六月中文字幕 | 国产在线中文字幕 | 欧美大片第1页 | 黄色毛片电影 | av免费观看高清 | 婷婷久久综合网 | 久久国产美女视频 | 国产成人精品一区一区一区 | 久久一区二区免费视频 | 久久黄色片子 | 在线观看免费成人 | 深夜免费小视频 | 天天爽网站| 热久久免费视频精品 | 亚洲国产资源 | 日日操日日插 | 国产视频一区二区在线播放 | 免费黄色一区 | 激情视频二区 | 久久久久久久久久久福利 | a色视频 | 美女露久久 | av在线一级 | 超碰精品在线 | 激情网在线视频 | 全久久久久久久久久久电影 | 免费看的黄色片 | 亚洲理论在线观看电影 | 亚洲一区二区精品3399 | 免费av视屏 | 国产精品成人免费一区久久羞羞 | 亚洲日本三级 | 色天天 | 97超级碰碰碰碰久久久久 | 青青河边草免费视频 | av线上看 | 91爱爱免费观看 | 精品一二 | 久久国产免费 | 91丝袜美腿| 综合久久久久久久久 | 激情综合五月婷婷 | 98超碰在线 | 91av视屏 | 国产裸体永久免费视频网站 | 免费aa大片| 日韩黄色在线观看 | 久久久在线免费观看 | 久久久久久高潮国产精品视 | 国产69精品久久久久久 | 成人毛片一区 | 日日夜夜骑 | 日韩免费中文 | 又黄又刺激视频 | 免费看片网站91 | 毛片黄色一级 | 久久99精品国产麻豆婷婷 | 992tv又爽又黄的免费视频 | 国产福利久久 | 岛国片在线| 久久久久久精 | 91精品国产99久久久久 | 精品久久影院 | www日韩| 在线小视频你懂的 | 久草免费在线 | 欧美日韩中文另类 | 最近免费在线观看 | 成人观看视频 | 亚洲精品毛片一级91精品 | 国产一区福利 | 日韩高清在线一区二区三区 | 免费男女羞羞的视频网站中文字幕 | 色七七亚洲影院 | 国模一区二区三区四区 | 欧美日韩不卡在线视频 | 香蕉视频网站在线观看 | 精品一二三四五区 | 狠狠干夜夜 | 国产精品美女久久久久久久网站 | 精品视频免费看 | 欧美日韩国产在线一区 | 欧美极品少妇xbxb性爽爽视频 | 日韩videos | 激情综合网色播五月 | 国产美女主播精品一区二区三区 | 福利一区二区三区四区 | 国产在线91在线电影 | www..com黄色片 | 国产三级久久久 | 国产福利电影网址 | 国产一级黄色电影 | 丝袜精品视频 | 天天色综合久久 | 五月精品| 91九色性视频 | 亚洲精品永久免费视频 | 91视频网址入口 | 国产视频精品久久 | 日韩一级电影网站 | 国精产品永久999 | 手机av在线网站 | 亚洲v欧美v国产v在线观看 | 91人人澡| 国产精品免费视频久久久 | 国产精品久久片 | 国产精品大全 | 免费三级骚 | 网站在线观看日韩 | 国产一区二区三区在线 | 欧洲精品亚洲精品 | av 一区二区三区四区 | 国内精品久久影院 | 91九色蝌蚪 | 九九在线精品视频 | 精品不卡av | 日韩成人一级大片 | 中文字幕一区二区三区在线观看 | 久久婷婷视频 | 久久国产精品免费一区 | 日韩av电影中文字幕在线观看 | 日韩欧美国产激情在线播放 | 99热国产在线观看 | 综合网色| 黄网站色视频免费观看 | 天天摸日日操 | 高清不卡毛片 | 天天色天天射天天操 | 精品国产伦一区二区三区免费 | 久久久久久久99精品免费观看 | 国产黄色播放 | 亚洲三级在线 | 国产精品少妇 | 亚洲精品小区久久久久久 | 国产手机视频在线 | 人人网av| 亚洲最大成人网4388xx | 日日射av | 夜夜夜| 在线视频欧美精品 | 成年人免费在线 | 亚洲日韩中文字幕在线播放 | 婷婷激情在线观看 | 激情婷婷综合 | 日韩色中色 | 久久国产热视频 | 99热999| 超碰在线9 | 91精品国产乱码在线观看 | 国产精品久久一区二区三区不卡 | 日韩中文字幕在线观看 | 一区二区三区日韩精品 | 99精品国产99久久久久久97 | 成人h视频在线播放 | www一起操| 成人动漫一区二区三区 | 婷婷在线综合 | 99产精品成人啪免费网站 | 一区二区三区精品久久久 | 欧美日韩一级在线 | 久久久久久久久久伊人 | 四虎在线视频 | 日韩v在线91成人自拍 | 99精品视频免费看 | 精品91久久久久 | 欧美日韩高清一区二区三区 | 99国产情侣在线播放 | 国产大陆亚洲精品国产 | 欧美一级专区免费大片 | 玖玖在线看 | 天天干天天做天天爱 | 国产精品亚 | 亚洲区精品视频 | 91精品国产91久久久久 | 久久午夜色播影院免费高清 | 国产资源精品 | 久青草视频在线观看 | 91视频免费网站 | 久久久国产精品一区二区中文 | 久久人人爽爽人人爽人人片av | 狠狠躁日日躁狂躁夜夜躁 | 国产亚洲精品美女久久 | 亚洲人成精品久久久久 | 一级免费片 | 欧美一区二区精美视频 | 伊人婷婷网 | 在线观看视频一区二区三区 | 成人激情开心网 | 国产成人精品电影久久久 | 欧美精品免费视频 | 在线观看不卡的av | 亚洲成人精品久久久 | 五月婷婷深开心 | 成人av一级片 | 超薄丝袜一二三区 | 国产精品一区二区果冻传媒 | 91精品在线免费观看视频 | 亚洲春色奇米影视 | 色偷偷人人澡久久超碰69 | 久久私人影院 | 99热精品在线 | 久久这里只有精品23 | 亚洲激情网站免费观看 |