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.

[参考译文] Linux/AM5728:邮箱使用示例

Guru**** 2542530 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617854/linux-am5728-mailbox-usage-example

器件型号:AM5728

工具/软件:Linux

我正在开发一个 Linux 驱动程序、该驱动程序将在收到邮箱事件时从共享存储器地址(与 DSP 共享的存储器的 CMEM 块)读取数据。 由于性能问题、这是使用 IPC MessageQ 的替代方案(请参阅 https://e2e.ti.com/support/arm/sitara_arm/f/791/t/604259#pi316653=2)

我正在寻找任何示例或指向最佳方法的指针。 我将查看 Linux/drivers/remoteproc/OMA_remoteproc.c 示例、了解它如何与邮箱交互。 我正在寻找最具外科手术性的方法、让通用自定义共享存储器读/写驱动程序尽可能利用现有代码来满足我的需求。 本质上、我只需要邮箱中类似中断的行为-它将向驱动程序指示此共享存储器缓冲区中的 DSP 提供的数据。

谢谢

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

    您是否在 Linuc 内核文档中搜索了邮箱客户端示例、网址为:
    www.kernel.org/.../mailbox.txt

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

    [引用 USER="Cvetolin Shulev-XID"]
    您是否在 Linuc 内核文档中搜索了邮箱客户端示例、网址为:
    www.kernel.org/.../mailbox.txt

    [/报价]

    我仔细查看了它、并在远程处理器驱动程序代码中看到了邮箱的使用情况。 我希望获得一些指导的是如何编写与远程处理器驱动程序协同工作的自定义驱动程序。 具体而言、远程处理器驱动程序会根据您使用的是 DSP 1还是 DSP 2 (从器件树中拉出)来确定要使用的邮箱。 我的自定义驱动程序也需要此信息、以便它可以使用正确的邮箱向正确的远程处理器(DSP)发送中断。

    自定义驱动程序的用例基本上是:

    • ARM 将数据写入 DSP 1或 DSP 2的共享(CMEM)缓冲器(预先确定的存储器地址)
      1. 数据被写入共享缓冲区
      2. 邮箱消息使用适当的邮箱发送到 DSP 1或 DSP 2
    • ARM 从 DSP 1或 DSP 2的共享(CMEM)缓冲区读取数据
      1. 邮箱消息从 DSP 1或 DSP 2接收
      2. 数据从共享缓冲区中读取

    谢谢