在我们的算法中,我们会在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.
Shine:
抱歉,TDAxx汽车芯片不通过e2echina论坛进行支持,可以联系您的TI销售获取技术支持或者到e2e英文论坛咨询。
e2e.ti.com/…/791