• <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
    国产高清videossex| 精品电影一区二区在线| 制服人妻中文乱码| 搡老乐熟女国产| 成熟少妇高潮喷水视频| 国产精品 欧美亚洲| 大片电影免费在线观看免费| 国产成人av激情在线播放| 制服人妻中文乱码| 丁香六月欧美| 9热在线视频观看99| 一级片'在线观看视频| 免费av中文字幕在线| 国产在线精品亚洲第一网站| 美国免费a级毛片| 欧美不卡视频在线免费观看 | 久久久久国产精品人妻aⅴ院 | 91精品三级在线观看| 亚洲av日韩精品久久久久久密| 精品国产乱码久久久久久男人| 夜夜爽天天搞| 日本一区二区免费在线视频| 国产aⅴ精品一区二区三区波| 99国产精品99久久久久| 亚洲五月色婷婷综合| 欧美 日韩 精品 国产| 亚洲国产精品sss在线观看 | 亚洲精品国产区一区二| 精品一区二区三卡| 人人妻人人澡人人爽人人夜夜| 69av精品久久久久久| 国产精华一区二区三区| 美女扒开内裤让男人捅视频| 色综合婷婷激情| 色老头精品视频在线观看| 亚洲精品中文字幕在线视频| 国产成人系列免费观看| 一个人免费在线观看的高清视频| 国产色视频综合| 国产精品永久免费网站| 老司机在亚洲福利影院| 欧美不卡视频在线免费观看 | 村上凉子中文字幕在线| 午夜亚洲福利在线播放| 自拍欧美九色日韩亚洲蝌蚪91| 日韩免费高清中文字幕av| 韩国精品一区二区三区| 俄罗斯特黄特色一大片| 精品久久蜜臀av无| 97人妻天天添夜夜摸| 午夜福利欧美成人| 亚洲精华国产精华精| 亚洲综合色网址| 超碰成人久久| 亚洲精品久久成人aⅴ小说| 亚洲av日韩在线播放| 亚洲精品乱久久久久久| a级毛片黄视频| 亚洲欧美色中文字幕在线| 90打野战视频偷拍视频| 国产97色在线日韩免费| 亚洲国产精品合色在线| 人妻 亚洲 视频| 交换朋友夫妻互换小说| 欧美大码av| 国产视频一区二区在线看| 久久亚洲精品不卡| 亚洲五月婷婷丁香| 99精品在免费线老司机午夜| 新久久久久国产一级毛片| 91成年电影在线观看| bbb黄色大片| 日日爽夜夜爽网站| 国产亚洲精品第一综合不卡| cao死你这个sao货| 国产日韩一区二区三区精品不卡| 国产精品亚洲一级av第二区| 精品人妻熟女毛片av久久网站| 又大又爽又粗| 99精品在免费线老司机午夜| 亚洲成人免费av在线播放| 国内毛片毛片毛片毛片毛片| 午夜成年电影在线免费观看| 久久久久久免费高清国产稀缺| 一本一本久久a久久精品综合妖精| 国产精品成人在线| 啦啦啦视频在线资源免费观看| 999久久久国产精品视频| 久久热在线av| 国产视频一区二区在线看| 欧美老熟妇乱子伦牲交| 99热国产这里只有精品6| 国产激情欧美一区二区| videos熟女内射| 欧美日韩亚洲综合一区二区三区_| 国产亚洲欧美98| 午夜91福利影院| 村上凉子中文字幕在线| 亚洲av欧美aⅴ国产| 欧美中文综合在线视频| 久久久精品区二区三区| 亚洲av电影在线进入| aaaaa片日本免费| 香蕉久久夜色| 国产不卡一卡二| 亚洲av熟女| 欧美中文综合在线视频| 999精品在线视频| 亚洲精品美女久久av网站| 久99久视频精品免费| 黄色a级毛片大全视频| 亚洲精品在线美女| 人人妻人人澡人人爽人人夜夜| 老司机午夜十八禁免费视频| 免费在线观看视频国产中文字幕亚洲| 精品人妻在线不人妻| 麻豆av在线久日| 成人18禁高潮啪啪吃奶动态图| 亚洲精品国产区一区二| 国内毛片毛片毛片毛片毛片| 亚洲欧洲精品一区二区精品久久久| 亚洲成人免费电影在线观看| 女人久久www免费人成看片| 三级毛片av免费| 咕卡用的链子| 80岁老熟妇乱子伦牲交| 一区在线观看完整版| 一级毛片精品| 巨乳人妻的诱惑在线观看| 亚洲黑人精品在线| 人人澡人人妻人| 一进一出抽搐gif免费好疼 | 高清av免费在线| 变态另类成人亚洲欧美熟女 | 80岁老熟妇乱子伦牲交| 99热国产这里只有精品6| 韩国av一区二区三区四区| 波多野结衣av一区二区av| 国产精品久久久久久人妻精品电影| svipshipincom国产片| 亚洲中文字幕日韩| 午夜福利在线免费观看网站| 日韩欧美在线二视频 | 日本一区二区免费在线视频| 曰老女人黄片| 99在线人妻在线中文字幕 | 免费少妇av软件| 电影成人av| 国产在线精品亚洲第一网站| 波多野结衣av一区二区av| av超薄肉色丝袜交足视频| 国产高清videossex| 悠悠久久av| 国产男女超爽视频在线观看| √禁漫天堂资源中文www| 天堂俺去俺来也www色官网| 亚洲熟妇中文字幕五十中出 | 男男h啪啪无遮挡| 乱人伦中国视频| 精品国产乱码久久久久久男人| 成熟少妇高潮喷水视频| 超碰97精品在线观看| 成人亚洲精品一区在线观看| 夫妻午夜视频| 成人国产一区最新在线观看| 天天操日日干夜夜撸| 久久热在线av| 亚洲第一av免费看| 午夜精品久久久久久毛片777| 王馨瑶露胸无遮挡在线观看| 国产精品国产av在线观看| 久久久国产成人免费| 亚洲专区字幕在线| 亚洲久久久国产精品| 很黄的视频免费| 9热在线视频观看99| 亚洲成av片中文字幕在线观看| 国产极品粉嫩免费观看在线| 国产精品一区二区精品视频观看| 日韩视频一区二区在线观看| 久久国产精品人妻蜜桃| 色在线成人网| 午夜精品久久久久久毛片777| 免费在线观看视频国产中文字幕亚洲| 99国产精品免费福利视频| x7x7x7水蜜桃| 久久久精品区二区三区| 在线看a的网站| 最新美女视频免费是黄的| av线在线观看网站| 18禁裸乳无遮挡免费网站照片 | 国产欧美日韩精品亚洲av| 热99re8久久精品国产| 国产精品乱码一区二三区的特点 | 国产又色又爽无遮挡免费看| 国产欧美日韩综合在线一区二区| 国产精品免费视频内射| 91av网站免费观看| 亚洲精品久久午夜乱码| 两个人免费观看高清视频| 69精品国产乱码久久久| 精品久久久精品久久久| 久久精品国产清高在天天线| 精品欧美一区二区三区在线| 欧美+亚洲+日韩+国产| 满18在线观看网站| 亚洲av成人一区二区三| 亚洲成人国产一区在线观看| 成年女人毛片免费观看观看9 | 久久亚洲真实| 9191精品国产免费久久| 高清视频免费观看一区二区| 免费久久久久久久精品成人欧美视频| 国产亚洲av高清不卡| 久久香蕉国产精品| 欧洲精品卡2卡3卡4卡5卡区| www.自偷自拍.com| 大陆偷拍与自拍| 人人妻人人澡人人看| 欧美乱码精品一区二区三区| 91成人精品电影| 99国产综合亚洲精品| 国产日韩一区二区三区精品不卡| 一a级毛片在线观看| 一区在线观看完整版| 欧美日韩瑟瑟在线播放| 极品教师在线免费播放| 黄色毛片三级朝国网站| 丝袜美足系列| 精品人妻熟女毛片av久久网站| 老司机福利观看| 中文字幕制服av| 久久久久久久精品吃奶| 韩国av一区二区三区四区| 午夜福利,免费看| 亚洲成国产人片在线观看| 动漫黄色视频在线观看| 夜夜爽天天搞| 免费日韩欧美在线观看| 久久国产精品大桥未久av| 丰满迷人的少妇在线观看| 国产野战对白在线观看| 国产国语露脸激情在线看| av免费在线观看网站| 亚洲性夜色夜夜综合| xxx96com| 人妻 亚洲 视频| 女人精品久久久久毛片| 亚洲三区欧美一区| 天天操日日干夜夜撸| 午夜日韩欧美国产| 亚洲av美国av| 国产精品永久免费网站| 国产淫语在线视频| 亚洲一区高清亚洲精品| 婷婷精品国产亚洲av在线 | 亚洲伊人色综图| 又大又爽又粗| 国产精品免费视频内射| 久久久久久久精品吃奶| 亚洲va日本ⅴa欧美va伊人久久| 国产一区二区三区综合在线观看| 国产在线精品亚洲第一网站| 国产91精品成人一区二区三区| 在线av久久热| 国产在线一区二区三区精| 欧美亚洲 丝袜 人妻 在线| 国产成+人综合+亚洲专区| 国产欧美日韩精品亚洲av| 国产精品欧美亚洲77777| 精品亚洲成国产av| 国产麻豆69| 在线观看www视频免费| 久久精品国产亚洲av高清一级| 一区二区三区国产精品乱码| 日本精品一区二区三区蜜桃| 制服人妻中文乱码| 他把我摸到了高潮在线观看| 亚洲精品国产一区二区精华液| 乱人伦中国视频| 成人黄色视频免费在线看| 一二三四在线观看免费中文在| 欧美激情高清一区二区三区| 9191精品国产免费久久| 人人妻人人澡人人爽人人夜夜| 高潮久久久久久久久久久不卡| 亚洲片人在线观看| 高清av免费在线| 精品亚洲成国产av| 女警被强在线播放| 三上悠亚av全集在线观看| 最新的欧美精品一区二区| 久久久久国产精品人妻aⅴ院 | 变态另类成人亚洲欧美熟女 | 丝袜美腿诱惑在线| 看黄色毛片网站| 亚洲久久久国产精品| 国内久久婷婷六月综合欲色啪| 欧美精品高潮呻吟av久久| 在线观看免费午夜福利视频| 999久久久精品免费观看国产| 啪啪无遮挡十八禁网站| 欧美日韩av久久| 欧美日韩亚洲综合一区二区三区_| 免费一级毛片在线播放高清视频 | 两个人免费观看高清视频| 国产成人欧美在线观看 | 欧美中文综合在线视频| avwww免费| 可以免费在线观看a视频的电影网站| 99久久人妻综合| 国产欧美日韩一区二区精品| 国产成人欧美| 两性夫妻黄色片| 黑人巨大精品欧美一区二区mp4| 满18在线观看网站| 色老头精品视频在线观看| 欧美激情高清一区二区三区| 又黄又粗又硬又大视频| 91av网站免费观看| 老司机深夜福利视频在线观看| 捣出白浆h1v1| 中文字幕av电影在线播放| 欧美黄色片欧美黄色片| 国产aⅴ精品一区二区三区波| 久久国产精品男人的天堂亚洲| 日本vs欧美在线观看视频| 女人被躁到高潮嗷嗷叫费观| 99riav亚洲国产免费| 一边摸一边抽搐一进一出视频| 俄罗斯特黄特色一大片| 久久精品亚洲精品国产色婷小说| 免费观看人在逋| 在线国产一区二区在线| 国产成人精品在线电影| 搡老熟女国产l中国老女人| av有码第一页| 亚洲午夜理论影院| 午夜福利免费观看在线| 亚洲成人手机| 一个人免费在线观看的高清视频| 咕卡用的链子| 国产亚洲精品久久久久5区| 亚洲av片天天在线观看| 国产成人精品在线电影| 天天躁日日躁夜夜躁夜夜| 久久久国产精品麻豆| 国产精品一区二区免费欧美| 亚洲av成人av| 91精品国产国语对白视频| 国产一区二区三区综合在线观看| 日日摸夜夜添夜夜添小说| 啦啦啦 在线观看视频| xxxhd国产人妻xxx| 在线天堂中文资源库| 看免费av毛片| 国产午夜精品久久久久久| 精品国产乱子伦一区二区三区| 99精品欧美一区二区三区四区| 黑人欧美特级aaaaaa片| 十八禁网站免费在线| 人妻丰满熟妇av一区二区三区 | 法律面前人人平等表现在哪些方面| 国产不卡一卡二| 老司机福利观看| 精品国产一区二区三区四区第35| 欧美日韩亚洲国产一区二区在线观看 | 90打野战视频偷拍视频| 天天躁日日躁夜夜躁夜夜| 极品教师在线免费播放| 99国产精品一区二区三区| 18禁美女被吸乳视频| 又黄又粗又硬又大视频| 69av精品久久久久久| 老熟妇乱子伦视频在线观看| 国产精品 国内视频| 亚洲专区国产一区二区| 桃红色精品国产亚洲av| 黄色 视频免费看| 一区在线观看完整版| 12—13女人毛片做爰片一| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲全国av大片| 国产成人一区二区三区免费视频网站| 午夜免费成人在线视频| 在线av久久热| 在线观看免费视频网站a站| 免费久久久久久久精品成人欧美视频| 欧美午夜高清在线| 欧美久久黑人一区二区| 日韩三级视频一区二区三区| 热re99久久国产66热| 成在线人永久免费视频| 不卡av一区二区三区| 亚洲av第一区精品v没综合| 亚洲一区中文字幕在线| 久久精品91无色码中文字幕| 天堂俺去俺来也www色官网| 成年人黄色毛片网站| 不卡一级毛片| 亚洲人成电影免费在线| videos熟女内射| 成年女人毛片免费观看观看9 | 国产97色在线日韩免费| 国产不卡一卡二| 色尼玛亚洲综合影院| 国产免费av片在线观看野外av| 最近最新中文字幕大全电影3 | 欧美日韩av久久| 一级,二级,三级黄色视频| 一级黄色大片毛片| 久久午夜亚洲精品久久| 日韩欧美国产一区二区入口| 老司机午夜十八禁免费视频| 99re在线观看精品视频| 制服人妻中文乱码| 老汉色av国产亚洲站长工具| 精品高清国产在线一区| 亚洲欧美一区二区三区黑人| 欧美精品亚洲一区二区| 男人的好看免费观看在线视频 | 久久久久久久午夜电影 | 波多野结衣av一区二区av| 人妻久久中文字幕网| 在线观看免费视频网站a站| 久久ye,这里只有精品| www.999成人在线观看| 在线观看免费高清a一片| 亚洲熟妇熟女久久| netflix在线观看网站| 国内毛片毛片毛片毛片毛片| 777久久人妻少妇嫩草av网站| 亚洲精品自拍成人| 午夜视频精品福利| 在线av久久热| 少妇被粗大的猛进出69影院| 我的亚洲天堂| 亚洲av电影在线进入| 亚洲va日本ⅴa欧美va伊人久久| av超薄肉色丝袜交足视频| 精品国产亚洲在线| 亚洲人成伊人成综合网2020| 巨乳人妻的诱惑在线观看| 男女高潮啪啪啪动态图| 男人操女人黄网站| 好男人电影高清在线观看| 99久久精品国产亚洲精品| tube8黄色片| 国产激情久久老熟女| 国产欧美日韩一区二区三| 精品少妇久久久久久888优播| 精品久久久久久久毛片微露脸| 午夜福利影视在线免费观看| 亚洲精华国产精华精| 国产一区二区三区视频了| 午夜精品久久久久久毛片777| 女人高潮潮喷娇喘18禁视频| 高清av免费在线| 精品乱码久久久久久99久播| 精品卡一卡二卡四卡免费| 亚洲国产精品一区二区三区在线| 精品少妇一区二区三区视频日本电影| 99精品久久久久人妻精品| videos熟女内射| 日韩欧美在线二视频 | 色播在线永久视频| 亚洲国产精品一区二区三区在线| 天堂俺去俺来也www色官网| 国产国语露脸激情在线看| 丁香欧美五月| 欧美久久黑人一区二区| 大陆偷拍与自拍| 欧美日韩av久久| 欧美亚洲 丝袜 人妻 在线| 999久久久国产精品视频| 可以免费在线观看a视频的电影网站| 午夜福利一区二区在线看| 免费在线观看日本一区| 天堂中文最新版在线下载| 亚洲欧美精品综合一区二区三区| 免费观看a级毛片全部| 国产精品影院久久| 婷婷丁香在线五月| 宅男免费午夜| 男男h啪啪无遮挡| 大型av网站在线播放| 又黄又爽又免费观看的视频| 日韩视频一区二区在线观看| 亚洲va日本ⅴa欧美va伊人久久| 国产成人影院久久av| 女同久久另类99精品国产91| 18在线观看网站| 亚洲欧美激情在线| 日本vs欧美在线观看视频| 一区二区日韩欧美中文字幕| 人妻丰满熟妇av一区二区三区 | 国产激情欧美一区二区| 狠狠狠狠99中文字幕| 一级a爱视频在线免费观看| 在线观看免费日韩欧美大片| 免费看a级黄色片| 国产片内射在线| 黄色视频不卡| 欧美乱色亚洲激情| 国产精品成人在线| 91成人精品电影| 黄色丝袜av网址大全| 国产午夜精品久久久久久| 天天躁日日躁夜夜躁夜夜| av超薄肉色丝袜交足视频| 久久久久久免费高清国产稀缺| 18禁黄网站禁片午夜丰满| 91成人精品电影| 男女高潮啪啪啪动态图| 国产精品.久久久| 免费日韩欧美在线观看| 麻豆国产av国片精品| 无遮挡黄片免费观看| 亚洲精品国产色婷婷电影| 岛国毛片在线播放| www日本在线高清视频| 久久久久久久久久久久大奶| 大型黄色视频在线免费观看| 欧美国产精品一级二级三级| 国产三级黄色录像| 水蜜桃什么品种好| 国产成人一区二区三区免费视频网站| 国产av一区二区精品久久| 成人精品一区二区免费| 久久久久久久久久久久大奶| 国产欧美日韩一区二区三区在线| 国产精品免费大片| 欧美日韩中文字幕国产精品一区二区三区 | 亚洲五月天丁香| 午夜视频精品福利| 国产精品久久电影中文字幕 | 国产日韩一区二区三区精品不卡| 亚洲九九香蕉| 老熟妇乱子伦视频在线观看| 国产国语露脸激情在线看| 日韩欧美一区视频在线观看| 国产1区2区3区精品| 母亲3免费完整高清在线观看| 大型黄色视频在线免费观看| 男女高潮啪啪啪动态图| 国产男女超爽视频在线观看| 又紧又爽又黄一区二区| 亚洲欧美激情综合另类| 热99久久久久精品小说推荐| 欧美日韩国产mv在线观看视频| 亚洲一区二区三区欧美精品| 999久久久国产精品视频| √禁漫天堂资源中文www| 国产三级黄色录像| 久热爱精品视频在线9| 午夜老司机福利片| 日韩欧美一区二区三区在线观看 | 国产欧美日韩精品亚洲av| 欧美 亚洲 国产 日韩一| 亚洲色图 男人天堂 中文字幕| 亚洲伊人色综图| 成人18禁高潮啪啪吃奶动态图| 精品国产一区二区三区久久久樱花| 黑人巨大精品欧美一区二区mp4| 女人精品久久久久毛片| 天堂动漫精品| 久久精品亚洲熟妇少妇任你| 在线观看免费午夜福利视频| 国产蜜桃级精品一区二区三区 | 这个男人来自地球电影免费观看| 久久精品国产a三级三级三级| 久久影院123| 18禁美女被吸乳视频| 一进一出抽搐gif免费好疼 | 在线观看免费视频日本深夜| 18禁裸乳无遮挡动漫免费视频| 欧美黑人欧美精品刺激| 亚洲午夜精品一区,二区,三区| 久99久视频精品免费| 丰满的人妻完整版| 一本大道久久a久久精品| 两性夫妻黄色片| 久久精品熟女亚洲av麻豆精品| 热re99久久国产66热| 男人的好看免费观看在线视频 | 一级,二级,三级黄色视频| 亚洲少妇的诱惑av| 亚洲欧美日韩高清在线视频| 夜夜爽天天搞| 精品亚洲成a人片在线观看| 我的亚洲天堂| 一级片免费观看大全| 丝瓜视频免费看黄片| 9色porny在线观看| 欧美在线一区亚洲| 亚洲伊人色综图| 50天的宝宝边吃奶边哭怎么回事| 免费人成视频x8x8入口观看| 亚洲伊人色综图| 夜夜躁狠狠躁天天躁| 18禁美女被吸乳视频| 伊人久久大香线蕉亚洲五| 久久ye,这里只有精品| а√天堂www在线а√下载 | 校园春色视频在线观看| 日韩视频一区二区在线观看| 亚洲精品中文字幕在线视频| 国产精品 欧美亚洲| 少妇裸体淫交视频免费看高清 | 国产在线一区二区三区精| 黄色a级毛片大全视频| 亚洲国产欧美一区二区综合| 亚洲伊人色综图| 最近最新中文字幕大全电影3 | 两性午夜刺激爽爽歪歪视频在线观看 |