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-J784S4:如何在两个 RTOS 内核(mcu20和 c7x1)之间建立通信、而不涉及 Linux 内核(a72)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1496966/processor-sdk-j784s4-how-to-establish-communication-between-two-rtos-core-mcu20-and-c7x1-without-involvement-of-linux-core-a72

部件号:PROCESSOR-SDK-J784S4

工具/软件:

尊敬的 Santosh JhaNikhilDasan Tarun Mukesh Puvada

我使用的是 j784s4电路板、因为已经有模型推理通过 Linux 内核(a72)触发、而 tidl 模型推理将在 c7x1内核中运行。  
此处的原始数据将存储在 L3共享存储器中、a72内核将获取原始 ADC 数据、并发送到 c7x2内核(该内核将生成热图)、然后发送到 a72内核、再触发从 a72到 c7x1内核的模型推理、tidl 软件将在其中运行。

我们在 Linux+RTOS 中完成的测试是通过运行 IPC 应用程序-> ipc_echo_test_freertos  
virtios 和端点在/sys/bus/virtios/devices 目录中生成。
我们针对 RTOS+RTOS 进行了测试、运行了 IPC_RTOS_ECHO_TEST_FreeRTOS
virtios genrated 但不包括端点。
然后、只有我们知道 RTOS + RTOS 内核通信、我们才无需检查 virtios 和端点、所有这些都是针对 Linux 的。  
是这样吗?
现在、我想知道如何移除 A72内核、如何测试以及需要测试哪个 IPC 应用来检查 RTOS+RTOS 内核通信正在发生?

请提供有关我们需要如何进行 RTOS+RTOS 通信的意见、以及哪个 IPC 应用负责该通信? 如何验证?

提前感谢、
等待您的答复

Swedha R

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

    尊敬的 Swedha:

    我会在内部进行检查。 我会尽快得到更新。

    此致、
    Sivadeep

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

    尊敬的 Sivadeep P R
    感谢您的回复并等待您的回复。

    此致、
    Swedha R

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

    您好、Swedha、

    [引述 userid="619932" url="~/support/processors-group/processors/f/processors-forum/1496966/processor-sdk-j784s4-how-to-establish-communication-between-two-rtos-core-mcu20-and-c7x1-without-involvement-of-linux-core-a72
    我们在 Linux+RTOS 中通过运行 IPC 应用程序完成的测试-> ipc_echo_test_freertos  

    IPC_echo_test 应用与 RTOS 至 RTOS 以及 RTOS 至 Linux 通信。而 IPC_RTOS_ECHO_TEST 仅与 RTOS 至 RTOS 通信。

    Unknown 说:
    virtios 和端点在/sys/bus/virtios/devices 目录中生成。
    我们针对 RTOS+RTOS 进行了测试、运行了 IPC_RTOS_ECHO_TEST_FreeRTOS
    virtios genrated 但不包括端点。
    [/报价]

    ipc_rtos_echo_test 中也需要 virtio 和端点这也是驱动程序的功能。 如果没有端点、IPC 驱动程序将无法正常工作。

    [引述 userid="619932" url="~/support/processors-group/processors/f/processors-forum/1496966/processor-sdk-j784s4-how-to-establish-communication-between-two-rtos-core-mcu20-and-c7x1-without-involvement-of-linux-core-a72 ]请提供我们需要如何进行 RTOS+RTOS 通信的意见以及哪个 IPC 应用负责这一点? 如何验证?

    您可以使用 基于 IPC_RTOS_ECHO_TEST FreeRTOS 的示例进行 RTOS 至 RTOS 通信。

    此致

    Tarun Mukesh

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

    尊敬的 Tarun Mukesh Puvvada

    感谢您的回答。

    Linux+RTOS 我们可以使用  IPC_ECHO_TEST_FreeRTOS 应用程序、并将启用  

    #define ENABLE_IPC_MPU1_0
    define ENABLE_IPC_C7x_1
     app_cfg.h 中
    我们将制作 vision_apps 并替换 binary 和 virtios、并生成端点。

    但除了 HLOS (Linux)外、虽然仅使用两个 RTOS 内核(c7x1和 r5f)、我们还需要在/sys/bus/virtio/devices?中生成 virtios 和端点

    对于 RTOS+RTOS、我们要做的是、
    进行以下更改的是 ipc_rtos_echo_test.c、
    #ifdef BUILD_MCU2_0
    uint32_t selfProcId = IPC_MCU2_0;
    uint32_t remoteProc[]=
    #if 已定义(SOC_J721E)
    IPC_MCU1_0、IPC_MCU1_1、IPC_MCU2_1、IPC_MCU3_0、IPC_MCU3_1 IPC_C66X_1、IPC_C66X_2、IPC_C7X_1
    #elif 定义(SOC_J7200)
    IPC_MCU1_0、IPC_MCU1_1、IPC_MCU2_1
    #elif 定义的(SOC_J721S2)
    IPC_MCU1_0、IPC_MCU1_1、IPC_MCU2_1、IPC_MCU3_0、IPC_MCU3_1 IPC_C7X_1、IPC_C7X_2
    #elif 定义的(SOC_J784S4)
    IPC_C7X_1
    #endif
    };

    #ifdef BUILD_C7X_1
    uint32_t selfProcId = IPC_C7X_1;
    uint32_t remoteProc[]=
    #if 已定义(SOC_J721E)
    IPC_MCU1_0、IPC_MCU1_1、IPC_MCU2_0、IPC_MCU2_1、IPC_MCU3_0 IPC_MCU3_1、IPC_C66X_1、IPC_C66X_2
    #elif 定义的(SOC_J721S2)
    IPC_MCU1_0、IPC_MCU1_1、IPC_MCU2_0、IPC_MCU2_1、IPC_MCU3_0 IPC_MCU3_1、IPC_C7X_2
    #elif 定义的(SOC_J784S4)
    IPC_MCU2_0
    #endif
    };
    #endif

    make -s BOARD=j784s4_evm core=c7x_1 build_profile=release ipc_rtos_echo_test_fretos

    make -s BOARD=j784s4_EVM CORE=MCU2_0 BUILD_PROFILE=RELEASE IPC_RTOS_ECHO_TEST_FreeRTOS  

    并在/lib/firmware/vision_apps_eaik 中构建和替换二进制文件
    以及 app_cfg.h 中的以下更改
    #define ENABLE_IPC_MPU1_0

    //#define ENABLE_IPC_MCU1_0
    //#define ENABLE_IPC_MCU1_1

    // WTX-added:使用所有内核禁用 A72 IPC、但 ML 模型运行的 C7x_1除外
    #define ENABLE_IPC_MCU2_0
    //#define ENABLE_IPC_MCU2_1
    //#define ENABLE_IPC_MCU3_joe.dobesh@wavetronix.com0
    //#define ENABLE_IPC_MCU3_1
    //#define ENABLE_IPC_MCU4_0
    //#define ENABLE_IPC_MCU4_1
    define ENABLE_IPC_C7x_1
    //#define ENABLE_IPC_C7x_2
    //#define ENABLE_IPC_C7x_3
    //#define ENABLE_IPC_C7x_4

    并且制作了 vision_apps、并替换了 usr/lib 目录中的 libtivision_apps.so.9.2.0
    并尝试运行以下命令、
    root@j784s4-evm:/opt/edgeai-gst-apps cat /sys/kernel/debug/remoteproc/remoteproc */trace0
    Sciclient_boardCfgRm init 已通过
    DM 建立时间:2024年3月26日11:49:15
    Sciserver 版本:v09.02.00.0.0-REL.PSDK.09.02.00.26
    RM_PM_HAL 版本:v09.02.05a
    正在启动 Sciserver… 通过
    ipc_echo_test (核心:mcu1_0)…
    mcu1_0 <->c7x_1、Ping- 10000、Pong - 10000已完成

    为什么 r5f-c7x 之间没有通信、反之亦然?
    并请解释有关 virtios 和端点是否需要在没有 Linux 的情况下实现以下目标?

    提前感谢、
    Swedha R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ipc_echo_test (核心:mcu1_0)…
    mcu1_0 <->c7x_1、Ping- 10000、Pong - 10000已完成
    [/报价]

    这里对于 MCU1_(R5F RTOS core)和 C7x_1 (RTOS core)、通信成功发生。

    我会告诉你3个步骤,请按如下所示。

    1)

    [引述 userid="619932" url="~/support/processors-group/processors/f/processors-forum/1496966/processor-sdk-j784s4-how-to-establish-communication-between-two-rtos-core-mcu20-and-c7x1-without-involvement-of-linux-core-a72/5752057 #5752057"]

    make -s BOARD=j784s4_evm core=c7x_1 build_profile=release ipc_rtos_echo_test_fretos

    make -s BOARD=j784s4_EVM CORE=MCU2_0 BUILD_PROFILE=RELEASE IPC_RTOS_ECHO_TEST_FreeRTOS  

    [/报价]

    这些步骤都可以。

    对于 RTOS+RTOS、我们正在做的是、
    进行以下更改是 ipc_rtos_echo_test.c、

    不要在 IPC_RTOS_ECHO_TEST 应用程序中进行任何更改、而是使用上述步骤在 PDK 中构建默认应用程序。

    2)

    并构建和替换/lib/firmware/vision_apps_eaik 中的二进制文件

    不要使用 vision apps 目录链接 ipc_rtos_echo_test。 不管用。 您需要执行中的步骤  

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j721s2/10_01_00_04/exports/docs/pdk_j721s2_10_01_00_25/docs/userguide/j721s2/modules/ipc.html#loading-remote-firmware

    频率  使用 SPL/UBoot 加载 部分

    3)

    在 SD 卡引导分区的 uEnv.txt 文件中、如果您有 visionapp dtbo、请删除这些行

    如果您正确地执行了所有3个步骤、它将起作用、稍后您可以根据需要修改应用程序。

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

    尊敬的 Tarun Mukesh Puvvada

    感谢您的及时回复。

    我尝试了上述方法、但 mcu20和 c7x 之间仍未进行 IPC 通信。

    但把它放在一边、我的要求如下所示。

    我们正在 c7x1内核中运行将从 Linux 触发的模型推理。 比如圆圈会怎么样、
    来自 mcub20内核的原始雷达数据将存储在共享 DDR 存储器中。 A72内核将获取 ADC 数据、并通过 IPC 共享到 c7x2进行信号处理、处理后的数据将再次共享到 a72内核、而来自 A72内核的模型推理将触发 c7x1内核。

    我们需要完全移除 A72内核。 并且在这些 RTOS 内核之间进行所有通信、无需中间人(a72内核)。  

    因此、我们没有使用 IPC 应用程序、而是使用适用于 Linux+RTOS 内核的视觉应用程序来生成二进制文件(libtivision_apps.so.9.2.0)、从而触发在 c7x1内核中运行的模型推理。
    同样、我们需要查找适用于 RTOS+RTOS 内核的视觉应用来触发模型会议。 为了确认这一点、我们将使用该视觉应用程序在 RTOS 内核之间进行通信。

    我找不到该 RTOS+RTOS 视觉应用程序。 请说明我们需要使用哪种应用程序来实现?


    提前感谢、
    Swedha R

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

    尊敬的 Tarun Mukesh Puvvada
    您能否就上述问题尽快答复? 让我们知道是否可以这样做? 怎么会这样呢?

    等待您的答复。

    提前感谢、
    Swedha R

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

    尊敬的 Tarun Mukesh Puvvada

    对上述查询有任何输入?

    等待您的答复。

    提前感谢、
    Swedha R

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

    您好:

    负责的工程师目前不在办公室、直至下周。 请预计响应会延迟。

    此致、

    Christina

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

    尊敬的 Christina Kuruvilla

    感谢您提供的信息。

    等待工程师的响应

    提前感谢、
    Swedha R

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

    您好、swedha、

    "我不知道,我不知道你在胡说什么。"

    当您运行 vision apps init 本身时、它有 IPC Echo 测试、用于在 RTOS 与 RTOS 内核之间进行通信。

    如果您看到以下文件将生成、并调用必要的 messages.user 回显指南、以运行 Vision Apps https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j722s/latest/exports/docs/vision_apps/docs/user_guide/RUN_INSTRUCTIONS.html 

    APP_UTILS/UTILS/IPC/IPC/APP_IPC_RTOS_ECHO_TEST.c src  

    此致

    Tarun Mukesh

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

    尊敬的 Tarun Mukesh Puvvada

    感谢您的回答、没有任何问题。
    目前、我需要一个有关以下主题的信息、我在该主题中为您添加了标签并请求我的查询。

    PROCESSOR-SDK-J784S4:从 A72触发到 J784S4板上 C7x_1内核的模型推理指南-处理器论坛-处理器- TI E2E 支持论坛

    您能否通过提供您宝贵的意见来支持我回复此主题?

    我有一个疑问;我只是尝试调试上述任务、并在下面的文件中添加调试打印语句、
    ..\SDK\ti-processor-sdk-09_02_00\ti-processor-sdk-rtos-j784s4-evm-09_02_00_05\app_utils\ipc\ipc\app_ipc_linux_rpmsg_char.c src

    要检查从 c7x_1到 a72收到了什么消息、

    要检查低于入口点、

    ..\SDK\ti-processor-sdk-09_02_00\ti-processor-sdk-rtos-j784s4-evm-09_02_00_05\app_utils\ipc\ipc_app_ipc_linux.c src

    但是、在运行模型推理时不会打印语句、但如果我在 vision_apps 文件夹中添加 print 语句、那么它是有效的

    子图形数量:1、11个节点中委派了11个节点  

    应用程序:初始化...!!
    MEM:初始化...!!!
    MEM:初始化的 DMA 堆(FD=6)!!!
    MEM:初始化...完成!!!
    IPC:初始化...!!
    ipc:初始化...完成!!!
    remote_service:初始化...!!
    remote_service:初始化...完成!!!
     3741.692302 s:GTC 频率= 200 MHz
    应用程序:初始化...完成!!
     3741.692373 s: vx_zone_init:Enabled
     3741.692383 s: vx_zone_error:Enabled
     3741.692392 s: vx_zone_warning:Enabled
     3741.692902 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-0  
     3741.693003 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-1  
     3741.693108 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-2  
     3741.693204: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-3  
     3741.693218 s: vx_zone_init:[tivxInitLocal:136]初始化完成!!!
     3741.693942 s: vx_zone_init:[tivxHostInitLocal:101]主机完成初始化!!!
    [1512、64、4]
    (1512、64、4)
    推理时间: 6136417.388916016ns
    [[[[[ 7.6490033e-01 -1.7994770e+00 -3.2704391e+00 ...-1.1767697e-01
        -1.0296735e-01 7.3548108e-02]  
       [1.5445102e+00 -2.4859259e+00 -5.5013986e+00 ...-1.6180584e-01.
         3.9225657e-02 1.0296735e-01]
       [2.0397341e+00 -3.5646315e+00 -6.6977811e+00 ...-7.3548108e-02.
         1.4709622e-01 1.4709622e-01]
       ...
       

    请告诉我如何调试和添加打印语句、检查位置以及如何检查?

    等待您的答复并提前表示感谢
    Swedha R

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

    尊敬的 Swedha:

    构建 app_utils 目录是什么。

    cd $(psdkra)/sdk_builder;
    make app_utils;
    make vision_apps;
    
    make linux_fs_install_sd; // copying files to the sd card

    您能对此进行一次检查吗?

    此致、
    Gokul

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

    尊敬的 Gokul S

    感谢您的回答、我将尝试回到这里。
    如果可能、您能否同时给出您对上述模型推理查询的想法? 我还添加了主题链接和详细说明。

    提前感谢、
    Swedha R

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

    你好 Tarun Mukesh Puvada Gokul S.
    上面简要介绍的有关模型推理查询的任何输入。

    提前感谢、
    Swedha R

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

    尊敬的 Swedha:

    我已经对另一个问题作了答复、请参阅。 请关注相应主题、了解更多信息。

    此致、
    Gokul