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.

[参考译文] RTOS/AM5728:AM57x ARM-DSP IPC 通信示例崩溃

Guru**** 2540720 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/782399/rtos-am5728-am57x-arm-dsp-ipc-communication-example-crash

器件型号:AM5728

工具/软件:TI-RTOS

您好!

我正在尝试在 phytec AM57x 演示板(AM5728)上运行 ex02_MessageQ 示例。

我通过以下文档成功构建了示例并生成了以下二进制文件:

IPC_3_50_03_04/examples/DRA7XX_Linux_elf/ex02_MessageQ/dsp1/bin/debug/server_dsp1.xe66

IPC_3_50_03_04/Examples/DRA7XX_Linux_elf/ex02_MessageQ/host/bin/release/app_host

之后、我将这些二进制文件复制到器件/lib/firmware.


# ls -l /lib/firmware/dra7-dsp1-fw.xe66
lrwxrwxrwx 1 root root 用户(32 Mar 12 15:54 /lib/firmware/dra7-dsp1-fw.xe66)->/home/root/demo/server_dsp1.xe66

# for I in `seq 0 1 3`;do echo -n "remoteproc$i:";cat /sys/class/remoteproc/remoteproc $i/firmware;done remoteproc0:dra7-ipu1-fw.xem4 remoteproc1:dra7-ipu2-fw.xem4 remoteproc2:dra7-dsp1-fw.xe66-dsp3:remote66-dsp3

我使用以下命令重新启动 DSP1、以便它引导新固件:

回波停止>/sys/class/remoteproc/remoteproc2/state 回波开始>/sys/class/remoteproc/remoteproc2/state


然后启动 Linux 应用程序。
Linux 应用程序发送3条消息、然后等待回复。 此回复永远不会出现,Remoteproc 会检测到 DSP1中的崩溃并重新启动它。
现在这个大问题,为什么?

#./app_host DSP1
-->主要:
[26.848432] omap_hwmod:mu0_dsp2:_wait_target_disable 失败
[26.854336] OMAP-IMU 41501000.MMU:41501000.MMU:版本3.0
[26.862132] OMAP-IMU 41500.MMU:41500.MMU:3.0版
->Main_main:
--> App_create:
APP_CREATE:主机已就绪
<-- App_create:
--> App_exec:
APP_exec:发送消息1
APP_exec:发送消息2.
APP_exec:发送消息3
[32.672900] remoteproc remoteproc2:在40800000.dsp 中检测到崩溃:键入 watchdog
[32.680462] remoteproc remoteproc2:处理40800000.dsp 中的 crash #1
[32.686939] remoteproc remoteproc2:恢复40800000.dsp
Recvfrom 失败:链接已断开(67)
rpmsgThreadFxn:FD 13上的 transportGet 失败、返回-20
<-- App_exec:-20
<-- Main_main:
<--主要:
[32.713563] OMAP_hwmod:mu1_dsp1:_wait_target_disable 失败
[32.726490] OMAP_hwmod:mu0_dsp1:_wait_target_disable 失败
root@am5728-phycore-RDK:~/demo#[32.732746] remoteproc remoteproc2:已停止远程处理器40800000.dsp
[32.742274] remoteproc remoteproc2:为40800000.dsp 加电
[32.754445] remoteproc remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66、大小为4469652
[32.769392] OMAP_hwmod:mu0_dsp1:_wait_target_disable 失败
[32.775293] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
[32.781239] OMAP-iommu 40d020.MMU:40d020.MMU:版本3.0
[32.79622] virtio_rpmsg_bus virtio1:rpmsg 主机处于联机状态
[32.804178] remoteproc remoteproc2:registered virtio1 (类型7)
[32.810184] remoteproc remoteproc2:远程处理器40800000.dsp 现已启动
[32.817853] virtio_rpmsg_bus virtio1:创建通道 rpmsg-proto addr 0x3D



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

    不确定您为什么会遇到崩溃。 我怀疑它与构建相关。 您是否在 Linux SDK 中进行了高级构建? 您关注的是哪些文档? 它是 IPC 快速入门指南 ,software-dl.ti.com/.../Foundational_Components_IPC.html 吗?

    我认为 Phytec 不是问题、但您可以在/usr/bin/ipc/example/ex02_messageq/debug 中尝试 ex02_MessageQ 预编译映像、看看这是否适合您。 以下是 TI AM5728 GP EVM 中使用与您完全相同的命令的控制台日志、以及来自调试文件夹的 server_dsp1.xe66和来自发布文件夹的 app_host:

    root@am57xx-EVM:/lib/firmware ln -SF /usr/bin/ipc/examples/ex02_messageq/debug/server_dsp1.xe66 dra7-dsp1-fw.xe66
    root@am57xx-EVM:/lib/firmware echo stop >/sys/class/remoteproc/remoteproc2/state
    [338.508492] OMAP_hwmod:mu0_dsp1:_wait_target_disable 失败
    [338.514393] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
    [338.521347] OMAP-iommu 40d02000.MMU:40d02000.MMU:版本3.0
    [338.538408] OMAP_hwmod:mu0_dsp1:_wait_target_disable 失败
    [338.544336] remoteproc remoteproc2:已停止远程处理器40800000.dsp
    root@am57xx-EVM:/lib/firmware 回波开始>/sys/class/remoteproc/remoteproc2/state
    [348.291039] remoteproc remoteproc2:为40800000.dsp 加电
    [348.401183] remoteproc remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66、大小为4714172
    [348.416084] omap_hwmod:mu0_dsp1:_wait_target_disable 失败
    [348.421974] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
    [348.427915] OMAP-iommu 40d020.MMU:40d020.MMU:3.0版
    [348.435127] alloc_contig_range:[99004、99007) PFN 忙
    [348.449508] virtio_rpmsg_bus virtio2:rpmsg 主机处于联机状态
    [348.452075] virtio_rpmsg_bus virtio2:创建通道 rpmsg-proto addr 0x3D
    [348.462452] remoteproc remoteproc2:registered virtio2 (类型7)
    [348.468559] remoteproc remoteproc2:远程处理器40800000.dsp 现已启动
    root@am57xx-EVM:/lib/firmware
    root@am57xx-EVM:/lib/firmware
    root@am57xx-EVM:/lib/firmware /usr/bin/ipc/examples/ex02_messageq/release/app_host DSP1
    -->主要:
    [368.784655] OMAP-IMU 588820.MMU:588820.MMU:2.1版
    [368.829109] OMAP-hwmod:mu0_dsp2:_wait_target_disable 失败
    [368.835001] OMAP-IMU 41501000.MMU:41501000.MMU:版本3.0
    [368.841058] OMAP-IMU 41500.MMU:41500.MMU:3.0版
    ->Main_main:
    --> App_create:
    APP_CREATE:主机已就绪
    <-- App_create:
    --> App_exec:
    APP_exec:发送消息1
    APP_exec:发送消息2.
    APP_exec:发送消息3
    APP_exec:已收到消息、正在发送消息4
    APP_exec:已收到消息、正在发送消息5
    APP_exec:已收到消息、正在发送消息6
    APP_exec:已收到消息、正在发送消息7
    APP_exec:已收到消息、正在发送消息8
    APP_exec:已收到消息、正在发送消息9
    APP_exec:已收到消息、正在发送消息10
    APP_exec:已收到消息、正在发送消息11
    APP_exec:已收到消息、正在发送消息12
    APP_exec:已收到消息、正在发送消息13
    APP_exec:已收到消息、正在发送消息14
    APP_exec:已收到消息、正在发送消息15
    APP_exec:已收到消息
    APP_exec:已收到消息
    APP_exec:已收到消息
    <-- App_exec:0
    --> App_delete:
    <-- App_delete:
    <-- Main_main:
    <--主要:
    root@am57xx-EVM:/lib/firmware #[379.359802] OMAP-hwmod:mu0_dsp2:_wait_target_disable 失败
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    再看一下您的日志。 您是否使用脚本文件来运行示例? 在运行 APP_HOST 之前 、DSP 是否已启动? 从日志中可以看到、DSP 在您运行 app_host 后的6秒内启动。

    雷克斯

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

    是的、文档完全是 您链接的文档。

    是的、我通过设置环境变量并调用 make 从 SDK 执行高级编译:

    导出路径= /linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$path
    导出 TI_RTOS_PATH= 
    导出 IPC_INSTALL_PATH= /IPC_3_50_03_04
    CD 
    make ti-ipc-linux
    make ti-ipc-linux-examples 

    /usr/bin/ipc/example/ex02_messageq/debug 预编译图像是个好主意、我不知道它们在哪里。 通过将 DSP 固件指向预编译的固件、我能够成功运行 ex02_MessageQ 演示。

    我使用预编译 DSP +预编译 ARM 和预编译 DSP +我自己构建的 ARM 完成了这一操作、并且它起了作用。

    但是、当我使用自己的 DSP 固件版本时、它会失败。 我在构建 DSP 映像时没有错误、证明它实际上是在生成的。

    我在自己的编译和 DSP 固件的预编译映像之间进行了二进制差分、它们之间存在很大差异。

    不知道发生了什么,有什么想法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    未使用脚本文件。 DSP 已启动、我只是在启动 APP_HOST 之前没有包含它的日志。 您会看到 DSP 在几秒钟后出现、因为它崩溃并重新启动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 尝试使用预编译的二进制文件、并让我知道您按照哪些文档来构建示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想你可能跳过了我的两个回复中的一个:D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我错过了您的第一次回复、因为某种原因、我没有收到通知。
    在我尝试构建之前、我想确保您同时使用相同版本5.2的 Linux 和 RTOS SDK、对吧?
    完成后、我会告诉您我会得到什么。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我使用以下内容:
    - ti-processor-sdk-linux-am57xx-evm-05.02.00.10
    - ti-processor-sdk-rtos-am57xx-evm-05.02.00.10
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、db、

    我看不到问题。 以下是我来自 Linux 主机和 EVM 控制台的日志:

    Linux 主机构建 ex02_MessageQ 示例:
    2093回显$path
    2094 path=~/work/ti-processor-sdk-linux-am57xx-evm-05.02.00.10/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$path
    2095导出 TI_RTOS_PATH=~/work/ti-processor-sdk-rtos-am57xx-evm-05.02.00.10
    2096导出 IPC_INSTALL_PATH=~/work/ti-processor-sdk-rtos-am57xx-evm-05.02.00.10/ipc_3_50_03_04
    2097使 ti-IPC-Linux 成为标准
    2098 LA
    2099 cd ./ti-processor-sdk-linux-am57xx-evm-05.02.00.10/
    2100打造 ti-ipc-linux
    2101 CD ./ti-processor-sdk-rtos-am57xx-evm-05.02.00.10/
    2102导出 SDK_INSTALL_PATH=~/work/ti-processor-sdk-rtos-am57xx-evm-05.02.00.10
    2103导出 tools_install_path=~/work/ti-processor-sdk-rtos-am57xx-evm-05.02.00.10
    2104 CD processor_sdk_rtos_am57xx_5_02_00_10/
    2105资料来源:setupenv.sh
    2106制造 IPC_BIOS
    2107 CD /../ti-processor-sdk-linux-am57xx-evm-05.02.00.10
    2108 echo $TI_ROT_PATH
    2109导出 TI_RTOS_PATH=~/work/ti-processor-sdk-rtos-am57xx-evm-05.02.00.10
    2110 make ti-ipc-linux-examples
    2111 la ./ti-processor-sdk-rtos-am57xx-evm-05.02.00.10/ipc_3_50_03_04/examples/DRA7XX_linux_elf/ex02_MessageQ/dsp1/bin/debug/
    2112 cd ./ti-processor-sdk-rtos-am57xx-evm-05.02.00.10/ipc_3_50_03_04/examples/DRA7XX_linux_elf/ex02_MessageQ/
    2113 scp dsp1/bin/debug/server_dsp1.xe66 root@158.218.117.13:/home/root/ex02_dsp1.xe66
    2114 scp host/bin/debug/app_host root@158.218.117.13:/home/root/ex02_app_host
    2115历史

    EVM 控制台:
    am57xx-EVM 登录:root
    root@am57xx-EVM:~# pwd
    /home/root
    root@am57xx-EVM:~# ifconfig
    eth0 链路连接:以太网 HWaddr A0:F6:FD:AA:D2:CC
    iNet addr:158.218.117.13 Bcast:158.218.117.255 Mask:255.255.254.0
    inet6 addr:fe80::a2f6:fdff:羽毛:d2cc%775872/64范围:链接
    运行多播 MTU:1500公制:1的上广播
    RX 数据包:272错误:0丢弃:14超限:0帧:0
    TX 数据包:105错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:46309 (45.2 KiB) TX 字节:13342 (13.0 KiB)
    中断:89

    ETH1 链路连接:以太网 HWaddr A0:F6:FD:AA:D2:CD
    上广播多播 MTU:1500公制:1
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

    低 链路环状图:本地环回
    iNet addr:127.0.0.1掩码:255.0.0.0
    inet6 addr:::1%775872/128范围:主机
    正在运行 MTU:65536公制:1的上环回
    RX 数据包:169错误:0丢弃:0超限:0帧:0
    TX 数据包:169错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:12906 (12.6 KiB) TX 字节:12906 (12.6 KiB)

    root@am57xx-EVM:~# ls
    测试 test.cpp tibt
    root@am57xx-EVM:~# ls
    ex02_app_host ex02_dsp1.xe66测试 test.cpp TI
    root@am57xx-EVM:~# cd /lib/firmware
    root@am57xx-evm:/lib/firmware ls -l dra7-dsp1-fw.xe66
    lrwxrwxrwx 1根 根 58 Dec. 16 03:38 dra7-dsp1-fw.xe66 ->/usr/bin/ipc/examples/ex02_messageq/debug/server_dsp1.xe66
    root@am57xx-EVM:/lib/firmware ln -SF /home/root/ex02_
    ex02_app_host ex02_dsp1.xe66
    root@am57xx-EVM:/lib/firmware ln -SF /home/root/ex02_dsp1.xe66 dra7-dsp1-fw.xe66
    root@am57xx-evm:/lib/firmware ls -l dra7-dsp1-fw.xe66
    lrwxrwxrwx 1根 根 12月25日16 03:37 dra7-dsp1-fw.xe66 ->/home/root/ex02_dsp1.xe66
    root@am57xx-EVM:/lib/firmware echo stop >/sys/class/remoteproc/remoteproc2/state
    [305.614397] OMAP_hwmod:mu0_dsp1:_wait_target_disable 失败
    [305.620937] remoteproc remoteproc2:已停止远程处理器40800000.dsp
    root@am57xx-EVM:/lib/firmware 回波开始>/sys/class/remoteproc/remoteproc2/state
    [315.771008] remoteproc remoteproc2:为40800000.dsp 加电
    [315.783023] remoteproc remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66、大小为4447828
    [315.797897] OMAP-hwmod:mu0_dsp1:_wait_target_disable 失败
    [315.803788] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
    [315.809720] OMAP-iommu 40d020.MMU:40d020.MMU:3.0版
    [315.824106] virtio_rpmsg_bus virtio3:rpmsg 主机处于联机状态
    [315.826681] virtio_rpmsg_bus virtio3:创建通道 rpmsg-proto addr 0x3D
    [315.837474] remoteproc remoteproc2:registered virtio3 (类型7)
    [315.843503] remoteproc remoteproc2:远程处理器40800000.dsp 现已启动
    root@am57xx-EVM:/lib/firmware
    root@am57xx-evm:/lib/firmware
    root@am57xx-EVM:~# ls
    ex02_app_host ex02_dsp1.xe66测试 test.cpp TI
    root@am57xx-EVM:~# ls -l ex02_app_host
    -rwxr-xr-x 1根 根 25760 12月16 03:37 ex02_app_host
    root@am57xx-EVM:~#./ex02_app_host
    -->主要:
    错误:缺少 procName 参数
    用法:
    app_host [选项] procName

    参数:
    ProprocName :远程处理器的名称

    选项:
    H:打印此帮助消息
    l:列出可用的远程名称

    示例:
    APP_HOST DSP
    app_host -l
    app_host -h

    <--主要:
    root@am57xx-EVM:~./ex02_app_host DSP1
    -->主要:
    [337.177783] OMAP-iommu 588820.MMU:588820.MMU:版本2.1
    [337.224920] OMAP-hwmod:mu0_dsp2:_wait_target_disable 失败
    [337.230812] OMAP-IMU 41501000.MMU:41501000.MMU:版本3.0
    [337.237807] OMAP-iommu 41500.MMU:41500.MMU:版本3.0
    ->Main_main:
    --> App_create:
    APP_CREATE:主机已就绪
    <-- App_create:
    --> App_exec:
    APP_exec:发送消息1
    APP_exec:发送消息2.
    APP_exec:发送消息3
    APP_exec:已收到消息、正在发送消息4
    APP_exec:已收到消息、正在发送消息5
    APP_exec:已收到消息、正在发送消息6
    APP_exec:已收到消息、正在发送消息7
    APP_exec:已收到消息、正在发送消息8
    APP_exec:已收到消息、正在发送消息9
    APP_exec:已收到消息、正在发送消息10
    APP_exec:已收到消息、正在发送消息11
    APP_exec:已收到消息、正在发送消息12
    APP_exec:已收到消息、正在发送消息13
    APP_exec:已收到消息、正在发送消息14
    APP_exec:已收到消息、正在发送消息15
    APP_exec:已收到消息
    APP_exec:已收到消息
    APP_exec:已收到消息
    <-- App_exec:0
    --> App_delete:
    <-- App_delete:
    <-- Main_main:
    <--主要:
    root@am57xx-EVM:~#[348.638113] omap_hwmod:mu0_dsp2:_wait_target_disable 失败

    root@am57xx-EVM:~# uname -a
    Linux am57xx-EVM 4.14.79-gbde58ab01e #3 SMP 抢占 Wed 1月30日14:33:51 EST 2019 armv7l GNU/Linux
    root@am57xx-EVM:~#
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您花时间从头开始构建。

    我关注您的历史记录输出、我在构建时也做了同样的事情。

    但最大的区别在于 setupenv.sh 脚本。
    此脚本拒绝在非 Ubuntu 的 Linux 发行版上运行。

    我通过执行您在历史记录中展示的操作并省略 setupenv.sh、再次构建了二进制文件、但我仍然遇到此问题。

    setupenv.sh 在构建过程中看起来很重要。

    我会将其标记为已解决、尽管我仍然遇到此问题、但它似乎与我的环境有关。