【问题标题】:remoteproc based inter-core communication基于 remoteproc 的内核间通信
【发布时间】:2023-03-27 23:15:01
【问题描述】:

我正在尝试研究我的双核 Arm-Cortex 处理器上的各种内核间通信机制。其中一个核心运行裸机应用程序,另一个运行 Linux 操作系统。我刚刚遇到了 remoteproc 框架(rpmsg),我在网上找不到太多信息。我发现的唯一信息是http://lwn.net/Articles/489009/,这很难上手。有没有人可以帮我解决这个问题?

【问题讨论】:

  • 您需要一个框架来与 dsp 通信吗? remoteproc 看起来像这样的目的。
  • 不,我只有一个裸机应用程序在一个内核上执行实时任务,而另一个内核正在运行 linux。我需要将实时任务中的一些信息传递给另一个运行 linux 的进程。我认为该框架也可以用于此目的。
  • 如果两个 CPU 都支持,您可以使用 总线锁定 指令,如 ldrexstrex 来实现 lockfree IPC 算法。可能你可以找到这样的框架。如果两个 CPU 都不支持这一点,那么您需要一些其他特定于 SOC 的硬件机制;并非所有 Cortex 芯片都支持strexldrex,所以我们需要了解更多。
  • 嗨,Artless Noise,您能否推荐一些我应该研究的 IPC 算法或框架。我实际上是在尝试在运行完全不同程序的 2 个内核之间实现 IPC。一个正在运行 linux,另一个正在运行裸机应用程序。我看到这种基于 Remoteproc(rpmsg) 的通信被广泛用于非对称多处理设置中。但是没有多少论文解释了相同的内容以及相同的性能。
  • @artlessnoise {ldr,str}ex 在 IPC 中经常使用,但它的级别太低了,与 Linux 内核中的 remoteproc 模块无关。

标签: arm ipc multicore


【解决方案1】:

我也遇到了同样的问题。我发现了一些额外的资源:

  1. 内核树中的文档一如既往:

    https://www.kernel.org/doc/Documentation/remoteproc.txt

  2. 提供设计概述的 OMAP wiki:

    http://omappedia.org/wiki/Design_Overview_-_RPMsg

顺便说一句。感谢lwn链接。这很有帮助。

【讨论】:

    【解决方案2】:

    由于 Xilinx 的 Zynq SoC 还包含 2 个 ARM Cortex-A9 内核,因此他们发布了一份应用说明,其中他们使 Linux 内核通过 remoteproc/rpmsg 与 FreeRTOS 系统进行通信。你可以在这里找到文档:PDF

    虽然该文档非常具体,但您也许可以提取一些信息。您可以在此处下载源代码:Sign in to Download File(需要 Xilinx 帐户)。可以将 *.bsp 文件重命名为 *.tar.gz,然后可以将其解压缩。

    如果您还有其他问题,请随时提问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 2017-03-08
      相关资源
      最近更新 更多