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.

[参考译文] RTOS/AM5728:ARM-DSP 邮箱使用冲突

Guru**** 2546960 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626013/rtos-am5728-arm-dsp-mailbox-usage-conflict

器件型号:AM5728

工具/软件:TI-RTOS

定制板上的 AM5728、运行 TI-RTOS 的 DSP 和运行 Linux 的 ARM、两者都在最新的 Processor SDK 4.0.0.4上。

在这个线程的结束 https://e2e.ti.com/support/arm/sitara_arm/f/791/t/604259上、我们决定放弃使用 MessageQ、因为它使用了 SWI 和生成的任务占先、并使用 一个自定义消息传递实现、此实现将根据需要使用邮箱来中断 DSP/ARM。  这听起来很简单、但正如我们所说的、魔鬼在细节上。  

DSP 端的目的是从"C:\ti\ipc_3_46_00_02\packages/ti\sdo\ipc\family\tda3xx\InterruptDsp.c"复制代码、并在我的 CCS 项目中使用该代码为 DSP->ARM 和 ARM->DSP 中断设置邮箱。  

但是、当 ARM 开发人员研究这个问题时、他提出了这样一个想法:我们使用 remoteproc 来加载 DSP、而 remoteproc 可能正在使用邮箱 、因此我们会遇到冲突。

那么、这里的问题是、如果在 DSP 方面我不再使用 MessageQ、我是否能够设置和使用上面引用的代码中使用的邮箱、 或者、我们需要找到一些方法来配合它、例如添加一个特殊案例来调用我们的消息回调?  当然、Linux 方面也有类似的问题。

谢谢、

Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队将收到通知。 反馈将发布在此处。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、

    我正在尝试从 Remoteproc 开发人员处获得确认,并查看是否有任何变通办法/解决方案来缓解邮箱使用的潜在冲突。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个问题是、ARM 和 DSP 是否有另一种相互中断的方法? 我们没有任何 GPIO 交叉连接、因此这不是一个选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、

    很抱歉耽误你的回答。 来自开发团队的一些更新:
    1. Remoteproc 框架不会对从处理器上运行的软件栈施加任何限制。 也就是说,我们当前的交付成果与某些功能紧密集成,例如基于 rpmsg 的传输、一些用于 PM 和错误恢复的预定义邮箱消息。

    2.没有任何东西阻止客户选择不同的邮箱集并在自定义驱动程序中使用它们、以便能够与 DSP 端的映像进行通信。 但是,任何内存地址等都必须从 Remoteproc 内核中检索,如果您不打算使用 rpmsg 传输,则必须以某种方式将自定义驱动程序连接到 Remoteproc statemachine。

    3.您始终可以在 DT 中定义单独的邮箱信道,并在其自定义驱动程序中使用它们。 与 Remoteproc 启动状态机集成的 IPC 驱动程序可能需要一些自定义胶合逻辑才能连接到 Remoteproc 的状态机。

    在 KeyStone 2器件中、AM572x 中没有用于 ARM 间/DSP 中断的 IPCGRx 寄存器。 在上述指导下、希望您能够继续前进。

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

    感谢 Garrett 的回复。  这将需要进行一些挖掘才能确定。  不过有几个说明...

    1) 1) 您提到"remoteproc statemachine"和"remoteproc boot state-machine"。  我假设这些是相同的。  您能给我指一下代码吗?  是 Linux 还是 DSP RTOS、还是两者兼而有之?

    2) 表示" DT 中的邮箱通道"。  抱歉、DT 是什么?

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

    1)是的、"modeproc statemachine"和"modeproc boot state-machine"指的是相同的。 代码位于 Linux 内核驱动程序/remoteproc/OMA_remoteproc.c 中
    2) DT 表示 Linux 器件树-用于内核启动的器件/电路板信息的数据结构、请参阅 Linux 内核 arch/arm/boot/dts

    一些与邮箱相关的文档位于中

    documentation/devicetree/binding/remoteproc/ti、davinci-rproc.txt
    documentation/devicetree/binding/smailbox/omap-mailbox.txt
    documentation/devicetree/binding/smailbox/ti、message-manager.txt

    例如、IPC 使用的邮箱 DTS 配置
    am57xx-beagle-x15-common.dtsi:mbox =<&mailbox6 &mbox_dsp2_ipc3x>;

    此致、
    Garrett