Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353404
  • 博文数量: 49
  • 博客积分: 3229
  • 博客等级: 中校
  • 技术积分: 616
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-26 21:46
文章分类

全部博文(49)

文章存档

2011年(8)

2010年(2)

2009年(3)

2008年(36)

我的朋友

分类:

2008-08-02 21:05:38

关于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》
阅读(2330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~