設備樹裏面#address-cells 、#size-cells、reg三者的關係

在linux設備樹裏面,我們經常看到如下描述:

regulators {
    compatible = "simple-bus";
    #address-cells = <1>;
    #size-cells = <0>;
    reg_usb_otg1_vbus: regulator@0 {
    ...    //其他一些信息
    reg = <0>;
    };
};

在上面的代碼裏面:

#address-cells = <1>;//表示用一個32位的數來描述地址

#size-cells = <0>;//表示用0個32位的數來描述該地址的大小

上面兩個信息#address-cells和#size-cells主要用來描述子節點裏面reg的信息

reg裏面的個數,應該是address-cells + size-cells的整數倍

上面的解析爲:reg的起始地址爲0

比如:

regulators {
    compatible = "simple-bus";
    #address-cells = <1>;
    #size-cells = <1>;
    reg_usb_otg1_vbus: regulator@0 {
    ...    //其他一些信息
    reg = <0x00001 0x01 0x000010 0x02>;
    };
};

上面的代碼的解析爲:

reg的起始地址爲0x0001 大小爲0x01

reg的起始地址爲0x000010 大小爲0x02

上面代碼裏面:address-cells + size-cells = 2

那麼reg裏面的描述值就應該是2個倍數。並且每2個爲一組。

上面列舉的regulator這個節點可能不是很適合這個裏面,但是在這裏,只是想描述address-cells 、size-cells、reg三者的關係。

如果有錯誤的地方,歡迎留言指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章