当前位置:网站首页>ARM V7 协处理器
ARM V7 协处理器
2022-06-25 12:02:00 【xiaozhiwise】
/*
* 2012/3/29 10:47 qing
*/
协处理器
1.CP14调试通信通道协处理器
2.CP15系统控制协处理器
他通过协处理器指令MCR和MRC提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在
bootloader时钟初始化用到)
|31 28|27 24| 23 21| 20 |19 16|15 12|11 8|7 5|4 | 3 0 |
---------------------------------------------------------------------------
| cond | 1110 | 0 0 0 | 0 | CRn | Rd | cp_num | opcode_2| 1 | CRm |
---------------------------------------------------------------------------
mcr {<cond>} p15, 0, <Rd>, <CRn>, <CRm>{, <opcode_2>}
<opcode_1> 永远为0b000,不为0时,操作结果不可预知.
<Rd> 作为源寄存器的 ARM 寄存器,其值将被传送到的协处理器寄存器中.不能为PC.
<CRn> 作为目标寄存器的协处理器寄存,可能为C0, C1...C15.
<CRm> 附加的目标寄存器或者源操作数寄存器,用于区分同一个编号的不同物理寄存器.
当指令中不需要提供附加信息时,将C0指定为<CRm>,否则指令操作结果不可预和.
<opcode_2> 提供附加信息,用于区别一个编号的不同物理寄存.当指令中没有指定附加信息,
省略<opcode_2>或者将其指定为0,否则指令操作结果不可预知.
cond是条件码,bit20是L位,
如果L=1就表示Load,从外面读到CPU核中,也就是MRC指令,
如果L=0就表示Store,也就是MCR指令。[11:8]这四个位是协处理器编号,CP15编号是15,因此是4个1。
CRn是CP15寄存器编号,Rd是CPU核寄存器编号,各占4位。
对于CP15协处理器,规定opcod1应该为0,opcode2和CRm是指令的选项,具体含义取决于不同的寄存器。
CP15 中的寄存器: P180 <<arm_struc_prog>>
-----------------------------------------------------------------------------
寄存器编号 | 基本作用 | 在MMU中的作用 | 在PU中的作用
-----------------------------------------------------------------------------
0 ID编码(只读) ID编码和cache类型
1 控制位(W/R) 各种控制位
2 存储保护和控制 地址转换表基地址 Cachability的控制位
3 存储保护和控制 域访问控制位 Bufferablity控制位
4 存储保护和控制 保留 保留
5 存储保护和控制 内存失效状态 访问权限控制位
6 存储保护和控制 内存失效地址 保护区域控制
7 高速缓存和写缓存 高速缓存和写缓存控制
8 存储保护和控制 TLB控制 保留
9 高速缓存和写缓存 高速缓存锁定
10 存储保护和控制 TLB锁定 保留
11 保留
12 保留
13 进程标识符
14 保留
15 因不同设计而异
C0:
寄存器0,ID编码寄存器
这是一个用于返回设备ID编码的只读寄存器
你可以通过将opcode2设置为除1以外的值来访问CP15的ID编码寄存器R0(CRm此时应置为0)。例如:
MRC p15,0,Rd,c0,c0,0 ;返回ID寄存器的值
寄存器0,缓存类型寄存器
这是一个只读寄存器,它包含了缓存的架构和大小的信息,这就允许操作系统来确定要如何执行诸如清理缓存
和锁定缓存的操作。所有ARMv4T版本及以后的带缓存处理器都包含这个寄存器,允许实时操作系统的厂商生产
他们的操作系统的试验版本。
你可以通过将opcode_2设置为1来访问CP15的缓存类型寄存器R0。如:
MRC p15,0,Rd,c0,c0,1 ;返回关于缓存的详细信息
C1: P186
1.禁止/使能MMU以及其他的与存储系统相关的功能.
2.配置存储系统以及ARM处理器中的相关部分的工作方式.
读:
mrc p15, 0, r0, c1, 0, 0
写
mcr p15, 0, r0, c1, 0, 0
边栏推荐
猜你喜欢

Linear regression of common mathematical modeling models for College Students

confluence7.4. X upgrade record

黑马畅购商城---8.微服务网关Gateway和Jwt令牌

Why can't you Ping the website but you can access it?

Two ways of redis persistence -- detailed explanation of RDB and AOF

Dark horse shopping mall ---1 Project introduction - environment construction

Why can't the form be closed? The magic of revealing VFP object references

15、wpf之button样式小记

confluence7.4.X升级实录

ThingsPanel 發布物聯網手機客戶端(多圖)
随机推荐
VFP develops a official account to receive coupons, and users will jump to various target pages after registration, and a set of standard processes will be sent to you
Web project development process
揭秘GaussDB(for Redis):全面对比Codis
剑指 Offer II 091. 粉刷房子 : 状态机 DP 运用题
机器学习自学成才的十条戒律
【OceanBase】OceanBase简介及其与MySQL的比较
cnds
Uncover gaussdb (for redis): comprehensive comparison of CODIS
VFP serial port communication is difficult for 9527. Maomao just showed his skill and was defeated by kiss
JS monitors the width and height changes of div
Which securities company's account is better and safer to open
Gradle知识点
Pd1.4 to hdmi2.0 adapter cable disassembly.
What are redis avalanche, penetration and breakdown?
ROS 笔记(06)— 话题消息的定义和使用
Encapsulation of practical methods introduced by webrtc native M96 basic base module (MD5, Base64, time, random number)
How terrible is it not to use error handling in VFP?
The latest IT learning route in 2020
交易期货沪镍产品网上怎么开户
R语言dplyr包filter函数过滤dataframe数据中指定数据列的内容不是(不等于指定向量中的其中一个)指定列表中的数据行