单片机/MCU论坛
直播中

陈伟

7年用户 1460经验值
私信 关注

没有办法通过FX3固件检查缓冲区是卡住了还是已满?

我正在尝试通过多通道 DMA 缓冲区直播 1080p60 视频,但是我们遇到了一个问题,即在向 FX3 写入一定数量的缓冲区之后,我们看到当前线程 WATERMARK 和 READY 标志保持不变。 这会导致视频数据在 FPGA 端备份(因为缓冲区报告已满,因此无法写入),然后系统中断。 在直播 480p60、720p60 或 1080p30 时不存在此问题。 我尝试将 MultiChannel DMA 中的缓冲区数量从 4 增加到 8,以尝试增加可用缓冲区的数量,但我看不到任何区别。 如果我切换到单通道 DMA,视频可以按预期发出,但是我不确定它是否真的是 1080p60,因为文档说我需要使用多通道 DMA 来获得输出 1080p60 所需的 FX3 数据带宽。
在随附的照片中,你可以看到多次写入,然后突然间 WATERMARK 和 READY 同时断言。
有没有办法通过FX3固件检查缓冲区是卡住了还是已满? 发生这种情况时,我能否附上一张 UART 调试打印?
                                                  

回帖(1)

陈华

2024-2-23 10:51:02
是的,您可以检查 DMA 缓冲区的状态。 要检查缓冲区状态,您可以在 DMA 通道配置结构中注册生产者和消费者事件,使用全局变量跟踪生产者和消费者事件,并在 for 循环中打印值。
这样我们就可以先尝试找出缓冲区是否真的被填满了或者还有其他问题。 如果缓冲区实际上已被填满,则可以尝试增加 DMA 缓冲区的大小。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分