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.

[参考译文] AM6422:从 Linux 到同一内核访问多个端点是否有任何限制

Guru**** 2393325 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1463436/am6422-is-there-any-restriction-to-access-mutiple-endpoints-from-linux-to-the-same-core

器件型号:AM6422

工具与软件:

嗨、团队:

  我尝试在远程内核上创建多个端点、并尝试从 Linux 进行通信。 我已在 R5F1_0内核上创建了端点14、15、16、17、18、20。 从 Linux 内核,我能够建立与只有14和15的连接。 远程更新。 尝试从 Linux 内核初始化第16个端点时、显示 无法打开 ptdev /dev/rpmsg3
无法创建端点设备。

同样、14、17个端点可以初始化、其他端点不能访问。

一次只能访问2个端点

如何解决该问题。 就数字而言、从 Linux 内核到远程内核的访问端点是否存在任何限制  

请帮助我尽快解决此问题。

谢谢你  

Mamatha B M.  

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

    Mamatha 您好!

    我不知道有任何限制(假设在整个处理器中为每个端点提供唯一的数字)。

    请参阅 AM64x Academy 多核模块页面"如何将多个 RPMSG 端点添加到 MCU+工程?"。 我在该示例中使用了3个端点、但您应该能够将其扩展到其他端点:
    https://dev.ti.com/tirex/explore/node?node=A__Ae7iN576eTKQcrPcBcMrog__AM64-ACADEMY__WI1KRXP__LATEST

    (顺便说一下、在多核 Academy 模块的其余部分中、有许多关于 Linux + R5F 内核正常工作的非常有用的信息。 如果你没有的话,我建议你仔细阅读)。

    此致、

    Nick

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

    您好、Nick、感谢您的响应。

    我已经完成了用户共享的链接、并尝试执行所有步骤、但在 Linux 端访问多个端点时仍然遇到问题。  

    e2e.ti.com/.../rpmsg_5F00_linux_5F00_part.c.c 尝试执行此操作时、我将获得以下输出  

      有时我得到和输出端点14、15、16能够访问和其他抛出错误。 它非常随机、我无法同时访问所有端点。

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

    您好、Nick。

    该问题的任何更新。

    谢谢你

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

    Mamatha 您好!

    从"已知良好"代码库开始

    请在开始时严格按照我的步骤操作、并在该页面上运行准确的代码。

    您是否能够按照我展示的方式运行未修改的示例?

    如果不在、请将您确切的 MCU+项目与我提供的准确修改一起附加、并提供您的终端输出。

    请将终端输出连接在代码块中。

    此致、

    Nick

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

    您好、Nick。

    感谢您的响应。

    我再次按照链接中提到的说明进行操作。 我不使用共享存储器。

    我已经附上了远程内核[MCU]的日志、其中显示了端点的创建和等待来自 Linux 内核的消息。

    下图显示了我可以同时访问3个端点、其它端点显示设备或资源忙。

    我还附上了相同的代码  

    e2e.ti.com/.../rpmsg_5F00_trail1.c.c

    下面随附的另一个案例的图像显示所有必需的端点都已创建并且能够交换消息  

      

    我已经附上了同样的代码。

    e2e.ti.com/.../rpmsg_5F00_trail2.c.c 

    代码之间唯一的区别,假设我打开一个端点,描述符必须在打开新的描述符之前关闭。 即使描述符的名称不同、我也需要使用 rpmsg_char_close()、以便删除之前创建的端点。 否则、它显示错误资源繁忙。

    *注意:我使用不同的 FD 用于不同的端点。

    这就是我关于同时访问多个端点的发现。  

    请告诉我这是不是它的工作方式。  

    谢谢你  

    Mamatha B M.

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

    您好、Nick。

     对这个问题有什么看法吗?

    谢谢你  

    Mamatha B M.

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

    嗨、Nick。

     是否对所提出的问题有任何调查结果? 我正在等待响应继续与多个端点进行 IPC 通信。

    谢谢你  

    Mamatha B M.  

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

    您好、Nick。

     请提供有关此问题的意见、因为我们已经等待了很长时间。

    谢谢

    Mamatha B M.

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

    Mamatha 您好!

    对这里的延迟答复深表歉意。 我差不多到了在 e2e 论坛上增加时间的时候了。

    您是否曾在未添加任何其他代码的情况下测试过 Academy 页面中的确切代码? 该"已知良好"起点是否按预期工作、或者它是否还具有您无法使用所有3个端点的引导?

    此致、

    Nick

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

    您好、Nick。

     是的、我在不做任何修改的情况下尝试使用学院中给出的相同示例。 它能够访问端点、 但示例是一次访问一个端点。 它不会同时访问多个端点。

    在提供的示例中、我们将尝试逐一传递端点。

    root@am64xx-evm:~# rpmsg_char_simple -r 4 -n 1 -d rpmsg_chrdev -p 14

    root@am64xx-evm:~# rpmsg_char_simple -r 4 -n 1 -d rpmsg_chrdev -p 15

    root@am64xx-evm:~# rpmsg_char_simple -r 4 -n 1 -d rpmsg_chrdev -p 16.

    我的观察是,它是有效的,因为当我们通过另一个端点时,前一个端点已关闭。 


    但我同时尝试访问所有端点。 此处显示资源繁忙。




    我还连接了 R5F 内核侧。



    如果我在打开新端点之前关闭端点、它将正常工作。


    如果这是一个限制、请告诉我。

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

    您好、Nick。

     有任何关于此问题的更新吗?

    谢谢你

    Mamatha B M.

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

    您好、Nick  

     有任何关于此问题的更新吗?

    谢谢你

    Mamatha B M.  

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

    您好、Nick。

       是否有任何有关该问题的更新。 请更新您对观察结果的看法和发布的结果。

    谢谢你

    Mamatha B M.  

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

    Mamatha 您好!

    请为我提供一个补丁来同时测试多个端点。 我来看一下。

    此致、

    Nick

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

    您好、Nick。

     感谢您的响应。

    A53内核部分源代码的 PFA、在该部分中、它尝试与具有多个端点(即14、15、16、17、18)的 R5F1_0内核建立连接

    e2e.ti.com/.../ipc_5F00_rpmsg_5F00_a53_5F00_mutiple_5F00_endpoints.c

    我还连接了 Linux 端的终端输出、显示它只能为端点14、16、18创建端点、并与相同的端点通信。 它未能创建和建立与端点15和17的通信。

    R5F1_0内核的源代码 PFA、用于创建多个端点并从 Linux 内核接收消息。

    e2e.ti.com/.../mutiple_5F00_endpoints_5F00_test_5F00_r5f.c

    我还附加了远程内核日志、显示它正在从端点14、16和18接收数据、并为相同端点发送响应。

      请提供您对此问题的调查结果、以便我可以继续。 期待您的回复。

    谢谢你  

    Mamatha B M.

    谢谢你

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

    您好、Nick。

     在这方面有什么发现吗?

    请告诉我您的观察结果

    谢谢你

    Mamatha B M.

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

    您好、Nick。

     对它有什么输入。 我们正在等待您的输入以继续进行相同的操作。

    谢谢你

    Mamatha B M.

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

    Mamatha 您好!

    我已经封锁了我的日历星期三下午、以便我可以花一些时间与你的线程联系。 感谢您的耐心等待。

    此致、

    Nick

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

    您好、Nick。

     感谢您的答复。 好的、Nick。

    如果您需要我这边的任何输入、请告诉我。

    谢谢!

    Mamatha B M.

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

    Mamatha 您好!

    我不知道问题是您是否需要在 Linux 端为要连接的每个远程处理器端点提供唯一的端点设备名称?

    我能否让您 为每个任务使用唯一的端点设备名称进行测试?

    例如、可能如下所示:
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ());
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ()+1);
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ()+2);
    等等

    此致、

    Nick

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

    Mamatha 您好!

    您是否曾使用过多个 Linux 端点? 如果是、您的解决方案是什么?

    我最后更新了 SDK 10.1的 Academy 文档。 如果您有问题、我可以根据您的输入添加一个新页面。

    此致、

    Nick

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

    您好、Nick。

      很抱歉这么晚才回复。 我被分配到不同的任务,同时,我也不在镇上,无法回答。

    是的、基于下面的更改、同时访问的多个端点能够正常工作

    例如、可能如下所示:
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ());
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ()+1);
    sprintf (ptdev_name、"rpmsg-char-%d-%d"、rproc_id_val、getpid ()+2);
    等等

    感谢您的支持。

    此致、

    Mamatha B M.