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.

[参考译文] PROCESSOR-SDK-AM437X:RTOS 中支持 UART EDMA

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/640316/processor-sdk-am437x-uart-edma-support-in-rtos

器件型号:PROCESSOR-SDK-AM437X

你(们)好

我使用的是 AM437x IDK。

我想在 UART 驱动程序(ti.drv.UART)中启用 EDMA 支持。

我已将以下内容添加到配置文件中:

VAR UART = XDC.loadPackage ('ti.drv.UART');               (已存在)

UART.Settings.socType = socType;

Uart.Settings.useDma ="true";

当我编译时、我遇到链接器错误:

JS:"c:/ti/pdk_am437x_1_0_6/packages/ti/drv/uart/package.xs、第121行:错误:找不到库:C:/ti/pdk_am437x_1_0_6/packages/ti/drv/uart/./lib/am437x/a9/release/ti.drv.uart.dma.aa9fg

能否重新编译 PDK 以包含对 UART 的 EDMA 支持?
为什么它不存在?

这个人似乎面临着同样的问题-一年前...

e2e.ti.com/.../510193 DMA

此致、

Mads

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有什么新功能吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    最新版本为4.1版本(PDK_AM437X_1_0_8)。 AM437x GP EVM 已有一个 UART DMA 示例:UART_BasicExample_DMA_evmAM437x_armTestProject。 该配置使用 AM437X_APP_DMA_evmam437x.cfg。 首先尝试构建此示例以查看链接的驱动程序库。 然后为 IDK437x .cfg 文件添加相同的文件以支持 DMA。

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

    你(们)好 Eric

    我怀疑 AM437x UART 测试在任何 AM437x 项目示例中都不会使用 DMA 运行。
    PDK 中没有可用的 DMA 版本的 UART 库。

    在所引用的示例中、在 cfg 文件中加载了以下软件包...

    /*加载 UART 软件包*/
    VAR UartPackage = XDC.loadPackage ('ti.drv.UART');
    UartPackage.Settings.enableProfiling = true;

    这将加载 UART 驱动程序的非 DMA 版本(我在 my.cfg 中使用相同的版本)。 源代码测试示例中的使能 DMA 将不具有任何函数(就像在我的代码中一样)-它仍然只使用中断(hwi)来发送/接收。

    加载软件包时必须启用 DMA、如下所示:

    /*加载 UART 软件包*/
    VAR UartPackage = XDC.loadPackage ('ti.drv.UART');
    UartPackage.Settings.enableProfiling = true;
    Uart.Settings.useDma ="true";

    这将为您提供链接器错误:
    JS:"c:/ti/pdk_am437x_1_0_6/packages/ti/drv/uart/package.xs、第121行:错误:找不到库:C:/ti/pdk_am437x_1_0_6/packages/ti/drv/uart/./lib/am437x/a9/release/ti.drv.uart.dma.aa9fg

    似乎没有可用的 DMA 版本的库。

    这也是早些时候在 e2e.ti.com/.../510193上报告的情况

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

    我能否重建支持 DMA 的 UART 驱动程序?

    因为我缺少 ti.drv.uart.dma.aa9fg 文件。

    我只有以下两个文件
    ti.drv.uart.aa9fg

    ti.drv.uart.profiling.aa9fg

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

    是的、在 pdk_am437X_1_0_x\packages/ti\drv\uart\uart_component.mk 下
    drvuart_dma_SOCLIST = tda2xx tda2px dra72x dra75x tda2ex tda3xx dra78x am572x am571x K2H K2K K2L k2e k2g c6678 c6657 omapl137 omapl13

    您可以尝试添加 AM437X 来构建该库。 同时、我需要进一步研究。

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

    它似乎也应该添加到中

    UART_DMA_SOCLIST

    和  

    UART_DMA_PROFILE_SOCBIST。

    现在它可以工作了。 非常感谢!
    对于所有受支持的平台、这可能是在 SDK 上启用的默认设置?