工具/软件:
您好:
第一次引导时、dmaengine_prep_dma_cycrocy() 将导致第一个数据块写入环缓冲区中的第一个缓冲区、并且每个连续的数据块将写入下一个缓冲区、然后相应地绕回。
但是,由于 GDB 或软件崩溃,应用程序会停止,然后调用函数 dmaengine_terminate_sync () 来停止 DMA 循环传输。 由于应用程序将在不进行下电上电或 UBoot 的情况下重新启动、因此出于某种未知原因、DMA 会将第一个数据块写入环形缓冲区中的第二个缓冲区、而不是第一个缓冲区。 通过将下一个数据块写入环缓冲区中的连续缓冲区、然后进行相应的绕回、DMA 循环模式仍将正常工作。 我认为 dmaengine_terminate_sync() 调用的低级固件不能清除所有内容。
谢谢、
Victor