日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Rockchip Android13 GKI开发指南

發(fā)布時(shí)間:2023/12/20 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rockchip Android13 GKI开发指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Rockchip Android13 GKI開(kāi)發(fā)指南

文章目錄

  • Rockchip Android13 GKI開(kāi)發(fā)指南
    • GKI介紹
    • Google upstream kernel下載及編譯
    • Rockchip SDK中GKI相關(guān)目錄介紹
    • Rockchip GKI編譯
      • 代碼修改
      • 編譯
      • 固件燒寫(xiě)
    • KO編譯及修改
      • 添加新的模塊驅(qū)動(dòng)的方法
      • 調(diào)試ko方法
    • 開(kāi)機(jī)log確認(rèn)
      • uboot階段
      • Android階段
      • KO加載
      • KO加載報(bào)錯(cuò)
    • 調(diào)試技巧
      • 打印更多KO加載的log
      • 在RK的kernel打包中編譯GKI使用的boot.img
      • 查看google發(fā)布的內(nèi)核接口
    • 如何提交內(nèi)核接口到upstream

GKI介紹

Android13 GMS和EDLA認(rèn)證的一個(gè)難點(diǎn)是google強(qiáng)制要求要支持GKI。GKI通用內(nèi)核映像,是google為了解決內(nèi)核碎片化的問(wèn)題,而設(shè)計(jì)的通過(guò)提供統(tǒng)一核心內(nèi)核并將SoC和板級(jí)驅(qū)動(dòng)從核心內(nèi)核移至可加載模塊中。核心內(nèi)核為驅(qū)動(dòng)模塊提供了穩(wěn)定的內(nèi)核模塊接口,模塊驅(qū)動(dòng)和核心內(nèi)核可以獨(dú)立進(jìn)行更新。內(nèi)核接口可以通過(guò)upstream的方式進(jìn)行擴(kuò)展。 Soc和板級(jí)廠商在驅(qū)動(dòng)開(kāi)發(fā)時(shí)需要使用已經(jīng)定義的內(nèi)核接口,如果要新加核心內(nèi)核接口需要提交給google,這個(gè)周期會(huì)比較長(zhǎng),所以要提前做好開(kāi)發(fā)準(zhǔn)備。

Google upstream kernel下載及編譯

Google的boot.img是定期發(fā)布,時(shí)間間隔比較長(zhǎng)。 我們可以下載google的upstream的kernel源碼自己編譯boot.img進(jìn)行驗(yàn)證和debug。

Google Upstream kernel下載鏈接:

repo init -u https://android.googlesource.com/kernel/manifest -b common-android13-5.10

需要翻墻下載

編譯

tools/bazel run --config=fast //common:kernel_aarch64_dist -- --dist_dir=./out

生成boot.img

out/boot.img

Rockchip SDK中GKI相關(guān)目錄介紹

  • kernel KO文件路徑
mkcombinedroot/vendor_ramdisk/lib/modules/
  • Google boot.img路徑
mkcombinedroot/prebuilts/boot-5.10.img
  • KO文件加載順序配置文件
mkcombinedroot/res/vendor_ramdisk_modules.load
  • GPU mali庫(kù)的路徑
    GPU的mali庫(kù)是單獨(dú)編譯在vendor.img中,源文件路徑在
RK3588: vendor/rockchip/common/gpu/MaliG610/lib/modules/bifrost_kbase.ko RK356X: vendor/rockchip/common/gpu/MaliG52/lib/modules/bifrost_kbase.ko RK3326: vendor/rockchip/common/gpu/MaliTDVx/lib/modules/mali_kbase.ko

Rockchip GKI編譯

代碼修改

GKI需要打開(kāi)AB系統(tǒng)才能使用,具體代碼修改如下:

  • uboot需要打開(kāi)AB配置
  • ~/a2_Android13_sdk/u-boot$ git diff diff --git a/configs/rk3568_defconfig b/configs/rk3568_defconfig index fbd9820acc..e23e438792 100644 --- a/configs/rk3588_defconfig +++ b/configs/rk3588_defconfig @@ -207,6 +207,7 @@ CONFIG_RSA_N_SIZE=0x200 CONFIG_RSA_E_SIZE=0x10 CONFIG_RSA_C_SIZE=0x20 CONFIG_SHA512=y CONFIG_LZ4=y CONFIG_LZMA=y CONFIG_SPL_GZIP=y @@ -220,3 +221,4 @@ CONFIG_RK_AVB_LIBAVB_USER=y CONFIG_OPTEE_CLIENT=y CONFIG_OPTEE_V2=y CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y +CONFIG_ANDROID_AB=y
  • Android的device產(chǎn)品目錄下配置GKI選項(xiàng)
  • ~/a2_Android13_sdk/device/rockchip/rk3588$ git diff diff --git a/rk3588_t/BoardConfig.mk b/rk3588_t/BoardConfig.mk old mode 100644 new mode 100755 index 50da541..06da5f3 --- a/rk3588_t/BoardConfig.mk +++ b/rk3588_t/BoardConfig.mk @@ -15,10 +15,21 @@#include device/rockchip/rk3588/BoardConfig.mkBUILD_WITH_GO_OPT := false +BOARD_BUILD_GKI := true-# AB image definition -BOARD_USES_AB_IMAGE := false -BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false +ifeq ($(strip $(BOARD_BUILD_GKI)), true) + #for gki + # AB image definition + BOARD_USES_AB_IMAGE := true + BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := true + #PRODUCT_KERNEL_CONFIG := rockchip_defconfig android-13.config + PRODUCT_KERNEL_CONFIG := gki_defconfig rockchip_gki.config + BOARD_BOOT_HEADER_VERSION := 4 +else + BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false + BOARD_USES_AB_IMAGE := false + PRODUCT_KERNEL_CONFIG := rockchip_defconfig android-13.config +endifBOARD_GRAVITY_SENSOR_SUPPORT := trueBOARD_COMPASS_SENSOR_SUPPORT := true @@ -26,14 +37,21 @@ BOARD_SENSOR_COMPASS_AK8963-64 := trueBOARD_GYROSCOPE_SENSOR_SUPPORT := trueBOARD_PROXIMITY_SENSOR_SUPPORT := trueBOARD_LIGHT_SENSOR_SUPPORT := trueifeq ($(strip $(BOARD_USES_AB_IMAGE)), true)include device/rockchip/common/BoardConfig_AB.mkTARGET_RECOVERY_FSTAB := device/rockchip/rk3588/rk3588_t/recovery.fstab_ABendif - +ifeq ($(strip $(BOARD_BUILD_GKI)), true) + #for gki + BOARD_SUPER_PARTITION_SIZE := 4294967296 + BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE := $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) +endifPRODUCT_UBOOT_CONFIG := rk3588PRODUCT_KERNEL_DTS := rk3588-evb1-lp4-v10BOARD_GSENSOR_MXC6655XA_SUPPORT := trueBOARD_CAMERA_SUPPORT_EXT := true

    編譯

    完整編譯方式與非GKI的一樣

    source build/envsetup.sh lunch rk3588_t-userdebug ./build.sh -ACUKup

    注意:這里編譯的kernel只是為了編譯出resource.img,kernel源碼部分都是使用mkcombinedroot/vendor_ramdisk/lib/modules/下的ko文件直接打包成vendor_boot.img。內(nèi)核部分使用的是google發(fā)布的boot.img,具體路徑在mkcombinedroot/prebuilts/boot-5.10.img

    編譯完可以直接燒寫(xiě) rockdev/Image-rk3588_t/update.img

    在調(diào)試階段也支持單獨(dú)編譯vendor_boot.img
    編譯命令:

    make installclean;make vendorbootimage -j12

    編譯完可以直接燒寫(xiě)

    out/target/product/rk3588_t/vendor_boot.img

    固件燒寫(xiě)

    固件燒寫(xiě)分2中方式:

    • 完整包update.img
      固件路徑
    rockdev/Image-rk3588_t/update.img

    可以通過(guò)瑞芯微開(kāi)發(fā)工具燒寫(xiě)

    • 散包燒寫(xiě)
      首先導(dǎo)入配置文件,方法是在工具 空白處右鍵-導(dǎo)入配置-選擇導(dǎo)入txt文件-選擇parameter.txt

      然后依次選擇rockdev/Image-rk3588_t/下對(duì)應(yīng)的img文件進(jìn)行燒寫(xiě),分區(qū)A和B導(dǎo)入的固件是同一個(gè)
    rockdev/Image-rk3588_t ├── baseparameter.img ├── boot.img ├── dtbo.img ├── init_boot.img ├── MiniLoaderAll.bin ├── misc.img ├── parameter.txt ├── resource.img ├── super.img ├── uboot.img ├── update.img ├── vbmeta.img └── vendor_boot.img

    KO編譯及修改

    添加新的模塊驅(qū)動(dòng)的方法

  • 將驅(qū)動(dòng)代碼放到kernel-5.10對(duì)應(yīng)的目錄下,這里以新加觸摸屏驅(qū)動(dòng)gt1x為例進(jìn)行說(shuō)明。
    將gt1x的驅(qū)動(dòng)放在drivers/input/touchscreen/下面,并添加對(duì)應(yīng)的Makefile和Kconfig,這里按kernel的標(biāo)準(zhǔn)方式進(jìn)行操作;
  • 增加一個(gè)自己的config文件, 在arch/arm64/configs/下新建一個(gè)xxx_gki.config,并將CONFIG_TOUCHSCREEN_GT1X=m (m表示編譯為ko)添加到xxx_gki.config中;
  • 將ko文件名添加到load文件中, load文件在SDK的mkcombinedroot/res/目錄下,如下
  • |.load文件名稱| 對(duì)應(yīng)分區(qū) | makefile解析 |加載時(shí)間|
    | - | - | - |
    | vendor_ramdisk_modules.load | vendor_boot | vendor_ramdisk_gki.mk |ramdisk init階段|
    | vendor_modules.load | vendor | vendor_gki.mk |android啟動(dòng)時(shí)|
    | recovery_modules.load | recovery | recovery_gki.mk |recovery階段|

    觸摸屏驅(qū)動(dòng)要在init階段加載所以加到vendor_ramdisk_modules.load中

    echo "gt1x-ts.ko" >> res/vendor_ramdisk_modules.load

    觸摸屏驅(qū)動(dòng)要在init階段加載所以加到vendor_ramdisk_modules.load中
    同時(shí)要將也要在res/debug_list.load中添加,作為調(diào)試用,在這里面加編譯的時(shí)候才會(huì)從kernel中更新對(duì)應(yīng)的ko到vendor_boot.img中。 注意: res/debug_list.load僅做調(diào)試用,不需要提交到服務(wù)器上。

    echo "gt1x-ts.ko" >> res/debug_list.load

    注意 1:.load文件關(guān)乎驅(qū)動(dòng)的加載順序,請(qǐng)不要修改原有順序,僅在需要時(shí)添加自己的驅(qū)動(dòng)名稱,否則可能會(huì)導(dǎo)致系統(tǒng)無(wú)法啟動(dòng)!!!

    注意 2:如果使用A/B系統(tǒng),請(qǐng)務(wù)必保證vendor_ramdisk_modules.load和recovery_modules.load文件內(nèi)容一致,否則會(huì)導(dǎo)致無(wú)法啟動(dòng)!代碼默認(rèn)使用軟鏈接將二者鏈接起來(lái),請(qǐng)不要自己修改!!!

    注意 3:如果是在android啟動(dòng)的時(shí)候加載的ko可以放在vendor_modules.load中,但需要注意:vendor下的ko不會(huì)被系統(tǒng)主動(dòng)加載!如果僅需要在開(kāi)機(jī)階段自動(dòng)加載,可以使用Rockchip提供的默認(rèn)加載腳本init.insmod.sh,該腳本會(huì)自動(dòng)加載device/rockchip/common/rootdir/init.insmod.cfg配置中的所有ko。

  • 編譯
    • 進(jìn)到kernel-5.10目錄下進(jìn)行ko文件編譯

    配置clang編譯鏈(編譯鏈版本請(qǐng)參考build.sh中的配置)

    export PATH=../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 gki_defconfig rockchip_gki.config xxx_gki.config && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 rk3588s-evb8-lp4x-v10.img -j32
  • 拷貝KO文件到mkcombinedroot/vendor_ramdisk/lib/modules/
    KO編完后進(jìn)到mkcombinedroot/下執(zhí)行mkgki4.sh腳本自動(dòng)從kernel-5.10下面拷貝; 也可以手動(dòng)進(jìn)行拷貝
  • cd ../mkcombinedroot/ ./mkgki4.sh
  • 編譯vendor_boot.img
    在工程根目錄下編譯vendor_boot.img,命令如下。 這一步是將KO文件打包到vendor_boot.img,在降vendor_boot.img燒寫(xiě)到機(jī)器中。
  • make installclean;make vendorbootimage -j12
  • 驗(yàn)證
    • 燒寫(xiě)out/target/product/rk3588_t/vendor_boot.img文件到機(jī)器中開(kāi)機(jī)驗(yàn)證

    • 如果是放在vendor分區(qū)的ko可以在系統(tǒng)起來(lái)后直接push到機(jī)器內(nèi)的vendor分區(qū)中,手動(dòng)掛載進(jìn)行驗(yàn)證

    • 如果有涉及到dts的修改,需要燒寫(xiě)kernel-5.10下的resource.img

    附:AOSP定義的各類ko加載階段

    Boot modeStorageDisplayKeypadBatteryPMICTPNFC/Wi-Fi/BTSensorsCamera
    RecoveryYYYYYNNNN
    ChargerYYYYYNNNN
    AndroidYYYYYYYYY

    調(diào)試ko方法

  • 在kernel-5.10目錄下修改對(duì)應(yīng)ko的驅(qū)動(dòng)源碼

  • 使用如下命令進(jìn)行ko編譯

    • 配置clang編譯鏈(編譯鏈版本請(qǐng)參考build.sh中的配置)export PATH=../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
    • 編譯komake CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 gki_defconfig rockchip_gki.config xxx_gki.config && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 rk3588s-evb8-lp4x-v10.img -j32
  • 進(jìn)到mkcombinedroot目錄。將需要更新的ko文件名添加到res/debug_list.load中

  • 進(jìn)到mkcombinedroot目錄,配置dtb,執(zhí)行./mkgki4.sh將ko文件打包到vender_boot.img中

    cd ../mkcombinedroot/ export MY_DTB=rk3588s-evb8-lp4x-v10 ./mkgki4.sh
  • 拷貝KO文件到mkcombinedroot/vendor_ramdisk/lib/modules/
    KO編完后進(jìn)到mkcombinedroot/下執(zhí)行mkgki4.sh腳本自動(dòng)從kernel-5.10下面拷貝; 也可以手動(dòng)進(jìn)行拷貝
  • cd ../mkcombinedroot/ ./mkgki4.sh
  • 編譯vendor_boot.img
    在工程根目錄下編譯vendor_boot.img,命令如下。 這一步是將KO文件打包到vendor_boot.img,在降vendor_boot.img燒寫(xiě)到機(jī)器中。
  • make installclean;make vendorbootimage -j12
  • 驗(yàn)證
    • 燒寫(xiě)out/target/product/rk3588_t/vendor_boot.img文件到機(jī)器中開(kāi)機(jī)驗(yàn)證
    • 如果是放在vendor分區(qū)的ko可以在系統(tǒng)起來(lái)后直接push到機(jī)器內(nèi)的vendor分區(qū)中,手動(dòng)掛載進(jìn)行驗(yàn)證
    • 如果有涉及到dts的修改,需要燒寫(xiě)kernel-5.10下的resource.img
  • 調(diào)試完成后,將vendor_ramdisk/lib/modules的ko文件(被腳本自動(dòng)拷貝)進(jìn)行提交
  • 有關(guān)打包工具的詳細(xì)說(shuō)明,請(qǐng)參考:mkcombinedroot/README

    注意:kernel編譯ko的時(shí)候如果有修改了config,則編譯中間會(huì)卡住很長(zhǎng)一段時(shí)間,這是在做編譯優(yōu)化,根據(jù)編譯服務(wù)器硬件配置不同優(yōu)化的速度也不同,即卡住的時(shí)間也不同。 所以這個(gè)卡住是正常現(xiàn)象。

    開(kāi)機(jī)log確認(rèn)

    uboot階段

    內(nèi)容header版本
    vendor_ramdisk(v-ramdisk)V3+
    bootconfigV4+
    ## Booting Android Image at 0x003ff000 ... Kernel: 0x00400000 - 0x03088ffc (45604 KiB) v-ramdisk: 0x0a200000 - 0x0a6944c8 (4690 KiB) ramdisk: 0x0a6944c8 - 0x0a7e54df (1349 KiB) bootconfig: 0x0a7e54df - 0x0a7e559c (1 KiB) bootparams: 0x0a7e559c - 0x0a7e759c

    Android階段

    GKI版本: Linux version 5.10.117-android13-9-00037-gbc08447eb7bd

    [ 0.000000][ T0] Booting Linux on physical CPU 0x0000000000 [0x412fd050] [ 0.000000][ T0] Linux version 5.10.117-android12-9-00037-gbc08447eb7bd (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchai n/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Thu Aug 25 15:24:20 UTC 2022

    Kernel command line: Header V4中不能存在androidboot.xxx這一類的命令行參數(shù),這類參數(shù)全部在bootconfig中。此類參數(shù)可以通過(guò)cat /proc/bootconfig確認(rèn)。

    [ 0.000000][ T0] Kernel command line: stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure cgroup.memory=nokme m storagemedia=emmc console=ttyFIQ0 firmware_class.path=/vendor/etc/firmware init=/init rootwait ro loop.max_part=7 bootconfig buildvariant=userdebug earl ycon=uart8250,mmio32,0xfeb50000 irqchip.gicv3_pseudo_nmi=0

    KO加載

    開(kāi)始加載ko,可以看到log:

    [ 1.034730][ T1] Run /init as init process [ 1.036190][ T1] init: init first stage started! [ 1.040534][ T1] init: Loading module /lib/modules/io-domain.ko with args '' [ 1.042038][ T1] init: Loaded kernel module /lib/modules/io-domain.ko

    KO加載報(bào)錯(cuò)

    使用了未導(dǎo)出的符號(hào),報(bào)錯(cuò)重啟:

    [ 0.805736][ T1] cryptodev: Unknown symbol crypto_ahash_final (err -2) [ 0.806383][ T1] cryptodev: Unknown symbol sg_nents (err -2) [ 0.806972][ T1] cryptodev: Unknown symbol crypto_alloc_akcipher (err -2) [ 0.819768][ T1] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00

    注: 正常不會(huì)出現(xiàn)此問(wèn)題,參考 名詞解釋階段——ABI進(jìn)行處理

    調(diào)試技巧

    打印更多KO加載的log

    修改ratelimit的值,可以打印更多init的log,方便查問(wèn)題,init信息太少會(huì)把ko加載的報(bào)錯(cuò)信息隱藏掉。

    xxx@sys2_206:~/a2_Android13_29_sdk/kernel-5.10$ git diff diff --git a/include/linux/ratelimit_types.h b/include/linux/ratelimit_types.h index b676aa419eef..db7eb5be2d8b 100644 --- a/include/linux/ratelimit_types.h +++ b/include/linux/ratelimit_types.h @@ -7,7 +7,7 @@ #include <linux/spinlock_types.h> #define DEFAULT_RATELIMIT_INTERVAL (5 * HZ) -#define DEFAULT_RATELIMIT_BURST 10 +#define DEFAULT_RATELIMIT_BURST 1000

    在RK的kernel打包中編譯GKI使用的boot.img

    先按正常編譯步驟編譯kernel,生成arch/arm64/boot/Image
    用如下命令打包boot.img
    mkbootimg --kernel arch/arm64/boot/Image --header_version 4 --output …/mkcombinedroot/prebuilts/boot-5.10.img

    查看google發(fā)布的內(nèi)核接口

    標(biāo)準(zhǔn)的內(nèi)核接口定義在android目錄下:

    :~/a5_google_kenrel/common$ tree a android/ arch/ wlq@sys2_206:~/a5_google_kenrel/common$ tree android/ android/ ├── abi_gki_aarch64 ├── abi_gki_aarch64_core ├── abi_gki_aarch64_db845c ├── abi_gki_aarch64_exynos ├── abi_gki_aarch64_fips140 ├── abi_gki_aarch64_galaxy ├── abi_gki_aarch64_generic ├── abi_gki_aarch64_hikey960 ├── abi_gki_aarch64_rockchip ├── abi_gki_aarch64_type_visibility ├── abi_gki_aarch64_virtual_device ├── abi_gki_aarch64.xml ├── abi_gki_modules_exports ├── abi_gki_modules_protected ├── gki_aarch64_fips140_modules ├── gki_aarch64_modules └── gki_system_dlkm_modules

    如何提交內(nèi)核接口到upstream

    如果需要添加新的內(nèi)核接口,可以生成對(duì)應(yīng)的patch,再將patch通過(guò)瑞芯微的redmine系統(tǒng)提交個(gè)瑞芯微審核然后再統(tǒng)一提交給google

    diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 85bd8bc134cf..3344cf064e06 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -2144,6 +2144,15 @@mmc_pwrseq_registermmc_pwrseq_unregister+# required by r8168.ko + pci_set_mwi + pci_clear_mwi + proc_get_parent_data + skb_checksum_help + __skb_gso_segment + remove_proc_subtree + pci_choose_state +# required by reboot-mode.kodevres_releasekernel_kobj

    總結(jié)

    以上是生活随笔為你收集整理的Rockchip Android13 GKI开发指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久人人爽天天玩人人妻精品 | 亚洲天堂网在线观看 | 久久精品一区 | 狠狠操在线 | 日韩黄色视屏 | 久久综合久久久 | 欧美日韩色 | 孕妇疯狂做爰xxxⅹ 国产精品乱码久久久久久 99久久久成人国产精品 | 国产精品免费一区二区三区在线观看 | 狠狠干狠狠操视频 | 日韩性插| 17c在线观看 | 国产交换配乱淫视频免费 | 亚洲欧美日韩精品永久在线 | 国产第一福利 | 姐姐的秘密韩剧免费观看全集中文 | 日日操夜夜操天天操 | 亚洲国产精品无码久久久 | 黄色av网址大全 | 日韩图片一区 | 91蝌蚪少妇偷拍 | 美女高潮在线 | 91深夜视频 | 亚洲激情中文字幕 | 刘亦菲久久免费一区二区 | 污污视频在线观看网站 | 色呦呦| 人妻一区二区三区视频 | 日日摸日日碰夜夜爽无码 | 国产精品卡一卡二 | 毛片亚洲av无码精品国产午夜 | 99久在线精品99re8热 | 亚洲黄色自拍 | 99精品在线免费观看 | 天天草夜夜草 | 性感美女av在线 | 精品久久国产视频 | 亚洲一区二区观看播放 | 91麻豆精品| 免费黄色小说视频 | 国产精品免费视频一区二区 | 日本一二区视频 | 91在线看视频 | 久久午夜鲁丝 | 青青青青青青草 | 亚洲成人天堂 | 四色最新网址 | 欧洲精品在线观看 | 国产成人精品一二三区 | 亚洲人成亚洲人成在线观看 | 日本一区二区成人 | 少妇愉情理伦片bd | 欧美成人a | 亚洲最大的网站 | 在线亚洲+欧美+日本专区 | 3d毛片| 精品国产精品 | 日韩欧美在线视频观看 | 奶水喷溅 在线播放 | 亚洲精品午夜精品 | 真人真事免费毛片 | 国产精品999视频 | 欧美精品1区 | 欧美日日 | 久久精品欧美 | 91老师国产黑色丝袜在线 | 日本体内she精高潮 男女视频在线免费观看 | 久久无码国产视频 | 国产精品色呦呦 | 夜夜夜爽 | 6080亚洲精品一区二区 | 久久久久9| av中文字幕在线免费观看 | 国产黄色片av| 最好看的2019年中文在线观看 | 无码精品视频一区二区三区 | 男人操女人免费网站 | 久久网av| 国产精品av在线 | 3d毛片| 欧美精品黑人猛交高潮 | 亚洲色图在线观看视频 | 国产精品自拍网 | 白丝一区 | 五月天色婷婷综合 | 香蕉综合网 | 日本亚洲一区二区三区 | 国产精品免费一区 | 久久爱一区 | 夜夜嗨视频| 欧美日韩一二 | 免费看a视频 | 欧美一区二区三区免 | 成人h片在线观看 | 日韩色在线观看 | 成人学院中文字幕 | 国产18p | 美女色黄网站 | 久久久久亚洲av无码专区首jn |