工具与软件:
您好!
我尝试在 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]);
}