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/66AK2G02:Linux/66AK2G02:无法在 A15和 DSP 之间使用 IPC 进行同步

Guru**** 2589245 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638276/rtos-66ak2g02-linux-66ak2g02-can-not-synchronize-between-a15-and-dsp-with-ipc

器件型号:66AK2G02

工具/软件:TI-RTOS

您好!

我使用的是66AK2G02 ti-processor-sdk-rtos-k2g-evm-04.01.00.06和相同版本的 SDK-Linux。

我构建 66AK2G_Linux_elF/ex02_MessageQ 示例、并将其复制到文件系统中。

root@k2g-EVM:~ uname -r
4.9.41-ge3a80a1c5c
root@k2g-EVM:~ root
@k2g-EVM:~ root
@k2g-EVM:~ root k2g-EVM:# ls
app_host server_core0.xe66
root@k2g-evm:~



~ mpmcl reset dsp0 reset succeeded root@k2g-evm:~# mpmcl load dsp0 server_core0.xe66 load succeedroot@k2g-evm:# mpmcl run dsp0 server_core0.x800e0.xe66 dsps unspecs rptire9640
dsps [_remotipte40pri dsp40:
unspecs unspecified remotio

rproc pre9640rg_remote40rg-09cr e40] 找不到视频源
[97.15074] remoteproc remoteproc0:注册的 virtio0 (类型7)
[97.173064] remoteproc remoteproc0:远程处理器10800000.dsp 现
已成功运行
root@k2g-evm:~ó n
root@k2g-evm:~ó n ls
app_host 服务器_core0.xe66
root@k2g-evm:~













^#./app_host CORE0 --> main:--> Main_main:--> App_create:file:App.c、function:app_create、line:82 file:app_create、line:msgq0:app_msps、line:app_mc1:app_mc1:inc、function:gmsgms0:inc、inc:inc:cr、inc:inc:cr、inc:cr、inc:inc:inc:inc:cr、inc:inc:inc、inc:inc:inc:cr、inc:inc:inc:inc:inc、inc、inc:cr、inc:inc:inc:inc:inc:inc:inc、inc:inc、inc:s、inc:inc、inc:s、inc、inc 

我使用 mpmcl 命令来重置\load\run dsp0。

但是 dsp0不能创建 MessageQ、app_host 将在 MessageQ_open 处停止。

奇怪的是、我在  /sys/kernel/debug/remoteproc/remoteproc0/trace0.上无法执行任何操作

我的问题是:

  为什么/sys/kernel/debug/remoteproc/remoteproc0/trace0为空?DSP 内核被唤醒但未运行?

如何修复它并运行 ex02_MessageQ 示例?

我们将感谢您的任何帮助。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队。 他们的反馈将在此处发布。

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

    您好、是的、

    我需要设置环境以准确判断您的案例中出现了什么错误、但从查看您的日志、运行测试的参数是错误的、它应该是"../app_host dsp0"

    请参阅 processors.wiki.ti.com/.../Processor_SDK_IPC_Quick_Start_Guide 中有关运行 IPC 示例的 IPC 文档

    雷克斯

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

    您好、Rex
    感谢您的快速回复。

    抱歉、我在"mpmcl run dsp0"命令中出现错误。但我认为"./app_host CORE0"是正确的、这是我的日志。

    root@k2g-EVM:~# ls
    APP_HOST server_core0.xe66
    root@k2g-EVM:~# mpmcl 复位 dsp0
    重置成功
    root@k2g-evm:~# mpmcl load dsp0 server_core0.xe66
    加载成功
    root@k2g-EVM:~# mpmcl 运行 dsp0
    [66.926806] remoteproc remoteproc0:加电10800000.dsp
    [66.938176] remoteproc remoteproc0:引导未指定的预加载 FW 映像
    [66.956479] virtio_rpmsg_bus virtio0:rpmsg 主机处于联机状态
    [66.972458]连接器-HDMI 连接器:找不到视频源
    [66.979055] remoteproc remoteproc0:注册的 virtio0 (类型7)
    [67.001288] remoteproc remoteproc0:远程处理器10800000.dsp 现已启动
    运行成功
    root@k2g-evm:~./app_host dsp0
    -->主要:
    ->Main_main:
    --> App_create:
    文件:App.c、函数:app_create、line:82
    文件:App.c、函数:app_create、line:90
    app_host:./../../hlos_common/src/utils/MultiProc.c:79:MultiProc_getName:断言`id <_MultiProc_cfg.numProcessor'失败。
    已中止(转储内核)
    root 用户@k2g-EVM:~年9月26日21:49:55 k2g-EVM 进程918 (APP_HOST)用户0转储内核。

    root@k2g-evm:~./app_host -l
    -->主要:
    处理器列表
    ProcID=0、procName=host
    ProcID=1、procName=CORE0

    此外、我注意到您建议我尝试 mc_demo_ipc.sh、以下是一些日志。

    root@k2g-evm:/usr/bin。/mc_demo_ipc.sh
    平台:evmTCI66AK2G02 num_dsp:1.
    正在加载 DSP 映像
    正在重置内核0...
    [414.378755] remoteproc remoteproc0:已停止远程处理器10800000.dsp
    重置成功
    Dsp0处于复位状态
    完成
    正在加载和运行...
    /lib/firmware/ipc/ti_platforms_evmTCI66AK2G02_core0/messageq_single.xe66
    加载成功
    [414.473851] remoteproc remoteproc0:加电10800000.dsp
    [414.479791] remoteproc remoteproc0:引导未指定的预加载 FW 映像
    [414.501877] virtio_rpmsg_bus virtio0:rpmsg 主机处于联机状态
    [414.508978] connector-HDMI connector:找不到视频源
    [414.531363] remoteproc remoteproc0:注册的 virtio0 (类型7)
    [414.537575] remoteproc remoteproc0:远程处理器10800000.dsp 现已启动
    运行成功
    运行 MessageQBench:
    使用 numLOops:1000;payloadSize:8,ProcID:1
    输入 MessageQApp_execute
    本地 MessageQId:0x81
    ^CIPC:捕获到 SIGINT、调用 IPC_STOP...
    root@k2g-evm:/usr/bin cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
    root@k2g-evm:/usr/bin
    root@k2g-evm:/usr/bin

    我认为真正的问题是 dsp0没有运行。

    我发现/sys/class/misc/dsp0/power/runtime_status 不受支持。但 我检查 DTS 文件、dsp0配置与 文档相同。

    您能告诉我您的 dsp0运行时状态吗?

    如果您有任何进展、请告诉我。

    谢谢。

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

    当您运行 MessageQBench 演示时、您是在运行 APP_HOST 后还是在 K2G 启动后运行? 如果不是全新启动、您可以在内核启动后尝试一下吗? 我的 runtime 状态也不受支持、但我的演示运行良好。 日志如下所示。 我需要构建 ex02并进行尝试。

    root@k2g-evm:/usr/bin mc_demo_ipc.sh
    平台:evmTCI66AK2G02 num_dsp:1.
    正在加载 DSP 映像
    正在重置内核0...
    [124.856721] remoteproc remoteproc0:已停止远程处理器10800000.dsp
    重置成功
    Dsp0处于复位状态
    完成
    正在加载和运行...
    /lib/firmware/ipc/ti_platforms_evmTCI66AK2G02_core0/messageq_single.xe66
    加载成功
    [124.985332] remoteproc remoteproc0:启动10800000.dsp
    [124.993675] remoteproc remoteproc0:启动未指定的预加载 FW 映像
    [125.007982] alloc_contig_range:[81f804、81f807) PfN 忙
    [125.019570] virtio_rpmsg_bus virtio0:rpmsg 主机处于联机状态
    [125.027121] virtio_rpmsg_bus virtio0:创建通道 rpmsg-proto addr 0x3D
    [125.049736] remoteproc remoteproc0:注册的 virtio0 (类型7)
    [125.071184] remoteproc remoteproc0:远程处理器10800000.dsp 现已启动
    运行成功
    运行 MessageQBench:
    使用 numLOops:1000;payloadSize:8,ProcID:1
    输入 MessageQApp_execute
    本地 MessageQId:0x80
    远程队列 ID [0x10080]
    正在与远程处理器 CORE0交换1000条消息...
    CORE0:平均往返时间:131 μ s
    离开 MessageQApp_execute

    root@k2g-evm:/usr/bin uname -a
    Linux k2g-EVM 4.9.41-ge3a80a1c5c #1 SMP 优先于 Tue 9月26日18:43:41 EDT 2017 armv7l GNU/Linux
    root@k2g-evm:/usr/bin
    root@k2g-evm:/usr/bin cat /sys/class/misc/dsp0/power/runtime_status
    不受支持
    root@k2g-evm:/usr/bin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、是的、

    你是对的。 它是 APP_HOST 命令的 CORE0、但在 K2G 上运行 ex02示例时没有问题。 请查看我的日志:

    root@k2g-EVM:~# mpmcl 复位 dsp0
    [182.690821] remoteproc remoteproc0:已停止远程处理器10800000.dsp
    重置成功
    root@k2g-EVM:~# mpmcl status dsp0
    Dsp0处于复位状态
    root@k2g-EVM:~# mpmcl load dsp0 /lib/firmware/k2g_ex02/server_core0.xe66
    加载成功
    root@k2g-EVM:~# mpmcl status dsp0
    Dsp0处于已加载状态
    root@k2g-EVM:~# mpmcl 运行 dsp0
    [231.24411] remoteproc remoteproc0:加电10800000.dsp
    [231.250054] remoteproc remoteproc0:引导未指定的预加载 FW 映像
    [231.291929] alloc_contig_range:[81f800、81f803) PFN 忙
    [231.298196] alloc_contig_range:[81f800、81f803) PfN 忙
    [231.325021] alloc_contig_range:[81f840、81f880) PfN 忙
    [231.347359] virtio_rpmsg_bus virtio0:rpmsg 主机处于联机状态
    [231.353264] virtio_rpmsg_bus virtio0:创建通道 rpmsg-proto addr 0x3D
    [231.386551] remoteproc remoteproc0:注册的 virtio0 (类型7)
    [231.395859] remoteproc remoteproc0:远程处理器10800000.dsp 现已启动
    运行成功
    root@k2g-evm:~./ex02_apphost CORE0
    -->主要:
    ->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@k2g-evm:~
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rex  

    感谢您的测试日志、我认为这将对我大有帮助。

    在日志中、我看到" virtio_rpmsg_bus virtio0:创建通道 rpmsg-proto addr 0x3D"、我的日志中看不到。

    但我认为这是因为我的 dsp0没有应答主机调用。

    如果您不介意、可以告诉我您使用的 SDK 版本、并在  您的环境中共享 server_core0.xe66和 app_host 文件吗?我想 排除 SDK-RTOS 编译的问题。

    我想我会为我提供很多帮助。

    谢谢。

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

    您好、是的、

    我使用的是 ProcSDK 4.1版本、内核 v4.9.41、如上一篇文章中的"uname -a "所示。 我按照 IPC 快速入门指南中的步骤、使用 Linux 和 RTOS 4.1 ProcSDK 构建 ex02示例。 二进制文件已附加。

    雷克斯

    e2e.ti.com/.../ex02_5F00_msgq.tar