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.

[参考译文] TDA2SX:TDA C66 EDMA 从 DDR 到 L2

Guru**** 2466550 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1472545/tda2sx-tda-c66-edma-from-ddr-to-l2

器件型号:TDA2SX

工具与软件:

您好!

我尝试在 C66内核上执行从 DDR 到 L2的一些提取、以减少读取延迟。

我使用了上一篇文章中的以下代码作为基础。

当源和目标都是共享 DDR 时、运行正常。

但是、如果我将目标的分配更改为 utils_HEAPID_L2_local 或 甚至 utils_HEAPID_DDR_cached_local、则目标中的值将保持不变。

这是预期结果吗? 或者、我需要采取哪些不同的方式?


静态空 dma_memtest ()

Utils_Dma 4220CreateParams dmaChPrm;
Utils_Dma 骨灰骨柱;
Utils_Dma 421d dmaParams;
Int32状态;
dmaChPrm.eventQ = 0;

Utils_Dma 30724.12.1(&dmaChPrM) Params_Init;


状态= Utils_dmaCreateCh(.
dmaobj (&D)、
dmaChPrm (&D)
);

utils_assert (status == system_link_status_Sok);

uint32_t* gspidestBUF = Utils_memAlloc
(
utils_HEAPID_DDR_cached_SR

1024、
4.
);
uint32_t* gspisrcBUF = Utils_memAlloc
(
utils_HEAPID_DDR_cached_SR、
1024、
4.
);

memset (gspisrcBUF、0xAF、300);
cache_wb (gspisrcBUF、300、Cache_Type_ L.1D、(bool) true);//确保内容从缓存写入 DDR
dmaParams.srcAddr = gspisrcBUf;
dmaParams.destAddr = gspidestBUf;
dmaParams.length =32;

utils_dmaCopy1D (&dmaobj、&dmaParams);
cache_inv (gspidestBUf、300、Cache_Type_ ldo、(bool) true);//确保从 DDR 读取内容

printf ("%x %x %x\n"、gspisrcBUf[0]、gspisrcBUf[1]、gspisrcBUf[2]);
printf ("%x %x %x\n"、gspidestBUf[0]、gspidestBUf[1]、gspidestBUf[2]);


}