设备树中与号前缀的含义

kak*_*keh 11 drivers boot-loader arm linux-kernel device-tree

我正在查看一个尝试指定不同节点的 DTS 文件,但有趣的是我发现一些节点具有不同的命名方式。

/ {
    model = "TI AM335x BeagleBone Black";
    compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};

&ldo3_reg {
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    regulator-always-on;
};

&mmc1 {
    vmmc-supply = <&vmmcsd_fixed>;
};

&mmc2 {
    vmmc-supply = <&vmmcsd_fixed>;
    pinctrl-names = "default";
    pinctrl-0 = <&emmc_pins>;
    bus-width = <8>;
    status = "okay";
};

/ {
    hdmi {
        compatible = "ti,tilcdc,slave";
        i2c = <&i2c0>;
        pinctrl-names = "default", "off";
        pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
        pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
        status = "okay";
    };
};
Run Code Online (Sandbox Code Playgroud)

如果一个节点有&它的前缀,它表达了什么?将它们与根节点分开的必要性是什么,而它们可以存在于根节点本身中?有趣的是,上面的例子也有两个根节点,这怎么可能?

Xof*_*ofo 7

来自:http : //developer.toradex.com/device-tree-customization

可以使用与号(&)字符和标签来引用节点。

覆盖属性

要覆盖属性,需要使用与号字符和标签来引用节点。较晚的设备树条目会覆盖较早的条目(条目的顺序很重要,因此包含顺序很重要)。通常,较高层(例如载板设备树)会覆盖较低层(例如 SoC 设备树),因为较高层在一开始就包括较低层。

例如,对于能够成为设备或主机(双重角色)的 USB 控制器,可以使用 dr_mode 属性显式覆盖默认模式:

&usbdev0 {
    dr_mode = "host";
};
Run Code Online (Sandbox Code Playgroud)