ARM920T及其MMU,Cache学习杂记(一)

来源:互联网 发布:大数据需要学什么语言 编辑:程序博客网 时间:2024/05/21 21:44

转载地址:http://blog.chinaunix.net/uid-7627289-id-2047807.html


S3C2410使用ARM920T的内核,这个内核分别有16KB的指令和数据cache,并且带MMU,要使用这些功能就必须通过协议处理器CP15操作相关寄存器实现。
ARM920T是由ARM9TDMI+MMU+高速Cache三部分组成。ARM920T有两个协处理器分别是CP14及CP15,CP14用于调试,CP15则用于存储控制及测试控制。
 
通常我们使用如下命令来读写协处理器的寄存器:
MCR/MRC{cond},p15,opcode_1,Rd,CRn,CRm,opcode_2
Opcode_1, opcode_2及CRm必须为0,除非这些值被用来选择特定的操作。
 
Reg0:ID CODE 寄存器,只读32位,设备ID代码
       31:24    开发厂商       0x41
       23:20    规范版本       0x01
       19:16    架构版本(V4T)     0x02
       15:4     Part号码        0x920
       3:0       Layout版本    0x0
操作指令:MRC p15,0,Rd,C0,C0,0
Opcode_2必须为非1的数,因为为1时,访问Reg0的另一个地址。
 
Reg0:Cache类型,包含ARM缓存信息
       操作指令:MRC p15,0,Rd,C0,C0,1 
28:25 Cache type 0110
24 Harvard/Unified 1 (defines Harvard cache)
 
20:18 DCache 大小 101 ( 16KB)
17:15 DCache associativity 110 (defines 64 way)
13:12 DCache words per line 10 (defines 8 words per line)
 
8:6 ICache size 101 (defines 16KB)
5:3 ICache Associativity 110 (defines 64 way)
1:0 ICache words per line 10 (defines 8 words per line)
        
Reg1:控制寄存器
       操作指令:    MRC p15,0,Rd,C1,C0,0        读
                            MCR p15,0,Rd,C1,C0,0        写
该寄存器控制 缓存,MMU,及时钟选项,还控制系统的大小端选择,错误检测使能等。
Register Bits Name Function Value
31 iA bit Asynchronous clock select See Table 2-11 on page 2-11.
30 nF bit notFastBus select See Table 2-11 on page 2-11.
29:15 – Reserved Read = Unpredictable
Write = Should be zero
14 RR bit Round robin replacement 0 = Random replacement
1 = Round robin replacement
13 V bit Base location of exception
registers
0 = Low addresses = 0x0000 0000
1 = High addresses = 0xFFFF 0000
12 I bit Instruction cache enable 0 = Instruction cache disabled
1 = Instruction cache enabled
11:10 – Reserved Read = 00
Write = 00
9 R bit ROM protection This bit modifies the MMU protection system.
See Table 3-6 on page 3-20
8 S bit System protection This bit modifies the MMU protection system.
See Table 3-6 on page 3-20
7 B bit Big-endian/little-endian 0 = Little-endian operation
1 = Big-endian operation
6:3 – Reserved Read = 1111
Write = 1111
2 C bit Data cache enable 0 = Data cache disabled
1 = Data cache enabled
1 A bit Alignment fault enable Data address alignment fault checing.
0 = Fault checking disabled
1 = Fault checking enabled
0 M bit MMU enable 0 = MMU disabled
1 = MMU enabled
 
Reg2 转换表寄存器
       16KB字节对齐,因此低13:0位应该为0,指向一级转换表基址,MMU相关
Reg3 域访问控制寄存器,
每两个位表示一个域的访问控制,MMU相关
Reg5 错误状态寄存器(FSR)
       MMU相关
Reg6 错误地址寄存器(FAR)
       最后一次数据错误发生时的MVA(修改的虚拟地址)MMU相关
Reg7 Cache操作寄存器 只写
       管理指令cache及数据cache
Reg8 TLB操作寄存器
Reg9 Cache lockdown
Reg10 TLB lockdown
 
Reg13 ProcID  (复位后为0)
Reg15 测试使用,不允许访问

2 0