历史上的今天
今天是:2025年07月28日(星期一)
2021年07月28日 | 浅析ARM协处理器CP15寄存器有关指令:MCR\MRC
2021-07-28 来源:eefocus
背景:
在uboot中,start.s中涉及到了 CP15 的有关操作。查阅有关资料,进行学习。
mrc p15, 0, r0, c1, c0, 0 bic r0, r0, #0x00002000 @ clear bits 13 (--V-) bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM) orr r0, r0, #0x00000002 @ set bit 1 (--A-) Align orr r0, r0, #0x00000800 @ set bit 11 (Z---) BTB mcr p15, 0, r0, c1, c0, 0
在基于ARM的嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。很多高级的寄存器并不能够直接访问。
CP15可以包含16个32位的寄存器,其编号为0-15。
实际上对于某些编号的寄存器可能对应有多个物理寄存器。在指令中指定特定的标志位来区分这些物理寄存器。
有些类似于ARM寄存器中,处于不同的处理器模式时,ARM某些寄存器可能不同。
在这里不对CP15各组寄存器做详细的分析,仅提供查阅的手段。
MCR/MRC 用于系统存储管理的协处理器CP15,指令格式:
MCR {cond} coproc,opcode1,Rd,CRn,CRm,opcode2
MRC {cond} coproc,opcode1,Rd,CRn,CRm,opcode2*这2条指令仅适用于32位寄存器,因为64位寄存器仅由{CRm,opcode1}标识。
在明白了指令格式以后,我们记住了查阅有关的文档:《DDI0406C arm_architecture_reference_manual.pdf》。 找到了对应的寄存器,STCLR 结合文章开头中间那几行语句,发现这段代码是对于STCLR不同的位进行置位/清零。 所以,整段代码做了这样的事情: 1. 读取 SCTLR 的值到 R0 2. 修改 对应的位 3. 写回 SCTLR * 注意: 在操作CP15 有关寄存器时,可能要求权限等级在PL1 文章完。 这个时代不会阻止你自己闪耀,但你也覆盖不了任何人的光辉。而学习的本质是一个不断抄袭、模仿、练习、理解再创新的过程。即使知道无法超越的同主题博文,本人还会继续坚持学习,不断探索;总结是本能,分享是爱好。



史海拾趣
|
美国海归经历:国内和国外生活的真实比较 回国发展 在这个版面上看的时间挺长的,发现各位都是在美国呆久了,完全按照美国的思考方式来套中国,那自然是国内年薪和美国比太低了。 我在美国时也和各位想法差不多,那时候在美国一年下来税前也 ...… 查看全部问答> |
|
为什么模拟地与数字地应有各自独立的回路?大家都是地,为什么还分彼此? Link水平很低,常常会问一些低级问题。 幸蒙Perter指点,明白了少许,现在和大家分享一下。 其实本质是对的,就是数字地,模拟地都是地,并不是他们俩头上长角,十分的怪 ...… 查看全部问答> |
|
笔者使用protel多年,积累了一些用其绘制电路图的使用经验和技巧,现将这些经验和技巧成文,希望对大家用protel绘制电路图有所帮助。 经验一: 因为protel是专业电路设计软件,可供电子类各专业设计人员和广大电子爱好者使用,所提供的 ...… 查看全部问答> |
|
这几天看到诺基亚新的广告,记得一句话:互联应用,中国创造。可以看得出诺基亚从全球扩张到主打某个地区市场的战略转移,也可以看得出诺基亚对移动互联网的信心。记得2008年10月时诺基亚曾展示过了其基于下一站生活方式的全新通信技术与移动互联网 ...… 查看全部问答> |
|
我在用真是還進調試的時候,程序中打了斷點,可是斷點不其作用。後來用其他同事的電腦調試卻可以。應該是我vs還進的問題吧,請高人指點,如何解決這個問題。… 查看全部问答> |
|
这个月一直有个问题让我困扰着我. 在CE中是否可以真正意义上的实现相对于屏幕弹出的窗口或是图片淡入淡出(弹出时)?就是说.在mobile屏幕上(而不是你自己写的窗口或是其它你程序中的背景图片上),一个窗口淡入淡出.或是一个 ...… 查看全部问答> |
|
我用的是2003DDK +XP,写好程序后,用build命令编译时,没有生成.sys文件 出现了下面的编译信息: BUILD: Adding /Y to COPYCMD so xcopy ops won\'t hang. 高手看看问题出在了哪里? 急啊,解决就揭帖! … 查看全部问答> |




