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.

[参考译文] PROCESSOR-SDK-AM57X:IPC 示例无法创建和执行应用程序

Guru**** 2419530 points
Other Parts Discussed in Thread: BEAGLEBOARD-X15

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1528563/processor-sdk-am57x-ipc-example-fails-to-create-and-execute-app

器件型号:PROCESSOR-SDK-AM57X
主题中讨论的其他器件:BeagleBoard-X15

工具/软件:

您好:

我在运行 IPC ex02_MessageQ 示例时遇到问题。 我目前使用的是 SDK 9.03 默认映像和 am57x BeagleBoard x-15。 下面我附上了我尝试使这些示例正常工作的日志。

e2e.ti.com/.../ipc_5F00_demo.log

如您所见、我成功地以符号方式链接了 DSP1 和 IPU1 的示例固件。 当我尝试在 DSP1 和 IPU1 上运行 APP_HOST 时、就会出现问题。 程序将陷入“应用程序创建“阶段。 我尝试在 dsp2 和 Ipu2(默认固件)上运行 app_host、以查看 ex02_MessageQ 固件是否出现问题、但我遇到了相同的问题。 我的行为有误吗? 您以前遇到过这个问题吗?

感谢你的帮助

此致

-工作

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

    尊敬的 Job:  

    我将尝试在本周重新创建。

    由于带宽的原因、请预计响应会延迟。

    -Josue

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

    你好、Josue、在重新创建此内容方面有什么好运吗?  我们的客户尝试从 SDK 06 迁移到 SDK 09、并且需要 DSP IPC 正常工作。

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

    Jonathan、

    我还没有。 我今天将讨论这个问题。

    -Josue

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

    您好 Josue、

    您能搞清楚吗?

    好极了

    -工作

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

    作业、

    我开始研究这个问题、明天会更新。 很抱歉耽误时间、我在多个领域工作、而且 E2E 回复被耽误了。  

    -Josue

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

    您好作业、

    我正在继续调查并取得进展。 尚未成功。

    -Josue

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

    感谢 Josue、

    到目前为止、我们已经看到 DSP1 正在运行、创建了 MSGQ、并正在等待第一条消息。  主机应用程序正在运行、在等待创建 MSGQ 时卡住。  我们已经开始尝试深入研究 rpmsg 驱动程序、以了解下一步要查找的位置、并找出主机无法看到创建的 MSGQ 的原因。

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

    我在度假时不在办公室。  

    此致、

    Josue

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

    你好 Josue、

    我们还能够从内核中找到 LAD 日志文件/tmp/LAD/lad.txt 文件。 它会报告以下错误:

    Retrieving command...
    NameServer_attach: --> procId=1, refCount=0
    NameServer_attach: socket failed: Domain 46, Error no 97, Error string:Address family not supported by protocol
    NameServer_attach: <-- refCount=0, status=-1
    Sending response...
    

     LAD_NAMESERVER_GETUINT32: calling NameServer_getUInt32(0x32548, 'DSP1:MsgQ:01')...
    NameServer_getLocal: entry key: 'DSP1:MsgQ:01' not found!
    NameServer_getRemote: no socket connection to processor 1
    NameServer_getRemote: no socket connection to processor 2
    NameServer_getRemote: no socket connection to processor 3
    NameServer_getRemote: no socket connection to processor 4
    

    meta-ti/meta-ti-BSP/recipes-ti/ipc/ti-ipc_git.bb 配方会生成 lad.txt 文件。 检查此配方的源代码后、似乎名称服务器无法创建用于传输消息的套接字。

    我不确定这些内核错误消息是否与此问题相关、但 virtio_rpmsg_bus 报告如下:

    virtio_rpmsg_bus virtio0: malformed ns msg (72)
    virtio_rpmsg_bus virtio0: malformed ns msg (72)
    

    我将继续深入研究 ti-IPC Yocto 源代码和内核 rpmsg 内核驱动程序、看看我是否可以了解详情。

    此致、

    -工作

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

    作业、

    感谢您的更新。 我在重新构建主机应用程序时遇到问题、仍在调查中。 是否重新使用旧 SDK 中的主机应用程序?

    -Josue

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

    你好 Josue、

    通过对我附加的.diff 文件中所述进行更改、导出以下变量并为设置脚本提供源、我能够在 SDK 9.03 RTOS SDK 中构建 APP_HOSTER 和 SERVER_dsp1.xe66。  

    导出变量:(路径将因 SDK 安装目录而异)

    export TI_SDK_PATH=/export/home/jsava/ti-processor-sdk-linux-am57xx-evm-09_03_06_05
    export PATH=$TI_SDK_PATH/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-linux-gnueabi:$PATH
    export TI_RTOS_PATH=/export/home/jsava/processor_sdk_rtos_am57xx_09_03_00_00
    export IPC_INSTALL_PATH=$TI_RTOS_PATH/ipc_3_52_00_00
    # Env variables for ipc_bios compile
    export SDK_INSTALL_PATH=$TI_RTOS_PATH
    export TOOLS_INSTALL_PATH=$TI_RTOS_PATH
    export XDC_INSTALL_PATH=$TI_RTOS_PATH/xdctools_3_55_02_22_core
    export BIOS_INSTALL_PATH=$TI_RTOS_PATH/bios_6_76_03_01
    export LINUX_SYSROOT_DIR=$TI_SDK_PATH/linux-devkit/sysroots/armv7at2hf-neon-oe-linux-gnueabi
    

    差分:

    e2e.ti.com/.../sdk9_5F00_03_2D00_RTOS.diff

    我还在中运行了以下 make 命令 /processor_sdk_rtos_am57xx_09_03_00_00/ipc_3_52_00_00/示例:

    make DRA7XX_linux_elf/ex02_messageq/ HOSTOS="linux"           PLATFORM=$IPC_PLATFORM           XDC_INSTALL_DIR="$XDC_INSTALL_PATH"           BIOS_INSTALL_DIR="$BIOS_INSTALL_PATH"           IPC_INSTALL_DIR="$IPC_INSTALL_PATH"           $IPC_TOOLS_PATHS
    

    然后、我将 APP_Host 和 dsp1 服务器二进制文件复制到 am57x BeagleBoard-x15 中、成功地从 dsp1 发送和接收消息。 我随附了以下相关日志:

    e2e.ti.com/.../3000.ex02_5F00_messageq.log

    当 dsp1 的状态为“暂停“时、我感到困惑。

    遗憾的是、当我将这些二进制文件复制到定制电路板时、app_host 仍在等待 dsp1 发送的消息。 我认为这与以下内核错误消息有关、BeagleBoard-x15 上不存在该消息。

    [    7.905456] virtio_rpmsg_bus virtio0: malformed ns msg (72)

    我一直在挖掘 virtio_rpmsg_bus 驱动程序,但没有成功。 您是否有任何建议的调试步骤?


    谢谢、如果我对构建 ex02_MessageQ 示例的任何说明不清楚、请告诉我。  

    此致

    -工作

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

    谢谢 Job,

    我会在我这边尝试一下,并尝试给你一些方向。

    -Josue

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

    你好 Josue

    我们已经找到了这个解决方案! 在 meta-tisdk/食谱 -kernel/linux/linux-ti-staging 的 meta-tisdk Yocto 层中、有几个补丁。

    SRC_URI:append:am57xx = " \
        file://0001-arm-dts-am57xx-idk-common-Relocate-MAC-Ethernet-Node_2.patch \
        file://0001-support-TI-GC320-drivers.patch \
        file://0001-disable-gcc-plugin-config.patch \
        file://0001-arm-dts-am57xx-beagle-x15-Disable-the-PRU-cores.patch \
        file://0001-rpmsg-introduce-rpmsg_ns_msg_ext-structure.patch \
        file://0002-remoteproc-add-api-for-retrieving-a-rproc-unique-id.patch \
        file://0003-net-rpmsg-add-support-for-new-rpmsg-sockets.patch \
        file://0004-net-rpmsg-add-support-to-handle-a-remote-processor-e.patch \
        file://0005-net-rpmsg-return-ESHUTDOWN-upon-Tx-on-errored-socket.patch \
        file://0006-net-rpmsg-return-ENOLINK-upon-Rx-on-errored-sockets.patch \
        file://0007-net-rpmsg-unblock-reader-threads-operating-on-errore.patch \
        file://0008-remoteproc-Fix-multiple-back-to-back-error-recoverie.patch \
        file://0009-arm-multi_v7_defconfig-enable-rpmsg-proto-driver.patch \
        file://0001-ARM-dts-Fix-suspend-issue-for-vip.patch \
    "

    我将这些补丁应用于自定义电路板内核、并能够在 DSP1 上成功运行 APP_HOST。 您的 ti-linux-6.1.y 内核分支没有提交这些补丁、是否有理由? 我还注意到、没有这些补丁、特别是 0001-disable-gcc-plugin-config.patch、您无法手动构建 ti-linux-6.1.y 分支。 因此、在我看来、这些修补程序应该提交到发布的 6.1 内核分支中。 如果我的结论忽视了一些关键问题、请告诉我。  

    此致、

    -工作

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

    作业、

    我正在询问 Dev 团队以回答您的问题。 非常棒的工作! 很高兴这个问题得到解决。

    -Josue

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在向 Dev 团队咨询以回答您的问题。 非常棒的工作! 很高兴这个问题得到解决。

    我们仍然需要一些关于正确修复 product.mak 和 makefiles 的指导。  上面发布的职位变更似乎有效、但可能不是最好的。

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

    我懂了。 我这边还在做这方面的工作。

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

    Jonathan、Job,

    建立固件的一种官方方式仍在进行中。

    现在工作的方法是一个很好的解决办法。

    关于上面的问题、  

    是否有理由在 ti-linux-6.1.y 内核分支中未提交这些补丁?

    某些更改和修复无法上流式传输、因此它们将作为 SDK 的修复进行。  

    -Josue

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

    您好作业、

    尝试  将文件 e2e.ti.com/.../Makefile_5F00_ipc_5F00_linux_5F00_examples 添加到顶层 Linux SDK 中的 makerules 文件夹:

    ti-processor-sdk-linux-am57xx-evm-09_03_06_05$ ll makerules/
    total 36
    drwxrwxr-x  2 josue josue 4096 Jul 11 15:30 ./
    drwxrwxr-x 14 josue josue 4096 Jul 18 15:58 ../
    -rw-rw-r--  1 josue josue 3435 Dec 17  2024 Makefile_example
    -rw-rw-r--  1 josue josue 5003 Jul 18 16:08 Makefile_ipc_linux_examples
    -rw-rw-r--  1 josue josue 1780 Dec 17  2024 Makefile_linux
    -rw-rw-r--  1 josue josue 1507 Dec 17  2024 Makefile_linux-dtbs
    -rw-rw-r--  1 josue josue  605 Dec 17  2024 Makefile_oprofile-example
    -rw-rw-r--  1 josue josue 1401 Dec 17  2024 Makefile_u-boot
    

    然后、制作 IPC 示例的步骤与以前类似、

    1. 将 RTOS SDK 路径导出为 TI_RTOS_PATH:
      export TI_RTOS_PATH=/<PATH_TO_SDK>/processor_sdk_rtos_am57xx_09_03_00_00
    2. 运行以下 make 命令:
      make ti-ipc-linux-examples

    请告诉我这是否有效。

    它应该可以在未修改的 TI 9.03.x SDK 上运行。

    此致、

    Josue

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

    你好 Josue、

    是的、我能够让这个功能发挥作用。 谢谢!

    此致、

    作业