转载地址: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 测试使用,不允许访问

ARM920T及其MMU,Cache学习杂记(一)相关推荐

  1. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  2. [mmu/cache]-ARM cache的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...

  3. android cache缓存,Android缓存Cache学习

    Android缓存Cache学习 java 项目中须要用到缓存,我使用的是文件缓存,这里简单总结下:android 主要思路是封装一个缓存对象,将每一个界面须要缓存的数据做为缓存对象的属性,将缓存对象 ...

  4. Fortran学习杂记(一)

    Fortran学习杂记(一) 1. 内置函数 1) 数值运算 常见:- abs( ) - aimag( ) -conj( ) -max( ) ** -min( ) - mod(a, b) - real ...

  5. 51单片机学习杂记——基于STC89C52RC

    51单片机学习杂记--基于STC89C52RC 我是看的b站郭天祥老师的课,说实话,我觉得我能力不是很够,所以记得很杂.废物了属于是. 接下来就是正文了 基本的元器件以及字母符号含义: 电容:帮助晶振 ...

  6. Python日常学习杂记

    Python日常学习杂记 python -c 的作用 在命令行里执行python时,如果加上 -c,即 python -c xxx 那么,xxx就被当做一条指令(command)来执行,否则,就当做脚 ...

  7. MMU和cache学习

    1.      MMU MMU:memory management unit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(main memory)的两级也表控制,并且是由 ...

  8. (亚嵌)ARM920T的MMU与Cache之MMU

    MMU 我们已经简单了解了一下查页表的过程,实际上ARM920T支持多种尺寸规格的页表,图 9 "Translation Table Walk"所示的只是其中一种情况.下图示意了所 ...

  9. [mmu/cache]-MMU的寄存器学习

    文章目录 1.PAR_EL1, Physical Address Register ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 1.PAR_EL1, Physical Address R ...

  10. [mmu/cache]-ARM MMU/TLB的学习笔记和总结

    快速链接: .

最新文章

  1. 收藏 | 图解Word2vec,读这一篇就够了!
  2. C#多线程学习(三) 生产者和消费者
  3. LeetCode 1770. 执行乘法运算的最大分数(DP)
  4. 深入学习Java多线程——并发机制底层实现原理
  5. [Angularjs]ng-select和ng-options(转载)
  6. 数据预处理—2.为什么Lasso回归可以做特征选择(变量挑选)而岭回归做不到呢?
  7. 带着这篇去通关所有Handler的提问(三)
  8. nginx的使用(6)—— 配置静态代理
  9. [附源码]java毕业设计户籍管理系统
  10. Team Leader 究竟要不要写代码?
  11. 世界水周:美国女高中生水污染解决方案获2021斯德哥尔摩青少年水奖
  12. 思科网院 Routing and Switching Essentials ( 版本 6.00) - RSE 6.0 第 1 章考试答案
  13. 如何使用ABP开发一
  14. [转]阿里云 内置算法和模板说明
  15. 探秘谷歌地球,它如何绘制全球98%的地图?
  16. nvm环境安装和 node 的基本使用
  17. 半小时学会微信公众平台开发(完整版教程)
  18. Fiddler+Proxifier进行PC端微信小程序抓包
  19. vuforia ar unity 案例 从零开发 二 扫描图片展示模型
  20. 51单片机最小组成系统电路图[1080p高清]

热门文章

  1. 微信扫一扫二维码直接打开手机外部浏览器
  2. 非齐次线性方程组解的结构暂记
  3. 关于工业相机的基本知识
  4. 释放linux缓存 echo 1 > /proc/sys/vm/drop_caches
  5. 论文重复率太高怎么降重修改
  6. PLC编程与实践——基础实验
  7. java贪吃蛇设计答辩PPT_基于Java的贪吃蛇游戏答辩.ppt
  8. 架构设计(5)-架构愿景分析
  9. Python小程序(1)--汇率换算器
  10. 速读原著-UnixLinux基础(六)