工具/软件:
在 SDK 版本 09.02.00.09 和 09.02.00.10 之间、以下补丁中断了来自 McASP 的音频流:
commit 67d5b24398155d07376b04dd8b3d858d049a5e17
Author: Jai Luthra <j-luthra@ti.com>
Date: Mon Apr 29 16:06:55 2024 +0530
dmaengine: ti: k3-udma: Fix teardown for cyclic RX with PDMA
When receiving data in cyclic mode from PDMA peripherals, where reload
count is set to infinite, any TR in the set can potentially be the last
one of the overall transfer. In such cases, the EOP flag needs to be set
in each TR and PDMA's Static TR "Z" parameter should be set, matching
the size of the TR.
This is required for the teardown to function properly and cleanup the
internal state memory. This only affects platforms using BCDMA and not
those using UDMA-P, which could set EOP flag in the teardown TR
automatically.
UDMA 的音频流配置为:
- 具有 ACC32、突发的 PDMA
- 循环
- period_len = 65536
- buf_len = 524288
在该补丁音频流正常工作之前、这意味着输出字节与输入相匹配。
此补丁后、音频流中断:
- 输出中每 65536 个字节就会出现不连续的情况、有额外的空字节(观察到 16 字节和 32 字节偏移)
- 由于#1、TDM 流被移至不同的通道
- 手动跟踪数据流中更改的偏移仍会导致音频信号中断、从而可能指示样本丢失
e2e.ti.com/.../normal_5F00_tdm128.wav
e2e.ti.com/.../bad_5F00_tdm128.wav
附加的文件 normal_tdm128.wav 是使用从 09.00.00.010 开始的 arecord 的记录。 文件 bad_tdm128.wav 是使用来自 09.02.00.010 的 arecord 的记录。 这两个录音都是 128 个频道,有 24 个频道流音频和其余零。 两个录音在一个信道上都有提示音输入、由于距离的关系、在至少 3 个其他信道上的音量要小得多。