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/66AK2E02:如何在最新 PDK 中使用 EDMA

Guru**** 2602855 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648070/linux-66ak2e02-how-to-use-edma-in-the-latest-pdk

器件型号:66AK2E02

工具/软件:Linux

大家好、

我们已经在基于 66AK2E02芯片组的定制板中使用带 EDMA 的 MCSDK 和自定义包装器驱动程序、这种情况很好。 现在、我们尝试移植到最新的 PDK 版本。 在 Linux 4.9中、EDMA 发生了大变化。 许多 API 也会被删除。 那么 、最新内核上是否有任何文档或示例包装程序驱动程序? DMA 引擎是否完全集成?

此致、

Sathish V

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

    您正在使用哪个 SDK 版本?

    ~、μ C/ti-processor-sdk-linux-k2e-evm-04.01.00.06/board-support/linux-4.9.41+gitAUTOINC+e3a80a1c5c-ge3a80a1c5c/Documentation/dmaengineer/dmatest.txt 中有一个 DMA 示例

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

    SDK 版本我们使用的是4.01.00.06。 我将检查该测试应用并告知您。 感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、如果您遇到进一步的问题、可以随意重新打开此主题。

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

    您好、yordan、

    我阅读了文档。 根据这一情况、要查看通道列表、我们必须看到"ls -1 /sys/class/dma "、其中将列出可用通道。 但在我的例子中、没有列出通道。 这可能是设备树的问题。 但没有示例可以为 k2e 电路板的 EDMA3添加器件树节点。 在 k2g dts 文件中存在该文件。 但中断不兼容。 那么、是否有任何有关为 k2e 配置此器件树的文档? 我在内核中检查了 Documentation 文件夹中的 ti-dma.txt。 但是、为了跟上这一过程、我无法获取 有关中断属性的信息。 另外 k2e 有4个 CC、每个 CC 有可变数量的 TCS。 您能否提供有关这方面的见解?

    此致、

    Sathish V  

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

    好的、您可以使用 k2g dts 作为参考。 但是、您需要对齐寄存器地址和中断以匹配 Keystone II 用户指南:
    www.ti.com/.../66ak2e02.pdf
    www.ti.com/.../sprugs5b.pdf

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

    您好、yordan、

    我在这里有几个问题。 通过检查 k2g DTS 文件和 k2g 数据表(TRM)、EDMA 的3条中断线(CCINT、ERRINT、MPERR)正在从 ARM GIC 注册。 但在 k2e 中、中断线路 CCINT 位于 ARM 内核中、但 ERRINT 和 MPINT 出现在 CIC2和 CIC0中。 根据 ti-edma.txt 文档、我们必须向 DTS EDMA 节点中的 interrupts 属性提供3个中断。  在本例中、我们必须如何提供 k2e 的中断属性? 我是否缺少一些信息? EDMA 文档中提到的中断线路与数据表中的中断线路不匹配。 我能够以旧传统模式测试 EDMA。 但根据 ti-edma.txt、这已被弃用。

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

    我们将对此进行研究。

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

    您好、yordan、

    感谢你的答复。 在这里、我提出了这个、

    EDMA:EDMA@2728000{
       兼容="ti、edma3-tpcc";
       ti、hwmds ="tpcc";
       REG =   <0x2728000 0x8000>;
       reg-names ="EDMA3_cc";
       中断=<0 341 0xf01>、
             <0 343 0xf01>;
       中断名称="EDMA3_ccint"、"EDMA3_cerrint";
       DMA 请求=<64>;
       dma-cells =<2>;
       TI、EDMA-memcpy 通道=<20 21>;
       TI、tptcs =<&EDMA_tptc0>、<&EDMA_tptc1>;
    };

    EDMA_tptc0:tptc@27B8400{
       兼容="ti、edma3-tptc";
       REG =   <0x27B8400 0x400>;
    };

    EDMA_tptc1:tptc@27B8800{
       兼容="ti、edma3-tptc";
       REG =   <0x27B8800 0x400>;
    };

    这是否起作用? 我可以进行存储器复制。 但它是否有效?

    感谢大家、

    Sathish V

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

    我在您的原始帖子中看到了"移植到最新 PDK 版本"。 您是否正在使用 EDMA_LLD? 您还提到了在 Linux 4.9中删除的大量 API。 您能否列出它们以便我们知道您使用的 DMA 实现方式?

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

    尊敬的 Rex:

    很抱歉耽误你的答复。 被其他一些工作卡住了。 EDMA_LLD 驱动程序适用于 DSP、对吧?  我想使用"linux-4.9/driver/dma/edma.c"中的 EDMA 驱动程序。在我之前的帖子中更改了 DTS 后、我能够使用 EDMA 驱动程序。 一个问题是、Linux EDMA 驱动程序中是否支持链? 我想进行2 DMA 传输链、但我无法使用 Linux EDMA 驱动程序执行此操作。 当前 EDMA 驱动程序是否支持链接?  或者、我是否必须直接访问 EDMA 参数集以获取链接?

    此致、

    Sathish V

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

    您好、Sathish、

    您应该能够在 EDMA 常见问题 解答 http://processors.wiki.ti.com/index.php/EDMA_FAQ_for_KeystoneI/II_devices 中找到答案

    雷克斯