S3C2410 MMU&CACHE&BUF&SWI&TLB

2010年10月26日 17:40    发布者:szhlwang
附件的代码是在广嵌的GEC2410V1.1上调试通过的。主要程序说明:1、MMUGEN.C,根据MMU.DEF产生TTB数据2、MMU.C,完成MMU的初始化3、SWI.S,SWIC.C,方便的添加SWI功能。4、LED_C.C:跑马灯程序。5、KeyScan.c,按键处理程序。6、ULINK2.INI,少了这个初始化文件,MDK不能把FLASH烧写算法加载到SDRAM.7、RUNINRAM.SCT,分散链接加载文件。   1、使能ICACHE时,速度快N1倍
2、使能DCACHE时,速度快N2倍
3、MMU禁止时,ICACHE可以使能,此时全部地址都有ICACHE功能。
4、MMU禁止时,DCACHE不可以使能,全部地址都没有DCACHE.
5、MMU使能时,ICACHE,DCACHE根据CP15的C,B使能位和描述符中的C,B位确定。
6、对于必须严格按照程序的顺序执行的地址(如I/O),不能用CACHE和WRITE BUFFER,否则产生时序错乱。TLB:
1、TLB包含的信息有:1)虚拟页号 2)物理页号 3)页SIZE(1K,4K,16K,64K,1M),页访问属性,4)TLB有效位
2、当(AP0,AP1,AP2,AP3)不完全一致时,只有当前选中的一个子页被填入TLB,分别为1K(1/4小页)或16K(1/4大页)。
3、当(AP0,AP1,AP2,AP3)完全一致时,整个大页(64K)或整个小页(4K)被填入TLB
4、当TTB的内容改变时,必须要清除相应的TLB项,以保证新的TTB项能被填入TLB.
5、MMU直接从C2对应的物理基地址去读取TTB的描述符,不会经过VA-PA转换,也就不会用到CACHE中的数据,所以如果程序需要改变TTB的内容,
   TTB相关地址不能设置成WRITE-BACK,只能使用WRITE-THROUGH,保证TTB的内容能实时更新。
该文章有附件资料,如需下载请访问 电脑版