您好、香榭丽舍
当客户 UART 通信测试数百万次时、有时会发生通信错误。
我们确认发送到 Rx 的 Tx 数据成功。
AM572x RX 端数据失败。 我们仍在调查这一细节。
您是否曾遇到过这样一个无法接收数据的问题?
AM572x RX --- TX 器件
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.
器件型号:AM5726
工具/软件:TI-RTOS
您好 Champ、
我们将使用具有 DMA 模式的 UART。
我们有两个问题。
1) 1)尽管 在接收 DMA 数据之前 Rx 缓冲器上存在"使缓存无效"、但有时在读取数据之前会自动启用缓存
您是否有过这种现象?
下面是详细现象。
DMA 接收设置遵循以下步骤、
1:RX 缓冲缓存无效
2:开始接收数据
3:完成接收
4:读出 Rx 缓冲器。
在这种情况下,它将 Rx 缓冲区值设置为与缓存行大小对齐,并为缓存行大小设置多个长度。
我们在1和4期间的理解使"缓存"失效。 通常、系统工作正常。
但是、每100万次通信会有1次、 缓存 会在" 2~4 "期间自动"验证"并读取以前的数据。
我们确认了 μ 1~4流程未访问 PGM 上的 Rx 缓冲器。
此致、
Kz777
尊敬的 Eric:
很抱歉我迟到了。
当我问您的问题时、并建议他们采取后续行动。 他们接受此操作。
他们将检查以下操作。 当他们仍然有问题时、我将再次尝试获取您所需的信息。
我们最近发现一个问题、即 UART DMA 未正确测试、因为在.cfg 文件中指定了非 DMA 支持库并使用了该库。 该校正将位于.cfg 文件中、如下所示:
VAR UART = XDC.loadPackage ('ti.drv.UART');
UART.Settings.enableProfiling = true;
UART.Settings.socType = socType;
Uart.Settings.useDma ="true";
我们还发现、在 A15上、即使您执行与缓存行大小对齐的 DMA RX 缓冲区、且缓冲区长度等于多个缓存行、以下操作也不总是包含 A15接收的数据:
1. memset/initialize the RX buffer
2. rx 缓冲区的 cache_wbInv()
DMA 将数据移动到 RX 缓冲区中(我们通过使用 CCS 存储器物理视图验证存储器来知道数据确实到达)
CPU 尝试读取数据