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

    扁平設(shè)備樹FDT在ARM Linux中的應(yīng)用研究

    2017-04-14 09:42:36羅名駒陳益民賈志文
    關(guān)鍵詞:源碼內(nèi)核代碼

    羅名駒,陳益民,賈志文

    (廣東工業(yè)大學(xué) 信息工程學(xué)院,廣州 510006)

    扁平設(shè)備樹FDT在ARM Linux中的應(yīng)用研究

    羅名駒,陳益民,賈志文

    (廣東工業(yè)大學(xué) 信息工程學(xué)院,廣州 510006)

    引入Flattened Device Tree(扁平設(shè)備樹,F(xiàn)DT)到ARM Linux后,Linux內(nèi)核可以通過FDT獲取板級硬件的細(xì)節(jié)信息,這樣就減少了Linux 內(nèi)核中arch/arm目錄下大量描述板級硬件細(xì)節(jié)信息的冗余代碼,把大多數(shù)與板級硬件特性相關(guān)的代碼放在設(shè)備樹文件和設(shè)備驅(qū)動中,提高了代碼的復(fù)用性,避免了ARM Linux內(nèi)核為支持新硬件進(jìn)行大量修改,提高了ARM Linux板級支持的開發(fā)速度,也使得使用現(xiàn)有的內(nèi)核鏡像去引導(dǎo)具有相同芯片集的硬件平臺成為可能。

    扁平設(shè)備樹;ARM;Linux kernel

    引 言

    在Flattened Device Tree(FDT)還沒有引入ARM Linux內(nèi)核之前,Linux內(nèi)核代碼arch/arm目錄下有大量重復(fù)的代碼來描述板級硬件的細(xì)節(jié)信息。正是這些用來描述板級硬件細(xì)節(jié)信息的代碼使ARM Linux內(nèi)核代碼變得越來越冗余。

    2011年3月17日,Linus Torvalds在ARM Linux郵件列表寫到“this whole ARM thing is a fucking pain in the ass”,這引起了ARM Linux社區(qū)激烈的討論。ARM社區(qū)為改變Linux內(nèi)核代碼冗余的情況引入了FDT。使用FDT后,Linux內(nèi)核可以直接通過FDT獲取硬件的細(xì)節(jié)信息,這使得ARM Linux內(nèi)核中的冗余編碼大大減少,同時也使得用一個內(nèi)核鏡像去引導(dǎo)同一類ARM芯片集的硬件平臺成為可能。

    1 FDT組成和結(jié)構(gòu)

    FDT是一種描述板級硬件配置的樹形數(shù)據(jù)結(jié)構(gòu),來源于 Open Firmware (OF)[1],并繼承了Open Firmware IEEE 1275 設(shè)備樹的定義[2]。

    在Flattened Device Tree中,可描述板級硬件的信息包括[3]:CPU的數(shù)量和類別、內(nèi)存基地址和大小、總線和橋、中斷控制器、Clock控制器、GPIO控制器和外圍設(shè)備。

    Bootloader在啟動的過程中把FDT二進(jìn)制代碼加載到內(nèi)存,Linux內(nèi)核會根據(jù)FDT傳遞進(jìn)來的硬件信息展開,得到Linux內(nèi)核所需的硬件設(shè)備信息。

    1.1 FDT源文件(Device tree source)

    FDT源文件(.dts)[4]由節(jié)點(node)和屬性(property)組成,每個節(jié)點可包含子節(jié)點和屬性。在Linux內(nèi)核的arch/arm/boot/dts/目錄下存放著.dts文件,通常一個板級硬件對應(yīng)著一個.dts文件。

    下面是一個簡單設(shè)備樹源碼示例:

    /{

    model = "MyBoardName"

    compatible= "MyBoardFamilyName"

    #address-cells = <1>

    #size-cells = <1>

    aliases {

    i2c0 = &i2c0;

    i2s0 = &i2s0;

    spi0 = &spi0;

    };

    cpus {

    #address-cells = <1>;

    #size-cells = <0>;

    cpu@0{

    compatible = "arm,Cortex-a9";

    device_type = "cpu";

    reg = <0>;

    };

    };

    memory@0{

    name = "memory"

    device_type = "memory"

    reg = <0x00000000 0x20000000>

    }

    chosen{

    name = "chosen"

    bootargs="console=ttySAC0,115200 root=/dev/

    mmcblk0p5"

    }

    }

    從FDT源碼示例可以看到,設(shè)備樹的基本單元由節(jié)點組成,每個節(jié)點都由節(jié)點單元名稱標(biāo)識,并且每一個屬性都有相對應(yīng)的值。節(jié)點用節(jié)點名字標(biāo)識,其形式為node-name@unit-address。

    (1) 根節(jié)點

    每個設(shè)備樹源碼文件里面有且僅有一個根節(jié)點,且節(jié)點名必須是“/”。根節(jié)點下有若干個節(jié)點,每個節(jié)點中的屬性(property)描述了該節(jié)點的特性。根節(jié)點下包含的屬性有:model為板級硬件模塊的名稱;#address-cells表示該目標(biāo)板或者硬件模塊的地址線;#size-cells表示該目標(biāo)板或者硬件模塊的地址線寬度。

    (2) CPU節(jié)點

    CPU節(jié)點描述了CPU的特性,每一個CPU都有一個與之一一對應(yīng)的CPU節(jié)點。CPU節(jié)點下常用的屬性有[5]:#address-cells表示CPU的地址線;#size-cells表示CPU的地址線寬度;device_type為節(jié)點設(shè)備類型,必須設(shè)為“cpu”;reg用于指定CPU的編號。

    (3) memory 節(jié)點

    memory節(jié)點是FDT文件必備的節(jié)點,它定義了板級硬件物理內(nèi)存的起始地址和大小。該節(jié)點下常用的屬性有:

    device_type為節(jié)點設(shè)備類型,必須設(shè)為“memory”;

    reg用

    指定內(nèi)存地址和大小,例如<0x00000000 0x20000000>表示內(nèi)存地址從0x0000 0000開始,大小為512 MB的內(nèi)存節(jié)點。

    (4) SoC節(jié)點

    SoC節(jié)點描述了CPU上集成的外設(shè)接口,例如I2C、SPI、串口等。SoC節(jié)點包含的屬性有:device_type為節(jié)點設(shè)備類型,必須設(shè)為“soc”;ranges節(jié)點表示SoC寄存器地址。

    (5) chosen節(jié)點

    chosen節(jié)點不是用來描述硬件資源的信息,而是向Linux 內(nèi)核傳遞一些運行時的參數(shù)。使用chosen節(jié)點可以取代Bootloader通過tag list傳遞運行參數(shù)給Linux 內(nèi)核。例如:bootargs這個屬性傳遞的是command line的信息;initrd-start這個屬性傳遞是initrd的開始地址。

    (6) aliases節(jié)點

    aliases節(jié)點定義了一些節(jié)點的別名。在FDT源文件中引用一個節(jié)點時要指明相對于根節(jié)點的絕對路徑,例如/node-name-1/node-name-2。aliases 節(jié)點定義一些節(jié)點路徑的別名,使引用節(jié)點變得簡潔。

    Linux內(nèi)核開發(fā)者把SoC芯片公用的.dts文件單獨分離出來,保存為.dtsi文件。當(dāng)其他.dts文件需要使用這些公共的.dtsi文件時,就把該.dtsi包含進(jìn)去。大部分的ARM SoC的.dtsi文件都引用了arch/arm/boot/dts/skeleton.dtsi這個設(shè)備樹源碼文件。

    1.2 FDT源碼編譯器(Device tree compiler)

    FDT源碼編譯器是將FDT源碼文件(.dts)編譯為FDT二進(jìn)制文件(.dtb)的工具。配置Linux內(nèi)核時,選中CONFIG_DTC選項,Linux內(nèi)核在編譯的過程中會自動編譯生成設(shè)備樹編譯器。在Linux內(nèi)核源碼根目錄下運行make dtbs命令時,設(shè)備樹源碼編譯器會把選中的.dts編譯成.dtb。

    1.3 FDT二進(jìn)制文件(Device tree blob)

    使用設(shè)備樹源碼編譯器把.dts格式的設(shè)備樹源碼文件編譯成.dtb格式的FDT二進(jìn)制文件。在制作板級硬件啟動鏡像時,通常會在指定區(qū)域存放.dtb文件,Bootloader在引導(dǎo)內(nèi)核的過程中會把該.dtb文件讀取到特定內(nèi)存區(qū)域中。

    2 FDT在ARM Linux中的應(yīng)用

    ARM Linux未引入FDT時,ARM Linux內(nèi)核在arch/arm/plat-xxx和arch/arm/mach-xxx做的主要工作是[6]:

    注冊platform_device,綁定resource:

    static struct resource xxx_resources[] = {

    [0] = {

    .start= …,

    .end= …,

    .flags= IORESOURCE_MEM,

    },

    [1] = {

    .start=…,

    .end=…,

    .flags=IORESOURCE_IRQ,

    },

    };

    static struct platform_device xxx_device={

    name="xxx",

    .id=-1,

    .dev= {

    .platform_data=&xxx_data,

    },

    .resource=xxx_resources,

    .num_resources=ARRAY_SIZE(xxx_resources),

    };

    注冊i2c_board_info、spi_board_info等:

    static struct i2c_board_info __initdataxxx_i2c_devices[]={

    {I2C_BOARD_INFO("name", 0x1a), },

    };

    static struct spi_board_infoxxx_spi_devices[] ={

    {/* DataFlash chip */

    .modalias="mtd_dataflash",

    .chip_select=1,

    .max_speed_hz=15*1000*1000,

    .bus_num=0,

    },

    };

    填充由MACHINE_START和MACHINE_END包圍起來的的一系列callback函數(shù):

    MACHINE_START(xxx_board,"ARM-xxx")

    .atag_offset=0x100,

    .map_io=xxx_map_io,

    .init_early=xxx_init_early,

    .init_irq=xxx_init_irq,

    .timer=& xxx_timer,

    .handle_irq=gic_handle_irq,

    .init_machine=xxx _init,

    .restart=xxx_board _restart,

    MACHINE_END

    使用FDT后,resource信息可以從.dts節(jié)點中的reg、interrupts等屬性得到; Linux內(nèi)核中板級硬件的回調(diào)函數(shù)通過調(diào)用函數(shù)of_platform_bus_probe(NULL,xxx_of_bus_ids, NULL),即可自動展開所有的platform_device。

    假設(shè)有一款A(yù)RM芯片的板級硬件,Linux內(nèi)核在arch/arm/mach-xxx/的板級文件中使用如下方式展開.dts文件中的設(shè)備節(jié)點對應(yīng)的平臺設(shè)備信息:

    static struct of_device_id xxx_of_bus_ids[]__initdata = {

    { .compatible="simple-bus", },

    {},

    };

    void __init xxx_mach_init(void){

    of_platform_bus_probe(NULL,xxx_of_bus_ids, NULL);

    }

    #ifdef CONFIG_ARCH_XXX

    DT_MACHINE_START(XXX_DT, "Generic XXX (Flattened Device Tree)")

    ……

    .init_machine=xxx_mach_init,

    ……

    MACHINE_END

    #endif

    把I2C、SPI等這些硬件設(shè)備信息填充到對應(yīng)的FDT源碼文件中的I2C controller、SPI controller節(jié)點上去,I2C host驅(qū)動、SPI host驅(qū)動的probe函數(shù)在注冊主設(shè)備的時候獲得這些硬件信息:

    i2c2: i2c@e1a00000 {

    compatible="yyyy,xxxx-i2c";

    reg=<0xe1a00000 0x1000>;

    #address-cells=<1>;

    #size-cells=<0>;

    ……

    };

    spi0: spi@e1300000 {

    compatible="yyyy,xxxx-spi";

    reg=<0xe1300000 0x1000>;

    #address-cells=<1>;

    #size-cells=<0>;

    ……

    };

    MACHINE_START和MACHINE_END包圍起來的一系列板級硬件callback函數(shù)變成為:

    static const char * constxxx_dt_match[]__initconst={

    "arm,xxx_board",

    NULL,

    };

    DT_MACHINE_START(XXX_BOARD_DT, "ARM-xxx")

    .dt_compat=xxx_dt_match,

    .smp=smp_ops(xxx_board_smp_ops),

    .map_io=xxx_dt_map_io,

    .init_early=xxx_dt_init_early,

    .init_irq=xxx_dt_init_irq,

    .timer=&xxx_dt_timer,

    .init_machine=xxx_dt_init,

    .handle_irq=gic_handle_irq,

    .restart=xxx_board_restart,

    MACHINE_END

    .dt_compat成員是用來表明相關(guān)的板級硬件與.dts文件中根節(jié)點的compatible屬性的兼容關(guān)系。如果Bootloader傳遞給內(nèi)核的設(shè)備樹中根結(jié)點的compatible屬性出現(xiàn)在某個板級硬件的.dt_compat表中,相關(guān)的板級硬件就與對應(yīng)的設(shè)備樹匹配,被執(zhí)行相關(guān)板級硬件的初始化函數(shù)。

    對驅(qū)動來說,當(dāng)驅(qū)動與.dts中描述的設(shè)備節(jié)點匹配后,會執(zhí)行驅(qū)動的probe()函數(shù)。對于平臺驅(qū)動而言,需要添加一個OF匹配表。例如.dts文件的"acme,xxx-i2c-bus"兼容I2C控制器節(jié)點的OF匹配表為:

    static const struct of_device_idxxx_i2c_of_match[]={

    {.compatible="yyy,xxx-i2c-bus ", },

    {},

    };

    MODULE_DEVICE_TABLE(of,xxx_i2c_of_match);

    static struct platform_driver i2c_xxx_driver={

    .driver={

    .name="xxx-i2c-bus ",

    .owner=THIS_MODULE,

    .of_match_table=xxx_i2c_of_match,

    },

    .probe=i2c_xxx_probe,

    .remove=i2c_xxx_remove,

    }

    結(jié) 語

    本文介紹了FDT的優(yōu)點及其在ARM Linux的用法,詳細(xì)闡述了ARM Linux引入FDT后,相關(guān)內(nèi)核板級支持包和驅(qū)動代碼的變化。在ARM Linux引入FDT后,刪除

    [1] Grant Likely,Josh Boyer.A Symphony of Flavours: Using the device tree to describe embedded hardware[R].Ottawa,Canada:Linux Symposium,2008.

    [2] SUN.The Open Firmware Home Page[EB/OL].[2016-10].http://playground.sun.com/1275/home.html,2005.

    [3] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解:基于最新的Linux4.0內(nèi)核[M].北京:機械工業(yè)出版社,2015.

    [4] devicetree-specification-v0.1[EB/OL].[2016-10].https://www.devicetree.org/specifications/.

    [5] 邱文華.基于扁平設(shè)備樹的Linux內(nèi)核啟動方式[J].現(xiàn)代計算機:專業(yè)版,2009.

    [6] ARM Linux 3.x的設(shè)備樹(Device Tree)[EB/OL].[2016-10].http://blog.csdn.net/21cnbao/article/details/8457546.

    [7] Device Tree[EB/OL].[2016-10].http://elinux.org/Device_Tree.

    羅名駒、賈志文(碩士研究生),主要研究方向為嵌入式系統(tǒng)應(yīng)用;陳益民(副教授),主要研究方向為測試計量技術(shù)、監(jiān)測自動化裝置、光伏產(chǎn)品監(jiān)測技術(shù)。

    Application of Flattened Device Tree in ARM Linux

    Luo Mingju,Chen Yimin,Jia Zhiwen

    (School of Information Engineering,Guangdong University of Technology,Guangzhou 510006,China)

    Flattened Device Tree is introduced into ARM Linux,that can directly put the detailed description of board-level hardware information to the Linux kernel.So the arch/arm in the Linux kernel directory’s redundant codes which describing board-level hardware details are reduced.The reusability of the Linux kernel codes is improved when we write the most board-level hardware features related code in the device tree files and device drivers.It also can avoid modifying a lot of ARM Linux kernel codes to support the new hardware,and accelerate speed to develop the ARM Linux board support package.Using the existing kernel image to boot with the same chipset hardware platform is possible.

    flattened device tree;ARM;Linux kernel

    TP311

    A

    ?士然

    2016-10-25)

    猜你喜歡
    源碼內(nèi)核代碼
    基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
    基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測方法
    計算機時代(2023年6期)2023-06-15 17:49:09
    萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
    強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
    企業(yè)如何保護源碼
    基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
    Linux內(nèi)核mmap保護機制研究
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    亚洲电影在线观看av| 一本综合久久免费| 我要搜黄色片| av天堂在线播放| 国产精品久久久久久久电影 | 欧美成人免费av一区二区三区| 天堂√8在线中文| 老司机靠b影院| 淫妇啪啪啪对白视频| 国产成人一区二区三区免费视频网站| 亚洲av美国av| 2021天堂中文幕一二区在线观| 亚洲电影在线观看av| 变态另类成人亚洲欧美熟女| 亚洲最大成人中文| 欧美最黄视频在线播放免费| svipshipincom国产片| 岛国在线免费视频观看| 亚洲精品美女久久久久99蜜臀| 色在线成人网| 国产视频一区二区在线看| 两性午夜刺激爽爽歪歪视频在线观看 | 97人妻精品一区二区三区麻豆| 成人永久免费在线观看视频| 观看免费一级毛片| 久久久精品国产亚洲av高清涩受| 久久人妻福利社区极品人妻图片| 黄色女人牲交| 日本免费一区二区三区高清不卡| 国产午夜精品论理片| 欧美成人免费av一区二区三区| 午夜精品在线福利| 99国产综合亚洲精品| 香蕉av资源在线| 亚洲专区中文字幕在线| 久久精品亚洲精品国产色婷小说| 99久久综合精品五月天人人| 在线观看午夜福利视频| 亚洲成人免费电影在线观看| 成人18禁高潮啪啪吃奶动态图| 很黄的视频免费| 麻豆av在线久日| 琪琪午夜伦伦电影理论片6080| 丁香欧美五月| 国产午夜福利久久久久久| 日韩精品中文字幕看吧| 免费在线观看视频国产中文字幕亚洲| 黄色毛片三级朝国网站| 国产探花在线观看一区二区| 99久久国产精品久久久| 香蕉国产在线看| 亚洲精品久久国产高清桃花| 日日干狠狠操夜夜爽| 亚洲精品粉嫩美女一区| 久久久久久久久久黄片| 中文字幕人成人乱码亚洲影| 国产野战对白在线观看| 国产一级毛片七仙女欲春2| 国产熟女xx| 日日爽夜夜爽网站| 精品久久久久久久久久久久久| 国产69精品久久久久777片 | 色哟哟哟哟哟哟| 成年版毛片免费区| √禁漫天堂资源中文www| 给我免费播放毛片高清在线观看| 一夜夜www| 亚洲av日韩精品久久久久久密| av中文乱码字幕在线| 三级男女做爰猛烈吃奶摸视频| 国产av麻豆久久久久久久| aaaaa片日本免费| 一个人观看的视频www高清免费观看 | 一个人免费在线观看电影 | 少妇粗大呻吟视频| 香蕉久久夜色| 精品久久久久久久久久免费视频| 很黄的视频免费| 国产真实乱freesex| 人成视频在线观看免费观看| 国产午夜精品久久久久久| 国产私拍福利视频在线观看| 久久久国产欧美日韩av| 国内少妇人妻偷人精品xxx网站 | 一本大道久久a久久精品| 啦啦啦韩国在线观看视频| 亚洲天堂国产精品一区在线| 国产高清videossex| www.精华液| 亚洲一区高清亚洲精品| 久久午夜亚洲精品久久| 青草久久国产| 69av精品久久久久久| 久久人妻福利社区极品人妻图片| 亚洲狠狠婷婷综合久久图片| 国产一区二区激情短视频| 亚洲国产欧美人成| 草草在线视频免费看| 久久久久久久久久黄片| 日韩 欧美 亚洲 中文字幕| 国产男靠女视频免费网站| 免费在线观看影片大全网站| 亚洲人成网站在线播放欧美日韩| 免费无遮挡裸体视频| 不卡av一区二区三区| 国产伦在线观看视频一区| 搞女人的毛片| 成人高潮视频无遮挡免费网站| 欧美不卡视频在线免费观看 | av有码第一页| 欧美日韩中文字幕国产精品一区二区三区| 欧美日韩中文字幕国产精品一区二区三区| 天天添夜夜摸| 久久久久久久久久黄片| а√天堂www在线а√下载| 欧美日韩福利视频一区二区| 18禁黄网站禁片午夜丰满| 无人区码免费观看不卡| 操出白浆在线播放| 久久这里只有精品19| 国产成人欧美在线观看| 亚洲欧美精品综合久久99| 亚洲全国av大片| 亚洲熟女毛片儿| 不卡一级毛片| 在线观看www视频免费| 欧美日韩黄片免| 国产视频一区二区在线看| 全区人妻精品视频| 夜夜看夜夜爽夜夜摸| 日本黄大片高清| 精品电影一区二区在线| 国产在线观看jvid| 婷婷六月久久综合丁香| 国产成年人精品一区二区| 日韩三级视频一区二区三区| 亚洲av电影在线进入| 一个人免费在线观看的高清视频| 18禁美女被吸乳视频| 十八禁人妻一区二区| 后天国语完整版免费观看| 久久久久性生活片| 99热这里只有是精品50| 色av中文字幕| 天堂动漫精品| 91av网站免费观看| 日本一区二区免费在线视频| 特大巨黑吊av在线直播| 成人永久免费在线观看视频| av中文乱码字幕在线| 女生性感内裤真人,穿戴方法视频| 久久精品国产亚洲av高清一级| 在线观看日韩欧美| 夜夜躁狠狠躁天天躁| 999久久久精品免费观看国产| 国内揄拍国产精品人妻在线| 久久久久久久午夜电影| 在线观看美女被高潮喷水网站 | 国产真人三级小视频在线观看| 天堂√8在线中文| 日本免费a在线| 国产精品日韩av在线免费观看| 欧美久久黑人一区二区| 日韩欧美在线二视频| 久久热在线av| 两个人看的免费小视频| 中文字幕久久专区| 免费观看精品视频网站| 亚洲精品av麻豆狂野| 国产av麻豆久久久久久久| 成人精品一区二区免费| 精品久久久久久久人妻蜜臀av| 亚洲av成人一区二区三| 国产成+人综合+亚洲专区| 国产午夜精品论理片| 白带黄色成豆腐渣| 麻豆成人av在线观看| 欧美精品啪啪一区二区三区| 国产免费男女视频| 香蕉久久夜色| 欧美 亚洲 国产 日韩一| 777久久人妻少妇嫩草av网站| 欧美日韩精品网址| 亚洲av五月六月丁香网| 亚洲中文字幕日韩| 精品少妇一区二区三区视频日本电影| netflix在线观看网站| 熟妇人妻久久中文字幕3abv| 午夜两性在线视频| 日韩欧美精品v在线| 99精品欧美一区二区三区四区| 黄频高清免费视频| 国产精华一区二区三区| av片东京热男人的天堂| 午夜精品一区二区三区免费看| 白带黄色成豆腐渣| 亚洲美女黄片视频| 亚洲,欧美精品.| 亚洲国产高清在线一区二区三| 欧美又色又爽又黄视频| 久久亚洲精品不卡| 九色成人免费人妻av| 国产黄色小视频在线观看| 亚洲欧美日韩高清专用| 国产视频内射| www.熟女人妻精品国产| 91老司机精品| 亚洲va日本ⅴa欧美va伊人久久| 九色成人免费人妻av| a级毛片a级免费在线| 狠狠狠狠99中文字幕| 成年免费大片在线观看| 国内精品久久久久精免费| 欧美三级亚洲精品| 啦啦啦免费观看视频1| 亚洲熟妇中文字幕五十中出| 91av网站免费观看| 在线观看午夜福利视频| 三级毛片av免费| 国产人伦9x9x在线观看| 精品久久久久久久人妻蜜臀av| 欧美高清成人免费视频www| 国产精品一区二区精品视频观看| 伊人久久大香线蕉亚洲五| 最近最新中文字幕大全免费视频| 久久香蕉国产精品| 日本a在线网址| 免费在线观看黄色视频的| 国产精品久久电影中文字幕| 夜夜躁狠狠躁天天躁| 亚洲国产精品合色在线| 人人妻人人澡欧美一区二区| 久久香蕉国产精品| 麻豆成人午夜福利视频| 免费在线观看成人毛片| 国产私拍福利视频在线观看| 中文字幕人妻丝袜一区二区| 叶爱在线成人免费视频播放| 黄片大片在线免费观看| 国产成年人精品一区二区| 又粗又爽又猛毛片免费看| 亚洲片人在线观看| 性色av乱码一区二区三区2| 久久午夜亚洲精品久久| 首页视频小说图片口味搜索| 亚洲精品av麻豆狂野| 亚洲人成网站在线播放欧美日韩| 亚洲精品一区av在线观看| 丁香欧美五月| 国产精品九九99| 男女视频在线观看网站免费 | 国产激情欧美一区二区| 国产黄片美女视频| 久久人人精品亚洲av| 国产精品一区二区三区四区久久| 99国产综合亚洲精品| 香蕉国产在线看| 亚洲欧美精品综合久久99| 91在线观看av| 久久精品91蜜桃| 黄片小视频在线播放| 一边摸一边抽搐一进一小说| x7x7x7水蜜桃| 久久热在线av| 成年版毛片免费区| 色噜噜av男人的天堂激情| 久久中文字幕一级| 亚洲欧美激情综合另类| 久久久久久久久中文| 亚洲 欧美 日韩 在线 免费| 丰满人妻一区二区三区视频av | 丝袜人妻中文字幕| 国产成人欧美在线观看| 一级毛片精品| 国产精品免费视频内射| 日韩欧美国产一区二区入口| 国产精品一区二区三区四区久久| 久久久久久久精品吃奶| 免费在线观看亚洲国产| 精品一区二区三区av网在线观看| 久久精品91蜜桃| 黄片小视频在线播放| 日韩av在线大香蕉| 后天国语完整版免费观看| 午夜激情福利司机影院| 50天的宝宝边吃奶边哭怎么回事| av福利片在线观看| 久久这里只有精品中国| 成人午夜高清在线视频| 午夜福利成人在线免费观看| 两性午夜刺激爽爽歪歪视频在线观看 | 婷婷精品国产亚洲av在线| 久久精品影院6| 国产精华一区二区三区| 国产精品永久免费网站| 国产视频一区二区在线看| 日韩精品免费视频一区二区三区| 丰满的人妻完整版| 黄色视频不卡| 亚洲国产精品久久男人天堂| 午夜福利成人在线免费观看| 91在线观看av| 久久久久久九九精品二区国产 | 非洲黑人性xxxx精品又粗又长| 国产视频内射| 国产精品一区二区免费欧美| 香蕉久久夜色| 午夜视频精品福利| 在线永久观看黄色视频| 欧美性猛交╳xxx乱大交人| 给我免费播放毛片高清在线观看| 中出人妻视频一区二区| 亚洲国产日韩欧美精品在线观看 | a在线观看视频网站| 老司机福利观看| 亚洲av五月六月丁香网| 丁香欧美五月| 久久精品影院6| 久久性视频一级片| 精品久久久久久成人av| 国产伦一二天堂av在线观看| 日本免费一区二区三区高清不卡| 亚洲av美国av| 久久精品91无色码中文字幕| 欧美国产日韩亚洲一区| 国产黄片美女视频| 久久久久久久久久黄片| 在线观看午夜福利视频| www.熟女人妻精品国产| 久久久久免费精品人妻一区二区| 亚洲一区二区三区色噜噜| 国产私拍福利视频在线观看| 国产精品亚洲一级av第二区| 欧美av亚洲av综合av国产av| 制服丝袜大香蕉在线| 亚洲人成伊人成综合网2020| 天堂av国产一区二区熟女人妻 | 亚洲 国产 在线| 亚洲男人天堂网一区| 国产精华一区二区三区| 国产精品 欧美亚洲| 成人国产综合亚洲| 男女做爰动态图高潮gif福利片| 老汉色av国产亚洲站长工具| 午夜福利视频1000在线观看| 亚洲欧美日韩高清在线视频| 日本黄大片高清| 欧美一区二区国产精品久久精品 | 精品熟女少妇八av免费久了| 久久久久精品国产欧美久久久| 午夜日韩欧美国产| 在线观看www视频免费| 好男人电影高清在线观看| 美女午夜性视频免费| 深夜精品福利| 毛片女人毛片| 中亚洲国语对白在线视频| 欧美黄色片欧美黄色片| 我要搜黄色片| 美女扒开内裤让男人捅视频| 国产精品98久久久久久宅男小说| 在线观看一区二区三区| 亚洲欧美一区二区三区黑人| 亚洲avbb在线观看| 国产乱人伦免费视频| 99久久精品热视频| 欧美一区二区国产精品久久精品 | 欧美性猛交黑人性爽| 丝袜人妻中文字幕| 欧美国产日韩亚洲一区| 777久久人妻少妇嫩草av网站| 久久国产乱子伦精品免费另类| 亚洲无线在线观看| 日本一区二区免费在线视频| 夜夜躁狠狠躁天天躁| 亚洲 国产 在线| 国产欧美日韩精品亚洲av| 欧美色视频一区免费| 高潮久久久久久久久久久不卡| 三级国产精品欧美在线观看 | 亚洲真实伦在线观看| 丝袜美腿诱惑在线| 国产日本99.免费观看| 天堂av国产一区二区熟女人妻 | 久久精品国产亚洲av香蕉五月| 国产高清有码在线观看视频 | 国产1区2区3区精品| 久久精品人妻少妇| 90打野战视频偷拍视频| 色综合欧美亚洲国产小说| 黄色成人免费大全| 两个人免费观看高清视频| 午夜亚洲福利在线播放| 正在播放国产对白刺激| ponron亚洲| 亚洲av第一区精品v没综合| 丰满人妻熟妇乱又伦精品不卡| 动漫黄色视频在线观看| 亚洲熟妇熟女久久| 亚洲免费av在线视频| 久热爱精品视频在线9| 久久精品综合一区二区三区| 国产区一区二久久| 日韩国内少妇激情av| 亚洲成人精品中文字幕电影| 国产成人精品无人区| 久久久久久久久免费视频了| 日韩免费av在线播放| 十八禁网站免费在线| 99热6这里只有精品| 亚洲av成人精品一区久久| 女同久久另类99精品国产91| 免费在线观看完整版高清| 麻豆国产av国片精品| 成人欧美大片| 人人妻人人澡欧美一区二区| 欧美在线一区亚洲| 国产aⅴ精品一区二区三区波| 亚洲中文字幕日韩| 国产黄a三级三级三级人| x7x7x7水蜜桃| 国产精品国产高清国产av| 他把我摸到了高潮在线观看| 成年人黄色毛片网站| 精品国内亚洲2022精品成人| 免费看a级黄色片| 国产亚洲精品久久久久5区| 日本在线视频免费播放| 三级国产精品欧美在线观看 | 亚洲美女黄片视频| a在线观看视频网站| 亚洲av中文字字幕乱码综合| 亚洲国产精品sss在线观看| 国产精品 国内视频| 国内精品久久久久精免费| 久久精品亚洲精品国产色婷小说| 一级黄色大片毛片| 19禁男女啪啪无遮挡网站| 亚洲精华国产精华精| aaaaa片日本免费| 超碰成人久久| 久久婷婷人人爽人人干人人爱| 毛片女人毛片| 人妻丰满熟妇av一区二区三区| 女人高潮潮喷娇喘18禁视频| 色播亚洲综合网| 久久久精品大字幕| 亚洲精品一区av在线观看| 亚洲av熟女| 精品久久久久久久久久免费视频| 国产在线观看jvid| 一级作爱视频免费观看| 欧美精品啪啪一区二区三区| 99热只有精品国产| 国产成人一区二区三区免费视频网站| 日韩精品中文字幕看吧| 一二三四社区在线视频社区8| 特大巨黑吊av在线直播| 99久久久亚洲精品蜜臀av| а√天堂www在线а√下载| 夜夜躁狠狠躁天天躁| 美女免费视频网站| 成人av在线播放网站| 国产精品一区二区三区四区免费观看 | 欧美大码av| 国产亚洲av高清不卡| 免费av毛片视频| 久久久久久亚洲精品国产蜜桃av| 亚洲欧美精品综合一区二区三区| 国产欧美日韩精品亚洲av| 免费看日本二区| 亚洲精品中文字幕在线视频| 99国产综合亚洲精品| 黑人欧美特级aaaaaa片| av欧美777| 国内精品久久久久久久电影| 久久香蕉精品热| 欧美日韩亚洲综合一区二区三区_| 久久久精品大字幕| 国产又色又爽无遮挡免费看| 国产精品美女特级片免费视频播放器 | 中亚洲国语对白在线视频| 亚洲国产日韩欧美精品在线观看 | 久久草成人影院| ponron亚洲| 麻豆av在线久日| 中文资源天堂在线| 18禁国产床啪视频网站| 国产日本99.免费观看| 小说图片视频综合网站| 国内毛片毛片毛片毛片毛片| 亚洲天堂国产精品一区在线| 一级a爱片免费观看的视频| 亚洲一卡2卡3卡4卡5卡精品中文| 国语自产精品视频在线第100页| 久久久久久大精品| 国内久久婷婷六月综合欲色啪| 最好的美女福利视频网| 日韩av在线大香蕉| 久久久久久久久中文| 美女黄网站色视频| 精品欧美一区二区三区在线| 日韩免费av在线播放| 久久中文字幕人妻熟女| 国内精品久久久久精免费| 99久久精品热视频| 国产亚洲欧美98| 999久久久精品免费观看国产| 中文字幕熟女人妻在线| 欧美一级a爱片免费观看看 | 午夜精品在线福利| 婷婷精品国产亚洲av| 人成视频在线观看免费观看| 老司机深夜福利视频在线观看| 女生性感内裤真人,穿戴方法视频| 中文字幕最新亚洲高清| 亚洲国产看品久久| 午夜精品在线福利| 少妇熟女aⅴ在线视频| 91成年电影在线观看| 久久久久久久久免费视频了| 婷婷六月久久综合丁香| 欧美中文综合在线视频| 久久精品国产亚洲av香蕉五月| 国产单亲对白刺激| 大型黄色视频在线免费观看| 在线观看午夜福利视频| 又黄又粗又硬又大视频| 久久久久久大精品| 日日爽夜夜爽网站| 在线免费观看的www视频| 老司机福利观看| 成人国产一区最新在线观看| 久久性视频一级片| 亚洲专区国产一区二区| 久久久久久大精品| 欧美最黄视频在线播放免费| 国产三级在线视频| 亚洲人成伊人成综合网2020| 久久久久久免费高清国产稀缺| 亚洲五月天丁香| 少妇熟女aⅴ在线视频| 久久中文字幕人妻熟女| 国产成人精品久久二区二区免费| 国产成年人精品一区二区| 欧美成人免费av一区二区三区| 亚洲国产精品sss在线观看| 99久久精品国产亚洲精品| 亚洲全国av大片| 久久九九热精品免费| 亚洲一区中文字幕在线| 一个人免费在线观看电影 | 欧美日韩亚洲国产一区二区在线观看| 18禁观看日本| 麻豆国产av国片精品| 麻豆成人av在线观看| 搡老妇女老女人老熟妇| 中文资源天堂在线| 日本精品一区二区三区蜜桃| 国产精品一区二区免费欧美| 免费电影在线观看免费观看| www.熟女人妻精品国产| 黄色女人牲交| 成人18禁高潮啪啪吃奶动态图| 久久中文看片网| 蜜桃久久精品国产亚洲av| 久久精品aⅴ一区二区三区四区| 99久久综合精品五月天人人| 国产精品影院久久| 美女 人体艺术 gogo| 又粗又爽又猛毛片免费看| 亚洲成人久久爱视频| 国内少妇人妻偷人精品xxx网站 | 欧美成人一区二区免费高清观看 | 曰老女人黄片| 国产精品久久久久久人妻精品电影| 欧美绝顶高潮抽搐喷水| 黄频高清免费视频| 亚洲最大成人中文| 一夜夜www| 亚洲国产精品合色在线| 国产精品av久久久久免费| 精品久久久久久久人妻蜜臀av| a级毛片a级免费在线| 国产亚洲精品av在线| 欧美性猛交╳xxx乱大交人| 国产亚洲精品av在线| 久久久精品欧美日韩精品| 亚洲国产日韩欧美精品在线观看 | 精品日产1卡2卡| 精品久久久久久,| 亚洲成a人片在线一区二区| 亚洲全国av大片| 别揉我奶头~嗯~啊~动态视频| 亚洲电影在线观看av| 久久久久国内视频| 午夜两性在线视频| 国产亚洲av嫩草精品影院| 亚洲精品中文字幕在线视频| 18禁黄网站禁片午夜丰满| 亚洲真实伦在线观看| 91麻豆av在线| 国产免费av片在线观看野外av| 最近最新中文字幕大全电影3| 免费高清视频大片| 在线国产一区二区在线| 18禁美女被吸乳视频| 国产精品99久久99久久久不卡| 亚洲五月天丁香| 国产一区二区三区视频了| 两性夫妻黄色片| 日韩免费av在线播放| 久久久国产成人免费| 久久久久久九九精品二区国产 | 757午夜福利合集在线观看|