关于CP15:
1.在基于ARM的嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32寄存器,编号0-15.对于某些编号的寄存器可能对应有多个物理寄存器,在指令中指定特定的标志位为区分这些物理寄存器。
2.操作CP15的指令:MCR与MRC
MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中。如果协处理器不能成功的执行该操作,将产生未定义的指令异常中断
MRC指令将协处理器的寄存器中的数据传送到ARM处理器的寄存器中。如果协处理器不能成功的执行该操作,将产生未定义的指令异常中断
MCR与MRC指令只能在处理器模式是系统模式中执行,在用户模式下执行此两指令将会角触发未定义指令的异常中断。
指令的格式为:
MCR{cond} p1,opcode-1,Rd,CRn,CRm,opcode-2
MRC{cond} p1,opcode-1,Rd,CRn,CRm,opcode-2
对于CP15协自带器来说,协处理器操作码1永远为0
Rd 作为源寄存器的ARM寄存器
CRn 目标寄存器的协处理器寄存器。其编号可能为C0,C1,C15
CRm 附加的目标寄存器或者源操作寄存器。用于区分同一个编号的不同物理寄存器。当指令不需要提供附加信息时,将C0指定为CRm。否则指令操作系统不可预知
opcode-2提供附加信息,用于区别同一个编号的不同物理寄存器。当指令中没有指定附加信息时,省略opcode_2或者指定为0
CP15中寄存器的作用:
关于MMU:
ARM支持的存储块大小有以下几种:
段:大小为1M的存储块
大页:大小为64K
小页:大小为4K
极小页:大小为1K
通常,以段为单位的地址变换过程只需要一极页表。
变化过程:
地址变化过程其实是很简单的。对我们编程稍复杂一点的地方主要是描述符中各字段的作用及设置。
关于Cache:
Cache的分类:
1.统一/独立的数据Cache和指令Cache。当然,系统可能只包含有指令Cache或者只包含数据Cache
2.写通(write-through)cache和写回(write-back)cache。当CPU更新了Cache中的数据后,要将结果写入主存,有两种方法:写通与写回。写通是指CPU必须同时把数据写入主存与Cache。写回是指CPU只写Cache,而要在替换Cache的时候才写主存。
Cache使用注意事项:
1,在ARM中,IO操作通常被映射成存储器操作。对于存储器映射的IO空间,连续读取两次,返回的值可能不同,可能是因为第一次读操作的副作用或者是其它的操作影响了该IO单元的内容。
2.由于写缓冲技术可能会推迟写操作,它同样不适合对于存储器映射的IO空间的操作。
以上两种情况不适合用Cache
参考自:
《ARM体系结构与编程》
《S3C2410A USER‘S MANUAL》
阅读(2355) | 评论(0) | 转发(0) |