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.

[参考译文] AM623:UART DMA 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1507441/am623-uart-dma-issues

器件型号:AM623

工具/软件:

UART DMA 功能对于行业应用非常重要、一些应用使用了所有 UART 端口、即使在高波特率下也是如此。  

只要应用程序加载增加、就需要 DMA 进行卸载、否则会任意/偶尔丢弃数据。  

由于有多个 UART DMA 问题、一些线程与其他问题混为一谈、为了更好地跟踪、请专门针对 UART DMA 问题启动一个新线程。

#1。 该线程报告了使用 DMA 的 UART 传输异常长、通过破解代码不将 DMA 用于 UART TX 来避免。 它可用于测试目的、而不是用于 SDK10.x 的 UART DMA 解决方案

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1472428/am625-uart-with-dma-takes-longer-in-continues-sending/

diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c
index 0b9c47172bc8..0952f08622c9 100644
--- a/drivers/tty/serial/8250/8250_omap.c
+++ b/drivers/tty/serial/8250/8250_omap.c
@@ -1042,6 +1042,10 @@ static int omap_8250_tx_dma(struct uart_8250_port *p)
        unsigned int    skip_byte = 0;
        int ret;
 
+       /* HACK: do not use DMA for TX */
+       ret = -EINVAL;
+       goto err;
+
        if (dma->tx_running)
                return 0;
        if (uart_tx_stopped(&p->port) || uart_circ_empty(xmit)) {

#2. 另一个用例需要 SDK9.2支持 UART DMA。

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

    尊敬的 Tony:

    如前所述、请与客户联系以了解 UART 用例是否主要用于 RX 传输。 如果是、可以使用上述补丁禁用 TX DMA 来解决问题。