| 注意 | TCM和SRAM在技术上相同,但在结构排列上不同;TCM在片上,而SRAM在板上。 |
| 注意 | 通过协处理器访问指令CDP、LDC和STC指令对协处理器CP15进行访问将产生不可预知的结果。 其中,CDP为协处理器数据操作指令,这个指令初始化一些与协处理器相关的操作; LDC为一个或多个字的协处理器数据读取指令,此指令从存储器读取数据到指定的协处理器中; STC为一个或多个32位字的协处理器数据写入指令,此指令初始化一个协处理器的写操作,从给定的协处理器把数据传送到存储器中。 |
| 注意 | r15不能作为ARM寄存器出现在MRC或MCR指令中,如果r15作为<Rd>出现在这里,那么指令的执行结果不可预知。 |
| 注意 | 在用户模式下,如果要访问系统控制协处理器,通常的做法是由操作系统提供SWI软中断调用来完成系统模式的切换。由于不同型号的ARM处理器对此管理差别很大,所以建议用户在应用时将SWI作为一个独立的模块来管理并向上提供通用接口,以屏蔽不同型号处理器之间的差异。 |
寄存器编号 | 基 本 作 用 | 特 殊 用 途 |
0 | ID编号(只读) | ID和Cache类型 |
1 | 控制位 | 各种控制位 |
2 | 存储器保护和控制 | MMU:地址转换表基地址 PU:Cache属性设置 |
3 | 内存保护和控制 | MMU:域访问控制 PU:写缓存控制 |
4 | 内存保护和控制 | 保留 |
5 | 内存保护和控制 | MMU:错误状态 PU:访问权限控制 |
6 | 内存保护和控制 | MMU:错误状态 PU:保护区域控制 |
7 | Cache和写缓存 | Cache和写缓存控制 |
8 | 内存保护和控制 | MMU:TLB控制 PU:保留 |
9 | Cache和写缓存 | Cache锁定 |
寄存器编号 | 基 本 作 用 | 特 殊 用 途 |
10 | 内存保护和控制 | MMU:TLB锁定 PU:保留 |
11 | 保留 | 保留 |
12 | 保留 | 保留 |
13 | 进程ID | 进程ID |
14 | 保留 | 保留 |
15 | 芯片生产厂商定义 | 芯片生产厂商定义 |
操作码opcode2 | 对应的标识符寄存器 |
0b000 | 主标识符寄存器 |
0b001 | Cache类型寄存器 |
其他 | 保留 |
可能的取值 | 版 本 号 |
0x1 | ARM体系版本4 |
0x2 | ARM体系版本4T |
0x3 | ARM体系版本5 |
0x4 | ARM体系版本5T |
0x5 | ARM体系版本5TE |
可能的取值 | ARM芯片生产厂商 |
0x41(A) | ARM公司 |
0x44(D) | Digital Equipment |
0x69(i) | Intel公司 |
可能的取值 | ARM芯片生产厂商 |
0x41(A) | ARM公司 |
0x44(D) | Digital Equipment |
0x69(i) | Intel公司 |
处理器标识符 | 含 义 |
0x4156030 | ARM3(体系版本2) |
0x4156060 | ARM600(ARM体系版本3) |
0x4156061 | ARM610(ARM体系版本3) |
0x4156062 | ARM620(ARM体系版本3) |
编 码 | Cache类型 | Cache内容清除方法 | Cache内容锁定方法 |
0b0000 | 直写 | 不需要内容清除 | 不支持 |
0b0001 | 回写 | 数据块读取 | 不支持 |
0b0010 | 回写 | 由寄存器定义 | 不支持 |
0b0110 | 回写 | 由寄存器定义 | 支持格式A,见后 |
0b0111 | 回写 | 由寄存器定义 | 支持格式B,见后 |
编 码 | M=0时的含义 | M=1时的含义 |
0b000 | 0.5KB | 0.75KB |
0b001 | 1KB | 1.5KB |
0b010 | 2KB | 3KB |
0b011 | 4KB | 6KB |
编 码 | M=0时的含义 | M=1时的含义 |
0b100 | 8KB | 12KB |
0b101 | 16KB | 24KB |
0b110 | 32KB | 48KB |
0b111 | 64KB | 96KB |
编 码 | Cache块大小 |
0b00 | 2个字(8字节) |
0b01 | 4个字(16字节) |
0b10 | 8个字(32字节) |
0b11 | 16个字(64字节) |
编 码 | M=0时的含义 | M=1时的含义 |
0b000 | 1路相联 (直接映射) | 没有Cache |
0b001 | 2路相联 | 3路相联 |
0b010 | 4路相联 | 6路相联 |
0b011 | 8路相联 | 12路相联 |
0b100 | 16路相联 | 24路相联 |
0b101 | 32路相联 | 48路相联 |
0b110 | 64路相联 | 96路相联 |
0b111 | 128路相联 | 192路相联 |
| 注意 | 在寄存器c1中包含了一些没有使用的位,这些位在将来可能被扩展其他功能时使用。因此为了编写代码在将来更高版本的ARM处理器中仍可以使用,在修改寄存器c1中的位时应该使用“读取-修改特定位-写入”的操作序列。 |
C1中的控制位 | 含 义 |
M(bit[0]) | 禁止/使能MMU或者MPU 0:禁止MMU或者MPU 1:使能MMU或者MPU 如果系统中没有MMU或者MPU,读取时该位返回0,写入时忽略 |
A(bit[1]) | 对于可以选择是否支持内存访问时地址对齐检查的系统,本位禁止/使能地址对齐检查功能 0:禁止地址对齐检查功能 1:使能地址对齐检查功能 对寄存器进行写操作时,忽略该位 |
C(bit[2]) | 当数据Cache和指令Cache分开时,本控制位禁止/使能数据Cache。 当数据Cache和指令Cache统一时,该控制位禁止/使能整个Cache 0:禁止Cache 1:使能Cache 如果系统中不含Cache,读取时该位返回0,写入时忽略 当系统中Cache不能禁止时,读取返回1,写入时忽略 |
W(bit[3]) | 禁止/使能写缓存 0:禁止写缓存 1:使能写缓存 如果系统中不含写缓存,读取时该位返回0,写入时忽略 当系统中的写缓存不能禁止时,读取时该位返回0,写入时忽略 |
P(bit[4]) | 对于向前兼容26位ARM处理器,本控制位控制PRGC32控制信号 0:异常中断处理程序进入32位地址模式 1:异常中断处理程序进入26位地址模式 如果系统不支持向前兼容26位地址,读取该位时返回1,写入时被忽略 |
D(bit[5]) | 对于向前兼容26位ARM处理器,本控制位控制DATA32控制信号 0:禁止26位地址异常检查 1:使能26位地址异常检测 如果系统不支持向前兼容26位地址,读取该位时返回1,写入时被忽略 |
C1中的控制位 | 含 义 |
L(bit[6]) | 对于ARMv3及以前版本,本控制位可以控制处理器的中止模式 0:选择早期中止模式 1:选择后期中止模式 对于以后的处理器读取该位时返回1,写入时忽略 |
B(bit[7]) | 对于存储系统同时支持大/小端(big-endian/little-endian)的ARM处理器,该控制位配置系统使用哪种内存模式 0:使用小端(little-endian) 0:使用大端(big-endian) 对于只支持小端(little-endian)的系统,读取时该位返回0,写入时忽略 对于只支持大端(big-endian)的系统,读取时该位返回1,写入时忽略 |
S(bit[8]) | 支持MMU的存储系统中,本控制位用作系统保护 |
R(bit[9]) | 支持MMU的存储系统中,本控制位用作ROM保护 |
F(bit[10]) | 本控制位由生产厂商定义 |
Z(bit[11]) | 对于支持跳转预测的ARM系统,本控制位禁止/使能跳转预测功能 0:禁止跳转预测功能 1:使能跳转预测功能 对于不支持跳转预测的ARM系统,读取时该位返回0,写入时忽略 |
I(bit[12]) | 当数据Cache和指令Cache是分开的,本控制位禁止/使能指令Cache 0:禁止指令Cache 1:使能指令Cache 如果系统中使用统一的指令Cache和数据Cache或者系统中不含Cache,读取该位时返回0,写入时忽略该位 当系统中的指令Cache不能禁止时,读取该位返回1,写入时忽略该位 |
V(bit[13]) | 支持高端异常向量表的系统中,本控制位控制向量表的位置 0:选择0x00000000~0x0000001c 1:选择0Xffff0000~0xffff001c 对于不支持高端中断向量表的系统,读取时返回0,写入时忽略 |
RR(bit[14]) | 如果系统中Cache的淘汰算法可以选择的话,本控制位选择淘汰算法 0:选择常规的淘汰算法,如随机淘汰算法 1:选择预测性的淘汰算法,如轮转(round-robin)淘汰算法 如果系统中淘汰算法不可选择,写入该位时被忽略,读取该位时,根据其淘汰算法是否可以比较简单地预测最坏情况返回1或者0 |
L4(bit[15]) | ARM版本5及以上的版本中,本控制位可以提供兼容以前的ARM版本的功能 0:保持当前ARM版本的正常功能 1:对于一些根据跳转地址的bit[0]进行状态切换的指令,忽略bit[0],不进行状态切换,保持和以前ARM版本兼容 此控制位可以影响以下指令:LDM、LDR和POP 对于ARM版本5以前的处理器,该位没有使用,应作为UNP/SBZP 对于ARM版本5以后的处理器,如果不支持向前兼容的属性,读取时该位返回0,写入时忽略 |
Bit(bit[31:16]) | 这些位保留将来使用,应为UNP/SBZP |
欢迎光临 DIY编程器网 (http://diybcq.com./) | Powered by Discuz! X3.2 |