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.

[参考译文] TMS320F28379D:使用 DMA 和同步问题从 CPU1复制 CPU2的数据。

Guru**** 2595805 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1086027/tms320f28379d-copy-data-from-cpu1-for-cpu2-using-dma-and-synchronisation-problem

部件号:TMS320F28379D
“线程:C2000WARE”中讨论的其它部件

尊敬的 TI:

我们有两个软件,一个在 CPU1上运行于17Khz (56us),另一个在 CPU2上运行于1kHz (500us)。

我们使用 DMA 将数据从 CPU1复制到 CPU2,CPU2通过 CAN 总线发送此数据。

CPU2应使用相同的 DMA 但使用另一个通道响应 CPU1。

问题是我们触发 DMA 将数据从 CPU1复制到 CPU2,但我们不会等待看到标记,因为我们希望丢失 CPU 负载。  

当 CPU2尝试向 CPU1发送数据时,就会出现该问题,并且由于 CPU1的速度要快得多,我们不知道数据是否复制得很好。 我们正在使用 DMA,不必等到副本结束。

我的问题是,CPU1_DMA 在完成工作后是否会触发 CPU2中断,反之亦然? 我们是否必须为每个 CPU1使用两个 DMA-1,为 CPU2使用 DMA2?

问题在于,即使 CPU1比 CPU2快得多,我们如何才能将此副本从一个 CPU 同步到另一个 CPU?

我们如何使用 IPC 驱动程序在最少 CPU 干预的情况下制作此副本?

请提前感谢  

圣塔里克

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

    您好,

    我对延迟回复表示歉意。

    要实现您的期望,您需要 IPC 和 DMA 中断。 DMA 需要通过中断对 CPU 进行调速,以表示它已完成传输。 在 DMA ISR 中,您可以使用 IPC 驱动程序在 CPU1和 CPU2之间同步。 同样也要在 CPU2端实施。

    对于 IPC 驱动程序,C2000Ware 中提供了特殊的同步功能以及如何使用它们的示例。 请参阅相同的内容。

    希望这些信息足以解决您的疑问。 否则请告诉我。

    谢谢和问候
    普拉莫德