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/TDA2:使用 EDMA 与 RTOS 上的 EDMA LLD 类似?

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/726260/linux-tda2-use-edma-similarly-to-edma-lld-on-rtos

器件型号:TDA2

工具/软件:Linux

您好!

适用于 RTOS 的 EDMA 低级驱动程序的定义非常明确且易于使用。 它在使用 A/B/CCNT、索引、链接和链接方面提供了足够的灵活性。 我在 Linux 中需要这种灵活性。 但是、我唯一设法做到的是使用 DMA 引擎、它的功能非常有限(只有连续的 memcpy)。

我发现在'edma.c'文件中有很多众所周知的用于 EDMA 的 API。 但是、这里有很多函数、需要执行的步骤并不直观。 我想举一个简单代码示例、我可以在内核模块中运行该代码、它使我能够保留一些通道和参数集、可能会链接参数集并开始传输。 我觉得很遗憾、Linux 上没有高级 EDMA 的使用示例、而 RTOS 的示例却很多。

提前感谢您。

此致、

Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nick
    Linux 包括一个 DMA 驱动程序的通用框架,即"dmaengine",EDMA 实现可插入到该框架中。 内核中的驱动程序使用 dmaEngine API 来实现数据移动基元。
    您可以在“内核”文档文件夹中查找有关其用法的详细信息: www.kernel.org/.../
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sriram、

    很抱歉、但这没有回答我的问题。 我说我已经使用了"dmaenger"、我对我能用它做的事情不满意。 我可以看到、它仅限于连续的存储器传输。 但是、如果我有必须执行的跳转、我需要 EDMA 的 BIDX 和 CIDX 参数的灵活性。 有了"dmengine"、我就不能做任何像这样的事情、这是一个遗憾、因为 EDMA 可以做更多的事情。

    我刚刚找到了: processors.wiki.ti.com/.../EDMA_sample_test_application 、但它没有成功构建、因为它适用于达芬奇电路板。

    对于 TDA2电路板是否有类似的东西? 或者更好的是、如果所有 EDMA 功能都可以与"dmaengine"一起使用、我想知道如何操作。

    提前感谢您。

    此致、
    Nick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nick
    Linux 端实现目前仅支持 DMAengine 接口-该接口被抽象化以处理多个 DMA 实现,因此您只能获得功能的通用子集