Menu Close

添加与更改节点内容

此文章介绍了如何添加或更改节点的内容。

相关参考文章:SOC 教学教案

 

在zynq-7000.dtsi中的第122至142行中,有两个i2c设备(eeprom和rtc)被定义。

i2c0: i2c@e0004000 {
        compatible = "cdns,i2c-r1p10";
        status = "disabled";
        clocks = <&clkc 38>;
        interrupt-parent = <&intc>;
        interrupts = <0 25 4>;
        reg = <0xe0004000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;
};

i2c1: i2c@e0005000 {
        compatible = "cdns,i2c-r1p10";
        status = "disabled";
        clocks = <&clkc 39>;
        interrupt-parent = <&intc>;
        interrupts = <0 48 4>;
        reg = <0xe0005000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;
};

如果我们想把这两个i2c设备添加到i2c0总线中,我们可以在i2c0节点下创建两个字节点,每个设备一个。新的i2c0节点将看起来如下:

i2c0: i2c@e0004000 {
        compatible = "cdns,i2c-r1p10";
        status = "disabled";
        clocks = <&clkc 38>;
        interrupt-parent = <&intc>;
        interrupts = <0 25 4>;
        reg = <0xe0004000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;

        24c64@50{
               compatible = “atmel,24c64”;
               reg = <0x50>;
               pagesize = <32>;
        };

        rtc@51{
               compatible = “nxp,pcf8563”;
               reg = <0x51>;
        };
};

第一个子节点把eeprom设备添加到了i2c0总线,第二个子节点添加了rtc设备。因为zynq-7000.dtsi是一个设备树文件,这两个设备将被添加到所以其他开发板中。为了让这个变化在其他开发板中生效,我们需要在开发板中添加代码。

当前使用的设备树文件是system-top.dts,因此我们需要往里加东西。格式如下:

&i2c0{
        /* 添加或修改的内容 */
};

第一行中的&i2c0表示它将引用与i2c0相应的节点,也就是zynq-7000.dtsi中的i2c0: i2c@e0004000。

我们将继续打开system-top.dts并添加需要的内容。下面显示的代码从文件的第8行开始:

/dts-v1/;
#include “zynq-7000.dtsi”
#include “pl.dtsi”
#include “pcw.dtsi”

/{
        model = “FII ZYNQ Development Board”;

        chosen{
                bootargs = “console-ttyPS0,115200 earlyprintk
                               root=/dev/mmcblk0p2 rw rootwait”;

                stdout-path = “serial0:115200n8”;
        };

        aliases{
                ethernet0 = &gem0;
                i2c0 = &i2c_2;
                i2c1 = &i2c0;
                i2c2 = &i2c1;
                serial0 = &uart0;
                serial1 = &uart1;
                spi0 = &qspi;
        };

        memory{
                device_type = “memory”
                reg = <0x0 0x20000000>;
        };
};

&i2c0{
        clock-frequency = <100000>;
        status = “okay”;

        24c64@50{
               compatible = “atmel,24c64”;
               reg = <0x50>;
               pagesize = <32>;
        };
        rtc@51{
                compatible = “nxp,pcf8563”;
                reg = <0x51>;
        };
};

&gem0{
        local-mac-address = [00 0a 35 00 le 53];
};

第 34 至 48 行添加并编辑 i2c0 节点的信息,例如第 35 行添加的属性 “clock-frequency = <100000>”,将 i2c0 的 clock 设为了 100KHz。

第 36 行涉及到把 status 状态属性从 disabled 改成 okay

第 38 至 47 行涉及到往子节点 i2c0 中添加两个子节点(24c64@50 和 rtc@51)。

第 12 至 32 行往 zynq-7000.dtsi 中定义的根节点中添加了几个节点。

如前所述,这个例子专注于 system-top.dts,使其不会影响其他使用 ZYNQ-7000 处理器的开发板。这个例子主要演示了添加以及更改文件内容,通过 &label 访问并修改节点。pcw.dtsi 文件中能看到许多节点引用以及修改节点内容的例子。

%title插图%num

Posted in 教材与教案

发表评论

相关链接