精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony:全流程講解如何編寫GPIO平臺驅(qū)動以及應(yīng)用程序

系統(tǒng) OpenHarmony
GPIO(General-purpose input/output)即通用型輸入輸出。通常,GPIO控制器通過分組的方式管理所有GPIO管腳,每組GPIO有一個或多個寄存器與之關(guān)聯(lián),通過讀寫寄存器完成對GPIO管腳的操作。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

一、案例簡介

該程序是基于OpenHarmony標準系統(tǒng)編寫的基礎(chǔ)外設(shè)類:GPIO驅(qū)動。

目前已在凌蒙派-RK3568開發(fā)板跑通。詳細資料請參考官網(wǎng):https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b03_platform_device_gpio。

詳細資料請參考OpenHarmony官網(wǎng):

  • GPIO平臺驅(qū)動開發(fā)
  • GPIO應(yīng)用程序開發(fā)

二、基礎(chǔ)知識

1、GPIO簡介

GPIO(General-purpose input/output)即通用型輸入輸出。通常,GPIO控制器通過分組的方式管理所有GPIO管腳,每組GPIO有一個或多個寄存器與之關(guān)聯(lián),通過讀寫寄存器完成對GPIO管腳的操作。

2、GPIO平臺驅(qū)動

GPIO(General-purpose input/output)即通用型輸入輸出。通常,GPIO控制器通過分組的方式管理所有GPIO管腳,每組GPIO有一個或多個寄存器與之關(guān)聯(lián),通過讀寫寄存器完成對GPIO管腳的操作。

GPIO模塊各分層作用:

  • 接口層提供操作GPIO管腳的標準方法。
  • 核心層主要提供GPIO管腳資源匹配,GPIO管腳控制器的添加、移除以及管理的能力,通過鉤子函數(shù)與適配層交互,供芯片廠家快速接入HDF框架。
  • 適配層主要是將鉤子函數(shù)的功能實例化,實現(xiàn)具體的功能。

GPIO統(tǒng)一服務(wù)模式結(jié)構(gòu)圖:

為了保證上層在調(diào)用GPIO接口時能夠正確的操作GPIO管腳,核心層在//drivers/hdf_core/framework/support/platform/include/gpio/gpio_core.h中定義了以下鉤子函數(shù),驅(qū)動適配者需要在適配層實現(xiàn)這些函數(shù)的具體功能,并與鉤子函數(shù)掛接,從而完成適配層與核心層的交互。

GpioMethod定義:

struct GpioMethod {
    int32_t (*request)(struct GpioCntlr *cntlr, uint16_t local);                 // 【預(yù)留】
    int32_t (*release)(struct GpioCntlr *cntlr, uint16_t local);                 // 【預(yù)留】
    int32_t (*write)(struct GpioCntlr *cntlr, uint16_t local, uint16_t val);
    int32_t (*read)(struct GpioCntlr *cntlr, uint16_t local, uint16_t *val);
    int32_t (*setDir)(struct GpioCntlr *cntlr, uint16_t local, uint16_t dir);
    int32_t (*getDir)(struct GpioCntlr *cntlr, uint16_t local, uint16_t *dir);
    int32_t (*toIrq)(struct GpioCntlr *cntlr, uint16_t local, uint16_t *irq);    // 【預(yù)留】
    int32_t (*setIrq)(struct GpioCntlr *cntlr, uint16_t local, uint16_t mode, GpioIrqFunc func, void *arg);
    int32_t (*unsetIrq)(struct GpioCntlr *cntlr, uint16_t local);
    int32_t (*enableIrq)(struct GpioCntlr *cntlr, uint16_t local);
    int32_t (*disableIrq)(struct GpioCntlr *cntlr, uint16_t local);
}

GpioMethod結(jié)構(gòu)體成員的鉤子函數(shù)功能說明:

函數(shù)成員

入?yún)?/p>

出參

返回值

功能

write

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號 val:uint16_t類型,電平傳入值

HDF_STATUS相關(guān)狀態(tài)

GPIO引腳寫入電平值

read

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識

val:uint16_t類型指針,用于傳出電平值。

HDF_STATUS相關(guān)狀態(tài)

GPIO引腳讀取電平值

setDir

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號 dir:uint16_t類型,管腳方向傳入值

HDF_STATUS相關(guān)狀態(tài)

設(shè)置GPIO引腳輸入/輸出方向

getDir

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號

dir:uint16_t類型指針,用于傳出管腳方向值

HDF_STATUS相關(guān)狀態(tài)

讀GPIO引腳輸入/輸出方向

setIrq

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號 mode:uint16_t類型,表示觸發(fā)模式(邊沿或電平) func:函數(shù)指針,中斷服務(wù)程序; arg:void指針,中斷服務(wù)程序入?yún)?/p>

HDF_STATUS相關(guān)狀態(tài)

將GPIO引腳設(shè)置為中斷模式

unsetIrq

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號

HDF_STATUS相關(guān)狀態(tài)

取消GPIO中斷設(shè)置

enableIrq

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號

HDF_STATUS相關(guān)狀態(tài)

使能GPIO管腳中斷

disableIrq

cntlr:結(jié)構(gòu)體指針,核心層GPIO控制器 local:uint16_t類型,GPIO端口標識號

HDF_STATUS相關(guān)狀態(tài)

禁止GPIO管腳中斷

3、GPIO應(yīng)用程序

GPIO驅(qū)動API接口功能:

接口名

描述

GpioGetByName(const char *gpioName)

獲取GPIO管腳ID

int32_t GpioRead(uint16_t gpio, uint16_t *val)

讀GPIO管腳電平值

int32_t GpioWrite(uint16_t gpio, uint16_t val)

寫GPIO管腳電平值

int32_t GpioGetDir(uint16_t gpio, uint16_t *dir)

獲取GPIO管腳方向

int32_t GpioSetDir(uint16_t gpio, uint16_t dir)

設(shè)置GPIO管腳方向

int32_t GpioUnsetIrq(uint16_t gpio, void *arg);

取消GPIO管腳對應(yīng)的中斷服務(wù)函數(shù)

int32_t GpioSetIrq(uint16_t gpio, uint16_t mode, GpioIrqFunc func, void *arg)

設(shè)置GPIO管腳對應(yīng)的中斷服務(wù)函數(shù)

int32_t GpioEnableIrq(uint16_t gpio)

使能GPIO管腳中斷

int32_t GpioDisableIrq(uint16_t gpio)

禁止GPIO管腳中斷

GPIO標準API通過GPIO管腳號來操作指定管腳,使用GPIO的一般流程如下圖所示:

三、代碼解析

1、準備工作

查看《凌蒙派-RK3568開發(fā)板_排針說明表_》(即Git倉庫的//docs/board/凌蒙派-RK3568開發(fā)板_排針說明表_v1.0.xlsx),選中0_B5(即GPIO0_B5)。

2、配置文件

(1)device_info.hcs

創(chuàng)建config/device_info.hcs,用于GPIO驅(qū)動設(shè)備描述,具體內(nèi)容如下:

root {
    device_info {
        platform :: host {
            device_gpio :: device {
                device0 :: deviceNode {                         // GPIO控制器信息描述
                    policy = 2;                                 // 對外發(fā)布服務(wù),必須為2,用于定義GPIO管理器的服務(wù)
                    priority = 50;
                    permission = 0644;
                    moduleName = "HDF_PLATFORM_GPIO_MANAGER";   // 這與drivers/hdf_core/framework/support/platform/src/gpio/gpio_service.c的g_gpioServiceEntry.moduleName對應(yīng),它主要負責GPIO引腳的管理
                    serviceName = "HDF_PLATFORM_GPIO_MANAGER";
                }
                device1 :: deviceNode {
                    policy = 0;                                 // 等于0,不需要發(fā)布服務(wù)
                    priority = 55;                              // 驅(qū)動驅(qū)動優(yōu)先級
                    permission = 0644;                          // 驅(qū)動創(chuàng)建設(shè)備節(jié)點權(quán)限
                    moduleName = "linux_gpio_adapter";          // 用于指定驅(qū)動名稱,必須是linux_adc_adapter,與drivers/hdf_core/adapter/khdf/linux/platform/gpio/gpio_adapter.c對應(yīng)
                    deviceMatchAttr = "";                       // 用于配置控制器私有數(shù)據(jù),不定義
                }
            }
        }
    }
}

注意:

  • device_gpio:為配置樹對gpio的設(shè)備類結(jié)點。
  • device0:是用于啟用HDF_PLATFORM_GPIO_MANAGER驅(qū)動的,它負責對GPIO進行對外接口管理。
  • device1:是用于啟用linux_gpio_adapter驅(qū)動的,它負責對Linux GPIO的讀寫(即對Linux Gpio子系統(tǒng)進行操作)。

(2)參與配置樹編譯

編輯//vendor/lockzhiner/rk3568/hdf_config/khdf/hdf.hcs,將device_info.hcs添加配置樹中。具體內(nèi)容如下所示:

#include "../../samples/b03_platform_device_gpio/config/device_info.hcs"

3、HDF驅(qū)動

//drivers/hdf_core/adapter/khdf/linux/platform/gpio/gpio_adapter.c已對Linux Gpio子系統(tǒng)進行規(guī)范化操作。因此,我們不需要額外的GPIO寄存器操作。

4、應(yīng)用程序

(1)gpio_test.c

gpio_test.c主要分為兩個部分:

  • 對gpio引腳進行讀操作。
  • 對gpio引腳進行寫操作。

1.對gpio引腳進行讀操作。

// GPIO設(shè)置為輸出
ret = GpioSetDir(m_gpio_id, GPIO_DIR_OUT);
if (ret != 0) {
    PRINT_ERROR("GpioSetDir failed and ret = %d\n", ret);
    return -1;
}

// GPIO輸出電平
ret = GpioWrite(m_gpio_id, m_gpio_value);
if (ret != 0) {
    PRINT_ERROR("GpioWrite failed and ret = %d\n", ret);
    return -1;
}

2.對gpio引腳進行寫操作。

// GPIO設(shè)置為輸出
ret = GpioSetDir(m_gpio_id, GPIO_DIR_IN);
if (ret != 0) {
    PRINT_ERROR("GpioSetDir failed and ret = %d\n", ret);
    return -1;
}

// 讀取GPIO引腳的電平
ret = GpioRead(m_gpio_id, &m_gpio_value);
if (ret != 0) {
    PRINT_ERROR("GpioRead failed and ret = %d\n", ret);
    return -1;
}

printf("GPIO Read Successful and GPIO = %d, value = %d\n", m_gpio_id, m_gpio_value);

(2)BUILD.gn

import("http://build/ohos.gni")
import("http://drivers/hdf_core/adapter/uhdf2/uhdf.gni")

ohos_executable("rk3568_gpio_test") {
  sources = [ "gpio_test.c" ]
  include_dirs = [
    "$hdf_framework_path/include",
    "$hdf_framework_path/include/core",
    "$hdf_framework_path/include/osal",
    "$hdf_framework_path/include/platform",
    "$hdf_framework_path/include/utils",
    "$hdf_uhdf_path/osal/include",
    "$hdf_uhdf_path/ipc/include",
    "http://base/hiviewdfx/hilog/interfaces/native/kits/include",
    "http://third_party/bounds_checking_function/include",
  ]

  deps = [
    "$hdf_uhdf_path/platform:libhdf_platform",
    "$hdf_uhdf_path/utils:libhdf_utils",
    "http://base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog",
  ]

  cflags = [
    "-Wall",
    "-Wextra",
    "-Werror",
    "-Wno-format",
    "-Wno-format-extra-args",
  ]

  part_name = "product_rk3568"
  install_enable = true
}

(3)參與應(yīng)用程序編譯

編輯//vendor/lockzhiner/rk3568/samples/BUILD.gn,開啟sample編譯。具體如下:

"b03_platform_device_gpio/app:rk3568_gpio_test",

四、編譯說明

建議使用docker編譯方法,運行如下:

hb set -root .
hb set
#選擇lockzhiner下的rk3568編譯分支。
hb build -f

五、運行結(jié)果

該程序運行結(jié)果如下所示:

# rk3568_gpio_test -g 13 -i
gpio id: 13
gpio dir: in
gpio value: 0
GPIO Read Successful and GPIO = 13, value = 1
#
# 
# rk3568_gpio_test -g 13 -o
gpio id: 13
gpio dir: out
gpio value: 0
#

可將GPIO引腳接入排針中的GND或3V3引腳,查看GPIO輸出結(jié)果。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-09-19 15:21:33

RTC鴻蒙

2023-09-06 15:27:22

ADC鴻蒙

2023-09-19 15:14:59

鴻蒙Watchdog

2021-11-29 07:55:45

Linux GPIO Linux 系統(tǒng)

2022-08-29 17:34:05

鴻蒙操作系統(tǒng)

2009-09-27 17:23:16

Hibernate應(yīng)用

2011-01-28 09:12:53

jQuery Mobi

2021-12-06 07:47:36

Linux 驅(qū)動程序Linux 系統(tǒng)

2011-04-01 11:01:02

應(yīng)用程序BlackBerryJava

2018-06-22 09:00:00

Java框架Pronghorn

2009-07-03 06:57:32

2011-03-22 14:12:17

LAMP

2022-02-21 14:49:26

OpenHarmon操作系統(tǒng)鴻蒙

2009-12-25 10:39:49

WPF應(yīng)用程序關(guān)閉

2011-07-20 15:58:58

iPhone 應(yīng)用程序 生命周期

2009-10-10 13:56:44

IIS應(yīng)用程序VB開發(fā)

2010-02-24 13:25:22

Python線程應(yīng)用程

2023-09-14 15:49:42

PWM鴻蒙

2023-08-18 14:28:18

UART異步通信

2010-02-07 10:21:27

Android應(yīng)用程序
點贊
收藏

51CTO技術(shù)棧公眾號

国产第一亚洲| 国内精品一区二区| 久久发布国产伦子伦精品| а√天堂在线官网| 成年人网站91| 国产福利精品av综合导导航| 免费成人美女女在线观看| 亚洲国产aⅴ精品一区二区| 午夜成人免费视频| 亚洲激情一区二区| 亚洲精品久久久久久久久久| 久久xxxx精品视频| 日韩色av导航| 国产高清自拍视频| www久久久| 精品女同一区二区三区在线播放| 亚洲欧洲另类精品久久综合| 成人乱码一区二区三区| 青青草原综合久久大伊人精品优势| 欧美另类第一页| 日本高清www| 美女国产精品久久久| 色天天综合色天天久久| 国产1区2区3区中文字幕| 韩国中文免费在线视频| 成人午夜视频在线| 成人网在线视频| 伦av综合一区| 91久久在线| 久久精品国产亚洲| 免费一级特黄3大片视频| 第四色中文综合网| 91精品国产色综合久久不卡电影| 50路60路老熟妇啪啪| 丝袜美腿av在线| 中文字幕一区二区三区不卡在线| 久久亚洲高清| 欧美自拍第一页| 国产91在线|亚洲| 91精品视频在线看| 亚洲视频在线观看一区二区| 日韩精品视频网| 91tv亚洲精品香蕉国产一区7ujn| 欧美日韩精品在线观看视频| 99久久精品网| 色噜噜狠狠狠综合曰曰曰| 欧美另类z0zx974| 九九视频免费观看视频精品| 日韩精品中文字幕在线| 你懂得在线视频| 国产精品网在线观看| 精品国产乱码久久久久久牛牛 | 亚洲国产精品无码久久久久高潮| 精品午夜av| 日韩欧美高清dvd碟片| 99999精品| 欧美中文高清| 欧美一区二区啪啪| ass极品水嫩小美女ass| 日韩区一区二| 亚洲第五色综合网| 亚洲熟女乱综合一区二区三区 | 九九热在线视频观看这里只有精品| 国产999精品久久久影片官网| 国产精品免费精品一区| 久久亚洲视频| 国产欧美亚洲精品| 国产精品高潮呻吟久久久| 国产乱对白刺激视频不卡| 3d精品h动漫啪啪一区二区| 亚洲风情第一页| 成人avav影音| 欧美日韩成人一区二区三区| 国产综合在线观看| 中文字幕制服丝袜成人av| 熟女视频一区二区三区| 女子免费在线观看视频www| 亚洲一区二区三区视频在线播放 | 在线免费看视频| 欧美好骚综合网| 欧美男插女视频| 日韩欧美性视频| 人妖欧美一区二区| 亚洲va欧美va国产综合剧情| 亚洲精品久久久久久动漫器材一区 | 欧美中文字幕一区二区| 日韩av网址在线观看| 欧美做受xxxxxⅹ性视频| 91欧美在线| 欧美激情免费观看| 亚洲日本韩国在线| 麻豆91精品视频| 福利精品视频| av电影在线观看一区二区三区| 亚洲伦理在线精品| 久久精品99国产| 亚洲日本中文| 日韩精品在线第一页| 精品少妇一区二区三区密爱| 亚洲国产精品第一区二区三区| 日本精品视频在线播放| 99久久精品国产色欲| 成人激情黄色小说| 性刺激综合网| 成人一级福利| 欧美日韩大陆在线| 中文在线永久免费观看| 五月开心六月丁香综合色啪| 欧美一级淫片aaaaaaa视频| 夜夜躁很很躁日日躁麻豆| 99久久99久久综合| 麻豆映画在线观看| se69色成人网wwwsex| 亚洲成人av片| 青青草手机在线观看| 日韩在线一二三区| 久久综合福利| 美洲精品一卡2卡三卡4卡四卡| 欧美在线小视频| 成人免费无码大片a毛片| 国产精品成人一区二区不卡| 日韩av电影手机在线| 男人天堂一区二区| 自拍偷拍欧美激情| 久热精品在线观看视频| 影视先锋久久| 97国产真实伦对白精彩视频8| 中文字幕在线2018| 久久精品日产第一区二区三区高清版 | 日本久久91av| 天堂av手机版| 亚洲福利视频导航| 熟妇女人妻丰满少妇中文字幕| 日韩精品一区二区三区免费观影| 欧美在线www| 日本毛片在线观看| 亚洲国产视频在线| 伊人影院在线观看视频| 久久久久久久久丰满| 国产精品爽爽ⅴa在线观看| 久久精品a一级国产免视看成人 | 中文字幕 亚洲视频| 国产视频在线观看一区二区三区| 777久久久精品一区二区三区| 成人爽a毛片| 高清欧美一区二区三区| 亚洲老妇色熟女老太| 亚洲精品欧美综合四区| 黄色片子免费看| 亚洲一级毛片| 动漫3d精品一区二区三区| jizz性欧美10| 日韩美一区二区三区| 青青草原免费观看| 成人av免费在线| 乱妇乱女熟妇熟女网站| 羞羞答答一区二区| 日韩av大片免费看| 91精品专区| 欧美疯狂做受xxxx富婆| 顶臀精品视频www| 国产v综合v亚洲欧| 国产3p露脸普通话对白| 亚洲警察之高压线| 国产精品久久久久久av| 日韩毛片久久久| 91精品国产乱| 国产精品变态另类虐交| 91蝌蚪porny九色| 天天干在线影院| 999精品在线| 国产精品国色综合久久| heyzo高清国产精品| 日韩电影免费观看在线观看| 波多野结衣爱爱| 亚洲欧美在线另类| av漫画在线观看| 久久看片网站| 大桥未久一区二区| 欧美五码在线| 国产精品久久久久久亚洲调教| 免费网站看v片在线a| 欧美xingq一区二区| 伊人中文字幕在线观看| 亚洲人成伊人成综合网小说| 亚洲精品无码一区二区| 丝袜美腿一区二区三区| 天天人人精品| 成人看片黄a免费看视频| 国产精品欧美激情在线播放| 色操视频在线| 亚洲色图在线观看| www.激情五月| 欧洲av在线精品| 国模无码国产精品视频| 久久久精品日韩欧美| 手机在线观看日韩av| 久久国产主播| 国产精品视频一二三四区| 国产一区不卡| 国产乱码一区| 亚洲精品66| 国产97免费视| heyzo高清国产精品| 久久九九全国免费精品观看| 日韩a在线观看| 日韩一区二区中文字幕| 小泽玛利亚一区二区三区视频| 亚洲愉拍自拍另类高清精品| 色www亚洲国产阿娇yao| 97精品久久久午夜一区二区三区| 污视频在线观看免费网站| 久久精品欧洲| 成人在线观看你懂的| 888久久久| 日韩精品大片| 日韩有码一区| 国产精品一级久久久| 999久久久国产999久久久| 日韩av免费在线看| 黄页在线观看免费| 欧美精品亚州精品| 秋霞影院午夜丰满少妇在线视频| 精品无人国产偷自产在线| 午夜久久久久久噜噜噜噜| 欧美三级日本三级少妇99| 亚洲影院在线播放| 疯狂蹂躏欧美一区二区精品| 久久久久久天堂| 一区二区三区欧美久久| 国产suv精品一区二区68| 国产欧美视频一区二区三区| 国产偷人妻精品一区| jizz一区二区| 国产人妻黑人一区二区三区| 国产成人av资源| 日本少妇一区二区三区| 国产一区二区三区久久久 | 黄黄视频在线观看| 亚洲电影在线一区二区三区| 一区二区三区四区五区精品 | 久久这里有精品视频| 在线免费观看黄色av| 一区二区三区视频免费| 成人在线二区| 日日摸夜夜添一区| 男人天堂久久久| 久久久99久久精品女同性| 国产成人l区| 欧美久久精品午夜青青大伊人| 国产一二三区在线观看| 欧美成人免费播放| 久久五月精品中文字幕| 国外成人在线视频| 制服丝袜专区在线| 国产精品久久久久久久9999| 成人交换视频| 92福利视频午夜1000合集在线观看| 在线高清欧美| 成人91免费视频| 欧美男人操女人视频| 免费在线成人av| 国产成人高清| 中文字幕欧美日韩一区二区| 中文字幕一区二区三区乱码图片 | 蜜桃传媒视频麻豆第一区免费观看 | 在线不卡国产精品| 九色porny在线| 欧美激情中文网| 中文在线8资源库| 国产欧美一区二区三区久久| 欧美一级片网址| 国产精品一区二区三区不卡 | 国产午夜精品久久久| 春暖花开成人亚洲区| 日韩中文理论片| 色婷婷av在线| 国产精品6699| 日韩精品成人| 美日韩免费视频| 91精品91| 99久久久无码国产精品6| 久久精品国产一区二区三区免费看| www.桃色.com| 91免费看视频| 麻豆明星ai换脸视频| 亚洲国产一区二区视频| www.亚洲激情| 日韩女优制服丝袜电影| 国产中文字幕在线看| 欧美精品在线观看| 小黄鸭精品aⅴ导航网站入口| 成人免费黄色网| 一呦二呦三呦国产精品| 国产一二三四区在线观看| 视频一区二区三区入口| 性xxxxxxxxx| 日本一区二区免费在线观看视频 | 亚洲天堂久久新| 亚洲女同ⅹxx女同tv| 亚洲 日本 欧美 中文幕| 日韩欧美一区在线| 超碰在线影院| 97在线看免费观看视频在线观看| 四虎永久精品在线| 欧美日韩国产精品一区二区| 女生裸体视频一区二区三区| 88av.com| 99re8在线精品视频免费播放| 午夜爽爽爽男女免费观看| 色屁屁一区二区| 亚洲高清精品视频| 久久精品青青大伊人av| 电影亚洲精品噜噜在线观看| 国产精品免费视频一区二区| 国产精品久久久久久久免费观看 | 男女啪啪免费视频网站| 精品影视av免费| 人妻av无码一区二区三区| 亚洲国产成人porn| a视频免费在线观看| 日韩在线视频观看正片免费网站| 天堂√中文最新版在线| 国产高清一区二区三区| 亚洲精品二区三区| www.国产视频.com| 欧美极品aⅴ影院| 免费看毛片网站| 亚洲欧美国产精品专区久久| 国产精品xx| 国产精品免费一区二区三区四区| 亚洲国产日韩欧美在线| 一区二区三区四区毛片| 国产欧美一区二区精品性色超碰 | 五月婷婷视频在线观看| 成人精品久久久| 99久久久久国产精品| 亚洲va综合va国产va中文| 国产拍揄自揄精品视频麻豆| 国产又粗又爽视频| 亚洲精品永久免费| 老司机2019福利精品视频导航| 久久亚洲午夜电影| 欧美一区=区| 波多野吉衣中文字幕| 一本大道综合伊人精品热热| 欧美一区二区视频| 国产成人福利视频| 国产区精品区| 日本a√在线观看| 亚洲同性同志一二三专区| 国产伦一区二区| 欧美人与性动交| 极品束缚调教一区二区网站 | 秋霞成人午夜伦在线观看| 色噜噜噜噜噜噜| 欧美日韩午夜精品| 成人影欧美片| 国产区日韩欧美| 亚洲欧美高清| 日韩视频在线观看免费视频| 欧美日韩一区三区四区| 免费观看成人高潮| 波多野结衣久草一区| 亚洲国产精品第一区二区| 欧美特黄一区二区三区| 欧美日本在线播放| 中文在线观看免费| 精品亚洲欧美日韩| 丝袜美腿亚洲综合| tube国产麻豆| 日韩av在线免费| 国产亚洲人成a在线v网站| 国产经典久久久| 99国产精品国产精品毛片| 色老头一区二区| 欧美成人精品h版在线观看| 国产福利一区二区精品秒拍| 白嫩少妇丰满一区二区| 亚洲免费观看在线视频| 天堂v在线观看| 国产日韩中文字幕在线| 亚洲女人毛片| 成人一级片在线观看| 无码一区二区三区在线观看| 精品国产一区av| 日韩mv欧美mv国产网站| 亚洲国产日韩欧美在线观看| 国产精品探花在线| 国产欧美一区二区三区久久人妖 | www.色日本| 日韩av电影国产| 国产精品红桃| 日本精品在线观看视频| 欧美午夜精彩| 17c国产在线| 色婷婷激情综合| 免费污视频在线| 亚洲欧美影院| 久久综合网色—综合色88|