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.

edma3用pingpong方式,怎么保证dsp数据处理和edma数据传输同步



我打算用edma3传输图像数据从内存到LL2进行处理,但是在视频数据信号的传输和处理过程中, CPU数据处理必须与EDMA数据传输保持同步,也就是要保证
CPU访问之前EDMA把数据传输到缓冲区中,而在EDMA输出数据之前CPU完成缓冲区中的数据处理。但是我怎么能保证同步呢?假设edma数据传输非常快,而dsp速度跟不上,这么一来就会造成很多数据来不及处理。

另外edma3的传输速度有没有大致的范围?我好用来评估一下dsp处理时间和edma传输时间是不是相差太多?

  • baojun zhu 说:
    我打算用edma3传输图像数据从内存到LL2进行处理,但是在视频数据信号的传输和处理过程中, CPU数据处理必须与EDMA数据传输保持同步,也就是要保证
    CPU访问之前EDMA把数据传输到缓冲区中,而在EDMA输出数据之前CPU完成缓冲区中的数据处理。但是我怎么能保证同步呢?

    这种场景,其实是用的手动触发传输或者用QDMA,在启动DMA后,需要等待传输完成才去处理数据。

    Trigger EDMA ->Check EDMA complete-> Process data  

  • 不好意思应该是我没有表达明白,我看论文上大部分用EDMA的pingpong操作,也就是不用手动触发,是不是这种方式的效率要比手动触发高很多,另外这种pingpong操作方式是不是需要dsp数据处理和edma数据传输需要同步

  • 你是从内存到L2是memory to memory的,没有事件来触发。

    手动触发的大致流程应该是下面这样子的来达到ping pong效果。。

    trigger EDMA 1 Ping

    Trigger EDMA 2. Pong

    while(1)

    {

    Wait EDMA1 complete

    process Ping.

    Trigger EDMA 1

    Waiting EDMA 2 complete

    Process Pong

    Trigger EDMA 2

    }