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.

[参考译文] Starterware/AM3357:DMA 需要虚拟字节

Guru**** 2611705 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/582911/starterware-am3357-dma-needs-dummy-bytes

器件型号:AM3357

工具/软件:Starterware

您好!

我们使用带有 DMA 的 UART (VxWorks)、但除非我们发送一些虚拟字节、否则 DMA 似乎无法正常工作。

问题是 UART 器件中的"虚拟"字节存在问题(我们不能将非法字节与器件中的合法字节混合)。

是否有解决此问题的方法?

谢谢、

已运行

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

    VxWorks 是第三方软件、TI 不支持该软件。 请联系您的 BSP 提供商获取支持。 TI 发布的 Processor SDK 不存在此类问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Biser、

    在 StarterWare 示例中、我还会看到一个虚拟传输:
    processors.wiki.ti.com/.../CIR

    这不是一个相关问题吗?

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

    是否有某种方法来模拟 DMA 事件?
    如果我们可以有第一个 DMA 事件,那么我可以成功地传输所有的 DMA 字节,而不会出现任何问题。
    出于某种原因、在对 DMA 执行三角运算之后、第一个 DMA 事件似乎丢失了-除非我强制将8个字节写入 UART (直接不带 DMA)、但如果可能、我宁愿强制执行此事件而不写入任何字节。

    谢谢、
    已运行
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您提到的 wiki 页面上描述的虚拟传输与 EDMA 相关。 实际上不会传输任何数据。 根据定义、EDMA 虚拟传输是0字节的合法传输。 之所以使用它、是因为 UART 不是您不断流式传输数据的接口。 相比之下、如果您看到一个 McASP 用于发送音频数据、那么每次 McASP FIFO 中有空间时、您都会希望 EDMA 发送更多数据。 另一方面、对于 UART、只有在实际有新的数据包需要发送时、才会将数据复制到 UART 寄存器。 一旦 UART 的 FIFO 中有空间、UART 就会发出 DMA 请求、但通常我们实际上可能没有要发送的任何数据。 这就是 EDMA 使用虚拟请求的原因。

    您是否以相同的方式使用虚拟请求? 您说您需要"发送一些虚拟字节"这一事实听起来完全不同。 听起来您实际上是在向 UART 发送数据、而 EDMA 的虚拟传输不会发送任何数据。

    我们不熟悉 VxWorks 来修复您的驱动程序、但如果您可以在硬件实现方面讨论您的问题、我们可能会为您提供帮助。 例如、提供一些详细信息、例如参数 RAM 条目的外观等、将会很有用。 我想查看工作案例和失败案例。