牙根变黑是什么原因| 什么水果不含糖| 唇亡齿寒什么意思| 脚上长疣是什么原因| 捆是什么意思| sanyo是什么牌子| 12月出生的是什么星座| 膝盖后面叫什么部位| 爸爸的弟弟叫什么| 标准工资指什么| 新生儿老是打嗝是什么原因| 特长是什么| 1961年属什么| 胃疼是什么感觉| 智齿旁边的牙齿叫什么| 性冷淡吃什么药最好| 山豆念什么| 什么叫情劫| 港澳通行证办理需要什么材料| 性交是什么感觉| 脸颊两边长斑是什么原因| 欲情故纵是什么意思| 四月七号是什么星座| 手心干燥是什么原因| 99年属什么| 96166是什么电话| 侧颜杀是什么意思| 肾错构瘤是什么原因引起的| 气血不足吃什么药最好| 常规血检能查出什么| 口周皮炎用什么药膏| 胀气是什么原因引起的| 筷子什么材质最好| 韭菜什么时候种| 什么是核心期刊| pw是什么意思| 逸五行属什么| 手筋鼓起来是什么原因| cmb是什么意思| 心律失常是什么症状| 很的右边读什么| 下午5点是什么时辰| 吃毓婷有什么副作用| 突然呕吐是什么原因| 令坦是对方什么人的尊称| 金玉满堂是什么菜| 你最喜欢的食物是什么| sg是什么意思| 人出汗多是什么原因| 凭什么| 为什么不能空腹喝牛奶| 鼻咽炎有什么症状| 心慌气短吃什么药最好| 秫米是什么米| 华西医院院长什么级别| 什么时候闰十二月| 平字五行属什么| 上面一个山下面一个今读什么| 吃惊的什么| 吃葡萄有什么好处| 女命七杀代表什么| 什么笑组词| 恢复伤口吃什么好得快| 胆结石挂什么科| 蛔虫和蛲虫有什么区别| 四月初五是什么星座| 关节咔咔响是什么原因| 六个月宝宝可以吃什么水果| 血儿茶酚胺是查什么的| u盘什么牌子好| o和ab型生的孩子是什么血型| 肚子疼挂什么科室| 狗狗拉虫子又细又长吃什么药| 不昧因果是什么意思| 苹果煮水喝有什么功效| 洁身自爱是什么意思| 痛风能吃什么| 男人有泪痣代表什么| 那天午后我站在你家门口什么歌| 防微杜渐什么意思| 1996年是属什么生肖| 汗管瘤用什么药能去掉| 手淫导致的阳痿早泄吃什么药| 野生蜂蜜有什么好处和作用| 吃山药有什么好处和坏处| 乔迁对联什么时候贴| 为什么星星会眨眼| 18号来月经什么时候是排卵期| 什么是慢性萎缩性胃炎| 梦见蛇是什么预兆| 六月二十四是什么星座| 肚子疼腹泻吃什么药| 歇夏是什么意思| sb是什么元素符号| 6克血是什么概念| 常吃山药有什么好处和坏处| 时光荏苒是什么意思| 中暑吃什么水果| 长辈生日送什么礼物好| 金色葡萄球菌用什么药| 梭子蟹什么时候上市| 45年属什么| 脚老抽筋是什么原因| 瞳孔放大意味着什么| 什么叫宫腔粘连| 艾玛是什么意思啊| 尿酸降低是什么意思| 老是放屁是什么原因| 生眼屎是什么原因引起的| 姨妈期不能吃什么| 与虎谋皮是什么意思| 陪产假什么时候开始休| 腿血栓什么症状| 昆仑雪菊有什么功效| 七上八下是什么生肖| 6周岁打什么疫苗| 外阴瘙痒用什么药膏好| 肺心病吃什么药| 干戈是什么意思| 做梦梦见火是什么意思| 奶奶过生日送什么礼物| 3月6日是什么星座| 不排卵是什么原因造成| 煽是什么意思| 蚊子不咬什么体质的人| 柒牌男装什么档次| 扁桃体发炎了吃什么药| 酒后头疼吃什么| 9月10日是什么节| 胎盘血池是什么意思| 超声科是什么科室| 危机四伏是什么生肖| 眩晕挂什么科室| 功能性子宫出血是什么原因造成的| 天蝎座属于什么象星座| 95年属什么| 腋下长痘痘是什么原因| 总梦到一个人说明什么| 什么是感统失调| 水瓶座男生喜欢什么样的女生| redline是什么牌子| 公交车是什么意思| 星期天左眼皮跳是什么预兆| 什么的青蛙| 长针眼是什么原因| 西替利嗪是什么药| 结婚十年是什么婚| 磁共振是做什么的| 自己做生意叫什么职业| dyj什么意思| 女人排卵期是什么时候| 过度纵欲的后果是什么| 天目湖白茶属于什么茶| 无事不登三宝殿什么意思| 鸡胗是鸡的什么部位| 威士忌是什么酿造的| 胃酸过多有什么症状| 佑是什么意思| 男人不举是什么原因造成的| 友友是什么意思| 什么最解渴| 权衡利弊是什么意思| 思维敏捷是什么意思| 九月二十四号是什么星座| 维生素c对身体有什么好处| 什么时间是排卵期| 室上性心动过速是什么原因引起的| 耳朵前面有痣代表什么| 腰痛宁为什么晚上吃| 热伤风吃什么药好得快| 黄芪起什么作用| 免疫球蛋白e高说明什么| 小麦过敏可以用什么代替面食| 腋下黑是什么原因| 沙和尚是什么生肖| 腿膝盖后面的窝窝疼是什么原因| 独善其身是什么意思啊| 血压突然升高是什么原因| 掌中宝是什么肉| 南京有什么美食| 精液发黄是什么原因引起的| 什么是碱性食物有哪些| 筋膜炎吃什么药最有效| 后脑勺胀痛什么原因| 2026属什么生肖| 膝盖疼痛什么原因| 什么粉一沾就痒还看不出来| 品牌logo是什么意思| 蝙蝠属于什么类动物| 1月30号是什么星座| 奢靡是什么意思| 人生百味下一句是什么| 亲嘴为什么要伸舌头| 什么是回避型依恋人格| 脚气病缺什么维生素| 鸡同鸭讲是什么意思| 缺铁性贫血吃什么水果| 吃什么药升血小板最快| 药流用什么药| 唐山大地震是什么时候| 肿瘤标志物高说明什么| 蛇的尾巴有什么作用| 1987是什么年| 晨起口干口苦是什么原因| 死马当活马医是什么意思| 常喝蜂蜜水有什么好处和坏处| dht是什么意思| 早上打嗝是什么原因呢| 胰岛素是什么器官分泌的| 什么水果补气血| 什么是砭石| 旖旎风光是什么意思| 前列腺炎是什么原因引起的| idh是什么意思| 右腹疼是什么原因| 皇帝的新装是什么意思| 吃什么最补肾| 善待是什么意思| 探望病人买什么水果| 核磁共振跟ct有什么区别| 湿气太重吃什么排湿最快| 什么人不能吃芒果| 霉菌用什么药效果好| 回乳是什么意思| 地中海贫血是什么意思| 什么应什么合| 西柚是什么季节的水果| 尿潜血是什么原因| 开字加一笔是什么字| 114514什么意思| 口苦挂什么科最好| 胸膈痞闷是什么症状| 心慌是什么病| 生育登记有什么用| 胆巴是什么| 云南有什么山| 溶肌症的症状是什么| 什么是机械键盘| 维生素b6是治什么的| 胸闷要做什么检查| 四月天是什么意思| 中耳炎吃什么药最有效| 一路顺风是什么生肖| ipi是什么意思| 胃镜是什么| 最近流行什么病毒| 人参片泡水喝有什么功效和作用| 潜能什么意思| 重庆有什么好大学| 例假期间适合吃什么水果| 警察两杠三星是什么级别| 春天有什么水果| 关晓彤属什么生肖| 吼不住是什么意思| 用什么擦地最干净| 白虎什么意思| 什么炒鸡蛋最好吃| 脸颊两边长痘痘是什么原因引起的| 乳头痛什么原因| 宫腔积液是什么意思| 焖子是什么做的| 掉头发吃什么药| 梦见小孩生病什么预兆| pd是什么元素| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解

[中国戏歌]《前门情思大碗茶》 表演:许娣

作者: 时间:2025-08-04 来源:网络 收藏
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5 条:
— CDP 协处理器数操作指令
— LDC 协处理器数据加载指令
— STC 协处理器数据存储指令
— MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令
— MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令
1、CDP 指令
CDP 指令的格式为:
CDP{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理 器操作码2。 CDP 指令用于ARM 处理器通知ARM 协处理器执行特定的操作,若协处理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM 处理器的寄存器和存储器。
指令示例:
CDP P3 , 2 , C12 , C10 , C3 , 4 ;该指令完成协处理器 P3 的初始化
2、LDC 指令
LDC 指令的格式为:
LDC{条件}{L} 协处理器编码,目的寄存器,[源寄存器]
LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。
指令示例:
LDC P3 , C4 , [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。
3、STC 指令
STC 指令的格式为:
STC{条件}{L} 协处理器编码,源寄存器,[目的寄存器]
STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。
指令示例:
STC P3 , C4 , [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。
4、MCR 指令
MCR 指令的格式为:
MCR{条件} 协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2。
MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,源寄存器为ARM 处理器的寄存器,目的寄存器1 和目的寄存器2 均为协处理器的寄存器。
指令示例:
MCR P3,3,R0,C4,C5,6;该指令将 ARM 处理器寄存器 R0 中的数据传送到协处理器 P3 的寄存器 C4 和 C5 中。
5、MRC 指令
MRC 指令的格式为:
MRC{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,目的寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3,3,R0,C4,C5,6;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.
The ARM920T 有两个具体协处理器
CP14调试通信通道协处理器
调试通信通道协处理器DCC(the Debug Communications Channel)提供了两个32bits寄存器用于传送数据,还提供了6bits通信数据控制寄存器控制寄存器中的两个位提供目标和主机调试器之间的同步握手。
通信数据控制寄存器
以下指令在 Rd 中返回控制寄存器的值:
MRC p14, 0, Rd, c0, c0

此控制寄存器中的两个位提供目标和主机调试器之间的同步握手:
位 1(W 位) 从目标的角度表示通信数据写入寄存器是否空闲:
W = 0 目标应用程序可以写入新数据。
W = 1 主机调试器可以从写入寄存器中扫描出新数据。
位 0(R 位) 从目标的角度表示通信数据读取寄存器中是否有新数据:
R = 1 有新数据,目标应用程序可以读取。
R = 0 主机调试器可以将新数据扫描到读取寄存器中。
注意
调试器不能利用协处理器 14 直接访问调试通信通道,因为这对调试器无意义。 但调试器可使用扫描链读写 DCC 寄存器。 DCC 数据和控制寄存器可映射到 EmbeddedICE 逻辑单元中的地址。 若要查看 EmbeddedICE 逻辑寄存器,请参阅您的调试器和调试目标的相关文档。
通信数据读取寄存器
用于接收来自调试器的数据的 32 位宽寄存器。 以下指令在 Rd 中返
回读取寄存器的值:
MRC p14, 0, Rd, c1, c0
通信数据写入寄存器
用于向调试器发送数据的 32 位宽寄存器。 以下指令将 Rn 中的值写
到写入寄存器中:
MCR p14, 0, Rn, c1, c0
注意
有关访问 ARM10 和 ARM11 内核 DCC 寄存器的信息,请参阅相应的技术参考手册。 ARM9 之后的各处理器中,所用指令、状态位位置以及对状态位的解释都有所不同。
目标到调试器的通信
这是运行于 ARM 内核上的应用程序与运行于主机上的调试器之间的通信事件
顺序:
1. 目标应用程序检查 DCC 写入寄存器是否空闲可用。 为此,目标应用程序使
用 MRC 指令读取调试通信通道控制寄存器,以检查 W 位是否已清除。
2. 如果 W 位已清除,则通信数据写入寄存器已清空,应用程序对协处理器 14
使用 MCR 指令将字写入通信数据写入寄存器。 写入寄存器操作会自动设置
W 位。如果 W 位已设置,则表明调试器尚未清空通信数据写入寄存器。此
时,如果应用程序需要发送另一个字,它必须轮询 W 位,直到它已清除。
3. 调试器通过扫描链 2 轮询通信数据控制寄存器。 如果调试器发现 W 位已设
置,则它可以读 DCC 数据寄存器,以读取应用程序发送的信息。 读取数据
的进程会自动清除通信数据控制寄存器中的 W 位。
以下代码显示了这一过程
AREA OutChannel, CODE, READONLY
ENTRY
MOV r1,#3 ; Number of words to send
ADR r2, outdata ; Address of data to send
pollout
MRC p14,0,r0,c0,c0 ; Read control register
TST r0, #2
BNE pollout ; if W set, register still full
write
LDR r3,[r2],#4 ; Read word from outdata
; into r3 and update the pointer
MCR p14,0,r3,c1,c0 ; Write word from r3
SUBS r1,r1,#1 ; Update counter
BNE pollout ; Loop if more words to be written
MOV r0, #0x18 ; Angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SVC 0x123456 ; ARM semihosting (formerly SWI)
outdata
DCB "Hello there!"
END
调试器到目标的通信
这是运行于主机上的调试器向运行于内核上的应用程序传输消息的事件顺序:
1. 调试器轮询通信数据控制寄存器的 R 位。 如果 R 位已清除,则通信数据读
取寄存器已清空,可将数据写入此寄存器,以供目标应用程序读取。
2. 调试器通过扫描链 2 将数据扫描到通信数据读取寄存器中。 此操作会自动
设置通信数据控制寄存器中的 R 位。
3. 目标应用程序轮询通信数据控制寄存器中的 R 位。 如果该位已经设置,则
通信数据读取寄存器中已经有数据,应用程序可使用 MRC 指令从协处理器
14 读取该数据。 同时,读取指令还会清除 R 位。
以下显示的目标应用程序代码演示了这一过程
AREA InChannel, CODE, READONLY
ENTRY
MOV r1,#3 ; Number of words to read
LDR r2, =indata ; Address to store data read
pollin
MRC p14,0,r0,c0,c0 ; Read control register
TST r0, #1
BEQ pollin ; If R bit clear then loop
read
MRC p14,0,r3,c1,c0 ; read word into r3
STR r3,[r2],#4 ; Store to memory and
; update pointer
SUBS r1,r1,#1 ; Update counter
BNE pollin ; Loop if more words to read
MOV r0, #0x18 ; Angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SVC 0x123456 ; ARM semihosting (formerly SWI)
AREA Storage, DATA, READWRITE
indata
DCB "Duffmessage#"
END
CP15系统控制协处理器
CP15 —系统控制协处理器 (the system control coprocessor)他通过协处理器指令MCR和MRC提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在bootloader时钟初始化用到)
CP15的寄存器只能被MRC和MCR(Move to Coprocessor from ARM Register )指令访问

MCR{cond} p15,,,,,
MRC{cond} p15,,,,,
其中L位用来区分MCR(L=1)和MRC(L=0)操作. CP15包括15个具体的寄存器如下:

-R0:ID号寄存器
-R0:缓存类型寄存器
-R1:控制寄存器
-R2:转换表基址寄存器(Translation Table Base --TTB)
-R3:域访问控制寄存器(Domain access control )
-R4:保留
-R5:异常状态寄存器(fault status -FSR)
-R6:异常地址寄存器(fault address -FAR)
-R7:缓存操作寄存器
-R8:TLB操作寄存器
-R9:缓存锁定寄存器
-R10:TLB 锁定寄存器
-R11-12&14:保留
-R13:处理器ID
-R15:测试配置寄存器 2-24
要注意有2个R0,根据MCR操作数的不同传送不同的值,这也一个只读寄存器
-R0:ID号寄存器 这是一个只读寄存器,返回一个32位的设备ID号,具体功能参考ARM各个系列型号的的CP15 Register 0说明.
MRC p15, 0, , c0, c0, {0, 3-7} ;returns ID
以下为ID Code详细描叙(ARM926EJ-S); ARM920T Part Number为0x920,Architecture (ARMv4T) 为0x2具体可参照ARM各型号.

-R0:缓存类型寄存器(CACHE TYPE REGISTER),包含了caches的信息。读这个寄存器的方式是通过设置协处理操作码为1.
MRC p15, 0, , c0, c0, 1; returns cache details
以下为CP15的一些应用示例
U32 ARM_CP15_DeviceIDRead(void)
{
U32 id;
__asm { MRC P15, 0, id, c0, c0; }
return id;
}
void ARM_CP15_SetPageTableBase(P_U32 TableAddress)
{
__asm { MCR P15, 0, TableAddress, c2, c0, 0; }
}
void ARM_CP15_SetDomainAccessControl(U32 flags)
{
__asm { MCR P15, 0, flags, c3, c0, 0; }
}
void ARM_CP15_ICacheFlush()
{
unsigned long dummy;
__asm { MCR p15, 0, dummy, c7, c5, 0; }
}
void ARM_CP15_DCacheFlush()
{
unsigned long dummy;
__asm { MCR p15, 0, dummy, c7, c6, 0; }
}
void ARM_CP15_CacheFlush()
{
unsigned long dummy;
__asm { MCR p15, 0, dummy, c7, c7, 0; }
}
void ARM_CP15_TLBFlush(void)
{
unsigned long dummy;
__asm { MCR P15, 0, dummy, c8, c7, 0; }
}
void ARM_CP15_ControlRegisterWrite(U32 flags)
{
__asm { MCR P15, 0, flags, c1, c0; }
}
void ARM_CP15_ControlRegisterOR(U32 flag)
{
__asm {
mrc p15,0,r0,c1,c0,0
mov r2,flag
orr r0,r2,r0
mcr p15,0,r0,c1,c0,0
}
}
void ARM_CP15_ControlRegisterAND(U32 flag)
{
__asm {
mrc p15,0,r0,c1,c0,0
mov r2,flag
and r0,r2,r0
mcr p15,0,r0,c1,c0,0
}
}
void ARM_MMU_Init(P_U32 TableAddress)
{
ARM_CP15_TLBFlush();
ARM_CP15_CacheFlush();
ARM_CP15_SetDomainAccessControl(0xFFFFFFFF);
ARM_CP15_SetPageTableBase(TableAddress);
}
void Enable_MMU (void)
{
__asm {
mrc p15,0,r0,c1,c0,0
mov r2, #0x00000001
orr r0,r2,r0
mcr p15,0,r0,c1,c0,0
}
printf("MMU enabledn");
}
void Disable_MMU (void)
{
__asm {
mrc p15,0,r0,c1,c0,0
mov r2, #0xFFFFFFFE
and r0,r2,r0
mcr p15,0,r0,c1,c0,0
}
printf("MMU disabledn");
}


评论


相关推荐

技术专区

关闭
蜘蛛痣是什么样的 香奈儿是什么牌子 lee属于什么档次 北漂是什么意思 尿酸高的人吃什么食物好
俄罗斯什么东西值得买 便秘挂什么科 医院特需门诊什么意思 早上六七点是什么时辰 nc是什么意思
肺纹理增多什么意思 林俊杰属什么生肖 海王星是什么颜色 双子女和什么星座最配 胖大海和什么搭配最好
宋朝之前是什么朝代 甘油是什么成分 清淡饮食吃什么 什么地舞动 夏季吃什么菜好
88年是什么命hcv9jop6ns3r.cn 倾尽所有什么意思hcv9jop1ns9r.cn 什么是属性shenchushe.com 中国的国粹是什么hcv9jop3ns1r.cn 王代表什么生肖hcv9jop6ns4r.cn
尿蛋白两个加号是什么意思hcv9jop1ns8r.cn 白色念珠菌是什么病hcv9jop0ns3r.cn 大哥是什么生肖hcv9jop3ns8r.cn 血池是什么意思hcv8jop2ns1r.cn 萌萌哒是什么意思hcv7jop5ns5r.cn
天空像什么hcv9jop5ns7r.cn 毛泽东是什么样的人hcv9jop0ns8r.cn 良字少一点是什么字hcv9jop3ns1r.cn 关羽的刀叫什么名字hcv9jop1ns7r.cn 缺维生素c会得什么病ff14chat.com
什么什么的太阳hcv7jop9ns6r.cn 8848是什么意思sanhestory.com 喝什么排湿气hcv7jop9ns8r.cn 例假少是什么原因hcv9jop1ns1r.cn 30岁属什么bfb118.com
百度