我针对 不同大小的数据测量了 L2和 MSMC SRAM 之间的数据复制延迟。
我使用 memcpy()复制数据并将 MSMCSRAM 设置为不可连接的区域。
L2->MSMCSRAM
4KB:1.545us
-128KB:50.340us
MSMCSRAM->L2:
4KB:11.035us
-128KB:351.993us
COPY (MSMCSRAM ->L2 )所需的时间比 COPY (L2 ->MSMCSRAM)长7倍。
此结果 是否合理? 是否有人解释原因?
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.
我针对 不同大小的数据测量了 L2和 MSMC SRAM 之间的数据复制延迟。
我使用 memcpy()复制数据并将 MSMCSRAM 设置为不可连接的区域。
L2->MSMCSRAM
4KB:1.545us
-128KB:50.340us
MSMCSRAM->L2:
4KB:11.035us
-128KB:351.993us
COPY (MSMCSRAM ->L2 )所需的时间比 COPY (L2 ->MSMCSRAM)长7倍。
此结果 是否合理? 是否有人解释原因?
您好、ran35366、感谢您的回复。
我 制作了如下代码来重新映射 MSMCSRAM 区域并禁用该区域的高速缓存。
我参考 了 https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/164833
#define MSMC_LOGICAL_ADDR (0x24000000)
struct CSL_XMC_XMPAXL 低结构体;
struct CSL_XMC_XMPAXH higherStructure;
lowerStructure.rAddr = 0x00C000;
lowerStructure.SR = 1; //主管读取
lowerStructure.sw= 1; //管理员写入
lowersStructure.sx = 0; //主管执行
lowerStructure.ur = 1; //主管读取
lowerStructure.UW= 1; //主管写入
lowerStructure.UX = 0; //主管执行
higherStructure.bAddr = 0x24000;
higherStructure.segSize= 0x15; //4MB
CSL_XMC_setXMPAXH (3,&higherStructure);
CSL_XMC_setXMPAXL (3,低结构体);
cache_disablecaching((MSMC_logical_ADDR)>>24);