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.

[参考译文] J721EXCPXEVM:J721S2XSOMXEVM:IPC MCU2_0 <->mpu1_0通过共享存储器进行数据交换

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1373400/j721excpxevm-j721s2xsomxevm-ipc-mcu2_0---mpu1_0-data-exchange-via-shared-memory

器件型号:J721EXCPXEVM

工具与软件:

您好!

我正在 J721S2上的 UC 与 UP 之间的 IPC 工作;我可以在 MCU2_0和 mpu1_0之间交换小数据、但我想使用 DDR 区域作为这些内核之间的共享存储器、从而能够交换大量数据并将指针传递到数据区域或交换100MB 数据的其他区域。

我相信我可以将 DTS 中特定内核的保留存储区用作共享存储器、对吗?
如果有、该工具如何针对 VRING 缓冲器工作、因为我假定这些器件也属于此保留存储器区。

您能提供一些关于共享内存设置的信息吗?

设置:

  • Linux SDK 9.2
  • RTOS/PDK SDK 9.2
  • rpmsg_char (Linux)<->IPC echo (裸机- PDK - MAIN R5F)

谢谢!
摩西

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

    您好!

    感谢您发布您的问题。 我已经将您的问题分配给了相应的工程师、但请注意、他们本周不在办公室。 请期待他们下周对您的问题作出回应。  

    此致!

    Asha

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

    你好、摩西、

    "对不起,我不能接受。"

    [报价 userid="585665" url="~/support/processors-group/processors/f/processors-forum/1373400/j721excpxevm-j721s2xsomxevm-ipc-mcu2_0---mpu1_0-data-exchange-via-shared-memory "]我可以在 MCU2_0和 mpu1_0之间交换小数据、但我想使用一个 DDR 区域作为这些内核之间的共享存储器、从而能够交换大量数据并将指针传递给数据区域或交换100MB 数据的其它区域。

    是的,目前 VRING 缓冲区的数据限制在两个内核之间最多传输256*512字节 ,但由于您希望在 DDR 区域中使用更多的空间,因此您需要在 DDR 区域中保留特定 的区域,并指出其地址,并将 VRING 缓冲区中的指针传递给另一个内核。

    [报价 userid="585665" url="~/support/processors-group/processors/f/processors-forum/1373400/j721excpxevm-j721s2xsomxevm-ipc-mcu2_0---mpu1_0-data-exchange-via-shared-memory ]我相信我可以将 DTS 中特定内核的保留内存区域用作共享内存、对吗?
    如果是、该选项如何与 VRING 缓冲器配合使用、因为我假定这些缓冲器也属于此保留存储区。[/QUOT]

    可以。您可以在 DDR 中使用任何可用的存储器、但请注意、存储器不应与 Linux 端和裸机端的任何现有保留区域重叠。 vring 缓冲区保持不变,而不是现在的数据地址指针将在内核之间传递。 您可以在裸机中的 Linux 和 R5 MPU 文件的 dts 文件中找到已保留的存储器。

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    我可以保留存储器区域或更新 DTS 中的现有区域、并更新相应 MCU 的链接器文件、以匹配存储器结构。

    例如、我有大约20+MB 的空间、现在可用于 mpu1_0和 MCU2_0之间的数据交换。

    问题是、我到底如何能够从运行 Linux 的 mpu1_0中编写它?

    我认为从 MCU2_0读取此存储器或从 MCU2_0写入可能类似于、获取地址位置并直接使用。
    而在 Linux 中,我认为保留的内存在某种程度上是内核驱动程序的一部分(可能是通过 devfs 或其他东西公开的) dd 或类似的东西不起作用或?,我应该如何从 Linux 用户空间中写入/读取这个内存区域?

    谢谢你。

    此致!
    摩西

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

    你好、摩西、

    每个 VRING 缓冲区空间也是 DDR 中的保留存储器区域、A72将数据写入保留的 VRING 存储器区域、其他内核正对其进行访问。 因此、类似地、新保留了存储器的特定部分、必须以相同的方式对其进行访问。

    
    

    驱动程序中的 k3_r5_rproc_da_to_va API 将直接地址转换为 Linux 中的虚拟地址

     ,我请知道你的意见这?

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    回答我自己的问题、

    我可以使用/dev/mem 来访问该存储器区域(我假设它是通过 rpmsg_ctrl 或之前的其他函数)。
    因此、我可以映射存储器区域并从 Linux 进行写入或读取。

    谢谢。

    此致!
    摩西