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.

[参考译文] TMDS64EVM:设置 PRU 时钟时出现 AM64x SoC R5F EtherCAT 问题

Guru**** 2974170 points

Other Parts Discussed in Thread: SYSCONFIG, TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1660760/tmds64evm-am64x-soc-r5f-ethercat-issue-when-setting-the-pru-clocks

器件型号: TMDS64EVM
主题中讨论的其他器件: SysConfig、

您好!TI 论坛、

我们目前正在使用基于 AM64x (Sitara) SoC 的定制板通过 R5F 和工业通信 SDK 11_00_15 来实现 EtherCAT 目的

我们正在尝试使用经调整的 SysConfig 和新连接启动示例代码、但遇到内部代码问题。

在一些生成的代码调试之后、我们得出以下结论:
代码启动时:
然后主调用 System_init 跟随到 SysConfig 生成的代码中、最终在 Powerclock_init 中失败
在 PowerClockInit 中、当它尝试禁用 TISCI_DEV_PRU_ICSSG1 中的任何时钟以设置其在–1 时失败的所需频率时。

代码栈:
主要

(SysConfig 生成的文件)
TI_drivers_config
TI_POWER_CLOCK_CONFIG

(SDK)

clock.c - soc 频率 WithParent

Sciclient_pmModuleClkRequest — 呼叫失败

到目前为止、我们一直在调试和仔细检查 syscfg 和示例代码。
我们正在联系、因为这似乎是内部问题。

共享 syscfg 文件和主 dts。 该 DTS 基于 am642-EVM。 请考虑较低的 dtss 与 TI 提供的相同。
custom_am642_dts.txt custom_syscfg.txt 

感谢任何输入。
提前感谢您的帮助。

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

    Linux 是否在 A53 上并行运行?

    我建议升级到最新的工业通信 SDK、因为 11.00 版已经过时。 是否有使用 11.00 版的具体原因? -无论上述问题。

    BR
    Jc.

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

    您好 João、

    您是否 为您的用例选择了 SysConfig 中的正确内核时钟? 从您共享的文件中、它看起来默认为 200MHz。  

    此致、
    Aaron

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

    您好:JC、

    感谢您的意见。 这有助于表明我们的更新尚未完成。
    已经使用新的 SDK 执行了一些测试:12_00_00_27。

    将在单独的注释中提供更新。

    此致、
    João Rodrigues

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

    您好 Aaron、

    感谢您的答复。
    自 EVM 测试日起、我们一直使用 200MHz、再次测试这种情况是不可行的。

    根据 JC 的评论、我们更新了 SDK 和 SysConfig 版本。 将在单独的注释中提供更新。

    此致、
    João Rodrigues

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

    大家好:

    再次感谢您的意见。

    我们将 SDK 版本更新为 12_00_00_27、并将 SysConfig 更新为 1.26。

    生成新文件后、我发现 ti_power_clock_config 存在一些差异。
    ICSSG1 没有 3 个条目、而是只有 2 个条目。
    我还注意到 ICSSG1 内核 CLK 的时钟父级 ID 从 2 变为 1。

    考虑到这一点、我们有相同的行为:挂起在同一个 soc 调用上
    它位于 SOC_MODULESetClockFrequencyWithParent 函数中的 SDK 文件中。

    status = Sciclient_pmModuleClkRequest(moduleId,
                                                  clkId,
                                                  TISCI_MSG_VALUE_CLOCK_SW_STATE_UNREQ,
                                                  0U,
                                                  SystemP_WAIT_FOREVER);


    我还忘了提及 — 我们的 Linux 并行运行、因此我为什么共享 DTS 文件来尝试发现资源冲突。

    这是新的 SysConfig、与以前相比更改很少、其中最大的一个是 SysConfig 版本。

    调查仍在进行中,但我目前最大的结论是:读取时钟信息看起来不错,甚至可以读取时钟状态返回 1(时钟正在运行)。 停止时钟【在之后更改时钟配置】的调用以–1 失败。

    再次感谢所有的意见和任何建议! 感谢您的帮助。

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

    忘记链接新 SysConfig。 这里是 ise2e.ti.com/.../0020.custom_5F00_syscfg.txt

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

    大家好:

    作为更新、这里进行了管理、以准备针对 AM64x Sitara 评估板 (EVM) TMDS64EVM 的测试、我们会在这里尝试运行相同的应用程序。
    使用相同的 syscfg 版本(当然是不同的 syscfg 输入文件)、使用 相同的 SDK 版本:我们具有完全相同的行为 — 挂起在   Sciclient_pmModuleClkRequest 上。

    始终开放寻求可能的解决方案和/或问题。
    提前感谢您。

    此致、
    João Rodrigues

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

    您好 João、

    感谢 EVM 的重现。 这样可以排除特定于电路板的问题、并使其更易于诊断。

    查看 SysConfig 文件、我注意到您看到 ipc.enableLinuxIpc = true. 、这是否意味着 Linux 首先引导并通过 Remoteproc 加载 R5F?

    此致、
    Aaron

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

    您好 Aaron、

    感谢您的答复。
    这正是事实 — 恰到好处。

    此致、
    João Rodrigues

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

    您好 João、

    EtherCAT 子器件演示假定独立 R5F 引导、其中 R5F 用作安全引导主机(主机 ID 35)。 而当 Linux Remoteproc 加载它时、我相信 R5F 处于非安全上下文(主机 ID 36)中、并且演示设置的 Sciclient 代理线程配置可能不再与 TIFS 预期匹配。

    有几件事值得你检查:

    当通过 Linux 引导时、ICSSG 外设所有权默认位于 Linux 中。 需要更新资源分配、以便将该所有权移至 R5F。 要对 rm-cfg 文件进行自定义更改、请按照 如何 将资源分区工具与 Processor SDK v9.1 结合使用中所述的步骤操作。 按照 ICSSG 资源分配中的步骤更新“资源分配 “表、并将 U-boot 目录的 rm-cfg.yaml 文件替换为该工具生成的文件。

    使用以下命令创建指向 RTOS 固件的软链接。 有关在 Linux 引导期间引导远程内核的更多详细信息、请参阅 AM64x Academy 引导远程内核。

    $ ln -sf /lib/firmware/ am64-main-r5f0_0-fw


    运行 SysConfig 后、还要检查生成的 ti_DPL_config.c 并确认 Sciclient_Config Prms_t 使用的是主机 ID 36、而不是 35。

    另外、DTS 中的一些小问题值得修正:

    • icssg1_MDIO 应该是“保留“而不是“禁用“、如果您运行 IEP 同步模式、则 timesync_router 也应该是“保留“。

    此致、
    Aaron

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

    您好 Aaron、

    非常好的见解。 我们对此表示感谢。
    我们仅在/lib/firmware 中使用 SysConfig 输出和应用程序、以前(大约 9 个月前)就使用过这些输出和应用程序。 我们还不断更新 SDK、您所说的内容使我们相信最近的 SDK 改变了这个开发的方式、因此我们将开始研究如何最好地调整当前的 SDK。

    作为初始注释 — 我在两个电路板 (定制和 Sciclient_Config)生成的文件中都没有引用 ti_DPL_config.c 中的 EVM.Prms_t。 这意味着我无法检查我们的主机 ID 是 36 还是 35。

    我会尽快提供更新。

    此致、
    João Rodrigues

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

    你好、Aaron、

    作为一个更新:你的答复引导我们朝着正确的方向。  
    在 tiboot3 中禁用/保留 ICSSG 器件后、我们成功地将所有内容启动并按照以前的方式运行。

    应用程序在 R5F 上启动并运行、我们已与 EtherCAT 建立连接、并且演示数据也正在流式传输。

    如果我们必须对 R5F 实现安全启动、我们将保存您的指导、但我们所需的应用并非如此。

    再次感谢您的支持。

    此致、
    João Rodrigues