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.

TDA4 cache一致性问题



        在我们的算法中,我们会在L2上申请两块内存pSrcL2Blk和pDstL2Blk,分别用来存储输入数据和输出数据。我们首先用UDMA(appUdmaCopy2D)将输入数据从ddr上搬运到pSrcL2Blk,然后C66利用pSrcL2Blk上的数据进行计算,然后将计算结果放到pDstL2Blk,最后用UDMA(appUdmaCopy2D)将pDstL2Blk上的数据搬运到ddr上。如下图所示:

                                      

在UDMA将将pDstL2Blk上的数据搬运到ddr上之后,再对ddr 进行cache_wb写回操作。

我们的代码如下:

         Udma(pSrcL2Blk, pSrcDdr, srcWidth, srcHeight);

         kernelProcess(pDstL2Blk, pSrcL2Blk);

         Udma(pDtsDdr, pDstL2Blk, dstWidth, dstHeight);

         Output_dim = dstWidth* dstHeight;

         CacheP_wb(pDtsDdr, Output_dim);

我们发现结果不正确,最后pDtsDdr和pDstL2Blk上的结果不一致。但是我们可以确定kernelProcess的计算部分是没有问题的。

在我们项目中为代码的具体参数是: dstWidth = 288 dstHeight = 25 Output_dim =7200.