This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:TDA4VM - Uboot SPL 中的 Pinmux 问题

Guru**** 2974170 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1662515/tda4vm-tda4vm---pinmux-issue-in-uboot-spl

器件型号: TDA4VM

您好、

根据我之前发布的文章和 TI 的建议、我的系统已启动并运行。

我想要澄清的一点是关于 tiboot3.bin FW 中 MCU R5F/SBL/Uboot-SPL 级别的 I/O 焊盘的引脚多路复用配置。

我已经在 U-boot SPL 器件树中使用“bootph-all“属性启用了几个外设以及关联的 pinumx/pinctrl。 我希望 MCU R5F 配置焊盘并向外设应用 pinctrl。 我验证了最终的设备树 blob 将这些节点显示为“oke“、并具有 bootph-all 标签。 我在 A72 Uboot + Linux 上禁用了这些函数、并使用 FreeRTOS 在主域 R5F 内核上使用。

由于某种原因、外设 (MAIN UART1/FSS0_OSPI1) 没有出现、看起来像处于复位状态。

作为测试、在 Linux 中启用相同的外设时工作正常、并使用 utils 对它们进行了测试。  Linux 驱动程序正在执行与 FreeRTOS 应用不同的操作、该应用将其范围缩小到了引脚本身。   

我必须在 FreeRTOS 应用中应用 pinmux 来启动外设、然后使用它。

这与 TI 在我之前文章中推荐的不同。

在用于 k3-R5 的 Uboot-spl 中出现了什么问题? 即使设备树说这样做、它也不会配置这些外围设备? 什么是最好的方法来管理这?

我尝试了两个版本的设备树更新,两个都不工作:  

仅设置 pinmux 焊盘 pinmux、pinctrl、但禁用外设

2.设置 pinmux、pinctrl 并启用外设   

谢谢、

Prasanna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    请将该补丁与您所做的更改共享。 我们会重新检视您的建议。

    - Keerthy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keerthy:

    以下是我的 dtsi 文件中外设的器件树片段:

    &MAIN_uart1{
    状态=“正常“;
    全部引导;
    };

    &ospi1{
    状态=“正常“;
    全部引导;
    };

    补丁应用于此器件树、如下所示:  

    diff -git a/arch/arm/dts/k3-j721e-r5-common-proc-board.dts b/arch/arm/dts/k3-j721e-r5-common-proc-board.dts
    索引 c427143869c.5a767ec779e 100644
    -- A/arch/arm/dts/k3-j721e-r5-common-proc-board.dts
    ++ b/arch/arm/dts/k3-j721e-r5-common-proc-board.dts
    @@–76、3 +76、5 @@
      范围=<0x0 0x47000000 0x0 0x47000000 0x0 0x00068400>、
        <0x0 0x50000000 0x0 0x50000000 0x0 0x10000000>;
     };
    +
    +#include “my-custom-files.dtsi“。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以下是从 u-boot.dtb 文件生成的 dts 文件中的代码片段。  
    pinctrl@11c000{
    compatible =“pinctrl-single“;
    REG =<0x00 0x11c000 0x00 0x2b4>;
    #pinctrl-cells =<0x01>;
    pinctrl-single、寄存器宽度=<0x20>;
    pinctrl-single、函数掩码=<0xffffffff>;
    全部引导;

    main-uart0-default-pins{
    pinctrl-single、pins =<0x1d4 0x54001 0x1c0 0x10001 0x1e8 0x54000 0x1ec 0x10000>;
    全部引导;
    电话=<0x5c>;
    };

    Main-uart1-default-pins{
    pinctrl-single、pins =<0x1f8 0x54000 0x1fc 0x10000>;
    全部引导;
    电话=<0x5d>;
    };
    mcu-fss0-ospi1-default-pins{
    pinctrl-single、pins =<0x34 0x10000 0x50 0x10000 0x40 0x54000 0x44 0x54000 0x48 0x54000 0x4c 0x54000 0x3c 0x54000 0x38 0x54000>;
    全部引导;
    电话=<0x16>;
    };
    串行@2810000{
    兼容=“ti、j721e-UART\0ti、am654-UART“;
    REG =<0x00 0x2810000 0x00 0x100>;
    中断=<0x00 0xc1 0x04>;
    时钟频率=<0x2dc6c00>;
    电源域=<0x08 0x116 0x01>;
    时钟=<0x09 0x116 0x00>;
    时钟名称=“fclk“;
    状态=“正常“;
    pinctrl-names =“default“;
    pinctrl-0 =<0x5d>;
    全部引导;
    };

    SPI@47050000{
    兼容=“ti、am654-ospi\0cdns、QSPI-NOR“;
    REG =<0x00 0x47050000 0x00 0x100 0x00 0x58000000 0x00 0x8000000>;
    中断=<0x00 0x349 0x04>;
    CDN、FIFO 深度=<0x100>;
    CDN、FIFO 宽度=<0x04>;
    CDN、触发器地址=<0x00>;
    CDN、相位检测选择器=<0x02>;
    时钟=<0x09 0x68 0x00>;
    电源域=<0x08 0x68 0x01>;
    #address-cells =<0x01>;
    #size-cells =<0x00>;
    状态=“正常“;
    pinctrl-names =“default“;
    pinctrl-0 =<0x16>;
    全部引导;

    Flash@0 {...}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我是否必须使基本设备树本身用 bootph-all 标记这些节点?

    我的 custom.dtsi 应用太晚了对 SPL ?

    “fdtgrep“是剥离这些节点,甚至在我的 include 应用之前?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prasanna:

    已在 U-boot SPL 设备树中使用“bootph-all“属性启用了几个外设以及关联的 pinumx/pinctrl。 我希望 MCU R5F 配置焊盘并向外设应用 pinctrl。 我验证了最终的设备树 blob 将这些节点显示为“oke“、并具有 bootph-all 标签。 我在 A72 Uboot + Linux 上禁用了这些功能、并使用 FreeRTOS 在主域 R5F 内核上。
    出于某种原因、外设 (main UART1/FSS0_OSPI1) 没有出现、看起来像被重置的一样。[/quotes]

    为了更清楚地了解,这是正确的问题:

    问题说明: R5 SPL(在器件树中配置焊盘,但未配置)->在 A72SPL、UBoot 和 Linux-> FreeRTOS 中禁用外设(必须配置引脚多路复用,因为 R5 SPL 未配置)。

    外设:MAIN UART1 和 FSS0_OSPI1 未被 R5 SPL 启用、因此必须在 FreeRTOS 中显式启用。

    目标: 希望通过 R5 SPL 在 FreeRTOS 中启用外设、而无需明确地再次应用 FreeRTOS 应用中的引脚多路复用以启动外设。

    我在 A72 Uboot + Linux 上禁用了这些函数、并使用 FreeRTOS 在主域 R5F 内核上使用。
    • 您能否共享已更改的文件以及为在 A72 UBoot 上禁用外设而进行的更改。
    • 您是否还可以在 A72 uboot 上启用外设以及 R5 SPL(我相信您已启用它)、并查看是否在 FreeRTOS 端配置了外设。

    其他问题:

    • SDK 版本:您是否可以共享所使用的 SDK 版本以及从中获取 tiboot3.bin、tispl.bin 和 u-boot.img 文件的 SDK 版本。
    • 除 MAINUART1 和 FSS0_OSPI1 之外是否有任何其他外设被您尝试启用、这些外设及其引脚多路复用器是否已启用。
    • 您还能确保您用于 UART 和 OSPI 引脚多路复用的 padconfig 寄存器不会被任何其他外设分配给这些 padconfig 寄存器的任何其他引脚多路复用设置覆盖吗? 可能是 padconfig 寄存器正被其他一些外设覆盖。Hence ,只需检查一下这些用于 UART/OSPI 的 padconfig 寄存器/pinctrls 是否在设备树的其他位置使用。

    您是否还可以共享“build/r5/spl/dts/k3-j721e-r5-common-proc-board.dtt“中 DTB 的解压缩文件 (dts)、以便我可以对其进行分析。

    此致

    Gokul Praveen

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    在这里共享整个解压缩的设备树是不舒适的,这就是为什么我共享相同的片段。  请告诉我您的电子邮件地址、我可以将文件发送给您或设置文件共享以访问它。  

    您对问题陈述的理解是正确的。 我仅对这两个外设感兴趣。 目标也是正确的。 我希望将所有引脚多路复用配置都集中到 R5-SPL、而不将其分散、这也是 TI 建议的方式。

    我已经确认这些引脚未用于任何其他目的。 为避免覆盖问题、我在 k3-j721e-r5-common-proc-board.dts 文件的末尾添加了我的定制器件树文件。 因此、任何以前的设置都应自动被我的自定义修复程序覆盖。

    以下是版本信息: TI-Arago SDK 版本:2025.01 PDK 版本:11_02_00_06

    谢谢、

    Prasanna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Prasanna。

    在这里共享整个解压缩的设备树、这就是为什么我共享同一个片段的原因。  请告诉我您的电子邮件地址、我可以将文件发送给您或设置文件共享以访问它。  [/报价]

    没问题、Prasanna。 您能否在  “/build/r5/spl/dts/k3-j721e-r5-common-proc-board.dtb“中 DTB 的解压缩文件 (dts) 中共享 MAIN UART1 和 OSPI1 节点的代码片段、因为您之前共享的 uboot.dtb 文件嗅探器不是所需的文件。

    出于某种原因、外设 (MAIN UART1/FSS0_OSPI1) 没有启动并看起来像复位一样。

    我相信 A72 SPL/A72 UBoot/Linux 仍在配置它。

    您可以尝试以下两种替代方案:

    • 替代方案 1:完全从 A72 SPL、A72UBOOT 和 Linux 器件树中移除 UART1 和 OSPI1 主节点。
    • 替代方法 2: 尝试在 A72 SPL、A72 UBoot 和 Linux 中将其替换为 status=“reserved“、而不是 status=“disabled“。

    此致

    Gokul Praveen