ZHCACZ9A August 2023 – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1
一个有助于理解器件树结构的有用工具是反向编译从构建过程生成的器件树二进制文件 (DTB)。这将生成一个可读文件,其中包含已纳入编译过程的器件树上的所有节点。生成的文件便于查看描述外设的所有节点和属性。DTB 位于 OUTPUT_DIR/a53/k3-am625-<boardname>.dtb。要对 DTB 进行反向编译,请使用以下命令:
$ dtc -I dtb -O dts k3-am625-<boardname>.dtb -o <boardname>-reversed.dts
反向编译的 DTB 是 <boardname>-reversed.dts 文件。可以将此输出与绑定文件和其他 DTS 文件中的示例进行比较,以确保完整性和正确性。
构建器件树的另一个优质资源是使用其他器件树作为初始化外设的指南。通过编译另一个器件树(例如 k3-am625-sk.dts)并反向编译生成的 DTB,可以很容易看到其他外设节点配置。通常,EVM 器件树节点可用作表示定制电路板外设的良好参考。如果外设的使用与 EVM 类似,则可能只需要稍作修改(如果有)。
在定制电路板上进行器件树开发的一种好方法是搜索 EVM 器件树文件 k3-am62x-sk-common.dtsi 和 k3-am625-sk.dts,以查看在节点的 SoC 定义顶部应用了哪些属性。通常还需要在定制电路板的器件树中设置这些属性。在器件树绑定目录中搜索属性和兼容字符串会生成有关每个属性定义的内容和如何设置该内容的文档。
在 k3-am625-sk.dts 中,以太网 PHY 定义为 MDIO 总线节点的子节点。这已添加到下面的电路板器件树中。假设已设置引脚配置和状态属性。
cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <mdio-custom_pins_default>; + cpsw3g_phy0: ethernet-phy@0 { + }; };
在 k3-am625-sk.dts 中,在以太网 PHY 节点中定义了一些属性。对内核绑定目录中的任何属性进行 grep 搜索会将我们指向 ti,dp83867.txt,这表示 PHY 节点有四个必需属性。这些是 EVM 电路板器件树中指定的相同属性。本文档还将我们指向一个头文件,该文件包含这些属性的不同设置,这些属性是以太网 PHY 的控制寄存器。可以根据 EVM 器件树设置来设置这些设置,也可以通过参考器件规格的以太网端口设计文档来设置。如果使用不同的 PHY,这些值和整合到器件树中的方法将会发生变化。如下图所示:
cpsw3g_mdio {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <mdio-custom_pins_default>;
cpsw3g_phy0: ethernet-phy@0 {
+ reg = <0>;
+ ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+ ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ };
};
EVM 器件树为 &cpsw_port1 添加了“phy-handle”属性,该属性将 PHY 节点分配给端口节点。启用该节点后,可以在下面设置此属性。
+ &cpsw_port1 { + status = "okay"; + phy-handle = <&cpsw3g_phy0>; + };