2417899_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2417899_zh-CN

2417899_zh-CN

i.MX93 SAI1 TX FIFO 错误

平台
板:i.MX93 EVK;/sys/devices/soc0/soc_id=i.MX93
/sys/devices/soc0/revision=1.1。代码包,软件包标记/掩膜尚未记录。
Linux:6.12.20-lts-next-gdfaf2136deb2PREEMPT,A55。
SAI1 在 0x443b0000,TX 通过 44000000.dma-controller-CH21。
SAI1 串行根:来自 VIDEO_PLL 的 40 MHz;40 MHz BCLK,1.25 MHz 帧速率。
SAI3/WM8962 属于 Linux 所有,在以下复现过程中处于空闲状态。
LMX2571 I2S FSK 接收器:活动插槽中为有符号 16 位代码,其他插槽中为零。
常量码 +8500 产生预期的 +17 kHz 射频偏移。

最小 Linux 复现环境(M33 remoteproc 离线)
自定义 DTB 将 SAI1 公开为 ALSA 播放设备;SAI1 PCM 卡 0。
静态 ALSA PCM:硬件:0,0,S16_LE,2 通道,1,250,000 帧/秒;
周期 2,400 帧,缓冲区 19,200 帧。没有高斯滤波器或其他
实时波形生成。TX FIFO深度32字,TX DMA突发8字
先进先出水印 24。静态数据:槽位 0=8500,槽位 1=0。
命令:python3 /root/cp7g_static_playback.py --设备 hw:0,0 --seconds 600
最新结果:在 599.958 秒内写入了 750,000,000 帧,ALSA xruns=0。
SAI1 FEF IRQ 诊断:1 次事件,2.685 毫秒内发生 9 次 IRQ 条目。
首次观测到单调运行时间约为 675.892537 秒,大约
播放停止前 7.16 秒;不是流结束排水事件。

首次中断请求检测(时序在硬件 FEF 断言之后)
TCSR=0x90150c01;连续读取时间=41 ns;处理程序在第一次读取之前工作
TCSR 读取=209 ns;第一个 TCSR regmap 读取=120,607 ns(返回 0)。
FEF W1C regmap write=241,007 ns (返回 0),在详细快照之前。
Post-ACK TFR0=0x00020001,读取=242,799 ns。
ACK后eDMA CH21首次原始寄存器读取=241,423纳秒;CH21总计
快照时间=487,722 ns。CH_CSR=0x80000005,CH_ES=0x00000000,
CH_INT=0x00000000,CH_SBR=0x00208003,CH_PRI=0x00000000。
TFR0 和 CH21 值是在确认之后而非确认时采集的。
初步 FEF 断言。长时间的读取/写入操作无法证明它们
导致了最初的FIFO错误;CH_ES=0仅表示没有通道错误。
采样时锁定。尽管 ALSA xruns=0,但 FEF 仍然是一个硬件事件。

独立简化固件复制
Linux 系统启动且 ALSA 捕获空闲时,M33 代码驱动了同一个 SAI1 TX。
使用单个自链接 eDMA CH21 TCD,恒定 +8500 / 零槽,
没有主循环回调,没有前台缓冲区填充,没有高斯滤波器。
40 MHz BCLK,FIFO 深度 32,水位线 24,DMA 次循环 16 字节,
它在 SAI1 FEF 上停留了 216 秒(Rev R)。在 FEF 故障后的快照中,
CH21_ES=0 和 DMA 全局 ES=0;TCD 仍然是自链接的。类似的故障也曾发生。
在后续的优先和内部 BCLK 试验中。半速试验也失败了。
因此,既不需要Python也不需要M33波形计算/填充。
重现间歇性 SAI1 FEF。Linux 系统下播放也失败了。
M33离线。探针负载和外部导线长度的变化并未消除
问题。

补充观察
运行在 burst-4 / watermark-28 Linux 系统上的一个 FEF 事件大约在 uptime 时发生。
单独启动时耗时 676.889 秒;最近一次 burst-8 故障发生在 675.893 秒。
在最近一次启动过程中,系统日志搜索大约在 670–682 秒处,未发现任何内容。
已记录的活动。相似的正常运行时间仅供参考,并不能证明存在定时器。

向恩智浦提出的问题
1.是否存在已知的 i.MX93 rev 1.1 掩模勘误或低功耗/互连相关问题?
可能延迟 SAI1 和 eDMA CH21 寄存器访问和/或 DMA 的条件
在SAI1 TX及其时钟启用期间,服务时间为100-250微秒?
2. 哪些硬件状态、时钟门控、互连或 eDMA 走线可以
在 FEF 之前,找出第一个被遗漏的 SAI1 FIFO 服务请求?
3. SAI1 TX FEF 是否指示除实际先进先出 (FIFO) 之外的任何其他情况?
在这种异步主配置中是否存在欠载现象?
4. 是否有关于 SAI1/eDMA 突发、水印或时钟限制的文档记录?
i.MX93 上是否支持连续 40 MHz BCLK / 1.25 MHz 立体声帧输出?

可以提供自定义 DTB、Linux fsl_sai.c/h变化和静态播放
脚本、M33 自链接 TCD 源、完整启动时钟树和示波器/射频数据。

音频(PDM | I2S | SAI)Re: i.MX93 SAI1 TX FIFO errors

你好,

很抱歉回复晚了,请注意,由于中国假期期间网络带宽有限,回复可能会有所延迟。感谢您的理解。

1. 不,没有勘误表描述了您在设计中看到的行为。

2. TCSR[FEF] 表示已启用的发送 FIFO 出现欠载错误,但它无法确定原因是否是丢失了 DMA 请求。

3. 不,只是先进先出 (FIFO) 不足。

4. 此配置符合 SAI 交换规范。请分享您所做的修改,以便我们检查是否存在任何可能导致此行为的明显问题。请注意,我们不会验证驱动程序的修改。

顺祝商祺!

Tags (1)
No ratings
Version history
Last update:
Saturday
Updated by: