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

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

生活随笔

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

linux

Linux设备树翻译计划

發(fā)布時(shí)間:2023/12/10 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux设备树翻译计划 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文翻譯自Device Tree Usage主頁(yè): http://devicetree.org/Device_Tree_Usage 此譯文為本人原創(chuàng),若要轉(zhuǎn)載請(qǐng)注明!
Linux device tree的背景(引用自宋寶華博客): ? ? ? ? Linus Torvalds在2011年3月17日的ARM Linux郵件列表宣稱(chēng)“this whole ARM thing is a f*cking pain in the ass”,引發(fā)ARM Linux社區(qū)的地震,隨后ARM社區(qū)進(jìn)行了一系列的重大修正。在過(guò)去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的垃圾代碼,相當(dāng)多數(shù)的代碼只是在描述板級(jí)細(xì)節(jié),而這些板級(jí)細(xì)節(jié)對(duì)于內(nèi)核來(lái)講,不過(guò)是垃圾,如板上的platform設(shè)備、resource、i2c_board_info、spi_board_info以及各種硬件的platform_data。讀者有興趣可以統(tǒng)計(jì)下常見(jiàn)的s3c2410、s3c6410等板級(jí)目錄,代碼量在數(shù)萬(wàn)行。 ? ? ? ? 社區(qū)必須改變這種局面,于是PowerPC等其他體系架構(gòu)下已經(jīng)使用的Flattened Device Tree(FDT)進(jìn)入ARM社區(qū)的視野。Device Tree是一種描述硬件的數(shù)據(jù)結(jié)構(gòu),它起源于 OpenFirmware (OF)。在Linux 2.6中,ARM架構(gòu)的板極硬件細(xì)節(jié)過(guò)多地被硬編碼在arch/arm/plat-xxx和arch/arm/mach-xxx,采用Device Tree后,許多硬件的細(xì)節(jié)可以直接透過(guò)它傳遞給Linux,而不再需要在kernel中進(jìn)行大量的冗余編碼。
設(shè)備樹(shù)使用 ________________________________________________ 本頁(yè)演示怎樣為一個(gè)新的機(jī)器編寫(xiě)設(shè)備樹(shù)。這主要為了給出設(shè)備樹(shù)的整體概念以及他們是怎樣被用來(lái)描述機(jī)器的。 如果需要設(shè)備樹(shù)數(shù)據(jù)格式的完整描述,請(qǐng)參考ePAPR規(guī)范。本本主頁(yè)只是講述了一些基本主題,而ePAPR規(guī)范講述了很多這些主題的細(xì)節(jié),對(duì)于本頁(yè)中沒(méi)有講述的高級(jí)用法,請(qǐng)參考ePAPR。 基本數(shù)據(jù)格式 ________________________________________________ 設(shè)備樹(shù)是具有簡(jiǎn)單樹(shù)形結(jié)構(gòu)的節(jié)點(diǎn)和屬性。屬性是成對(duì)的鍵值,節(jié)點(diǎn)可能包含屬性和子節(jié)點(diǎn)。舉個(gè)例子來(lái)說(shuō),下面是一個(gè)簡(jiǎn)單的.dts格式的樹(shù):

/ {? ? node1 {? ? ? ? a-string-property = "A string";? ? ? ? a-string-list-property = "first string", "second string";? ? ? ? a-byte-data-property = [0x01 0x23 0x34 0x56];? ? ? ? child-node1 {? ? ? ? ? ? first-child-property;? ? ? ? ? ? second-child-property = <1>;? ? ? ? ? ? a-string-property = "Hello, world";? ? ? ? };? ? ? ? child-node2 {? ? ? ? };? ? };? ? node2 {? ? ? ? an-empty-property;? ? ? ? a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */? ? ? ? child-node1 {? ? ? ? };? ? };};

這棵樹(shù)很明顯是沒(méi)用的,因?yàn)樗鼪](méi)用描述任何東西,但是它確實(shí)展示出了節(jié)點(diǎn)屬性。即:
  • 單個(gè)根節(jié)點(diǎn):"/"
  • 一對(duì)子節(jié)點(diǎn):"node1", "node2"
  • 一對(duì)node1的子節(jié)點(diǎn):"child-node1", "child-node2"
  • 樹(shù)上散布的一堆屬性
屬性是簡(jiǎn)單的鍵值對(duì),其中鍵值既可以是空也可以包含任何字節(jié)流。雖然數(shù)據(jù)類(lèi)型沒(méi)用被編碼在數(shù)據(jù)結(jié)構(gòu)中,但是在設(shè)備樹(shù)源文件中有一些基本的數(shù)據(jù)表示方法。
  • 文本字符串(以null作為終止)以雙引號(hào)的形式表示:
    • string-property = "a string'
  • 'Cells'是32位無(wú)符號(hào)整數(shù),并且使用尖括號(hào)分隔:
    • cell-property = <0xbeef 123 0xabcd1234>
  • 二進(jìn)制數(shù)據(jù)使用方括號(hào)分隔:
    • binary-perperty = [0x01 0x23 0x45 0x67]
  • 不同表示類(lèi)型的數(shù)據(jù)可以通過(guò)逗號(hào)級(jí)聯(lián)在一起:
    • mixed-perperty = "a string", [0x01 0x23 0x45 0x67], <0x12345678>;
  • 逗號(hào)也可以用來(lái)創(chuàng)建字符串列表:
    • string-list = "red fish", "blue fish";

基本概念 ________________________________________________ 為了理解怎樣使用設(shè)備樹(shù),我們從一個(gè)樣品機(jī)開(kāi)始并且搭建設(shè)備樹(shù)來(lái)一步步描述它 樣品機(jī) 考慮下面的假想機(jī)器(粗略地基于ARM Versatile),"Acme"制造,命名 “Coyote's Revenge":
  • 32位 ARM CPU單核
  • PLB粘附在內(nèi)存映射串口上,spi總線控制器,i2c控制器,中斷控制器以及外部總線橋
  • 256MB SDRAM基址從0開(kāi)始
  • 2個(gè)串口,基址從0x101F1000,0X101F2000開(kāi)始
  • GPIO控制器,基址從0x101F3000開(kāi)始
  • SPI控制器,基址從0x10170000并且總線上掛載著下列設(shè)備:
    • MMC卡槽并且SS引腳連接在GPIO #1上
  • 外部總線橋并且總線上掛載著下列設(shè)備:
    • SMC SMC91111以太網(wǎng)設(shè)備連接在基址從0x10100000開(kāi)始的外部總線上
    • i2c控制器,基址從0x10160000開(kāi)始并且總線上掛載著如下設(shè)備:
      • Maxim DS1338實(shí)時(shí)時(shí)鐘。該器件響應(yīng)0x58的從機(jī)地址。
    • 64MB NOR flash,基址從0x30000000開(kāi)始
初始結(jié)構(gòu) 第一步是為機(jī)器制定框架結(jié)構(gòu)。下面是一個(gè)合法的設(shè)備樹(shù)所需的最小結(jié)構(gòu)。在這個(gè)節(jié)點(diǎn),你想想要能夠唯一地識(shí)別該機(jī)器

/ {? ? compatible = "acme,coyotes-revenge";};

compatible制定系統(tǒng)的名稱(chēng)。它包含"<manufacture>,<model>"格式的字符串。準(zhǔn)確地確定器件型號(hào)是非常重要的,并且我們需要包含廠商的名字來(lái)避免名字空間沖突。因?yàn)椴僮飨到y(tǒng)會(huì)使用compatible這個(gè)值來(lái)決定怎樣在這個(gè)機(jī)器上運(yùn)行,所以在這個(gè)屬性中放入正確的值是非常重要的。 理論上來(lái)說(shuō),compatible是一個(gè)OS需要唯一地識(shí)別機(jī)器所需要的唯一數(shù)據(jù)。如果所有機(jī)器的細(xì)節(jié)都是寫(xiě)死的,那么OS可以在頂層compatible屬性中專(zhuān)門(mén)查找"acme,coyotes-revenge"。 CPUs 下一步是描述每個(gè)CPU。一個(gè)命名為"cpus"的容器節(jié)點(diǎn)跟有對(duì)應(yīng)每個(gè)CPU的子節(jié)點(diǎn)。在這個(gè)例子中,系統(tǒng)是一個(gè)雙核ARM Cortex A9的系統(tǒng)。

/ {? ? compatible = "acme,coyotes-revenge";? ? cpus {? ? ? ? cpu@0 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? };? ? ? ? cpu@1 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? };? ? };};

每個(gè)CPU節(jié)點(diǎn)中的compatible屬性是以<manufacturer>,<model>的格式確定CPU型號(hào)的字符串,就像頂層的compatible屬性那樣。 更多的屬性會(huì)在稍后添加到cpu節(jié)點(diǎn)中,但是我們首先需要討論更多基本的概念。 節(jié)點(diǎn)名字 我們值得花一段時(shí)間討論命名習(xí)慣。每一個(gè)幾點(diǎn)必須要有一個(gè)以<name>[@<unit-address>]形式的名字。 <name>是簡(jiǎn)單的ascii字符串并且長(zhǎng)度最大可以到31個(gè)字符。通常來(lái)說(shuō),節(jié)點(diǎn)是根據(jù)它所代表的設(shè)備類(lèi)型來(lái)命名的。舉個(gè)例子,3com公司的以太網(wǎng)適配器節(jié)點(diǎn)可能會(huì)使用ethernet作為它的名字,而不是3com509。 unit-address只有在節(jié)點(diǎn)描述含有地址的設(shè)備時(shí)會(huì)被包含進(jìn)來(lái)。通常來(lái)說(shuō),unit address是用來(lái)訪問(wèn)設(shè)備的基址,并且在節(jié)點(diǎn)的reg屬性中被羅列出來(lái)。我們稍后會(huì)在本文檔中介紹reg屬性。 兄弟節(jié)點(diǎn)必須被唯一地命名,不過(guò)對(duì)于不只一個(gè)節(jié)點(diǎn)的情況,我們通常會(huì)使用通用的名字,只要它們的地址不一樣就可以。(比如:seriali@101f1000 和serial@101f2000)。 如果需要更多節(jié)點(diǎn)命名方面的詳細(xì)情況,請(qǐng)參考ePAPR規(guī)范的第2.21部分 設(shè)備 系統(tǒng)中的每一個(gè)設(shè)備都由一個(gè)設(shè)備樹(shù)節(jié)點(diǎn)來(lái)代表。下一步就是用每一個(gè)設(shè)備對(duì)應(yīng)的節(jié)點(diǎn)來(lái)填充樹(shù)。現(xiàn)在來(lái)說(shuō),新節(jié)點(diǎn)將會(huì)被置空知道我們可以討論地址范圍以及終端是怎樣安排的。

/ {? ? compatible = "acme,coyotes-revenge";? ? cpus {? ? ? ? cpu@0 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? };? ? ? ? cpu@1 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? };? ? };? ? serial@101F0000 {? ? ? ? compatible = "arm,pl011";? ? }; ? ? serial@101F2000 {? ? ? ? compatible = "arm,pl011";? ? }; ? ? gpio@101F3000 {? ? ? ? compatible = "arm,pl061";? ? }; ? ? interrupt-controller@10140000 {? ? ? ? compatible = "arm,pl190";? ? }; ? ? spi@10115000 {? ? ? ? compatible = "arm,pl022";? ? }; ? ? external-bus {? ? ? ? ethernet@0,0 {? ? ? ? ? ? compatible = "smc,smc91c111";? ? ? ? }; ? ? ? ? i2c@1,0 {? ? ? ? ? ? compatible = "acme,a1234-i2c-bus";? ? ? ? ? ? rtc@58 {? ? ? ? ? ? ? ? compatible = "maxim,ds1338";? ? ? ? ? ? };? ? ? ? }; ? ? ? ? flash@2,0 {? ? ? ? ? ? compatible = "samsung,k8f1315ebm", "cfi-flash";? ? ? ? };? ? };};

在這棵樹(shù)中,系統(tǒng)中的每個(gè)設(shè)備都被添加了響應(yīng)的節(jié)點(diǎn),并且層次結(jié)構(gòu)反映了設(shè)備時(shí)怎樣連接到系統(tǒng)的。舉個(gè)例子來(lái)說(shuō),外部總線上的設(shè)備是外部總線的子節(jié)點(diǎn),并且i2c設(shè)備是i2c總線控制器的子節(jié)點(diǎn)。通常來(lái)說(shuō),層次結(jié)構(gòu)代表了從CPU角度看到的系統(tǒng)視圖。 在這里這棵樹(shù)并不是合法的。它缺少了設(shè)備之間連接的信息。那部分?jǐn)?shù)據(jù)會(huì)在稍后添加。 這棵樹(shù)中有一些需要注意的地方:
  • 每一個(gè)設(shè)備節(jié)點(diǎn)都有一個(gè)compatible屬性
  • flash節(jié)點(diǎn)的compatible屬性中有兩個(gè)字符串。閱讀下一部分來(lái)了解為什么會(huì)這樣。
  • 之前提到過(guò),節(jié)點(diǎn)的名字反映了設(shè)備的類(lèi)型,而不是特定的型號(hào)。情況ePAPR規(guī)范的2.2.2部分,規(guī)范中提到了一系列已經(jīng)定義好了隨處可能用到的通用節(jié)點(diǎn)名字
理解compatible屬性 設(shè)備樹(shù)中代表設(shè)備的每一個(gè)節(jié)點(diǎn)必須要有compatible屬性。compatible是操作系統(tǒng)用來(lái)決定哪個(gè)設(shè)備驅(qū)動(dòng)綁定哪個(gè)設(shè)備的關(guān)鍵字。 compatible是字符串列表。列表中的第一個(gè)字符串以"<manufacturer>,<model>"的形式確定了節(jié)點(diǎn)代表的設(shè)備。接下來(lái)的字符串表示該設(shè)備可以兼容的其他設(shè)備。 舉個(gè)例子來(lái)說(shuō),Freescale MPC8349 片上系統(tǒng)(SoC)有一個(gè)串行設(shè)備實(shí)現(xiàn)了國(guó)家半導(dǎo)體 ns16550寄存器接口。MPC8349穿行設(shè)備的compatible屬性因此應(yīng)該是:compatible = "fsl,mpc8349-uart","ns16550"。在這個(gè)例子中,fsl,mpc8349-uart確定了設(shè)備并且ns16550表示它在寄存器級(jí)別兼容國(guó)家半導(dǎo)體16550 UART。 注意:ns16550沒(méi)有廠商前綴純粹是因?yàn)闅v史原因(IBM-PC/AT吧..)。所有新的compatible值應(yīng)該使用廠商前綴。 該操作允許現(xiàn)存的設(shè)備驅(qū)動(dòng)綁定到更新的設(shè)備上,不過(guò)它仍然唯一地識(shí)別確切的硬件。 警告:不要在compatible值中使用通配符,比如"fsl,mpc83xx-uart"或者類(lèi)似地。硅片廠商總是會(huì)做一些打破你通配符假設(shè)的變化,到那時(shí)再改變就為時(shí)已晚了。相反,選擇一個(gè)特定的硅片實(shí)現(xiàn)并且使所有隨后的硅片與之兼容。 尋址是如何工作的 ________________________________________________ 可尋址的設(shè)備使用下面的屬性來(lái)將地址信息編碼進(jìn)入設(shè)備樹(shù):
  • reg
  • #address-cells
  • #size-cells
? ? ? ??每一個(gè)可尋址的設(shè)備獲取的reg,是以reg = <address1 length1 [address2 length2] [address3 length3] ...>形式的表格元組。每一個(gè)元組代表設(shè)備所使用的地址范圍。每一個(gè)地址值是被稱(chēng)為cells的一個(gè)或者多個(gè)32位整數(shù)的列表。相似地,長(zhǎng)度值既可以是cells的列表,也可以是空的。 因?yàn)榈刂泛烷L(zhǎng)度域都是長(zhǎng)度可變的,所以父節(jié)點(diǎn)中的#address-cells和#size-cells屬性是用來(lái)說(shuō)明每一個(gè)域中有多少個(gè)cells。換句話說(shuō),正確地翻譯一個(gè)reg屬性需要父節(jié)點(diǎn)的#address-cells和#size-cells值。為了看到這一切是怎樣工作的,讓我們將尋址屬性添加到樣例設(shè)備樹(shù)中,首先從CPU開(kāi)始 CPU尋址 討論到尋址時(shí),CPU節(jié)點(diǎn)代表最簡(jiǎn)單的情況。每一個(gè)CPU被賦予了一個(gè)唯一的ID并且CPU的ID沒(méi)有關(guān)聯(lián)的尺寸。

? ? cpus {? ? ? ? #address-cells = <1>;? ? ? ? #size-cells = <0>;? ? ? ? cpu@0 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? ? ? reg = <0>;? ? ? ? };? ? ? ? cpu@1 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? ? ? reg = <1>;? ? ? ? };? ? };

cpu節(jié)點(diǎn)中,#address-cells被設(shè)置為1,#size-cells被設(shè)置為0.這意味著子節(jié)點(diǎn)的reg值是代表地址且沒(méi)有size域的單個(gè)32位無(wú)符號(hào)整數(shù)。在這個(gè)例子中,2個(gè)cpu被賦予了地址0和1。cpu節(jié)點(diǎn)的#size-cells是0,因?yàn)閏pu僅僅被賦予了單個(gè)地址。 你能注意到reg值匹配節(jié)點(diǎn)名字中的值。按照慣例,如果一個(gè)節(jié)點(diǎn)具有reg屬性,這個(gè)節(jié)點(diǎn)必須包含單元地址,也就是reg屬性中的第一個(gè)地址值。 內(nèi)存映射設(shè)備 不同于cpu節(jié)點(diǎn)中找到的單地址值,內(nèi)存映射設(shè)備被分配了它會(huì)響應(yīng)的一個(gè)地址范圍。#size-cells用來(lái)說(shuō)明每一個(gè)子節(jié)點(diǎn)中的reg元組有多長(zhǎng)。接下來(lái)的例子中,每一個(gè)地址值都是一個(gè)單元的(32位),每一個(gè)長(zhǎng)度值也是一個(gè)單元,即典型的32位系統(tǒng)。64位系統(tǒng)可以把#address-cells和#size-cells賦值為2從而在設(shè)備設(shè)備樹(shù)中得到64位尋址。

/ {? ? #address-cells = <1>;? ? #size-cells = <1>;? ? ...? ? serial@101f0000 {? ? ? ? compatible = "arm,pl011";? ? ? ? reg = <0x101f0000 0x1000 >;? ? };? ? serial@101f2000 {? ? ? ? compatible = "arm,pl011";? ? ? ? reg = <0x101f2000 0x1000 >;? ? };? ? gpio@101f3000 {? ? ? ? compatible = "arm,pl061";? ? ? ? reg = <0x101f3000 0x1000? ? ? ? ? ? ? ?0x101f4000 0x0010>;? ? };? ? interrupt-controller@10140000 {? ? ? ? compatible = "arm,pl190";? ? ? ? reg = <0x10140000 0x1000 >;? ? };? ? spi@10115000 {? ? ? ? compatible = "arm,pl022";? ? ? ? reg = <0x10115000 0x1000 >;? ? };? ? ...};

每一個(gè)設(shè)備都被分配了一個(gè)基地址,以及它被分配的區(qū)域的尺寸。本例中的GPIO設(shè)備地址被分配了兩個(gè)地址范圍:0x101f3000...0x101f3fff 和0x101f4000..0x101f400f。 有一些設(shè)備掛載在具有不同尋址策略的總線上。舉個(gè)例子來(lái)說(shuō),一個(gè)設(shè)備可以被連接到具有獨(dú)立片選信號(hào)的外部總線上。因?yàn)槊恳粋€(gè)父節(jié)點(diǎn)定義了它子節(jié)點(diǎn)的尋址域,所以我們可以從最佳描述系統(tǒng)的角度來(lái)選擇地址映射方案。下面的代碼顯示了連接到外部總線上的設(shè)備的地址分配情況,并且這些外部總線具有編碼如地址的片選數(shù)字。

? ? external-bus {? ? ? ? #address-cells = <2>? ? ? ? #size-cells = <1>;? ? ? ? ethernet@0,0 {? ? ? ? ? ? compatible = "smc,smc91c111";? ? ? ? ? ? reg = <0 0 0x1000>;? ? ? ? };? ? ? ? i2c@1,0 {? ? ? ? ? ? compatible = "acme,a1234-i2c-bus";? ? ? ? ? ? reg = <1 0 0x1000>;? ? ? ? ? ? rtc@58 {? ? ? ? ? ? ? ? compatible = "maxim,ds1338";? ? ? ? ? ? };? ? ? ? };? ? ? ? flash@2,0 {? ? ? ? ? ? compatible = "samsung,k8f1315ebm", "cfi-flash";? ? ? ? ? ? reg = <2 0 0x4000000>;? ? ? ? };? ? };

外部總線使用了2個(gè)單元的地址值。一個(gè)是片選數(shù)字,另一個(gè)是片選基地址的偏移。長(zhǎng)度域仍舊是單個(gè)單元,因?yàn)橹挥械刂返钠撇糠中枰粋€(gè)范圍。因此在本例中,每一個(gè)reg入口都包含了3個(gè)單元:片選數(shù)字,偏移以及長(zhǎng)度。 因?yàn)榈刂酚虮话诠?jié)點(diǎn)以及它的子節(jié)點(diǎn)中,所以父節(jié)點(diǎn)可以自由定義任何總線上可行的尋址方案。直接父節(jié)點(diǎn)之外的節(jié)點(diǎn)通常不需要考慮本地尋址域,并且為了從一個(gè)域到另一個(gè)域,地址必須被映射。 非內(nèi)存映射設(shè)備 其他設(shè)備并沒(méi)有內(nèi)存映射在處理器總線上。它們可以有尋址范圍,但是它們并不能直接被CPU訪問(wèn)。相反,父節(jié)點(diǎn)設(shè)備的驅(qū)動(dòng)會(huì)代表CPU間接地訪問(wèn)。 現(xiàn)在來(lái)看i2c設(shè)備的例子,每一個(gè)設(shè)備被分配了一個(gè)地址,但是它沒(méi)有關(guān)聯(lián)的長(zhǎng)度或者范圍。這看上去與CPU地址分配時(shí)一樣的。

? ? ? ? i2c@1,0 {? ? ? ? ? ? compatible = "acme,a1234-i2c-bus";? ? ? ? ? ? #address-cells = <1>;? ? ? ? ? ? #size-cells = <0>;? ? ? ? ? ? reg = <1 0 0x1000>;? ? ? ? ? ? rtc@58 {? ? ? ? ? ? ? ? compatible = "maxim,ds1338";? ? ? ? ? ? ? ? reg = <58>;? ? ? ? ? ? };? ? ? ? }; 范圍(地址轉(zhuǎn)換) 我們已經(jīng)討論過(guò)了怎樣為設(shè)備分配地址,但是這里的這些地址只是本地的設(shè)備節(jié)點(diǎn)地址。它缺并沒(méi)有描述怎樣從那些地址映射到CPU可以使用的地址。 根節(jié)點(diǎn)總是描述從CPU的視角看到的地址空間。根節(jié)點(diǎn)的子節(jié)點(diǎn)已經(jīng)使用了CPU的地址域,是、因此不需要任何顯示地映射。舉個(gè)例子來(lái)說(shuō),serial@101f0000設(shè)備是直接被分配了0x101f0000地址。 那些不是根節(jié)點(diǎn)的直接子節(jié)點(diǎn)的節(jié)點(diǎn)不能使用CPU的地址域。為了得到一個(gè)內(nèi)存映射的地址,設(shè)備樹(shù)必須制定如何從一個(gè)域地址轉(zhuǎn)換到另一個(gè)域。ranges屬性就是用于這個(gè)目的的。 這里是添加了ranges屬性的設(shè)備樹(shù)例子。

/ {? ? compatible = "acme,coyotes-revenge";? ? #address-cells = <1>;? ? #size-cells = <1>;? ? ...? ? external-bus {? ? ? ? #address-cells = <2>? ? ? ? #size-cells = <1>;? ? ? ? ranges = <0 0 ?0x10100000 ? 0x10000 ? ? // Chipselect 1, Ethernet? ? ? ? ? ? ? ? ? 1 0 ?0x10160000 ? 0x10000 ? ? // Chipselect 2, i2c controller? ? ? ? ? ? ? ? ? 2 0 ?0x30000000 ? 0x1000000>; // Chipselect 3, NOR Flash? ? ? ? ethernet@0,0 {? ? ? ? ? ? compatible = "smc,smc91c111";? ? ? ? ? ? reg = <0 0 0x1000>;? ? ? ? };? ? ? ? i2c@1,0 {? ? ? ? ? ? compatible = "acme,a1234-i2c-bus";? ? ? ? ? ? #address-cells = <1>;? ? ? ? ? ? #size-cells = <0>;? ? ? ? ? ? reg = <1 0 0x1000>;? ? ? ? ? ? rtc@58 {? ? ? ? ? ? ? ? compatible = "maxim,ds1338";? ? ? ? ? ? ? ? reg = <58>;? ? ? ? ? ? };? ? ? ? };? ? ? ? flash@2,0 {? ? ? ? ? ? compatible = "samsung,k8f1315ebm", "cfi-flash";? ? ? ? ? ? reg = <2 0 0x4000000>;? ? ? ? };? ? };};

ranges是地址轉(zhuǎn)換清單。ranges表中的每一個(gè)條目是包含子節(jié)點(diǎn)地址,父節(jié)點(diǎn)地址以及子節(jié)點(diǎn)地址空間區(qū)域大小的元組。每一個(gè)域的大小分別由子節(jié)點(diǎn)的#address-cells值,父節(jié)點(diǎn)的#address-cells值以及子節(jié)點(diǎn)的#size-cells值決定。對(duì)于本例子中的外部總線,子節(jié)點(diǎn)地址是2個(gè)單元,父節(jié)點(diǎn)地址是1個(gè)單元,大小也是一個(gè)單元的。三個(gè)ranges是這樣被轉(zhuǎn)換的:
  • 從片選0處偏移0開(kāi)始的地方被映射到地址范圍0x10100000...0x1010ffff
  • 從片選1處偏移0開(kāi)始的地方被映射到地址范圍0x10160000...0x1016ffff
  • 從片選2處偏移0開(kāi)始的地方被映射到地址范圍0x30000000...0x10000000
或者,如果父節(jié)點(diǎn)和子節(jié)點(diǎn)的地址空間是相同的,那么節(jié)點(diǎn)也可以添加空的ranges屬性。空的ranges屬性意味著子節(jié)點(diǎn)地址空間中的地址被1:1地映射到父節(jié)點(diǎn)地址空間。 你可能會(huì)問(wèn)為什么地址轉(zhuǎn)換總是用在所有1:1映射的情況下。一些總線(比如PCI)具有完全不同的地址空間,而這些細(xì)節(jié)必須暴露給操作系統(tǒng)。其他總線具有DMA引擎,這些引擎需要知道總線上的實(shí)際滴孩子。有時(shí)候設(shè)備需要被組合在一起,因?yàn)樗鼈兌脊蚕碛型瑯拥能浖删幊涛锢淼刂酚成浞椒āT摬辉撚?:1映射更大程度上取決于操作系統(tǒng)所需的信息以及硬件設(shè)計(jì)。 你應(yīng)該也注意到,i2c@1,0節(jié)點(diǎn)中沒(méi)有ranges屬性,原因是不像外部總線,i2c總線上的設(shè)備沒(méi)有內(nèi)存映射到CPU的地址域。相反地,CPU通過(guò)i2c@1,0設(shè)備間接地訪問(wèn)rtc@58設(shè)備。缺少ranges屬性意味著,設(shè)備不能直接被除了其父節(jié)點(diǎn)之外的任何設(shè)備訪問(wèn) 中斷是怎樣工作的 ________________________________________________ 中斷不同于遵循樹(shù)自然結(jié)構(gòu)的地址范圍轉(zhuǎn)換,中斷信號(hào)可能來(lái)自以及終止在機(jī)器的任何設(shè)備。不像設(shè)備樹(shù)中自然表示的設(shè)備尋址,中斷信號(hào)是以獨(dú)立于設(shè)備樹(shù)的節(jié)點(diǎn)之間的鏈接表示的。四個(gè)屬性用來(lái)描述中斷的聯(lián)系:
  • interrupt-controller ?—— ?一個(gè)空的屬性聲明接收中斷信號(hào)的設(shè)備為節(jié)點(diǎn)
  • #interrupt-cells ?—— 這是中斷控制器節(jié)點(diǎn)的屬性。它表明這個(gè)中斷控制器的中斷描述符符中有多少單元。(類(lèi)似于#adderss-cells以及#size-cells)
  • interrupt-parent —— 包含phandle的設(shè)備節(jié)點(diǎn)的一個(gè)屬性,這個(gè)phandle指向它所連接到的中斷控制器
  • interrupts —— 包含中斷描述符列表的設(shè)備節(jié)點(diǎn)的一個(gè)屬性,每一個(gè)設(shè)備上的中斷輸出信號(hào)都有一個(gè)
? ? ? ??中斷描述符是一個(gè)或多個(gè)單元的數(shù)據(jù)(由#interrupt-cells指定),它們指定設(shè)備連接到哪個(gè)中斷輸入。大部分設(shè)備只有單個(gè)中斷輸出,如下面的例子所示,不過(guò)設(shè)備上也有可能有多個(gè)中斷輸出。中斷描述符的意義完全取決于中斷控制器設(shè)備的綁定。每一個(gè)中斷控制器可以決定需要多少個(gè)單元才能唯一地定義一個(gè)中斷輸入。 下面的代碼添加了連接到我們的Coyote's Revenge樣例機(jī)器的中斷。

/ {? ? compatible = "acme,coyotes-revenge";? ? #address-cells = <1>;? ? #size-cells = <1>;? ? interrupt-parent = <&intc>;? ? cpus {? ? ? ? #address-cells = <1>;? ? ? ? #size-cells = <0>;? ? ? ? cpu@0 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? ? ? reg = <0>;? ? ? ? };? ? ? ? cpu@1 {? ? ? ? ? ? compatible = "arm,cortex-a9";? ? ? ? ? ? reg = <1>;? ? ? ? };? ? };? ? serial@101f0000 {? ? ? ? compatible = "arm,pl011";? ? ? ? reg = <0x101f0000 0x1000 >;? ? ? ? interrupts = < 1 0 >;? ? };? ? serial@101f2000 {? ? ? ? compatible = "arm,pl011";? ? ? ? reg = <0x101f2000 0x1000 >;? ? ? ? interrupts = < 2 0 >;? ? };? ? gpio@101f3000 {? ? ? ? compatible = "arm,pl061";? ? ? ? reg = <0x101f3000 0x1000? ? ? ? ? ? ? ?0x101f4000 0x0010>;? ? ? ? interrupts = < 3 0 >;? ? };? ? intc: interrupt-controller@10140000 {? ? ? ? compatible = "arm,pl190";? ? ? ? reg = <0x10140000 0x1000 >;? ? ? ? interrupt-controller;? ? ? ? #interrupt-cells = <2>;? ? };? ? spi@10115000 {? ? ? ? compatible = "arm,pl022";? ? ? ? reg = <0x10115000 0x1000 >;? ? ? ? interrupts = < 4 0 >;? ? };? ? external-bus {? ? ? ? #address-cells = <2>? ? ? ? #size-cells = <1>;? ? ? ? ranges = <0 0 ?0x10100000 ? 0x10000 ? ? // Chipselect 1, Ethernet? ? ? ? ? ? ? ? ? 1 0 ?0x10160000 ? 0x10000 ? ? // Chipselect 2, i2c controller? ? ? ? ? ? ? ? ? 2 0 ?0x30000000 ? 0x1000000>; // Chipselect 3, NOR Flash? ? ? ? ethernet@0,0 {? ? ? ? ? ? compatible = "smc,smc91c111";? ? ? ? ? ? reg = <0 0 0x1000>;? ? ? ? ? ? interrupts = < 5 2 >;? ? ? ? };? ? ? ? i2c@1,0 {? ? ? ? ? ? compatible = "acme,a1234-i2c-bus";? ? ? ? ? ? #address-cells = <1>;? ? ? ? ? ? #size-cells = <0>;? ? ? ? ? ? reg = <1 0 0x1000>;? ? ? ? ? ? interrupts = < 6 2 >;? ? ? ? ? ? rtc@58 {? ? ? ? ? ? ? ? compatible = "maxim,ds1338";? ? ? ? ? ? ? ? reg = <58>;? ? ? ? ? ? ? ? interrupts = < 7 3 >;? ? ? ? ? ? };? ? ? ? };? ? ? ? flash@2,0 {? ? ? ? ? ? compatible = "samsung,k8f1315ebm", "cfi-flash";? ? ? ? ? ? reg = <2 0 0x4000000>;? ? ? ? };? ? };};

有一些事情需要注意:
  • 這個(gè)機(jī)器只有一個(gè)中斷控制器,interrupt-controller@10140000
  • 標(biāo)簽'intc:'已經(jīng)被添加到中斷控制器節(jié)點(diǎn),并且標(biāo)簽被用來(lái)分配指向根節(jié)點(diǎn)的interrupt-parent屬性的phandle。這個(gè)interrupt-parent值變成了系統(tǒng)的默認(rèn)值,因?yàn)樗械淖庸?jié)點(diǎn)都繼承了它,除非它被顯示地覆蓋。
  • 每一個(gè)設(shè)備都使用一個(gè)interrupt屬性來(lái)制定一個(gè)不同的中斷輸入信號(hào)。
  • #interrupt-cells是2,因此每一個(gè)中斷描述符有2個(gè)單元。這個(gè)例子采用了使用了常見(jiàn)的模式,用第一個(gè)單元來(lái)編碼中斷線號(hào),用第二個(gè)單元來(lái)編碼標(biāo)志,比如高有效還是低有效又或者是邊緣觸發(fā)還是電平觸發(fā)。對(duì)于任何給定的中斷控制器,請(qǐng)參考控制器綁定文檔來(lái)了解描述符是怎樣編碼的。
設(shè)備特定數(shù)據(jù) 除了公共的屬性之外,我們可以添加任何屬性以及子節(jié)點(diǎn)到節(jié)點(diǎn)。我們可以添加操作系統(tǒng)需要的任何數(shù)據(jù),只要遵守一些規(guī)則即可。 首先,新的設(shè)備特定的屬性名字應(yīng)該使用生產(chǎn)廠商的前綴從而它們不會(huì)與現(xiàn)存的標(biāo)準(zhǔn)屬性名稱(chēng)沖突。 其次,屬性以及子節(jié)點(diǎn)的意義必須以綁定的形式記錄下來(lái)從而設(shè)備驅(qū)動(dòng)作者了解怎樣翻譯數(shù)據(jù)。綁定記錄一個(gè)特定的compatible值意味著什么,它應(yīng)該要有什么屬性,它可能會(huì)有什么樣的子節(jié)點(diǎn)以及設(shè)備表示什么。每一個(gè)唯一的compatible值應(yīng)該有它自己的綁定(或者聲明與其他compatible值得兼容性)。新設(shè)備的綁定在這個(gè)wiki中被記錄。請(qǐng)看主頁(yè)描述文檔格和審查過(guò)程。 第三,請(qǐng)將新的綁定提交到devicetree-discuss@lists.ozlabs.org郵件列表進(jìn)行審查。審查新的綁定會(huì)抓住許多將來(lái)可能導(dǎo)致問(wèn)題常見(jiàn)錯(cuò)誤。 特殊節(jié)點(diǎn) ________________________________________________ aliases節(jié)點(diǎn) 一個(gè)特定的節(jié)點(diǎn)通常是以完整的路徑來(lái)引用,比如/external-bus/ethernet@0,0,不過(guò)當(dāng)一個(gè)用戶(hù)真的想知道“哪個(gè)設(shè)備是eth0”時(shí),這將會(huì)很繁瑣。aliases節(jié)點(diǎn)可以用來(lái)為一個(gè)完整的設(shè)備路徑分配一個(gè)短的別名。比如:

? ? aliases {? ? ? ? ethernet0 = &eth0;? ? ? ? serial0 = &serial0;? ? };

當(dāng)需要為設(shè)備指定一個(gè)標(biāo)示符時(shí),操作系統(tǒng)歡迎大家使用別名。 你將會(huì)注意到這里使用了一個(gè)新的語(yǔ)法。propert = &label; 語(yǔ)法分配由標(biāo)簽引用并作為字符串屬性的的完整節(jié)點(diǎn)路徑。這與早前使用的phandle = <&label>;不同,它在單元中嵌入了phandle值。 chosen節(jié)點(diǎn) chosen節(jié)點(diǎn)并不代表真實(shí)的設(shè)備,不過(guò)充當(dāng)為在固件和操作系統(tǒng)之間傳遞數(shù)據(jù)的地方,比如啟動(dòng)參數(shù)。在chosen節(jié)點(diǎn)中的數(shù)據(jù)不代表硬件。典型情況下,chosen節(jié)點(diǎn)在.dts源文件中留空并在啟動(dòng)時(shí)填充。 在我們的系統(tǒng)中,固件可能會(huì)添加下面的內(nèi)容到chosen節(jié)點(diǎn):

? ? chosen {? ? ? ? bootargs = "root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200";? ? }; 高級(jí)主題 ________________________________________________ 高級(jí)的樣例機(jī)器 現(xiàn)在我們已經(jīng)理解了基本定義,讓我們添加一些硬件到樣例機(jī)器中來(lái)討論一些更復(fù)雜的使用案例。 高級(jí)的樣例機(jī)器添加了一個(gè)PCI主橋配有內(nèi)存映射到0x10180000的控制寄存器和編程至從0x80000000地址以上開(kāi)始的BARs。 假設(shè)我們已經(jīng)知道關(guān)于設(shè)備樹(shù)以上內(nèi)容,我們可以從添加如下節(jié)點(diǎn)描述PCI主橋開(kāi)始。 ? ? ? ? pci@10180000 { ? ? ? ? ? ? compatible = "arm,versatile-pci-hostbridge", "pci"; ? ? ? ? ? ? reg = <0x10180000 0x1000>; ? ? ? ? ? ? interrupts = <8 0>; ? ? ? ? };
(接下來(lái)的內(nèi)容大部分為PCI設(shè)備相關(guān),不太常用,由于本人精力有限,留著以后再翻譯了)




參考鏈接: http://blog.csdn.net/21cnbao/article/details/8457546

總結(jié)

以上是生活随笔為你收集整理的Linux设备树翻译计划的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

国产在线视频在线观看 | 97在线超碰 | 久久高清免费观看 | 亚洲视频精品在线 | 激情文学综合丁香 | 999国产| 欧美精品一区二区免费 | 亚洲最大av网 | 久操视频在线观看 | 国产高清视频色在线www | 日韩精品视频久久 | 国产高清视频免费观看 | 中文字幕免费 | 天天躁日日躁狠狠躁av中文 | 五月宗合网 | 手机看片国产 | 深夜成人av | 日韩av不卡在线 | 欧美日韩精品二区第二页 | 色婷婷激情综合 | 亚洲国产wwwccc36天堂 | 国产精品福利视频 | 久久久久黄 | 四虎影视成人永久免费观看亚洲欧美 | 911久久香蕉国产线看观看 | 日韩精品高清视频 | 一区二区在线影院 | 日韩在线观看你懂得 | 在线观看免费av片 | 国产高清综合 | 色 中文字幕 | 国产免费亚洲高清 | 在线小视频你懂的 | 精精国产xxxx视频在线播放 | 午夜精品一区二区三区免费视频 | 久青草视频在线观看 | 日本深夜福利视频 | 国产精品电影一区二区 | 亚洲一级二级 | 中文字幕在线视频一区二区 | 日日干激情五月 | 亚洲一区久久久 | 麻豆视频在线 | 久久国内免费视频 | 色婷婷视频在线 | 精品久久久久一区二区国产 | 亚洲欧美日韩一区二区三区在线观看 | 中文字幕在线播放第一页 | 亚洲综合在线发布 | 欧美性视频网站 | 国产成人一区二区在线观看 | 久久久国产精品人人片99精片欧美一 | 日韩一区二区三区不卡 | 免费亚洲黄色 | 成人久久网 | 国产成人久久精品一区二区三区 | 天天艹天天 | 91视频国产免费 | 欧美视频18 | 国产二区视频在线观看 | 97精品国产97久久久久久 | 麻豆国产视频 | 欧美一级激情 | 香蕉视频网址 | 在线免费观看欧美日韩 | 欧美日韩三级 | 怡红院av久久久久久久 | av高清一区二区三区 | 久久精品一区二区三区中文字幕 | 91精品人成在线观看 | 日韩在线免费观看视频 | 精品国产精品一区二区夜夜嗨 | 日韩首页 | 正在播放国产一区 | 亚州成人av在线 | 久草新在线 | 日韩中文字幕a | 日日精品 | 天天操天天操天天操 | 天天射天天艹 | 在线免费观看欧美日韩 | 午夜av在线电影 | 欧美天天综合 | 欧美一区免费在线观看 | 国产综合91 | 激情婷婷六月 | 国产精品永久在线 | 中文字幕黄色av | 久久与婷婷| 久久精品亚洲精品国产欧美 | 日韩欧美一区二区三区在线 | av电影一区二区 | 99久久久久久久久 | 在线看的av网站 | 国产乱老熟视频网88av | 日日激情| 人人干干人人 | 天天干夜夜夜操天 | 在线观看的a站 | 97av.com| 久久人人爽人人爽 | se视频网址 | 国产精品永久在线观看 | 午夜成人免费电影 | 永久精品视频 | 亚洲国内在线 | 久久亚洲欧美 | 日韩欧美一级二级 | 国产手机视频在线观看 | 中日韩免费视频 | 操操色 | 特级aaa毛片| 亚洲精品高清视频 | 欧洲不卡av| 成人a视频在线观看 | 伊人天天狠天天添日日拍 | www.com操| 人人爽夜夜爽 | 欧美性生活免费 | 最近乱久中文字幕 | 亚洲国产精久久久久久久 | 99久久日韩精品免费热麻豆美女 | 香蕉97视频观看在线观看 | 日韩av免费观看网站 | 国产精品黑丝在线观看 | 久久久久国产精品免费免费搜索 | 精品美女久久久久 | 丁香婷婷综合激情五月色 | 日韩在线观看一区二区三区 | 韩国在线一区二区 | 欧美日本一二三 | 在线视频第一页 | 黄色av免费看 | 91在线观看视频网站 | 六月色播| 欧美日韩高清免费 | 久久精品中文字幕 | 国产精品 日韩 | 成年人免费观看国产 | 97av视频在线观看 | 久久精品99国产精品 | 中文字幕久久亚洲 | 黄色av电影免费观看 | 99精品视频在线播放观看 | av一级二级 | 久久久久免费精品国产小说色大师 | 亚洲另类视频在线 | 日韩在线观看小视频 | 国产网红在线观看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 亚洲精品影院在线观看 | 亚洲香蕉在线观看 | 日韩高清一区二区 | 国产精品人人做人人爽人人添 | 欧美va在线观看 | 国产在线一卡 | 美女网站视频免费都是黄 | 久草免费在线观看视频 | 97超碰成人| 精品视频国产 | 天天看天天干 | 国产精品麻 | 免费一区在线 | 在线午夜 | 一区二区三区免费在线播放 | 亚洲精品国产电影 | 亚洲精品成人免费 | 国产精品美女久久久 | 中文字幕一区二区三区视频 | 天天操夜夜摸 | 一区二区三区四区在线 | 欧美激情精品久久久 | 波多野结衣久久资源 | 日日操操操 | 欧洲精品久久久久毛片完整版 | 伊人天天综合 | 久久视了| www免费视频com━ | av在线电影播放 | 九九精品无码 | 亚洲不卡av一区二区三区 | 色偷偷人人澡久久超碰69 | av电影免费 | 中文字幕精品一区 | 免费a网 | 黄色激情网址 | 日日躁夜夜躁aaaaxxxx | 久久国产精品一二三区 | 97人人精品 | 国产夫妻av在线 | 国产精品毛片久久 | 久久激五月天综合精品 | 99视频免费在线观看 | 欧美91av| 天堂va在线观看 | 成人一区二区三区在线 | 麻豆高清免费国产一区 | 日韩欧美精品在线观看视频 | 99精品国产免费久久久久久下载 | 三级在线国产 | 中文字幕在线播放一区 | 激情影院在线 | 日韩午夜精品 | 国产.精品.日韩.另类.中文.在线.播放 | 久久成年人 | 狠狠狠色丁香婷婷综合久久五月 | 天天操天天操一操 | 麻豆视频观看 | 四虎www com| 国产久视频 | 日韩中文字幕亚洲一区二区va在线 | 天天躁日日躁狠狠躁 | av高清网站在线观看 | 日韩精品国产一区 | 美女免费视频网站 | 亚洲高清视频在线 | 日韩r级电影在线观看 | www.干| 国产日韩欧美在线播放 | 99精品视频免费全部在线 | 国内精品久久久久久久影视麻豆 | 亚洲激情 欧美激情 | av国产网站 | 黄色国产高清 | 2022久久国产露脸精品国产 | 91成品人影院 | 国产精品久久久久久久久蜜臀 | 国产青青青 | 黄色亚洲在线 | 8090yy亚洲精品久久 | 丁香婷婷综合五月 | 免费视频久久久 | 久久系列 | 99久久精品久久久久久动态片 | 日韩激情视频 | 久久综合欧美精品亚洲一区 | 亚洲精品网页 | 中文字幕在线观看免费高清电影 | 久久久久久高清 | 青草视频网| 激情丁香婷婷 | 国产 一区二区三区 在线 | 五月天伊人 | 91免费视频国产 | 色亚洲激情 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 国产精彩视频一区二区 | 国产手机视频在线播放 | 久久国精品| 91在线免费看片 | 婷婷久久网 | 爱射综合 | 在线观看中文 | 国产一级一片免费播放放 | 中文字幕黄色 | 婷婷狠狠操 | 国产1区在线观看 | 香蕉视频国产在线观看 | 91av手机在线| 免费男女羞羞的视频网站中文字幕 | 亚洲性xxxx| 黄色三级在线观看 | 最新国产精品拍自在线播放 | 在线91播放 | 亚洲九九爱 | 精品国产a | 久久久久免费看 | 日韩免费在线观看视频 | 国产一区二区中文字幕 | 国产视频日韩视频欧美视频 | 日韩mv欧美mv国产精品 | 黄色午夜网站 | 婷婷射五月 | 在线免费观看国产视频 | 日韩在线观看高清 | 日本韩国精品在线 | 97超碰人人澡人人爱学生 | 夜夜操天天干 | 国产中文字幕av | 国产精品porn | 日本精品在线视频 | 91精品人成在线观看 | 黄色小网站免费看 | 777xxx欧美| 六月天综合网 | 亚洲黄色免费网站 | 婷婷深爱网 | 日韩视频免费在线 | 欧美日韩精品二区第二页 | 久久99热这里只有精品 | 天天射天天操天天 | 成人黄色片免费 | 日日爽天天爽 | 毛片黄色一级 | 国产亚洲免费的视频看 | 2020天天干天天操 | 国产v在线 | 97国产精品 | 人人草人 | 日韩午夜在线播放 | 中文字幕观看视频 | 国产高清综合 | 99免费看片 | 黄色aa久久 | 国产 日韩 欧美 自拍 | 97精品国自产拍在线观看 | 三级黄色三级 | 国产小视频在线 | 天天射网站 | 成人午夜网| 天天干,天天射,天天操,天天摸 | 亚洲国产成人高清精品 | 欧美激情精品久久久 | 麻豆国产精品视频 | 一区二区中文字幕在线播放 | 操操操人人人 | 日韩免费看片 | 精品av网站 | 91免费看黄色 | av 一区 二区 久久 | 91av在线免费播放 | 激情网五月天 | 精品视频不卡 | 久久亚洲热| 午夜美女wwww | 日日天天狠狠 | 国产免费精彩视频 | 激情伊人五月天 | 欧美午夜精品久久久久久孕妇 | 欧美久久综合 | 国产欧美在线一区二区三区 | 国产精品a成v人在线播放 | 天天操夜夜操天天射 | 超碰在线色 | 日本电影黄色 | 香蕉影院在线播放 | 91桃花视频 | 中文字幕黄色网址 | 2024国产精品视频 | 韩日精品中文字幕 | 国产精品第2页 | 国产精品久久久久久一二三四五 | 久久高清免费观看 | 91成年人在线观看 | 超碰97.com | 久久午夜视频 | 99久久99视频只有精品 | 就要干b| 亚洲精品高清在线 | 欧美成人在线免费 | a级国产片 | 久久久www成人免费精品张筱雨 | 亚洲春色综合另类校园电影 | 国产精品一区二区av麻豆 | 国产大片黄色 | 亚洲国产免费看 | 久久九九精品久久 | 久久视了 | 日韩专区 在线 | 色婷婷av在线 | 日韩极品在线 | 草久视频在线 | 国产日韩欧美在线一区 | 国产精品久久久电影 | 亚洲三级在线播放 | 91一区二区三区久久久久国产乱 | 婷婷九月丁香 | 中文字幕成人 | 国产中文字幕网 | 精品国产一区二区三区在线 | 日本99精品| 国产麻豆视频网站 | 成人久久18免费网站麻豆 | 一区二区三区在线免费 | 久久国产经典视频 | 中文字幕日韩无 | 国产在线观看污片 | 偷拍精品一区二区三区 | 亚洲激情在线 | 91中文字幕| 欧美成年性 | 国产美女视频一区 | 69av在线视频 | 国产精品手机在线 | www.狠狠干 | 国产精品麻豆视频 | 国产精品久久久久久久久久ktv | 中文字幕亚洲国产 | 综合色综合 | 综合网婷婷 | 精品久久久久久综合日本 | 日韩精品视频免费看 | 最近最新中文字幕 | 激情网婷婷 | 18国产精品福利片久久婷 | 久青草电影 | 天堂va欧美va亚洲va老司机 | 一区二区视频播放 | 国产裸体永久免费视频网站 | 天天综合区| 18岁免费看片 | 国产99久久久精品 | 日韩在线视频二区 | 日本中文字幕在线视频 | 中文字幕乱码电影 | 久草视频首页 | 中文字幕乱码电影 | 四虎在线免费观看 | 午夜视频欧美 | 99在线观看 | 亚洲欧美日韩国产一区二区三区 | 九九久久国产精品 | 蜜桃av久久久亚洲精品 | 欧美极品在线播放 | 午夜丁香视频在线观看 | av黄在线播放 | 日日操天天操夜夜操 | 精品久久久久久久久久久久久久久久 | 91免费观看网站 | 日韩中文字幕在线 | 午夜视频一区二区三区 | 在线电影a | av免费在线观看网站 | 亚洲欧美视频网站 | 美女在线黄| 国产成人久久av免费高清密臂 | 婷婷中文字幕 | 国产在线视频一区二区三区 | 操久久网| 国产一级大片在线观看 | 欧美最猛性xxx | 久久色在线播放 | 99这里都是精品 | 色婷婷狠 | www天天干 | 免费观看福利视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 色在线免费观看 | 婷婷av网站 | 国色天香在线 | 免费国产在线视频 | 麻豆你懂的 | 国内小视频在线观看 | 国产精品综合久久久 | 中文字幕乱码日本亚洲一区二区 | 久久国内精品 | 在线观看国产 | 亚洲九九爱| 久久免费毛片视频 | 亚洲视频 视频在线 | 99精品国产亚洲 | 五月婷婷六月丁香在线观看 | 伊人永久在线 | 亚洲男男gaygayxxxgv | 国产黄色片在线免费观看 | 黄色美女免费网站 | av大全免费在线观看 | 国内精品久久天天躁人人爽 | 日韩在线播放视频 | 欧洲精品在线视频 | 日本久久电影 | 日本韩国精品在线 | 久久视频热 | 黄网站大全 | 天天久久综合 | 99在线观看免费视频精品观看 | 久久成人免费视频 | 五月花激情 | 欧美日韩有码 | 精品一区二区三区四区在线 | 欧美国产日韩激情 | 国产成人精品亚洲日本在线观看 | 五月天久久综合 | 日韩欧美在线高清 | 亚洲精品视频中文字幕 | 99国产在线| 日韩精品一区不卡 | 在线看成人av | 综合色亚洲 | 91九色丨porny丨丰满6 | 精品久久91| 久久黄色网址 | 国产中文欧美日韩在线 | 91亚洲在线 | 欧美日韩观看 | 啪啪小视频网站 | 亚洲国产一二三 | 黄污在线观看 | 亚洲电影毛片 | 天堂在线视频免费观看 | 在线电影日韩 | 国产成人一区二区在线观看 | 色综合久久悠悠 | 久草国产在线观看 | 免费看污污视频的网站 | 精品国产91亚洲一区二区三区www | 最新婷婷色 | 69亚洲精品| 日韩黄色免费看 | 国产成人三级三级三级97 | 日韩三级.com | 黄色影院在线免费观看 | av福利在线导航 | 欧美激情在线网站 | 久久99精品久久久久久久久久久久 | 9在线观看免费高清完整 | 在线观看免费观看在线91 | 久久久五月天 | 国产高清视频免费在线观看 | 国产精品毛片一区二区 | 久久久婷 | 色视频网站免费观看 | 国产一二三四在线观看视频 | 久久超| 日韩高清观看 | 天天射天天色天天干 | 人人爽人人乐 | 日本久久高清视频 | 激情导航 | 欧美一级欧美一级 | 久久在线精品视频 | 久久久久久久久久久久影院 | 国产色拍拍拍拍在线精品 | 成人av影视在线 | 日韩在线播放视频 | 精品麻豆 | 精品久久免费看 | 91在线观看视频网站 | 欧美在线18| 91毛片在线观看 | 在线视频亚洲 | 在线一二区 | 天天操夜夜曰 | 国产裸体bbb视频 | 黄色1级毛片 | 麻豆视频在线看 | 中文字幕在线播放视频 | 999国产| 欧美激情视频一区二区三区免费 | 在线 高清 中文字幕 | 国产资源免费在线观看 | 天天综合导航 | 91福利视频免费 | 人人超碰97| 免费视频成人 | 国产一区二区高清视频 | 精品福利国产 | 国产视频一区在线播放 | 人人玩人人添人人澡97 | 日本成人免费在线观看 | 成人免费看视频 | 视频99爱| 久久精品国产免费观看 | 中文字幕一区二区三区四区在线视频 | 337p日本大胆噜噜噜噜 | 国产精品理论片在线观看 | 欧美日韩一区二区三区免费视频 | www.啪啪.com| 在线观看色视频 | 欧美一级在线看 | av在线h| 欧美激情精品久久久久久 | 天天综合网国产 | 国产精品自产拍在线观看蜜 | 日韩av成人在线观看 | 日韩乱理 | 最新av电影网站 | 伊人日日干 | 在线一二区 | 久久免费av电影 | 在线黄网站| 黄色影院在线免费观看 | 91在线porny国产在线看 | 亚洲一区精品二人人爽久久 | 日韩av网站在线播放 | 国产一二三四在线观看视频 | 中文字幕黄色网 | 亚洲女同ⅹxx女同tv | 婷婷精品在线视频 | 午夜手机看片 | 久久午夜网 | 伊人av综合 | 欧美韩日精品 | 久久视频国产精品免费视频在线 | 国产精品va在线观看入 | 狠狠色丁香久久婷婷综合_中 | 99视频在线免费 | 91亚色视频在线观看 | 亚洲精品成人免费 | 日日躁天天躁 | 国产精品高潮呻吟久久久久 | 国产99久久久国产精品免费二区 | 久久成人国产精品免费软件 | 日本黄色免费在线观看 | 正在播放五月婷婷狠狠干 | 天天操网址 | 国产婷婷视频在线 | 九九欧美 | 国产黄色大全 | 中文字幕高清免费日韩视频在线 | 久久久久一区二区三区四区 | 久久久黄色免费网站 | 播五月婷婷 | 日本中文在线观看 | 亚洲狠狠操 | 青青河边草观看完整版高清 | 国产午夜精品一区二区三区嫩草 | 午夜av网站 | 国产美女精品 | 亚洲国产网站 | 亚洲一级黄色片 | 最新午夜 | 欧美a级一区二区 | 免费看日韩片 | 99re热精品视频 | 色哟哟国产精品 | 国内精品久久久久影院优 | 中文字幕专区高清在线观看 | 69视频永久免费观看 | 成人毛片网 | 久久精品香蕉 | 久久新| 欧美久久电影 | 国产精品久久久久久久久久ktv | 国产一级在线免费观看 | av一区二区在线观看中文字幕 | www看片网站 | 国产女做a爱免费视频 | 91香蕉亚洲精品 | 五月花丁香婷婷 | 天天曰夜夜爽 | 久久成 | 天天干天天射天天操 | 免费看日韩 | 国产精品自产拍在线观看网站 | 亚洲人人精品 | 中文字幕在线视频一区二区 | 91视频免费看 | www.国产毛片| 99精品福利视频 | 在线观看视频黄色 | 国产一级电影在线 | 国产黄色片免费观看 | 成人久久视频 | 国产成人在线看 | 国产精品爽爽久久久久久蜜臀 | 日b视频在线观看网址 | 久久99精品视频 | 久草网在线观看 | www.黄色 | 久久夜色精品国产欧美一区麻豆 | 久草新在线 | www.久久久 | 亚洲成人一二三 | 久久久久久久免费看 | 免费av免费观看 | 久久久久女教师免费一区 | 激情五月五月婷婷 | 日韩三级中文字幕 | 99在线观看视频 | 精品在线免费视频 | 国产精品大片免费观看 | 亚洲美女视频在线 | 在线a亚洲视频播放在线观看 | www日韩视频| 亚洲黄色app | 婷婷色综合网 | 成人一级免费电影 | 日韩专区视频 | 中文字幕在线中文 | 日韩中文字幕亚洲一区二区va在线 | 日韩中文字幕亚洲一区二区va在线 | 久草在线免费资源站 | 中文字幕在线免费97 | 日韩久久久| 成人久久 | 日韩欧美在线观看 | 中文字幕一二三区 | 免费视频在线观看网站 | 亚州国产精品 | 天天操天天干天天 | 在线观看的av网站 | 婷婷在线不卡 | av在观看| 不卡电影一区二区三区 | 日本最新中文字幕 | 日韩精品在线看 | 一区二区电影网 | 亚州国产精品视频 | 国产精品 999 | 在线天堂中文www视软件 | 在线va网站 | 免费观看v片在线观看 | av电影免费在线播放 | 中文字幕亚洲精品在线观看 | 伊人影院得得 | 狠狠久久综合 | 久久乐九色婷婷综合色狠狠182 | 一级免费看 | 久久久久久精 | 91精品视频播放 | 人人超碰人人 | 亚洲特级片| 中文字幕资源网在线观看 | 日韩av免费观看网站 | 国产精品成人国产乱 | 91成人蝌蚪 | 最近高清中文字幕 | 国产99免费视频 | 国产免费a | 69精品视频在线观看 | 久久久精选| 久久精品免费 | 国产精品免费观看国产网曝瓜 | 精品国产伦一区二区三区观看说明 | 成人免费视频播放 | 黄色a大片 | 亚欧日韩av| 国产精品系列在线 | 伊人国产在线播放 | 国产黄色大全 | av片中文 | 正在播放国产精品 | 69久久久| 国内精品久久久久久久久久 | 美女视频一区二区 | 日韩影视精品 | 久久免费的精品国产v∧ | 天天插天天爱 | 在线日韩视频 | 在线看一区 | 日韩av伦理片 | 婷婷综合久久 | 天天射天 | 久久五月情影视 | 国产福利电影网址 | 精品视频在线观看 | av线上免费看 | 成人免费看片98欧美 | avwww在线观看 | 特级西西444www大胆高清无视频 | 亚洲精品午夜国产va久久成人 | 欧美日韩国产页 | 国产视频999 | 国产精品国产毛片 | 久久伊人综合 | 天天干天天拍天天操天天拍 | 亚洲国产激情 | 麻豆一精品传二传媒短视频 | 黄色网址在线播放 | 国产99久久久久久免费看 | 国产精品毛片完整版 | 国内成人综合 | 丰满少妇在线 | 中文字幕有码在线播放 | 日韩激情影院 | 国产91在线 | 美洲 | 999在线观看视频 | 青青河边草观看完整版高清 | 国产成人亚洲精品自产在线 | 香蕉久草在线 | 在线观看91精品视频 | 成人精品视频久久久久 | 国产精品高清在线观看 | 欧美国产日韩久久 | 国产精品久久久久久久毛片 | 亚洲精品高清在线观看 | 成人在线观看你懂的 | 精品国产色| 少妇搡bbbb搡bbb搡忠贞 | 激情伊人五月天 | 免费看片网址 | 日本论理电影 | 国产精品av免费在线观看 | 国产精品视频专区 | 欧美孕妇视频 | 国模视频一区二区三区 | 青青河边草观看完整版高清 | 精品免费观看视频 | 国产香蕉97碰碰碰视频在线观看 | 视频一区二区三区视频 | 免费在线观看av片 | 久久免费成人精品视频 | 婷婷在线观看视频 | 99视频免费 | 日韩欧美一区视频 | 探花视频免费观看高清视频 | 久久爽久久爽久久av东京爽 | 综合久久久 | 91九色蝌蚪国产 | 国产精品久久一 | 免费看一级片 | 久久久国产精品一区二区三区 | 波多野结衣电影一区 | 久久毛片网站 | 婷婷综合 | 麻豆视频大全 | 91探花在线视频 | 天天操天天舔天天爽 | 日韩中文字幕免费 | 日日夜夜精品视频 | 五月婷婷视频在线 | 久草视频在线免费看 | 免费黄色网址网站 | 91在线国产观看 | 免费在线观看成人小视频 | 久久久久久久久久久久av | 国产精品高清免费在线观看 | 草久久久| 国产亚洲精品女人久久久久久 | 亚洲视频2 | 欧美色综合天天久久综合精品 | 精品免费视频. | 色综合久久久久综合体桃花网 | 国产91综合一区在线观看 | 色综合久久五月天 | 国产一级在线观看 | 久久综合九色综合97_ 久久久 | 欧美一区二区三区四区夜夜大片 | 国产成人一区二区三区影院在线 | 在线观看国产一区二区 | 婷婷丁香狠狠爱 | 亚洲另类视频在线 | 黄色视屏在线免费观看 | 西西人体4444www高清视频 | 亚洲综合国产精品 | www色网站| 成人午夜剧场在线观看 | 最新成人在线 | 美女视频黄,久久 | 毛片无卡免费无播放器 | 日韩免费在线看 | 美女网站黄在线观看 | 亚洲欧美日韩国产 | 97爱 | 91成人精品一区在线播放69 | 成人欧美一区二区三区黑人麻豆 | 精品亚洲午夜久久久久91 | 精品1区2区3区 | 日韩一区二区三区高清在线观看 | 你操综合| 91视频在线自拍 | 色天堂在线视频 | 中文字幕乱码日本亚洲一区二区 | 天堂av在线网 | 久久亚洲影院 | 婷婷成人亚洲综合国产xv88 | 欧美日韩国产在线观看 | 亚洲情影院 | 久久精品久久综合 | 又黄又爽又刺激 | 日韩在线观看第一页 | a黄色影院 | 狠狠狠狠狠狠天天爱 | 免费观看黄色av | 国产中文欧美日韩在线 | 日本女人逼 | 日本精品视频一区 | 国产视频精品久久 | 久久精品一区二区三区国产主播 | 美女视频久久 | 69视频永久免费观看 | 国产精品地址 | 91亚洲国产成人久久精品网站 | 久久久久亚洲国产精品 | 日韩一区二区三区不卡 | 日本黄色大片免费 | 草久视频在线观看 | 久久精品三级 | 国产精品久久久久高潮 | 日韩在线观看不卡 | 五月亚洲婷婷 | 在线观看视频中文字幕 | 中文字幕一区二区三区久久蜜桃 | 黄色在线免费观看网址 | 丁香五月亚洲综合在线 | 国产综合精品久久 | 成年人在线视频观看 | 国产精品一区二区无线 | 三级黄免费看 | av在线免费网站 | 色偷偷男人的天堂av | 中文字幕在线资源 | 亚洲综合成人在线 | 国产成人三级一区二区在线观看一 | 久久精品9| 精一区二区 | 午夜av免费 | 国产精品二区在线观看 | av超碰在线 | 国产精品久久久久久久av电影 | 成年人黄色大全 | 久久av观看| 91污污视频在线观看 | 精品一区在线 | 国产成人一区二区三区影院在线 | 中文字幕免费不卡视频 | 亚洲精品在线一区二区 | 国产精品麻豆99久久久久久 | 亚洲精品无 | 一区二区三区四区精品 | 亚洲国产美女精品久久久久∴ | 91在线日韩 | 成年人在线看片 | av免费看电影 | 欧美一区日韩一区 | 中国一 片免费观看 | 一本一道久久a久久精品 | 亚洲精品黄色在线观看 | 亚洲国产日韩欧美在线 | 国产精品精品久久久久久 | 亚洲资源网 | 91九色最新地址 | 日本黄色特级片 | 91成人精品国产刺激国语对白 | а天堂中文最新一区二区三区 | 国产中文字幕国产 | 草在线视频 | 天天操天天操天天操天天 | 日本久久免费电影 | 国产成人精品一区二区在线观看 | 亚洲免费a| 日韩毛片在线免费观看 | 9999免费视频| 亚洲乱码在线观看 | 男女激情网址 | 97精品在线 | 成人免费中文字幕 | 国内精品久久影院 | 四虎在线免费视频 | 国产精品一区二区三区视频免费 | 国产精品成人国产乱 | 国产亚洲精品久久久久久久久久 | 99欧美精品 | 免费精品久久久 | 久久一区二区三区国产精品 | 国产精品一级在线 | 麻豆免费视频网站 | 天天操夜夜摸 | 亚洲精品美女在线观看播放 | 日本久久免费电影 | 日韩在线观看视频中文字幕 | 久久精品视频国产 | 超碰人在线 | 黄色软件在线观看 | 最新中文字幕 | 成人免费在线视频观看 | 99精品在线视频播放 | 日韩精品黄 | 欧日韩在线视频 | 四虎影视久久久 | 国内久久久久久 | 樱空桃av | 91九色精品女同系列 | 麻豆91精品91久久久 | 午夜av色| 国产日韩欧美在线播放 | 伊人网综合在线观看 | www一起操| 精品一区二区在线免费观看 | 中文字幕人成乱码在线观看 | 亚洲黄色av一区 | 日韩免费电影在线观看 | 国产色视频网站 | 日韩av电影免费在线观看 | 五月婷婷深开心 | 日本久久精品 | 91在线91拍拍在线91 | 国产中文字幕91 | 中文字幕精品一区久久久久 | 久久99精品久久久久久 | 最近中文字幕在线播放 | 天天干天天做天天操 | 午夜 免费 | 麻豆一区二区 | 亚洲成人第一区 | 久久精品一区 | 午夜精品剧场 | 福利视频一区二区 | 97视频人人澡人人爽 | 在线视频久 | 五月婷婷激情六月 | 精品视频一区在线观看 | 黄色毛片在线看 | 99看视频在线观看 | 精品亚洲成a人在线观看 | 超碰在线观看av.com | 麻豆成人精品视频 | 欧美va天堂va视频va在线 | 天天综合中文 | 国产一区二区久久精品 | 国内精品久久久久影院一蜜桃 | 在线黄色av电影 | 亚洲视频免费在线观看 | 久久人人爽人人爽人人片av软件 | 久久综合综合久久综合 | 国产成人三级三级三级97 | 在线观看激情av |