OMAPL137中ARM9核的ICache 使能后,运行速度没见提高。代码如下;
void CP15_EnableIcache(void)
{
asm(" MOV r0, #0");
asm(" MRC p15, #0, r0, c1, c0, #0");
asm(" ORR r0, r0, #0x1000");
asm(" MCR p15, #0, r0, c1, c0, #0");
}
请问使能ARM核的ICache时还需要设置别的寄存器?
noaming:
你好,ARM核的ICache使能就可以,不需要其他设置。这几句代码,是什么方法对比的速度。。
kun han:
回复 noaming:
你好Tian谢谢您的回复。使能MMU、DCache及ICache部分代码是从AM1808_StarterWare_1_00_03_03复制过来的。用LED的闪烁对比运行速度,代码如下。在仅使能ICache的情况下运行速度没变化。使能MMU、DCache及ICache后运行才有明显提升。我这里还有块S3C2410的板子,类似的LED代码在仅使能ICache的情况下运行速度就有明显的提升。同样都是ARM9,OMAPL137仅使能ICache运行速度没变化,是不是忽略了哪些设置?
void main( void ){ static Uint16 i = 0; unsigned int index;
for(index = 0; index < (4*1024); index++) { if((index >= 0xC00 && index < 0xE00)|| (index == 0x800)) { pageTable[index] = (index << 20) | 0x00000C1E; } else { pageTable[index] = (index << 20) | 0x00000C12; } } CP15TtbSet((unsigned int )pageTable); CP15MMUEnable(); CP15ICacheEnable(); CP15DCacheEnable(); while(1) { wait(1000000); if(i == 0) { GpioRegs.GP01OUTDAT.bit.GP0P12 = 1; i = 1; } else { GpioRegs.GP01OUTDAT.bit.GP0P12 = 0; i = 0; } }}