ZHCACZ9A August   2023  – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 引言
  5. 安装 SDK
  6. 为定制电路板配置 SDK
  7. 启动 U-Boot 电路板端口
    1. 4.1 器件树简介
    2. 4.2 最小配置的功能
    3. 4.3 准备定制板级配置文件
    4. 4.4 初始器件树修改
    5. 4.5 构建 U-Boot 二进制文件
    6. 4.6 U-Boot 部署说明
  8. 扩展定制电路板器件树
    1. 5.1 器件树配置
    2. 5.2 描述节点中的外设
    3. 5.3 修改器件树配置
  9. 引导 Linux 内核
    1. 6.1 内核引导概述
    2. 6.2 内核部署说明
  10. 工具和调试
    1. 7.1 内核调试跟踪
    2. 7.2 OpenOCD 调试
  11. 未来的工作
  12. 总结
  13. 10参考资料
  14.   修订历史记录

初始器件树修改

需要修改 U-Boot 存储库中提供的定制电路板器件树,才能使其在定制电路板上运行。本节详细介绍了在尝试启动电路板之前需要进行的更改。

所提供的定制电路板器件树中的当前引脚配置是使用适用于 TI EVM 的 TI SysConfig Pinmux 工具生成的。该应用为 TI SoC 生成引脚配置,并将内部外设引脚连接到 SoC 封装上的外部焊球。由于这些连接的选项有限,因此正确的引脚配置也有限。该工具会了解这些限制,并会针对无效配置提供警告和错误。电路板设计人员应使用该工具针对所需的用例开发有效配置。需要在该工具中对配置进行任何更改,以确保不会引发冲突。这种冲突可能会导致出现电路板问题,需要进行调试和修复,从而可能花费非常宝贵的调试时间。该工具会创建用以将配置导入软件的文件,以便在启动时正确配置器件。这些文件需要从电路板设计人员传递给软件开发人员,以便高效地启动电路板。

警告: 电路板设计和软件引脚配置必须保持同步。如果电路板设计或软件的引脚多路复用配置无效,则会导致很难诊断和调试电路板问题。所有与引脚相关的电路板更改都需要使用 SysConfig Pinmux 工具进行验证,并整合到软件中。

最小配置示例中提供的引脚配置适用于 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>";