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.

[参考译文] TMDS64GPEVM:尝试通过使用 A53内核的 Remoteproc 将以太网 IP 适配器二进制文件加载到 R5F 内核时、引导失败

Guru**** 2545060 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1060592/tmds64gpevm-boot-failed-while-trying-to-load-ethernet-ip-adapter-binary-to-r5f-core-via-remoteproc-using-a53-core

器件型号:TMDS64GPEVM

大家好、

我尝试使用 am64xGP EVM 测试以太网 IP 适配器的功能。 我使用的是 MCU 和 SDK 版本8.01.00.36。 我使用的是 ti sdk 基本映像。 我已经使用给出的步骤测试了 RPMessage 示例、并且成功了。

https://software-dl.ti.com/processor-sdk-linux/esd/docs/08_00_00_21/linux/Foundational_Components_IPC64x.html

我尝试使用相同的方法将以太网 IP 二进制文件加载到 R5F 内核、但遇到如下错误:


root@am64xx-EVM:/lib/firmware 回显开始>/sys/class/remoteproc/remoteproc1/ state
[867.766433] remoteproc remoteproc1:为78200000.r5f 加电
[867.774694] remoteproc remoteproc1:引导固件映像 am64-main_r5f0_1_FW、大小为1888468
[867.783225] remoteproc remoteproc 1:启动失败:-22
-sh:echo:write error:invalid arge.

使用了 SDK 提供的示例、但未对其进行任何修改。  

测试以太网 IP 适配器示例所使用的步骤如下:

1) 1)编译了二进制文件并将其复制到 EVM。

2) 2)将二进制文件复制到/lib/firmware 并将其重命名为 am64-main_r5f0_1_fw

3) 3)已执行命令  

回波停止>/sys/class/remoteproc/remoteproc0/state 
然后

回波开始>/sys/class/remoteproc/remoteproc0/state 

之后会出现上述给定的错误。 我尝试了 R5F0_0和 R5F0_1、但两者都显示了相同的错误。 请务必说明此问题、以便测试以太网 IP 适配器的功能。

 

谢谢、

亚伦·伦尼

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

    2022年3月3日编辑

    Aaron、您好!

    从 AM64x Linux 处理器 SDK 8.0开始、Linux RemoteProc 驱动程序不支持 R5正常关机:
    https://software-dl.ti.com/processor-sdk-linux/esd/docs/08_00_00_21/linux/Foundational_Components_IPC64x.html#booting-remote-cores-from-linux-console-user-space

    这意味着在执行回波停止后、R5内核未正确取消初始化。 由于 R5内核处于未知状态、因此您不知道在运行回波启动时它是否会正确启动。

    我们的目标是支持 AM64x Linux SDK 8.2 (2022年)中远程内核的正常关闭。   2022年3月更新:不再为 AM64x SDK 8.2安排正常关机。 我目前没有明确的时间表来说明何时将添加此功能。 在此之前、每次您要加载新的 R5固件时、请重新引导电路板。

    供参考、另一种可以更轻松地跟踪加载到远程内核中的二进制文件的技术是使用符号链接、而不是实际重命名二进制文件。 然后、每次您想要指向新的二进制文件时、只需更新符号链接:
    ln -fs 规范 BinaryName  am64-main_r5f0_1_fw

    此致、

    Nick

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

    您好、Nick、

    感谢你的答复。 我们尝试通过在重新启动电路板后按建议运行回显启动来引导 R5F 内核。 我们仍然遇到相同的错误。 最初、我们没有在 R5F 内核上运行任何程序。由于我们使用的是 TI SDK 基本映像、当我们尝试将以太网 IP 适配器二进制文件加载到 R5F 内核时、R5F 内核中没有运行二进制文件。  

    我们仍然遇到与第一封邮件中所述相同的错误。 SDK 随附的 IPC_RPMessage_Linux_echo 工作正常、可以使用 remoteproc 成功加载并执行到 R5F 内核。  

    请务必说明此问题、以便我们可以测试以太网 IP 适配器的功能。

    谢谢、

    亚伦·伦尼  

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

    您好!

    是否有更新?

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

    您好!

    添加到上一个问题后、您能否提供有关显示的错误代码的一些文档? 这将有助于我们更好地了解误差是什么。 此外、由于我们仍无法测试以太网 IP 功能、请对上述问题进行澄清。

    谢谢、

    亚伦·伦尼  

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

    Aaron、您好!

    如果 IPC_Echo 示例按预期工作、那么我怀疑二进制文件加载到 R5中的情况发生、而不是尝试加载的 Linux RemoteProc 驱动程序。 我将您的线程发送给以太网 IP 所有者。

    此致、

    Nick

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

    在"有关错误代码的文档"问题上:每当您在 Linux 终端上看到破折号和数字时、很可能是标准的 Linux 错误代码。 在此示例中、它抛出 Linux 错误代码22、即 EINVAL (无效参数)。

    还有... 我想知道您使用的二进制文件是由 Linux RemoteProc 驱动程序加载还是由其他程序(如 CCS)加载的。 至少对于 PRU 内核、二进制文件的格式会有所不同、具体取决于加载二进制文件的用户。 我不确定如果 Linux RemoteProc 驱动程序尝试加载不是 ELF 格式的二进制文件会发生什么情况。

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

    您好、Nick、

    感谢你的答复。 错误代码很可能是您建议的标准 Linux 错误代码。 我可以在此处找到一些文档:

    https://www.thegeekstuff.com/2010/10/linux-error-codes/

    关于以太网 IP 二进制文件、我们尝试使用 A53内核中的 Remoteproc 加载的二进制文件已使用 CCS 使用 SDK 8.01中提供的 EtherNetIP_MII 示例进行编译。  未对代码进行任何更改。 IPC_Linux_Echo 示例也使用 CCS 进行类似编译、可以通过 Remoteproc 成功加载。

    两个二进制文件都使用第一个问题中给出的相同步骤进行了测试、但无法加载以太网 IP 二进制文件。 请说明这一点。

    谢谢、

    亚伦·伦尼   

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

    你(们)好
    当 Linux 在 A53上运行时、我们尚未在 R5F 上测试 EtherNet/IP 适配器应用。 我们仅使用运行 EtherNet/IP 适配器的 RTOS 示例的独立 R5F 进行测试。


    我们已经处理了存储器映射与 Linux 的冲突、但 PRU-ICSS、I2C、闪存等外设的资源冲突仍然会发生。

    我们 过去在 AM65xx 上进行过类似的测试、只需对代码、链接器和器件树进行少量更改。 有关更多详细信息,请参阅此页面: https://software-dl.ti.com/processor-sdk-rtos/esd/AM65X/07_03_00_09/exports/docs/processor_sdk_rtos_am65xx_07_03_00_09/docs/user_guide/developer_notes_ethercat_slave_linux.html

    对于 AM64x、也可以遵循类似的步骤。

    此致
    Dhaval Khandla

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

    您好 Dhaval、

    感谢你的答复。 因此、到目前为止、测试以太网 IP 适配器功能的唯一方法是通过 CCS 将代码加载到 R5F 内核。 这意味着 Linux 不应在 A53内核上运行。 我的理解是否正确?

    我访问了上面提供的链接、了解要对代码进行哪些更改: https://software-dl.ti.com/processor-sdk-rtos/esd/AM65X/07_03_00_09/exports/docs/processor_sdk_rtos_am65xx_07_03_00_09/docs/user_guide/developer_notes_ethercat_slave_linux.html

    我看到、为了使 Linux 能够加载二进制文件、应用了一些补丁。 是否在未来的 SDK 版本中为 AM64x 计划了此类补丁?

    除上述资源外,是否要进行任何其他更改才能成功加载二进制文件?

    R5F 内核是否具有与其关联的非易失性存储器(如闪存)? 这只是为了知道、如果代码是通过 CCS 加载的、并且如果电路板在执行过程中断电、那么在电源恢复后、是否必须再次加载代码? 或者代码是否会存储在 R5F 的非易失性存储器中并自动执行?

    谢谢、

    亚伦·伦尼

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

    您好!

    是否有更新?

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

    你(们)好

    [引用 userid="499926" URL"~/support/processors-group/processors/f/processors-forum 1060592/tmds64gpevm-boot-failed-while 尝试加载以太网-IP-adapter-binary-to-r5f-core-over-remoteproc-using-a53-core/3932634#3932634"]感谢您的回复。 因此、到目前为止、测试以太网 IP 适配器功能的唯一方法是通过 CCS 将代码加载到 R5F 内核。 这意味着 Linux 不应在 A53内核上运行。 我的理解是否正确?[/引述]

    是的、这就是它现在的测试方式。 但是、如上所述、它应该可以与 A53上的 Linux 一起运行。

    [引用 userid="499926" URL"~/support/processors-group/processors/f/processors-forum 1060592/tmds64gpevm-boot-failed-while 尝试加载以太网-IP-adapter-binary-to-r5f-core-over-remoteproc-using-a53-core/3932634#3932634"]此类 SDK 版本是否计划在将来发布 AM64x[引用]

    未计划。

    [引用 userid="499926" URL"~/support/processors-group/processors/f/processors-forum 1060592/tmds64gpevm-boot-failed-while 尝试加载以太网-IP-adapter-binary-to-r5f-core-over-remoteproc-using-a53-core/3932634#3932634"]

    除上述资源外,是否要进行任何其他更改才能成功加载二进制文件?

    [/报价]

    您需要确保外设和内存使用方面没有冲突。


    [引用 userid="499926" URL"~/support/processors-group/processors/f/processors-forum 1060592/tmds64gpevm-boot-failed-while 尝试加载以太网-IP-adapter-binary-to-r5f-core-over-remoteproc-using-a53-core/3932634#3932634"]R5F 闪存是否与非易失性内核相关联? 这只是为了知道、如果代码是通过 CCS 加载的、并且如果电路板在执行过程中断电、那么在电源恢复后、是否必须再次加载代码? 或者代码是否会存储在 R5F 的非易失性存储器中并自动执行?[/quot]

    如果您使用 CCS 加载、则必须在加电后始终再次加载。 如果您使用 SBL OSPI、则需要将应用程序二进制文件刷写到闪存中、在这种情况下、会自动从闪存加载代码。

    "了解引导流程和引导加载程序"更详细地介绍了引导流程。 "SoC使用 CCS 脚本进行初始化"主要用于调试目的。

    此致
    Dhaval Khandla