热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

浅析ARM协处理器CP15寄存器有关指令:MCR\MRC

ref:http:blog.csdn.netgameitarticledetails13169405背景:在uboot中,start.s中涉及到了CP15的有关操

ref:http://blog.csdn.net/gameit/article/details/13169405


 背景:
  在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}标识。

 
        指令操作的协处理器名,标准名为pn,n,为0~15 
     协处理器的特定操作码,对于CP15寄存器来说,opcode1永远为0,不为0时,操作结果不可预知
     作为元寄存器的ARM寄存器。其值被读写到得协处理器寄存器中。
        不能为PC, 当其为PC时。指令操作结果不可预知。
            存放第1个操作数的协处理器寄存器。
           存放第2个操作数的协处理器寄存器。    (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为C0)
     可选的协处理器特定操作码。                (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)
 
在明白了指令格式以后,我们记住了查阅有关的文档:《DDI0406C arm_architecture_reference_manual.pdf》。
 
 

 

 找到了对应的寄存器,STCLR

结合文章开头中间那几行语句,发现这段代码是对于STCLR不同的位进行置位/清零。

 

 所以,整段代码做了这样的事情:

1. 读取 SCTLR 的值到 R0

2. 修改 对应的位

3. 写回 SCTLR

 * 注意: 在操作CP15 有关寄存器时,可能要求权限等级在PL1

 

文章完。

 

推荐阅读
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 黑鸟安全团队发布最新警告,Apache Struts2框架曝出S2-048高危漏洞。目前该漏洞的攻击代码(POC)已公开,建议各企业和组织立即检查是否使用了受影响的Struts2版本,并采取相应措施进行防护。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • HTTP 请求与响应详解
    本文深入探讨了HTTP请求和响应的结构,详细解释了每个部分的作用,并提供了相关示例。通过本文,读者可以全面理解HTTP协议中请求和响应的工作原理。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文介绍了MindManager在项目管理中的强大功能,特别是其内置的甘特图工具。通过该工具,用户可以轻松创建和管理项目计划,优化任务分配,并与其他软件无缝集成。 ... [详细]
  • 回顾2003年的非典疫情,那段经历不仅改变了无数人的生活,也给整个国家带来了深远的影响。本文通过一位亲历者的视角,分享了那段特殊时期的点滴故事,并探讨了传染病对社会和个体的影响。 ... [详细]
author-avatar
爱心常在V_991
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有