历史上的今天
返回首页

历史上的今天

今天是: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}标识。

 

        指令操作的协处理器名,标准名为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

 

文章完。

 

这个时代不会阻止你自己闪耀,但你也覆盖不了任何人的光辉。而学习的本质是一个不断抄袭、模仿、练习、理解再创新的过程。即使知道无法超越的同主题博文,本人还会继续坚持学习,不断探索;总结是本能,分享是爱好。

推荐阅读

史海拾趣

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc的崛起始于一次技术突破。公司研发团队成功开发出一种新型半导体材料,显著提高了电子设备的性能和能效。这一创新成果迅速在行业内引起关注,Capax Technologies Inc因此获得了大量订单和投资。随着技术的不断迭代和优化,Capax Technologies Inc逐渐在电子行业中崭露头角,成为一家备受瞩目的创新型企业。

Heatron LED Integration公司的发展小趣事

Heatron LED Integration自成立以来,便致力于LED照明技术的创新。公司拥有一支由光学、机电设计及热管理专家组成的研发团队,不断突破技术瓶颈。在早期,公司研发出了一款高性能的8英寸LED模块,该模块凭借其出色的亮度和能效比,迅速在市场上获得了认可。这一创新不仅提升了产品的市场竞争力,也为公司后续的技术积累和市场拓展奠定了坚实基础。

Chenmoun Enterprise Ltd公司的发展小趣事

Chenmoun Enterprise Ltd深知技术创新是企业发展的核心动力。因此,公司每年都会投入大量的资金用于研发新的电子产品和技术。通过不断的技术创新和产品升级,Chenmoun在行业内保持了领先地位,并实现了持续稳健的发展。

European Crystal Org公司的发展小趣事

European Crystal Org(ECO)公司诞生于欧洲一个小城市的一个旧仓库里。创始人约翰·史密斯是一位对晶体技术充满热情的电子工程师。他意识到晶体在电子领域的重要性,并决定专注于研发和生产高质量的晶体振荡器。初创时期,ECO面临着资金短缺、技术挑战和市场认可度低的困境。然而,约翰凭借对技术的执着和对市场的敏锐洞察,成功研发出了一款性能卓越的晶体振荡器,赢得了几家小型电子制造商的青睐。这些早期客户的信任为ECO奠定了坚实的市场基础。

Caliber公司的发展小趣事

随着电子行业的全球化趋势日益明显,Caliber公司积极实施国际化战略,拓展海外市场。公司通过与国外知名企业的合作,引进先进的技术和管理经验,不断提升自身的竞争力。同时,Caliber还积极参加国际电子展会和论坛,加强与国际同行的交流与合作。这些举措不仅为公司带来了更多的商业机会,也提升了Caliber在国际上的知名度和影响力。

Elpakco Inc公司的发展小趣事

Elpakco Inc公司的创立,源于创始人对电子行业未来趋势的敏锐洞察。在电子科技日新月异的时代,创始人凭借在半导体封装领域的丰富经验和深厚技术积累,决定创立一家专注于高精度电子元件封装的公司。初创时期,资金紧张、技术难度大、市场竞争激烈,但创始人带领团队夜以继日地研发,不断突破技术瓶颈,终于成功研制出第一款高精度、高可靠性的电子封装产品,为公司的发展奠定了坚实的基础。

问答坊 | AI 解惑

美国海归经历:国内和国外生活的真实比较 回国发展

美国海归经历:国内和国外生活的真实比较 回国发展 在这个版面上看的时间挺长的,发现各位都是在美国呆久了,完全按照美国的思考方式来套中国,那自然是国内年薪和美国比太低了。   我在美国时也和各位想法差不多,那时候在美国一年下来税前也 ...…

查看全部问答>

奇怪的警告!

\"Example_281xMcBSP_FFDLB.c\", line 157: warning: statement is unreachable \"Example_281xMcBSP_FFDLB.c\", line 157: remark: controlling expression is constant 在源文件里面有这样的定义、、 #define WORD_SIZE    8  ...…

查看全部问答>

形象的说明模拟地和数字地

为什么模拟地与数字地应有各自独立的回路?大家都是地,为什么还分彼此? Link水平很低,常常会问一些低级问题。 幸蒙Perter指点,明白了少许,现在和大家分享一下。 其实本质是对的,就是数字地,模拟地都是地,并不是他们俩头上长角,十分的怪 ...…

查看全部问答>

Protel绘图经验谈

 笔者使用protel多年,积累了一些用其绘制电路图的使用经验和技巧,现将这些经验和技巧成文,希望对大家用protel绘制电路图有所帮助。 经验一:   因为protel是专业电路设计软件,可供电子类各专业设计人员和广大电子爱好者使用,所提供的 ...…

查看全部问答>

像诺基亚学习下一站生活

这几天看到诺基亚新的广告,记得一句话:互联应用,中国创造。可以看得出诺基亚从全球扩张到主打某个地区市场的战略转移,也可以看得出诺基亚对移动互联网的信心。记得2008年10月时诺基亚曾展示过了其基于下一站生活方式的全新通信技术与移动互联网 ...…

查看全部问答>

Wince 5.0 真機調試問題

    我在用真是還進調試的時候,程序中打了斷點,可是斷點不其作用。後來用其他同事的電腦調試卻可以。應該是我vs還進的問題吧,請高人指點,如何解決這個問題。…

查看全部问答>

u盘枚举成功后,名字显示为Removable disk,该如何才能显示为自己想要的名字?

不是按右键的“重命名”,是插上U盘,自动显示自己想要的名字!…

查看全部问答>

fade in / fade out

  这个月一直有个问题让我困扰着我.   在CE中是否可以真正意义上的实现相对于屏幕弹出的窗口或是图片淡入淡出(弹出时)?就是说.在mobile屏幕上(而不是你自己写的窗口或是其它你程序中的背景图片上),一个窗口淡入淡出.或是一个 ...…

查看全部问答>

驱动程序编译的问题!急!!!

我用的是2003DDK +XP,写好程序后,用build命令编译时,没有生成.sys文件 出现了下面的编译信息: BUILD: Adding /Y to COPYCMD so xcopy ops won\'t hang. 高手看看问题出在了哪里? 急啊,解决就揭帖! …

查看全部问答>

嵌入式驱动移植问题

威盛VT6656驱动移植到华恒MC9328MX21,266Mhz ARM926EJ-S 内核 ,内核版本2.4.20 在移植加载过程中出现如下信息: Zone=[2][E][U]!! BSS finding:BSS list is empty. Scanning channels Joining with  Desired SSID=TESTAP, Network ...…

查看全部问答>