Linux設備樹的概念

原創 專注于無線通信的蓬勃 2023-01-19 14:31

一.設備樹概念以及作用

1.設備樹概念

設備樹(Device Tree),將這個詞分開就是“設備”和“樹”,描述設備樹的文件叫做 DTS(DeviceTree Source),這個 DTS 文件采用樹形結構描述板級設備,也就是開發板上的設備信息,比如CPU 數量、 內存基地址、 IIC 接口上接了哪些設備、 SPI 接口上接了哪些設備等等,如圖 所示:

在圖中,樹的主干就是系統總線, IIC 控制器、 GPIO 控制器、 SPI 控制器等都是接到系統主線上的分支。IIC 控制器有分為 IIC1 和 IIC2 兩種,其中 IIC1 上接了 FT5206 和 AT24C02這兩個 IIC 設備, IIC2 上只接了 MPU6050 這個設備。 DTS 文件的主要功能就是按照圖所示的結構來描述板子上的設備信息, DTS 文件描述設備信息是有相應的語法規則要求的,稍后我們會詳細的講解 DTS 語法規則。

2.設備樹引用以及概念

以LED驅動為例,如果你要更換LED所用的GPIO引腳,需要修改驅動程序源碼、重新編譯驅動、重新加載驅動。

在內核中,使用同一個芯片的板子,它們所用的外設資源不一樣,比如A板用GPIO A,B板用GPIO B。而GPIO的驅動程序既支持GPIO A也支持GPIO B,你需要指定使用哪一個引腳,怎么指定?在c代碼中指定。

隨著ARM芯片的流行,內核中針對這些ARM板保存有大量的、沒有技術含量的文件。

Linus大發雷霆:"this whole ARM thing is a f*cking pain in the ass"。

于是,Linux內核開始引入設備樹。設備樹并不是重新發明出來的,在Linux內核中其他平臺如PowerPC,早就使用設備樹來描述硬件了。

Linus發火之后,內核開始全面使用設備樹來改造,神人就神人。

/sys/firmware/devicetree目錄下是以目錄結構程現的dtb文件, 根節點對應base目錄, 每一個節點對應一個目錄, 每一個屬性對應一個文件。

這些屬性的值如果是字符串,可以用cat命令把它打印出來;對于數值,可以用hexdump把它打印出來。

一個單板啟動時,u-boot先運行,它的作用是啟動內核。U-boot會把內核和設備樹文件都讀入內存,然后啟動內核。在啟動內核時會把設備樹在內存中的地址告訴內核。

3.設備樹的名詞(DTS.DTB.DTC.DTSI)關系

設備樹源文件擴展名為.dts,但是我們在前面移植 Linux 的時候卻一直在使用.dtb 文件,那么 DTS 和 DTB 這兩個文件是什么關系呢? DTS 是設備樹源碼文件, DTB 是將DTS 編譯以后得到的二進制文件。將.c 文件編譯為.o 需要用到 gcc 編譯器,那么將.dts 編譯為.dtb需要什么工具呢?需要用到 DTC 工具! DTC 工具源碼在 Linux 內核的 scripts/dtc 目錄下.另外dtsi就相當于C語言的.h文件的概念!

二.設備樹語法

1.Device格式

1.1 DTS文件格式

/dts-v1/;                // 表示版本
[memory reservations]    // 格式為: /memreserve/ <address> <length>;
/ {
    [property definitions]
    [child nodes]
};

1.2 node格式

設備樹中的基本單元,被稱為“node”,其格式為:

[label:] node-name[@unit-address] {
    [properties definitions]
    [child nodes]
};

label是標號,可以省略。label的作用是為了方便地引用node,比如:

/dts-v1/;
/ {
    uart0: uart@fe001000 {
        compatible="ns16550";
        reg=<0xfe001000 0x100>;
    };
};

可以使用下面2種方法來修改uart@fe001000這個node:

// 在根節點之外使用label引用node:
&uart0 {
    status = “disabled”;
};
//在根節點之外使用全路徑:
&{/uart@fe001000}  {
    status = “disabled”;
};

2.常用屬性(properties)

簡單地說,properties就是“name=value”,value有多種取值方式。

Property格式1:

[label:] property-name = value;

Property格式2(沒有值):

[label:] property-name;

Property取值只有3種:

arrays of cells(1個或多個32位數據, 64位數據使用2個32位數據表示), 
string(字符串), 
bytestring(1個或多個字節)

2.1 #address-cells、#size-cells

cell指一個32位的數值,

address-cells:address要用多少個32位數來表示;

size-cells:size要用多少個32位數來表示。

比如一段內存,怎么描述它的起始地址和大小?

下例中,address-cells為1,所以reg中用1個數來表示地址,即用0x80000000來表示地址;size-cells為1,所以reg中用1個數來表示大小,即用0x20000000表示大小:

/ {
#address-cells = <1>;
#size-cells = <1>;
memory {
reg = <0x80000000 0x20000000>;
    };
};

2.2 compatible

“compatible”表示“兼容”,對于某個LED,內核中可能有A、B、C三個驅動都支持它,可以這樣寫:

led {
compatible = “A”, “B”, “C”;
};

內核啟動時,就會為這個LED按這樣的優先順序為它找到驅動程序:A、B、C。

根節點下也有compatible屬性,用來選擇哪一個“machine desc”:一個內核可以支持machine A,也支持machine B,內核啟動后會根據根節點的compatible屬性找到對應的machine desc結構體,執行其中的初始化函數。

compatible的值,建議取這樣的形式:"manufacturer,model",即“廠家名,模塊名”。

比如:compatible = "fsl,imx6ull-gpmi-nand", "fsl, imx6ul-gpmi-nand";

注意:machine desc的意思就是“機器描述”,學到內核啟動流程時才涉及。

2.3 model

model屬性與compatible屬性有些類似,但是有差別。

compatible屬性是一個字符串列表,表示可以你的硬件兼容A、B、C等驅動;

model用來準確地定義這個硬件是什么。

比如根節點中可以這樣寫:

/ {
    compatible = "samsung,smdk2440", "samsung,mini2440";
    model = "jz2440_v3";
};

它表示這個單板,可以兼容內核中的“smdk2440”,也兼容“mini2440”。

從compatible屬性中可以知道它兼容哪些板,但是它到底是什么板?用model屬性來明確。

2.4 status

dtsi文件中定義了很多設備,但是在你的板子上某些設備是沒有的。這時你可以給這個設備節點添加一個status屬性,設置為“disabled”:

2.5 reg

reg的本意是register,用來表示寄存器地址。

但是在設備樹里,它可以用來描述一段空間。反正對于ARM系統,寄存器和內存是統一編址的,即訪問寄存器時用某塊地址,訪問內存時用某塊地址,在訪問方法上沒有區別。

reg屬性的值,是一系列的“address size”,用多少個32位的數來表示address和size,由其父節點的#address-cells、#size-cells決定。

示例:

/dts-v1/;
/ {
#address-cells = <1>;
#size-cells = <1>; 
memory {
reg = <0x80000000 0x20000000>;
};
};

2.6 name(過時了,建議不用)

它的值是字符串,用來表示節點的名字。在跟platform_driver匹配時,優先級最低。

compatible屬性在匹配過程中,優先級最高。

2.7 device_type(過時了,建議不用)

它的值是字符串,用來表示節點的類型。在跟platform_driver匹配時,優先級為中。

compatible屬性在匹配過程中,優先級最高。

3.常用節點

3.1 跟節點

dts文件中必須有一個根節點:

/dts-v1/;
/ {
model = "SMDK24440";
compatible = "samsung,smdk2440";

#address-cells = <1>;
#size-cells = <1>; 
};

根節點中必須有這些屬性:

#address-cells // 在它的子節點的reg屬性中, 使用多少個u32整數來描述地址(address)
#size-cells   // 在它的子節點的reg屬性中, 使用多少個u32整數來描述大小(size)
compatible   // 定義一系列的字符串, 用來指定內核中哪個machine_desc可以支持本設備
            // 即這個板子兼容哪些平臺 
            // uImage : smdk2410 smdk2440 mini2440     ==> machine_desc         
                 
model       // 咱這個板子是什么
            // 比如有2款板子配置基本一致, 它們的compatible是一樣的
            // 那么就通過model來分辨這2款板子

3.2 CPU節點

一般不需要我們設置,在dtsi文件中都定義好了:

cpus {
        #address-cells = <1>;
        #size-cells = <0>;

        cpu0: cpu@0 {
            .......
        }
};

3.3 memory節點

芯片廠家不可能事先確定你的板子使用多大的內存,所以memory節點需要板廠設置,比如:

memory {
reg = <0x80000000 0x20000000>;
};

3.4 chosen節點

我們可以通過設備樹文件給內核傳入一些參數,這要在chosen節點中設置bootargs屬性:

chosen {
bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
};

3.5 aliases 子節點

單詞 aliases 的意思是“別名”,因此 aliases 節點的主要功能就是定義別名,定義別名的目的就是為了方便訪問節點。不過我們一般會在節點命名的時候會加上 label,然后通過&label來訪問節點,這樣也很方便,而且設備樹里面大量的使用&label 的形式來訪問節點。

打開 imx6ull.dtsi 文件, aliases 節點內容如下所示:

aliases {
 can0 = &flexcan1;
 can1 = &flexcan2;
 ethernet0 = &fec1;
 ethernet1 = &fec2;
 gpio0 = &gpio1;
 gpio1 = &gpio2;
....
 spi0 = &ecspi1;
 spi1 = &ecspi2;
 spi2 = &ecspi3;
 spi3 = &ecspi4;
 usbphy0 = &usbphy1;
 usbphy1 = &usbphy2;
};

三.設備樹使用

1.編譯設備樹

make dtbs

2.開發板使用設備樹

我們來修改下一個設備樹,在跟節點中增加一個測試節點

2.1 測試節點編寫

2.2 編譯dtbs

2.3 通過配置tftp boot

bootcmd以及bootargs配置為

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000
imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;
saveenv

3.板子啟動后查看設備樹信息

四.內核操作設備樹的函數

設備樹描述了設備的詳細信息,這些信息包括數字類型的、字符串類型的、數組類型的,我們在編寫驅動的時候需要獲取到這些信息。比如設備樹使用 reg 屬性描述了某個外設的寄存器地址為 0X02005482,長度為 0X400,我們在編寫驅動的時候需要獲取到 reg 屬性的 0X02005482 和 0X400 這兩個值,然后初始化外設。 Linux 內核給我們提供了一系列的函數來獲取設備樹中的節點或者屬性信息,這一系列的函數都有一個統一的前綴“of_”,所以在很多資料里面也被叫做 OF 函數。這些 OF 函數原型都定義在 include/linux/of.h 文件中。

1.查找節點的 OF 函數

設備都是以節點的形式“掛”到設備樹上的,因此要想獲取這個設備的其他屬性信息,必須先獲取到這個設備的節點。 Linux 內核使用 device_node 結構體來描述一個節點,此結構體定義在文件 include/linux/of.h 中,定義如下:

 struct device_node {
    const char *name;                    /* 節點名字 */
    const char *type;                    /* 設備類型 */
    phandle phandle;
    const char *full_name;                /* 節點全名 */
    struct fwnode_handle fwnode;

    struct    property *properties;        /* 屬性 */
    struct    property *deadprops;        /* removed 屬性 */
    struct    device_node *parent;        /* 父節點 */
    struct    device_node *child;            /* 子節點 */
    struct    device_node *sibling;
    struct    kobject kobj;
    unsigned long _flags;
    void    *data;
#if defined(CONFIG_SPARC)
    const char *path_component_name;
    unsigned int unique_id;
    struct of_irq_controller *irq_trans;
#endif
};

與查找節點有關的 OF 函數有 5 個,我們依次來看一下。

1.1 of_find_node_by_name 函數

of_find_node_by_name 函數通過節點名字查找指定的節點,函數原型如下:

struct device_node *of_find_node_by_name(struct device_node *from,const char *name);

from:開始查找的節點,如果為 NULL 表示從根節點開始查找整個設備樹。

name:要查找的節點名字。

返回值: 找到的節點,如果為 NULL 表示查找失敗。

1.2 of_find_node_by_type 函數

of_find_node_by_type 函數通過 device_type 屬性查找指定的節點,函數原型如下:

struct device_node *of_find_node_by_type(struct device_node *from, const char *type)

from:開始查找的節點,如果為 NULL 表示從根節點開始查找整個設備樹。

type:要查找的節點對應的 type 字符串,也就是 device_type 屬性值。

返回值: 找到的節點,如果為 NULL 表示查找失敗。

1.3 of_find_compatible_node 函數

of_find_compatible_node 函數根據 device_type 和 compatible 這兩個屬性查找指定的節點,

函數原型如下:

struct device_node *of_find_compatible_node(struct device_node *from,
                                            const char *type,
                                            const char *compatible)

from:開始查找的節點,如果為 NULL 表示從根節點開始查找整個設備樹。

type:要查找的節點對應的 type 字符串,也就是 device_type 屬性值,可以為 NULL,表示

忽略掉 device_type 屬性。

compatible: 要查找的節點所對應的 compatible 屬性列表。

返回值: 找到的節點,如果為 NULL 表示查找失敗

1.4 of_find_matching_node_and_match 函數

of_find_matching_node_and_match 函數通過 of_device_id 匹配表來查找指定的節點,函數原

型如下:

struct device_node *of_find_matching_node_and_match(struct device_node *from,
                                                    const struct of_device_id *matches,
                                                    const struct of_device_id **match)

from:開始查找的節點,如果為 NULL 表示從根節點開始查找整個設備樹。

matches: of_device_id 匹配表,也就是在此匹配表里面查找節點。

match: 找到的匹配的 of_device_id。

返回值: 找到的節點,如果為 NULL 表示查找失敗

1.5 of_find_node_by_path 函數

of_find_node_by_path 函數通過路徑來查找指定的節點,函數原型如下:

inline struct device_node *of_find_node_by_path(const char *path)

path:帶有全路徑的節點名,可以使用節點的別名,比如“/backlight”就是 backlight 這個

節點的全路徑。

返回值: 找到的節點,如果為 NULL 表示查找失敗

2.查找父/子節點的 OF 函數

Linux 內核提供了幾個查找節點對應的父節點或子節點的 OF 函數,我們依次來看一下。

2.1 of_get_parent 函數

of_get_parent 函數用于獲取指定節點的父節點(如果有父節點的話),函數原型如下:

struct device_node *of_get_parent(const struct device_node *node)

node:要查找的父節點的節點。

返回值: 找到的父節點。

2.2 of_get_next_child 函數

of_get_next_child 函數用迭代的查找子節點,函數原型如下:

struct device_node *of_get_next_child(const struct device_node *node,
                                    struct device_node *prev)

node:父節點。

prev:前一個子節點,也就是從哪一個子節點開始迭代的查找下一個子節點。可以設置為

NULL,表示從第一個子節點開始。

返回值: 找到的下一個子節點。

3. 提取屬性值的 OF 函數

節點的屬性信息里面保存了驅動所需要的內容,因此對于屬性值的提取非常重要, Linux 內核中使用結構體 property 表示屬性,此結構體同樣定義在文件 include/linux/of.h 中,內容如下:

struct property {
    char    *name;                /* 屬性名字 */
    int    length;                    /* 屬性長度 */
    void    *value;                /* 屬性值 */
    struct property *next;        /* 下一個屬性 */
    unsigned long _flags;
    unsigned int unique_id;
    struct bin_attribute attr;
};

Linux 內核也提供了提取屬性值的 OF 函數,我們依次來看一下

3.1 of_find_property 函數

of_find_property 函數用于查找指定的屬性,函數原型如下

property *of_find_property(const struct device_node *np,
                            const char *name,
                            int *lenp)

np:設備節點。

name: 屬性名字。

lenp:屬性值的字節數

返回值: 找到的屬性

3.2 of_property_count_elems_of_size 函數

of_property_count_elems_of_size 函數用于獲取屬性中元素的數量,比如 reg 屬性值是一個

數組,那么使用此函數可以獲取到這個數組的大小,此函數原型如下:

int of_property_count_elems_of_size(const struct device_node *np,
                                    const char *propname,
                                    int elem_size)

np:設備節點。

proname: 需要統計元素數量的屬性名字。

elem_size:元素長度。

返回值: 得到的屬性元素數量。

3.3 of_property_read_u32_index 函數

of_property_read_u32_index 函數用于從屬性中獲取指定標號的 u32 類型數據值(無符號 32位),比如某個屬性有多個 u32 類型的值,那么就可以使用此函數來獲取指定標號的數據值,此函數原型如下:

int of_property_read_u32_index(const struct device_node *np,
                                const char *propname,
                                u32 index,
                                u32 *out_value)

np:設備節點。

proname: 要讀取的屬性名字。

index:要讀取的值標號。

out_value:讀取到的值

返回值: 0 讀取成功,負值,讀取失敗, -EINVAL 表示屬性不存在, -ENODATA 表示沒有

要讀取的數據, -EOVERFLOW 表示屬性值列表太小。

3.4 of_property_read_u8_array 函數

of_property_read_u16_array 函數

of_property_read_u32_array 函數

of_property_read_u64_array 函數

這 4 個函數分別是讀取屬性中 u8、 u16、 u32 和 u64 類型的數組數據,比如大多數的 reg 屬性都是數組數據,可以使用這 4 個函數一次讀取出 reg 屬性中的所有數據。這四個函數的原型如下:

int of_property_read_u8_array(const struct device_node *np,
                                const char *propname,
                                u8 *out_values,
                                size_t sz)
int of_property_read_u16_array(const struct device_node *np,
                                const char *propname,
                                u16 *out_values,
                                size_t sz)
int of_property_read_u32_array(const struct device_node *np,
                                const char *propname,
                                u32 *out_values,
                                size_t sz)
int of_property_read_u64_array(const struct device_node *np,
                                const char *propname,
                                u64 *out_values,
                                size_t sz)
np:設備節點。

proname: 要讀取的屬性名字。

out_value:讀取到的數組值,分別為 u8、 u16、 u32 和 u64。

sz: 要讀取的數組元素數量。

返回值: 0,讀取成功,負值,讀取失敗, -EINVAL 表示屬性不存在, -ENODATA 表示沒

有要讀取的數據, -EOVERFLOW 表示屬性值列表太小。

3.5 of_property_read_u8 函數

of_property_read_u16 函數

of_property_read_u32 函數

of_property_read_u64 函數

有些屬性只有一個整形值,這四個函數就是用于讀取這種只有一個整形值的屬性,分別用于讀取 u8、 u16、 u32 和 u64 類型屬性值,函數原型如下:

int of_property_read_u8(const struct device_node *np,
                        const char *propname,
                        u8 *out_value)
int of_property_read_u16(const struct device_node *np,
                        const char *propname,
                        u16 *out_value)
int of_property_read_u32(const struct device_node *np,
                        const char *propname,
                        u32 *out_value)
int of_property_read_u64(const struct device_node *np,
                        const char *propname,
                        u64 *out_value)

np:設備節點。

proname: 要讀取的屬性名字。

out_value:讀取到的數組值。

返回值: 0,讀取成功,負值,讀取失敗, -EINVAL 表示屬性不存在, -ENODATA 表示沒

有要讀取的數據, -EOVERFLOW 表示屬性值列表太小。

3.6 of_property_read_string 函數

of_property_read_string 函數用于讀取屬性中字符串值,函數原型如下

 int of_property_read_string(struct device_node *np,
                            const char *propname,
                            const char **out_string)

np:設備節點。

proname: 要讀取的屬性名字。

out_string:讀取到的字符串值。

返回值: 0,讀取成功,負值,讀取失敗。

3.7 of_n_addr_cells 函數

of_n_addr_cells 函數用于獲取#address-cells 屬性值,函數原型如下:

int of_n_addr_cells(struct device_node *np) 

函數參數和返回值含義如下:

np:設備節點。

返回值: 獲取到的#address-cells 屬性值。

3.8 of_n_size_cells 函數

of_size_cells 函數用于獲取#size-cells 屬性值,函數原型如下:

int of_n_size_cells(struct device_node *np)

函數參數和返回值含義如下:

np:設備節點。

返回值: 獲取到的#size-cells 屬性值。

4.其他常用的of函數

4.1 of_device_is_compatible 函數

of_device_is_compatible 函數用于查看節點的 compatible 屬性是否有包含 compat 指定的字

符串,也就是檢查設備節點的兼容性,函數原型如下:

int of_device_is_compatible(const struct device_node *device,
                            const char *compat)

device:設備節點。

compat:要查看的字符串。

返回值: 0,節點的 compatible 屬性中不包含 compat 指定的字符串; 正數,節點的 compatible

屬性中包含 compat 指定的字符串

4.2 of_get_address 函數

of_get_address 函數用于獲取地址相關屬性,主要是“reg”或者“assigned-addresses”屬性

值,函數屬性如下:

const __be32 *of_get_address(struct device_node *dev,
                            int index,
                            u64 *size,
                            unsigned int *flags)

dev:設備節點。

index: 要讀取的地址標號。

size:地址長度。

flags:參數,比如 IORESOURCE_IO、 IORESOURCE_MEM 等

返回值: 讀取到的地址數據首地址,為 NULL 的話表示讀取失敗

4.3 of_translate_address 函數

of_translate_address 函數負責將從設備樹讀取到的地址轉換為物理地址,函數原型如下

u64 of_translate_address(struct device_node *dev,
                        const __be32 *in_addr)

dev:設備節點。

in_addr:要轉換的地址。

返回值: 得到的物理地址,如果為 OF_BAD_ADDR 的話表示轉換失敗。

4.4 of_address_to_resource 函數

IIC、 SPI、 GPIO 等這些外設都有對應的寄存器,這些寄存器其實就是一組內存空間, Linux內核使用 resource 結構體來描述一段內存空間,“resource”翻譯出來就是“資源”,因此用 resource結構體描述的都是設備資源信息, resource 結構體定義在文件 include/linux/ioport.h 中,定義如下:

struct resource {
    resource_size_t start;
    resource_size_t end;
    const char *name;
    unsigned long flags;
    struct resource *parent, *sibling, *child;
};

對于 32 位的 SOC 來說, resource_size_t 是 u32 類型的。其中 start 表示開始地址, end 表示

結束地址, name 是這個資源的名字, flags 是資源標志位,一般表示資源類型,可選的資源標志

定義在文件 include/linux/ioport.h 中,如下所示:

#define IORESOURCE_BITS 0x000000ff
#define IORESOURCE_TYPE_BITS 0x00001f00
#define IORESOURCE_IO 0x00000100
#define IORESOURCE_MEM 0x00000200
#define IORESOURCE_REG 0x00000300
#define IORESOURCE_IRQ 0x00000400
#define IORESOURCE_DMA 0x00000800
#define IORESOURCE_BUS 0x00001000
#define IORESOURCE_PREFETCH 0x00002000
#define IORESOURCE_READONLY 0x00004000
#define IORESOURCE_CACHEABLE 0x00008000
#define IORESOURCE_RANGELENGTH 0x00010000
#define IORESOURCE_SHADOWABLE 0x00020000
#define IORESOURCE_SIZEALIGN 0x00040000
#define IORESOURCE_STARTALIGN 0x00080000
#define IORESOURCE_MEM_64 0x00100000
#define IORESOURCE_WINDOW 0x00200000
#define IORESOURCE_MUXED 0x00400000
#define IORESOURCE_EXCLUSIVE 0x08000000
#define IORESOURCE_DISABLED 0x10000000
#define IORESOURCE_UNSET 0x20000000
#define IORESOURCE_AUTO 0x40000000
#define IORESOURCE_BUSY 0x80000000

大 家 一 般 最 常 見 的 資 源 標 志 就 是 IORESOURCE_MEM 、 IORESOURCE_REG 和IORESOURCE_IRQ 等。接下來我們回到 of_address_to_resource 函數,此函數看名字像是從設備樹里面提取資源值,但是本質上就是將 reg 屬性值,然后將其轉換為 resource 結構體類型,函數原型如下所示

int of_address_to_resource(struct device_node *dev,
                        int index,
                        struct resource *r)

dev:設備節點。

index:地址資源標號。

r:得到的 resource 類型的資源值。

返回值: 0,成功;負值,失敗。

4.5 of_iomap 函數

of_iomap 函數用于直接內存映射,以前我們會通過 ioremap 函數來完成物理地址到虛擬地址的映射,采用設備樹以后就可以直接通過 of_iomap 函數來獲取內存地址所對應的虛擬地址,不需要使用 ioremap 函數了。當然了,你也可以使用 ioremap 函數來完成物理地址到虛擬地址的內存映射,只是在采用設備樹以后,大部分的驅動都使用 of_iomap 函數了。 of_iomap 函數本質上也是將 reg 屬性中地址信息轉換為虛擬地址,如果 reg 屬性有多段的話,可以通過 index 參數指定要完成內存映射的是哪一段, of_iomap 函數原型如下:

void __iomem *of_iomap(struct device_node *np,
                        int index)

np:設備節點。

index: reg 屬性中要完成內存映射的段,如果 reg 屬性只有一段的話 index 就設置為 0。

返回值: 經過內存映射后的虛擬內存首地址,如果為 NULL 的話表示內存映射失敗。

專注于無線通信的蓬勃 朝氣蓬勃——不積跬步 無以至千里, 不積小流 無以成江海
評論
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 518瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 177瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 357瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 147639瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 196658瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128907瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 412瀏覽
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 306瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 345瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128660瀏覽
  • 摘要防爆自控系統同時布設本安信號、工業總線、動力供電三類線路,僅依靠標識標牌管控插接極易出現人為錯插問題,高壓動力回路竄入本安弱電回路會突破安全柵限能標準,產生點火風險。依托 A、D、K 標準化機械防呆編碼體系,搭配護套顏色區分管理,適配 3 針 3 孔免焊接冷壓增安型防爆航插、5PIN 總線防爆航空插頭、8 芯焊接防爆法蘭插座的選型使用,從物理結構層面杜絕防爆接近開關連接器、防爆傳感器航插接頭混用插接問題,補齊防爆系統被動安全防護體系。關鍵詞圓形防爆連接器,防呆編碼防爆航插,防爆航空插頭,防爆
    kyfbest科迎法電氣 2026-07-31 18:29 419瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 我是乡巴佬| 赖猫的狮子倒影免费观看| 白峰电影高清无广告看| 高清《最强大脑 第十三季》| 尸家重地电影| 美国电视剧禁忌第三季| 沈腾回应生病传闻| 漂亮妈妈中字开头7个字| 杨贵妃传| 惊变电影未删减版免费观看| 浪漫人生| 巴黎烟云在线观看完整免费高清原声| 甲壳虫汁| 巜变态性刑房3| 峰爆电影在线观看完整版| 巨茎挻进李淑芬视频| 地球脸红了| 童军手册之僵尸启示录无删减| 我要爸爸播种子电影在线观看| 末路电视剧| 巨茎挺进李淑芬的体| 绝对权势电影| 张惠妹演唱会下载| 《恶魔之吻》日剧免费观看| 十六岁1974美国原版| 我想进你的花园第三季| 深夜航班 第二季电视剧| 安斋拉拉爱情电影网| 爱意成碑短剧免费观看全集| 电视剧铁血壮士全集| 《善良的妻子》| 电影思念爱完整版| 坎贝尔《无憾》| 新醉打金枝优酷| 台湾电影黛比系列之女家教在线观看| 《即兴卧底》| 韩版纸钞屋| 非常突然在线观看| 冥王神话18| 私人航空电影法国在线观看| 24小时在线观看免费播放电视剧| 越南姑娘500元排毒的电影| 爱有来生 电影| 归路全集免费观看| 夜半梳头中的黄段开头| 年轻的妈妈免费| 卖房子的女销售员| 中国家庭第二部全集| 30分钟高清插曲播放大全| 樱桃红袖珍妈妈全集| 谢孟伟《无主之城》在线观看| 人间中毒在线观看完整版爱| 行尸走肉第四季全集| 《外卖员的艳遇》| 国产未发育的学生洗澡电影| 爸爸的种子高清免费版电视剧混乱公交车 | 善良的保姆在线观看| 人肉玩具姚乐怡| 城中之城电视剧在线播放免费观看| 美味快递员特殊待遇免费版 | 交换上司的秘书免费看| 爸爸播种电影免费观看高清版 | 黯夜守护者| 尚格云顿电影大全| 生活妆画法| 君临天下之血溅太和殿| 母子情仇下载| 法国版《女超人:麦乐迪》在线| 隔壁的女孩3在线观看| 家庭矛盾4麦乐迪在线| 百度战曲| 《我的漂亮瘦子》| 暗花国语| 谍影电视剧全集免费播放| 微微一笑很倾城30集全集| 离人心上免费观看全集| 捏橘子游戏| 天罚电视剧在线观看完整版| 美味快递员特殊待遇免费版| 监狱学园动漫全集观看| 妻子6免费完整版| 水手服饲育| 纱荣子维修工的艳遇| 日剧second love| 战狼6免费高清999加拿大版在线观看| 斗罗大陆双神战双神导演剪辑版| 新潘金莲在线观看| 与凤行电视剧全40集免费观看 | 为时已是寿司!?| 啄木鸟系列壮志凌云满天星女版演员| 铜陵华谊兄弟| 四分钟泰剧在线观看免费高清| 舒淇任达华| 陈诗雅演艺梦在线观看| 电影《姐妹牙医》完整版在线看| 记忆传授人| 女超人满天星版| 契卡百度影音| 铜铜锵锵| 高清《高嫁柳嫁家》在线看| 北越《性的暴行》2| 新三狼之欢场屠夫| 裸体免费看| 巨星嫁到| 特殊争夺| 公之浮之12| 音乐人生| 台剧浪漫女家教免费| 薄暮传说剧场版| 动感之星168集妖精全集视频在线观看| 远亲小姐在线观看| 巜性刑房3捆绑凌虐电影免费观看 牙医郝板栗完整板永久删除掉的剧情介绍 | 睫毛膏2成人片| 美式的忌讳5—7| 情逆三世缘结局| a篇免费观看| 时光正好短剧免费完整版| 《4位少妇精油按摩记》 | 三妹免费| 延禧攻略电视剧全集免费观看| 高清《单身男女》电影| 《北越暴行》免费观看高清| 林肯公园的numb| 铿锵在线观看完整版| 电视剧青春无季免费观看西瓜影视| 圣罗佩斯的姑娘们| 人海孤鸿在线观看完整版| 小蜜桃5,| 沉默羔羊| 坠落女律师在线观看| 坏种3大结局免费观看| 无限动漫在线观看免费| 偷香高手| 肉欲伦JIAN| 女人复仇记电视剧| 斗破苍穹年番第四集| 《理发店的特殊待遇》| 烂赌夫斗烂赌妻 粤语| 特殊的游泳课| 聊斋艳谭3| 四个妇人精油电影| 公交车上六人轮换CH| 妻子妈妈双字ID电影| 女王之刃哪集最h| 电影我的兄弟姐妹| 就差钱带字幕的| 化妆师坐张艺凡腿上补妆| 小小的我电影免费观看易烊千玺| 菜鸟总动员| b13区高清| 神雕侠侣电影版| 上海地铁相撞| 将心比心作文| 日本电影《特殊游泳老师》的编剧是 | 《屠宰餐厅》在线观看完整版电影| 出轨的味道在线观看| 小小姑娘电影免费播放高清下载| 第一次的滋味免费观看电视剧| 三和人才市场| 赌侠1990刘德华| 高清《梅根2.0》电影| 监狱学园无删减| 高清《未婚男女的效率恋爱》电视剧 | bastard暗黑破坏神| 客户名单电影| 火蓝刀锋2| 福建省| 聚会的目的2中字谜给看电影 | 蛟龙行动hd国语版免费播放| 我的女朋友在哪里| 异形3电影| 斗罗大陆第144集免费观看| 慢性折磨呕吐室 主要讲述| 背后的故事赵薇| 庖丁解牛朗读| 金瓶梅电视剧在线观看免费版电影全集 | 《妈妈爱上儿子同学》电影完整版| 迷人的保姆| xl司令在线观看免费高清全集无删减| 读你原唱| 吴梦梦和黑人70分钟在线观看| 古见同学有交流障碍症第二季| 美国的忌讳5—7| 长相思2全集免费观看完整版| 《金银悔1—5普通话》在线观看| 酒井法子电影| 陪讨厌上司去出差旅在线播放 | 兄弟换麦子4中字版演员表| 高清《当哒当:邪视》电影| 浪漫女家教台剧在线播放| 电影《牙医姊妹》免费播放| 电影《时间静止器》免费观看全集| 我是造型师| 女英雄堕落之水星陨落2| 超人钢铁之躯| 美好的时光电视剧在线播放| 刺激打扑克在床上视频| 蒙古草原 天气晴| 老板的漂亮女儿| 大道新火电视剧全集免费观看| 钢铿锵锵锵锵锵锵在线观看人民| 喜爱夜蒲2 完整版| 先锋影院日韩| 火凤皇特种兵| 法国高压监狱| 长月无烬免费观看完整版| 陪部长出差的日子| 香烟爱上火柴dj| 特殊美容师待遇4| 我为卿狂百度影音| 粟裕大将全集| 棋士电视剧在线观看全集免费| 《犯罪都市6》电影| 命运的捉弄| 毛东东现任职务简历| 高清《空姐》电影完整版免费观看| 仙居县| 百灵鸟叫声| 需要爸爸的种子第二季免费观看全集 | 惊悚50州第一季在线观看| 电影《越南女兵》免费观看| 泰剧霹雳儿媳| 美国人免费国语视频| 三生三世十里桃花 大结局| 总统夫人| 灿烂丁香| 日本巜与上司的商务旅行3| 寄生兽动漫| 航空服务韩剧电影| 准备好纸巾的舞蹈| 最毒美人心2| 白峰电影在线观看550| 百花奖总导演致歉| 无所畏惧第一季电视剧免费观看| 美国精神病人电影完整版| 伏击电影免费观看完整版| 《女销售员的销售秘密》签合同| 禁忌II| 激战丛林免费在线观看 | 牛鞭擦进女人下身是什么意思| 火凤皇特种兵| 满江红电视剧免费观看| 杜拉拉之似水年华下载| 两个人高清在线观看免费下载| 法国版《古墓丽影》免费观看| 我的错误电影在线观看免费| 繁花沪语版| 灰姑娘的玻璃手机插曲| 沙加神话| 需要爸爸播种籽在线观看 | 一拳超人最强之男觉醒| 布兰迪《军事不当行为2》在线观看完 | 儿媳与爸爸免费观看电视剧全集 | 麦乐迪女超人免费观看完整版| 韩国电影女教师在线观看| 上海夜莺| 托克托县| 善良的嫂子同居的日子| 电影《千金与佣人》完整版| 红杏出墙在线观看| 年轻的嫂子1韩版带中译| 我是刑警40集全免费看| 电影《欲妇艳谭》| 插曲的痛| 金太郎的幸福生活百度影音| 男女一起愁愁愁的视频| 走火40集全免费观看| 美容院特殊待遇2BT天堂电影| 兄弟战争4| 罗马的房间| 武山县| 皇后进宫电视剧| 《部长夫人的美貌》的日剧免费观看| 相思原唱| 法国空姐3免费高清原声满天星奔跑 | 电影需要爸爸的播种子 | 我的女上司短剧全剧免费观看| 少年歌行萧瑟| 前度电影完整在线| 迟来的愤怒| 玩偶姐姐在哪里看| 大家的歌| 电影私人航空免费观看全集高清版下载| 周星驰美人鱼预告片| 美国一级黄色电影女儿需要爸爸播种子生孩子 | 通灵王国语版| 爱你几何电影在线| 向往的生活第7季| 荣誉守则成人版完整版免费在线观看| 高清《老少恋》电影免费观看| 食人鱼事件剧情介绍| 小猪佩奇爆笑版视频| 谈情说爱粤语| 变种女狼3归来| 新唐山大兄| 电视剧麻雀| 《听话女仆》动漫在线看全集免费| 乘风踏浪电视剧免费观看高清| 蜘蛛侠动画片全集中文版| 电影独臂刀| 神雕侠侣电影版| 我是特种兵之| 睡在我上铺的兄弟电视剧免费观看| 时间静止器全集免费观看第二集| 机甲女神之究极神兵| 《莫莉特别的酒店》免费观看 | 少年天子之顺治王朝剧情| 爱丫爱丫免费观看电视剧剧情| 《枭起青壤》在线观看| 《女仆的秘密》大结局| 《需要爸爸播种子》第1集免费在线观看 - 道德 - 短剧在线网 | 郝板栗的电影| 我是歌手 流浪记| 三年成全免费观看影视大全| 电影《之后》| 二十一世纪x性格爱情| 不怕开水烫| 性的爆行| 霜花店qvod| v酒店在线| 不汗党国语版| 四个贵妇精油按摩电影免费播放 | 丹东市| 妻子的漂亮女儿中女儿怎么称呼| 《完美的妻子》电影完整版| 逆袭之爱上情敌 电视剧| 时间停止器韩国电影| 龙刺兵王| 瓜达卢佩的玫瑰完整在线 | 武藤兰 下载| 快播美女| 爱我几何莫妮卡完整版免费观看| 穿越火线秒杀| 狼友必上| 咱们结婚吧分集剧情介绍| 屠宰呕吐娃娃视频完整版免费观看 | 爱的战争| 新视觉6080| 搞笑漫画日和 中文| 聊斋三 电视剧| 新娘之无悔的爱| 肌肤的纹理电影| 白峰电影在线观看免费版高清| 企业强人国语在线观看| 舌尖上的中国空间站| 幸福的同学聚会| 《借种》电影| 酒店1-50集免费观看完整版| 西厢记电影| 凌云志志(法国)满天星| 500篇艳妇短篇合换爱小说| 《隐形帽子》电影完整版| 大进军免费| 乐平市| 电视剧炮神| 后座未删减| 超碰进入离开| 火热的告别| 女子监狱国语| 梦犯追凶| 马兰花免费| 活着韩国丧尸片完整版| 福五鼠片头曲| 《LX司令》| 最美的安排| 漂亮的保姆3在线播放西瓜| 办法室定时器电影| 我父亲的女保姆是我的首选评价| 男生女生一起愁愁愁愁愁电视剧在线观看 | 父女因为爱情| 甜蜜惩罚之我是看守所专用宠物| 我的名字韩剧| 儿媳与爸爸免费观看电视剧全集| 菠萝蜜菠萝蜜影视在线观看 | 阿宾房东太未删减版| 年青的嫂子| 进击的巨人2| 高清《安娜情欲史》未删减版| 50岁阿姨电视剧全集免费观看| 嫣语赋在线观看| 袁阔成水泊梁山| 朝云暮雨免费观看完整版| 法国色情巜情欲含苞待放| 女护卫三级片视频| 乳头按摩电影| 所罗门 凯恩| 不再联系mv| 姐姐的秘密免费观看完整版| 爱丫爱丫免费国语高清电影| 你好 我的大夫| 信仰1—42集免费观看视频播放| 哇嘎电影免费看| 终末的女武神 动漫之家| 少年包青天2部| 我和我们在一起免费看| 学生妈妈的麦子| 冰川时代2| 疯狂的足球高清| 刀郎 爱是你我| 美国禁忌满天星| 剑道独尊短剧免费观看| 地久天长豆瓣| 沉香如屑电视剧40全集在线播放 | 罪域30| 特殊的精油按摩 电影| 小小水蜜桃6| 芭比动画片国语版| 声生不息宝岛季12期完整版| 被黑人强伦轩在线播放| 终极蜘蛛侠国语| 巜战狼6免费欢看》日韩| 500篇艳妇短篇合换爱小说| 神木丽电影| 张国荣天使之爱| 蜂鸟计划| 西服女律师替夫还债| 鸡毛飞上天观看免费全集| 金银悔1—5国语版下载| 黑暗天使电影| 《外出2》精彩片段| 两座山俄剧| 甄嬛传全集百度影音| 保卫萨拉热窝| 乌云之上电视剧全集剧情| 麦乐迪在线播放| 太极拳八段锦教学视频| 麦迪时刻35秒13分高清| 韩国r电影在线| 《杉杉来了》免费观看| 《青年医生》全集观看| 法国空姐3高清完整满天星奔跑吧ep| 你之恋与真实之恋| 黑寡妇 电影| 三年大片大全免费观看国语版全集| 我和厄尔以及将死的女孩| 开心鬼撞鬼迅雷下载| 公之手1| 宝宝巴士小苹果| 激战酒店1-80集电视剧免费播放下载| 佩洛西连发4条推特 没提台湾| 电影《牙医姊妹》免费| 种其因者须食其果短剧大结局| 罚罪全集在线完整免费| 乳腺按摩电影中文字幕| 《溺爱关系》动漫| 巜我的大胸女友HD| 电视剧 国家命运| 在菲被绑架中国人遗体疑发现 | 陪讨厌上司去出差旅在线播放 | 3d肉蒲电影在线观看| 女销售楼的秘密| 和亲公主:敌国战神短剧全集| 《私人航空2》法国电影| 宁都半班戏| 安拉拉斋电影在线观看免费播放 | 漳州市| 女人的抉择全集百度影音| 向往的生活第五季免费| 免费视频电影免费完整版观看| 孙佳慧VK| 满天星法版免费壮志凌云| 我是造型师| 火影忍者疾风传518| 四个少妇精油按摩在线观看| 山野女人香| 电影聊斋兰若寺免费观看 | 寒山令电视剧全集| 男女在一起愁愁愁插曲免费观看全集 | 金蝉脱壳百度影音| 德国女子兵护卫队满天星 | 香椿芽的储存方法| 恶魔的花嫁| 新生悬疑剧在线观看| 穿越时空的爱恋免费观看完整版| 需要爸爸播种子三级在线观看| 龙日一 你死定了2| 火影忍者 剧场| 韩剧《隐身蓝帽子》短剧| 卧鱼在线观看免费全集高清完整版| 高清《剑雨》电影| 《空调维修工的艳遇》| 一扑二主全集| 古惑仔1人在江湖高清| 《卖楼销售员》在线观看| 使徒行者2粤语在线播放| 印尼一女子被5米长蟒蛇吞吃| 《极乐宝鉴2》叶子楣在线看| 奥本海默在线原版免费| 男生打游戏听出网友病危| 禁忌1年转一代| 镖人动画第一季在线观看| 朋友和妈妈| 他为什么依然单身电视剧免费观看 | 李恩珠 红字| 女人进城电视剧全集免费播放| 东京塔越南女子别动队在线观看完整视频| 日韩无遮挡伦理片:按摩大胸妹子| 哈哈哈第三季在线观看完整版| 有色视频在线播放| 叶罗丽动画片| 蓝宝石之谜| 欧美电影满天星女超人| 巴以冲突最新消息| 身为超人弟弟的我却成了祖国人| 意大利四级爱欲情迷| overflower第一季无马赛在哪个平台播放 | 女子护卫队1973| 复仇者联盟3神马抢先版| 西安天空出现奇异云层| 战狼6欧式少女版资源| 欲情惊潮下载| 方子传 韩国完整版| 年经母年经3的| 乌海在线| 爱恋2015无减删高清| 修理人员的培训日本| 四平青年第一季高清| 黑狐电视剧在线观看| 需要爸爸来播种在线观看完整版中文版| 草莓月亮全集观看| 司藤免费观看全集完整版在线观看| 国风按摩院在线播放免费观看最新章 | 秦总夫人| 凯·帕克《老板娘》| 绝对臣服短剧免费观看全集高清| 《二对一的商务模式2》 | 需要爸爸种子电影| 非卖品广播剧| 成龙历险记5| 侯玉洁讲道全集免费看| 郑和下西洋| 七夜怪谈电影| 17·3电影在线观看免费播放| 了凡四训电视剧| 白蛇传说之法海| 换妻换上瘾| 美式4完整版| 小sao货几天没c水就这么多| 夏洛特烦恼完整版| 战狼4欧美版免费观看完整版| 高清《灭火宝贝2》美国版免费观看| 东游记电视剧| 需要爸爸播种子中字完整版| 荒野情浩劫在线观看| 恶作剧之吻1完整版免费观看| 《女超人(麦乐迪)》在线观看 | 张响神枪电视剧全集| 敢死队电影| 王李丹妮维修工| 斗罗大陆唐门英雄传| 魔法圣婴百度影音| 韩国3j| 怪谈晚餐| 日版花样男子| 法国空乘2完整版在线看| 良心无悔免费观看全集| 高清《飓风营救1》完整版| 妈咪快跑:爹地追来了短剧全集| 插曲在线观看免费观看高清第二集| 浓从暗中来| 影音先锋男人资源813| 美乃雀免费电影| 破刃电视剧全集免费观看| 大秦帝国 纵横| 男生女生一愁愁愁电视剧在线观30分钟 | 《驯服》电影完整版丽卡结局是什么| 水星的魔女第一季| 萍聚歌谱| 酒店1-580集免费观看电视剧| 李佳琦回应参加披哥| 欢颜电影| 公的浮之手中字40| 至尊红颜贾静雯| 零度触碰12集| 美国1-5普通话免费观看完整版| 二人世界免费视频免费| 白夜追凶27| 一个空调修理工的艳遇| 粉色大白菜(法国)完整板| 妥协电影在线观看完整版高清| 女员工的付出中字特殊| 且试天下电视剧全集| 囧探佳人下载| 《河豚》| 需要爸爸播种子电影免费播放英文| 威卡兰特的日记| 许我耀眼| 巜禁忌5》A片| 老湿电影院体检区| 给我完整版在线观看| 尖叫之夜| 爸爸的种子高清免费| 孙阳妈妈说儿子演得太坏了| 《史前战纪 第三季》| 大槻响作品番号| 女律师的坠落完整版HD| 郭有才诺言完整版| 电热毯应该铺在哪一层| 《唤醒》:凯登·克罗斯| 赵氏孤儿案迅雷下载| 海盗2:鬼怪的旗帜 电影在线观看| 《因为遇见你》免费观看| 朴诗妍《爱的释放》电视免费观看 | 《爱我几何》免费完整版在线观看 | 妻子的诱惑电视剧| 激战酒店全集免费看| 男男同志王伦宝| 大唐荣耀在线观看| 电视剧借枪全集免费播放完整版| 台剧浪漫女家教免费观看第11集| 《家访老师》日剧观看| 小鹏奇啪行| 学渣学霸:高考状元短剧全集| 台湾版粉红大白菜1987年 | 法国空乘4| ed2k 护士| 神犬奇兵在线观看| 少帅传奇48集电视剧| 《驯服小峓子》中文| 三年片免费看大全中国电影| 侦探语录免费观看完整版| 浪漫女家教主演:黛比地区:台湾 | 暧昧陶魂| 《爸爸种子2》电影| 美人心计38| 韩国电影疯狂婚姻| 战狼6双人版完整版下载| 寄生兽动漫| 中国远征军高清下载| 初体验5正版| 爆旋陀螺| 吴尊友:新十条出台时机恰到好处| 网友吃席发现每人面前都是盒饭| 美丽又紧致凯帕克英文| 花鼓戏哭灵| 养父 电视剧| 黑白配hd1080完整版在| 金鱼妻电视剧| 高清未来的儿子| 最美的半人半蛇图片| 酒店强奸电影| 我家的一件珍品| 一路向西电影完整| 黑白配视频免费大全在线观看| 八角笼中免费观看在线| 沉沦肉欲的娇妻第十一章| 美国1985G点2| 小河淌水1952| 《妥协》短剧免费观看| 平顺县| 徐良小凌演唱会| sdde-403| 孤岛惊魂2修改器| 电影私人航空在线观看免费完整版| 电视剧铁核桃| 盲爱千金短剧全集免费播放| 法国版女超人在线播放| 隔壁邻居电影| 特邀送货员完整版| 一个好妈妈高清完整版| 推油韩国电影| 爱存在 王诗安| 敢死队高清| 桐柏县| 坎贝奇品味人生未删减版在线| 维修工人的绝遇2中文字HD_午夜电影全集_完整版免费在线观看-天天影院 | 学校怪谈 动漫| 魔力宝贝监狱 在线| 铭记爱情电视剧| 电视剧大秦赋免费观看| 牙医姐妹郝板栗完整版电影 | yellow 在线观看| 天魔异种| 爱人 下载| 站着再来一次最新一集免费| 梅西现身迈阿密超市| 动画情侣剧烈做运动的表情包| 黄色仓库在线观看| 光立方程序| 乌龙元首| 金庸武侠电视连续剧免费观看| 电影修理工的艳遇韩国在线观看| 梅姨杀小孩过程| 绣春刀3无间炼狱免费观看| 《少女满天星》完整版在线| 沧元图 前传:东宁府的夏天未删减| 刻在你心底的名字免费观看完整版| 韩剧《权利迷雾》在线观看全集| 发国少女6| 小背篓伴奏| 高清《妻子的新世界》电视剧| 《凯·帕克的经典康体》康体水疗| 政府工作报告2019| 《恐龙岛》电影| 《特殊飞行》免费观看| 兰陵王电视剧全集下载| 女人的武器分集剧情| 《北越暴行》免费观看有一部电影抓了好几个女人,当官的三个人一起轮奸是什么 | 《亲爱的天狐大人》电视剧| 女销售员的秘密| 《后宫·甄嬛传》| 新月格格电视剧全集播放免费观看| 第一点血2| 傲慢与偏见电影(免费)| 壮志凌云成 2011版| 《田耕纪》电视剧| 三十而已免费观看| 苍月女战士AV无删减版| 下南洋三毛钱看| 时间静止器全集免费观看第二集 | 传闻中的七公主国语版全集优酷| 美容院的特殊待遇》| 胜女的代价在线观看| 赊刀人电影| 战狼6大妈免费观看高清版| 高清《完美证据》电视剧| 客厅享受的两小时| 李丽珍《聊斋2》| 我的莫格利男孩| 高清《人生第一次》在线观看| 古典辣妹 victory| 透视安吉拉怀特版| 皇子归来之欢喜知府| 李丽珍爱的 精灵| 璀璨人生78| 地爆满天星 电影高清免费观看| 僧侣之夜无删减版下载| 继承者们全集在线观看| 新版西游记白骨精| mm的职业2免费观看完整版电影| 亲爱的老师6中文版完整版| 雏妓在线观看完整版| 宋孝敏《露营地》韩国| 厉致诚要林浅第二次细节| 歌曲《母鸡咯咯哒》| 乡村爱情第三部优酷| 1—5集国语版普通话| 胜者即是正义2| 巴厘岛的故事电视剧| 电影《地爆天星》免费观看| 赵薇伺候大佬照片| 上海上海电视剧| 海棠大肚产子机器美人| 漂亮的妈妈7中字开头7个字 | 哭泣的牛| 德保县| 黑白配国语在线播放| 蝴蝶梦越剧| 黑执事豪华客船篇百度云| 荣誉守则杰西简免费版| 墨雨云间在线观看免费全集| 警察锅哥40全集免费| 杨紫刘雨昕同台| 公的浮之中字9| 创:战神未删减| 《无限城决战篇》免费观看| 唐朝艳史| 站着再来一次第26集免费播放| 电影《弱杀》完整版| 康斯坦丁电影高清在线观看完整| 《出轨同学会2》韩国电影| 女机械人1980法国满天星| 智取威虎山在线观看| 成龙电影全集粤语| 《爱我几何》莫妮卡原版免费观看全 | 农场保卫战满天星完整版| 古惑仔2国语高清| 不一样的男子| 晋阳小公主动漫全集| 心宅猎人电视剧在线观看| 核弹危机| 战狼6免费观看在线播放下载| 天天向上20100416| 年轻的母亲2在线观看木瓜网| 我的灿烂人生下载| 无憾在线观看坎贝奇| 解放的潘多拉剧情| 《大长今》电视剧| 电影姐妹牙医完整版 在线看 | 杰克逊鬼怪| 韩国特殊美发店| 王牌播音员| 人渣的本源| 法国空乘4完整版播放| 那些花儿王菲| 沼泽深处的女孩| 《外出》电影在线观看| 战狼6欧式少女全部视频苹果| 百花奖总导演致歉| 三更雪电视剧在线观看| 《驯服小峓子2》| 《你是男的我也爱》| 萨姆史密斯| 日本电影修理工的培训| 花样男子大结局| 铜山县| 《老舅》电视剧免费观看| 伏罗希洛夫射手 电影| 亚洲夜夜爱| 本乡爱的所有电影| 怀玉公主优酷| 天龙高清远古电视剧在线观看 | 滚蛋吧肿瘤君| 让爱回来电视剧 全集| 美国式禁忌保罗讳1-4| 山东安志成融资合法| 浪漫的办公室电影| 毒舌律师豆瓣| 牙医郝板栗未删减版| 甄嬛传奇艺网| 《湄公河行动》电影| 荷兰到底有多开放| 暴躁老妈高清全集观看| 妙笔生花电影| 燕赤霞猎妖传| 凡人修仙传77集免费观看全集| 白峰电影免费版高清在线播放| 熟睡中被义子侵犯电。| 幸福的面包| 日本搞笑整人节目| 韩国电影隐身帽子| 嫂子的职业中字| 亲爱的热爱| 七夜怪谈电影| 乡村爱情第三部优酷| 坎贝奇三部曲《品味人生》免费| 大武生电影| 新雌雄大盗| 北京爱情故事39| 战狼6加拿大999| 17·3电影在线观看免费| 暧昧高手花生是米| 黑社会之龙城岁月| 鹿鼎记2神龙教粤语| 徐少强版《金悔瓶》2演员阵容是谁扮 | 学开车教程| 蜘蛛侠:平行宇宙 电影| 《八尺夫人》意大利电影完整版免费 | 农场主的女儿们kB经曲| 韩国电影温泉酒店的特殊待遇| 国庆60周年阅兵| 死亡同学会| 石正丽简介| 漂亮妈妈7巴字| 刘伯温传奇电视剧| 妖精的尾巴160| 布莱泽奥特曼在线观看| 银鞋在线观看完整免费高清原声满天星 | 《通往你的地图》| 《村枝》雨晴剧情| 《斗罗大陆》在线观看免费|