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-J721S2:QNX 710存在 IPC 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1519324/processor-sdk-j721s2-ipc-issue-with-qnx-710

器件型号:PROCESSOR-SDK-J721S2

工具/软件:

您好、

我正在使用 TI SDKJ721S2 11.0 SDK 和支持 QNX 710 SDK。

我 在 QNX 端遇到 IPC resmgr 问题、无法与远程内核 R5F 和 C7X 通信、

内部 QNX 流程 IPC 正常、c7x 和 r5f RPG 之间也正常。

在 R5F 和 QNX A72之间、RPMSG 有问题、并且我在启动使用 RPMSG 与其他内核通信的过程时收到此内核转储->

J721S2-SMART#
J721S2-SMART#
SHUTDOWN[1、1] S/C/F=10/3/6 C/D=ffffffff8060046028/ffffffff80601082d0 state (1000f00)=现在锁定退出频谱
QNX 版本7.1.0s-1.2.2发行版2023/07/14-18:28:46EDT KSB:ffffff80830c0000
$URL: svn.ott.qnx.com/.../timestamp.c $
[0]PID-TID=1-1 P/T FL=09019001/0c000000状态=00"proc/boot/procnto-smp-instr-safety"
[0]ASPACE PID=241682 PF =69000000 "/clientProcess"
[1]PID-TID=1-3 P/T FL=09019001/04020000 state=00 "proc/boot/procnto-smp-instr-safety"
[1]ASPACE PID=8 PF =69401010 "proc/boot/tiipc-mgr"
aarch64le 上下文[ffffff8083098b70]:
0000:ffffffff80800054c0 0000000000000040 000000000fff 0000000000001000
0020:00600000000000071f 000000000000001c 0000000000000008 ffffffff8083dc487c
0040:0000000001010101 ffffffffffff80879043a8 000000000000 ffffffffff8087904758
0060:00000000000000000001 00000001000000001 0000000000000005 0000000000000002
0080:0000000000000004 0000000000000000 0000000000000000 00000000000000000001
00A0:00600000b0ffe71f ffffffff8060107f30 0000000000000000 000000000004
00c0:ffffffffff806012a6e0 ffffffff8080005000 ffffffffff806012a4c8 ffffffff806012a8f8
00e0:ffffffffff80830b1d40 ffffffffff808366d780 ffffffffffffff8060080948 ffffffff808366d780
0100:ffffffff8060080998 0000000000000084
指令[ffffffff8060080998]:
20 74 0b D5 00 00 01 8b 1f 00 02 ea A1 ff 54 F6 02 00 35 41 0b 40 F9 e0 03
层叠[ffffffff808366d780]:
0000:>ffffffffff808366d7e0 ffffffff806008b058 ffffffffffffff80938fa0 ffffffff8083dc4880
0020:ffffffff80600808e0 0000000000000000 000000000000 0000000000000000
0040:ffffffffff8087905790 ffffffffffffffffffffff 00000000 181a2975898a3767
0060:ffffffffff808366d820 ffffffffff80600880f8 000000000002 ffffffff8087905780
中断事件结束! (vector=27进程=11 [proc/boot/devc-seromap])

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    我正在使用 TI SDKJ721S2 11.0 SDK 并返回 QNX 710 SDK。

    您好、

    您能告诉我们您对 QNX 710进行了哪些更改吗?

    谢谢。

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

    你好 Praveen ,我们已经从这个链接下载:

    www.ti.com/.../J721S2-QNX-SDK

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

    尊敬的 Praveen:

    也可作为11.0SDK 的一部分、在 A72中添加了针对 SCIClient、UDMA、IPC 的 QNX 安全认证时、IIPC 驱动程序的任何更改是否需要在流程(用户空间)或内核级别进行一定程度的安全调整。 我提出这个问题是因为当我们使用带 SDK 11.0驱动程序的 R5F 和 C7x 以及带10.1 SDK 驱动程序的 A72时、A72和 R5F 中的 IPC b/w QNX 流程可以正常运行。 此外、仅当 A72尝试与远程内核通信时、才会在 A72上看到崩溃。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="586019" url="~/support/processors-group/processors/f/processors-forum/1519324/processor-sdk-j721s2-ipc-issue-with-qnx-710/5840259 #5840259"]

    你好 Praveen ,我们已经从这个链接下载:

    www.ti.com/.../J721S2-QNX-SDK

    [/报价]

    此 SDK 适用于 SDP 7.1、因此理想情况下不需要任何更改即可运行。 不需要反向端口。

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

    理想情况下、我们建议避免 RTOS 和 QNX 版本的混合和匹配。 如果您使用的是 RTOS SDK 11.0、则必须将 QNX SDK 11.0用于 A72。

    上面的问题是内核崩溃、因此我们将与开发团队核实、看看他们是否有任何反馈。

    谢谢。

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

    与开发团队进行了检查、他们在11.0版本验证期间未发现此问题。 他们暗示这可能是由于某些局部集成问题造成的。 请告诉我们。

    谢谢。

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

    尊敬的 Praveen:

    在 rpmsg create 中更改要修复的 buffsize 后、IPC 就可以正常、

    用例 dCMD_TIIPC_RPMSG_create:

    //保存用户提供的 buf 的本地副本、以便稍后返回
    void *buf = cargs->args.create.params.buf;
    printf ("buff size@@@%d \n"、cargs->args.create.params.bufSize);
    //在资源管理器环境中创建本地队列 buf
    cargs->args.create.params.buf = malloc (sizeof (uint8_t)*135424);
    //cargs->args.create.params.buf = malloc (cargs->args.create.params.bufSize);

    if (cargs->args.create.params.buf != NULL)

    // printf ("dcmd_TIIPC_RPMSG_create insdie if \n");
    RPn Message_Handle 句柄= NULL;

    handle = RPMessage_create(&cargs->args.create.params,
    &cargs->args.create.ept);
    if (handle == NULL)

    QNx_PR_ERR ("%s":%d 错误:句柄为空"、__FUNCTION__、__LINE__);
    printf ("dcmd_TIIPC_RPMSG_create 句柄为 NULL \n");
    free(cargs->args.create.params.buf);
    cargs->args.create.handle = 0;
    cargs->status =(uint32_t) IPC_EFAIL;
    }
    暴露

    ipc_rpmsg_handle_entry *条目= NULL;

    条目= malloc (sizeof (ipc_rpmsg_handle_entry);
    if (条目!= NULL)

    条目->EPT = cargs->args.create.ept;
    entry->handle =句柄;
    条目->rcvid = 0;
    cargs->args.create.handle = entry->EPT;

    QNx_PR_NOTICE ("%s.%d:已创建端点为%d 的句柄"、__FUNCTION__、__LINE__、entry->EPT);

    (void) pthread_mutex_lock (&ipc_ocb->lock);
    Ipc Utils_Qput (&IPC_OCB->created_handles、&entry->elem);
    if (-1 != ipc_ocb->callbackPulseCoid)

    QNx_PR_NOTICE ("%s.%d:设置回调代码...Endpt=%d、代码=%d"、__FUNCTION__、__LINE__、条目->EPT、 IPC_OCB->callbackPulseCoid);
    gCallbackCoidPole[entry->EPT]= IPC_OCB->callbackPulseCoid;
    }
    (void) pthread_mutex_unlock (&ipc_ocb->lock);
    }
    }
    }
    暴露

    printf ("dcmd_TIIPC_RPMSG_create insdie else \n");
    }
    cargs->args.create.params.buf = buf;
    休息;
    }

    它在启动时打印负值、因此分配失败。

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

    我们将与我们的开发团队一起审查您的最新发现、并尽快回复您提供他们的反馈。

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

    尊敬的 Manan:

    我们从开发团队收到的反馈如下:

    "听起来好像  没有向 RPMessage_create 提供 params.bufSize、这  会导致 buf 大小未初始化。 但是、我们缺少对缓冲区大小的检查、并在 rp Message_Create () (psdkqa/nnz/resmgr/ipc_nnx_rsmgr/usr/ipc_api.c 行 423-465)中返回 slog 消息错误。  我们将创建一个 JIRA 错误来添加对传递的参数的检查并将其合并到下一个版本中。

    仅供参考、在我们提供的 IPC 测试示例代码(psdkqa/QNXx/examples/ipc_test_qnxipc_testsetup.c 第213-217行)中、我们展示了如何设置填充 buf 信息的 params 结构。 "

    谢谢。