启动CPU里的ICache可以加快Bootloader启动。
PS:SDRAM红色椭圆区域 表示 要执行的代码(几条指令)。
CPU要在SDRAM那段代码,取指令,取完之后,返回CPU内部执行。然后又跳到SDRAM那段代码,取一条指令,然后又返回CPU内部执行… … … …
CPU每次都要去SDRAM里,在SDRAM红色椭圆区里取一条指令,返回执行。CPU每执行一条指令,都要访问SDRAM,如果这段代码一直在那里,不断地在那里执行,CPU就不断地在哪里取指令,好麻烦哟,那么远。
所以我们可以启动ICache,CPU在取指令的时候,同时把SDRAM的那一小块代码放到ICache(高速内存)里,下一次CPU执行的时候,先看一下Icache里,有没有那些指令,如果有,CPU直接从ICache里取出指令执行;如果没有,再去SDRAM内存里取。如果有那些指令,CPU会一直在ICache里取,这样速度就很快啦~~~
如果CPU访问外部SDRAM,那就要千里迢迢发出各种命令来读SDRAM内存。如果有了ICache,CPU只要在第一次读指令的时候,把那一小段的代码读到ICache里,然后每一次CPU,就可以先从ICache里寻找有没有那些指令,这样就近了很多。
start.S:
/* 启动ICACHE */
mrc p15, 0, r0, c1, c0, 0 @ read control reg
orr r0, r0, #(1<<12)
mcr p15, 0, r0, c1, c0, 0 @ write it back