嵌入式开发者社区

标题: 请教关于FFT例程中的CacheEnableMAR函数 [打印本页]

作者: sunny_sweet    时间: 2019-5-30 18:26
标题: 请教关于FFT例程中的CacheEnableMAR函数
问题比较多,希望能帮忙逐条答疑解惑,非常感谢!!

在FFT_Benchmark例程中,有是否使能L1,L2缓存两种处理方式
// 禁用
    CacheDisableMAR((unsigned int)0xC0000000, (unsigned int)0x08000000);

// 使能缓存 L1 及 L2
    CacheEnableMAR((unsigned int)0xC0000000, (unsigned int)0x08000000);
    CacheEnable(L1DCFG_L1DMODE_32K | L1PCFG_L1PMODE_32K | L2CFG_L2MODE_256K);

问题如下:
(1)注释写的是使能缓存L1及L2,请问CacheDisableMAR和CacheEnableMAR函数为什么是针对DDR2进行的处理?(DDR2地址为0xC000000)
(2)改变CacheDisableMAR和CacheEnableMAR函数中的byteSize,如改为0x04000000、0x0F000000等,应该表示的是DDR缓存空间有变化,但测试FFT速率基本无变化,为什么?
(3)保持例程默认配置,在使能缓存L1及L2时,注释掉CacheEnable(L1DCFG_L1DMODE_32K | L1PCFG_L1PMODE_32K | L2CFG_L2MODE_256K);其余未改动;按照我的理解是不再使能缓存,但测试FFT速率仍基本无变化,为什么?
(4)能否简单解释下FFT速率变化的原因?在实际应用中,缓存也许会被其他应用占用,那还能提升FFT速率么?
(5)按照上述配置更改过FFT_Benchmark后,开发板未重新上电,测试Memory_Benchmark,发现L2和DDR2速率变化很大,特别是DDR2速率很高,截图如下,请问这是由于缓存配置仍按照FFT工程的修改么?为什么速率变动这么大?
[attach]5146[/attach]

Memory_Benchmark默认配置运行结果:
L2 RAM Benchmark
Write Speed 1706.178161 MB/s
Read Speed 1699.666031 MB/s

Share RAM Benchmark
Write Speed 195.978656 MB/s
Read Speed 96.523789 MB/s

DDR2 Benchmark
Write Speed 193.215099 MB/s
Read Speed 52.019450 MB/s  



作者: sunny_sweet    时间: 2019-6-11 09:21
自己顶顶,求解答~~
作者: 广州创龙莫工    时间: 2019-6-13 18:11
请查看相关函数说明和数据手册。
[attach]5191[/attach]




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4