ZHCACZ9A August 2023 – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1
需要修改 U-Boot 存储库中提供的定制电路板器件树,才能使其在定制电路板上运行。本节详细介绍了在尝试启动电路板之前需要进行的更改。
所提供的定制电路板器件树中的当前引脚配置是使用适用于 TI EVM 的 TI SysConfig Pinmux 工具生成的。该应用为 TI SoC 生成引脚配置,并将内部外设引脚连接到 SoC 封装上的外部焊球。由于这些连接的选项有限,因此正确的引脚配置也有限。该工具会了解这些限制,并会针对无效配置提供警告和错误。电路板设计人员应使用该工具针对所需的用例开发有效配置。需要在该工具中对配置进行任何更改,以确保不会引发冲突。这种冲突可能会导致出现电路板问题,需要进行调试和修复,从而可能花费非常宝贵的调试时间。该工具会创建用以将配置导入软件的文件,以便在启动时正确配置器件。这些文件需要从电路板设计人员传递给软件开发人员,以便高效地启动电路板。
最小配置示例中提供的引脚配置适用于 TI 板。如果使用 TI 电路板为 AM62x 器件系列验证此过程,则不需要更改配置。要将自定义电路板器件树中提供的引脚配置替换为定制电路板由 SysConfig Pinmux 工具生成的引脚多路复用 DTSI 中的自定义引脚配置,请删除 k3-am625-<boardname>.dts 中的 &main_pmx 节点。然后,将引脚多路复用 DTSI 的内容粘贴到 k3-am625-<boardname>.dts 中。下方显示了这种情况的一个示例。
/* Delete provided pin configuration nodes */
- &main_pmx {
- [... UART pin configuration ...]
- [... SD pin configuration ...]
- };
/* Paste new pin configuration nodes from pinmux DTSI */
+ &main_pmx {
+ [... New pin configurations ...]
+ };
也需要在外设的器件树节点中设置外设的新引脚配置。通过修改 k3-am625-<boardname>.dts 中该节点中的 pinctrl 属性,可实现此目的。
假设新引脚控制器节点包含 UART0 的以下配置,标记为“uart0-custom_pins_default”。
uart0-custom_pins_default: uart0-custom-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
AM62X_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
>;
};
为了让 UART0 访问这些引脚,请修改 UART0 节点中的 pinctrl 属性,如下所示。确保在“&”后面使用正确的标签,以避免出现器件树编译问题。
&main_uart0 {
bootph-all;
status = "okay";
pinctrl-names = "default";
- pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-0 = <&uart0-custom_pins_default>;
};
需要对定制电路板上配置的所有外设进行此修改。
可能还需要修改最初在定制电路板器件树中配置的外设实例。定制电路板器件树假设 UART0 用于串行输出和 UART 引导。它还假设 MMC1 用作 SD 读卡器。如果定制电路板上的外设实例不同,则需要修改器件树节点。
在下例中,假设控制台输出的正确 UART 实例是 UART1。按如下所示修改 k3-am625-<boardname>.dts,将 UART1 配置为用作控制台输出。
- &main_uart0 {
+ &main_uart1 {
bootph-all;
status = "okay";
pinctrl-names = "default";
- pinctrl-0 = <&uart0-custom_pins_default>;
+ pinctrl-0 = <&uart1-custom_pins_default>;
};
如果修改了外设实例,也需要将此实例的引脚配置更改为正确的引脚节点。在以上示例中,pinctrl 属性更改为 UART1 的引脚配置。
如果更改了控制台输出的 UART 实例,则需要修改 k3-am625-<boardname>.dts 中的 aliases 节点。以下示例演示了如果控制台输出的 UART 实例是 UART1 而非 UART0,则进行此修改。
aliases {
- serial2 = &main_uart0;
+ serial2 = &main_uart1;
};
这可确保 Linux 内核使用正确的 UART 实例来输出内核引导日志。
如果定制电路板没有 SD 读卡器,请移除或禁用相应的节点。这可防止发生引导错误。下面显示了此节点被移除的情形。
- &sdhci1 {
- [... Properties ...]
- };
在器件树的顶部,兼容与模型属性设置为“minimal”和“ti”。按如下所示为定制电路板修改该字符串。
- compatible = "ti,am625-minimal", "ti,am625";
- model = "Texas Instruments AM625 MINIMAL";
+ compatible = "<company>,am625-<boardname>", "<company>,am625";
+ model = "<company> AM625 <boardname>";