关于arm ads 上RO_BASE对程序速度的影响

昨天有个网友问我,为什么RO_BASE设置在0x30000000的跑马灯比设置在0x32000000的跑马灯慢?

当时觉得不至于啊,两个地址都是映射到了片外RAM上,速度应该一样的,而且JTAG加载调试的,应该不受其他的影响啊!

刚才自己调试试了一下,还真速度不一样。

调整各种地址实验发现在0x3000 0000 到0x3020 0000地址直接的速度是非常快的,而在0x3020 0000之后的地址是很慢的。

想想可能是bootloader初始化了缓存之类的东西。在bootloader源码里面搜索0x30200000,果然是这样,bootloader禁止了0x30200000之后的缓存。

    MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB); //bank6-1
    MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_NCNB); //bank6-2


不过0x30100000 - 0x30200000中间那段地址,没有设置,也可以访问。不知道什么原因。

你可能感兴趣的:(关于arm ads 上RO_BASE对程序速度的影响)