13.ARM协处理器的知识

news/2024/7/20 13:32:30 标签: 嵌入式, 内存管理

13.ARM协处理器的知识

在处理器中有协处理器来辅助处理器完成部分功能的,主要是协助作用。

协处理器:

协处理器用于执行特定的处理任务,如:数学协处理器可以控制数字处理,以减轻处理器的负担。ARM可支持多达16个协处理器,其中CP15是最重要的一个。

 

在ARM9、ARM11、cortexa8等核中,CP15的功能都是一样的。

在ARM11核的文档看到图1-1:

The section gives an overall view of the system control coprocessor. For detail of the registers

in the system control coprocessor, see System control processor registers on page 3-13.

The purpose of the system control coprocessor, CP15, is to control and provide status

information for the functions implemented in the ARM1176JZF-S processor. The main

functions of the system control coprocessor are:

• overall system control and configuration

• cache configuration and management

Tightly-Coupled Memory (TCM) configuration and management

Memory Management Unit (MMU) configuration and management

• DMA control

• system performance monitoring.

The system control coprocessor does not exist in a distinct physical block of logic.

图1-1

从上面知道:

系统控制协处理器的功能是:

  1. 系统整体控制和配置
  2. 缓存配置和管理
  3. 紧耦合的内存(CTM)的配置和管理
  4. 内存管理单元(MMU)的配置和管理。
  5. DMA控制
  6. 系统性能控制。

确切的说,ARM11核中有16组协处理器,不是16个,每一组里面有很多寄存器,下面来看ARM11核的c0组里的Main ID寄存器。

System control processor registers

This section gives details of all the registers in the system control coprocessor. The section

presents a summary of the registers and detailed descriptions in register order of CRn,

Opcode_1, CRm, Opcode_2.

You can access CP15 registers with MRC and MCR instructions:

MCR{cond} P15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>

MRC{cond} P15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>

Register allocation

Table 3-2 on page 3-14 lists the allocation and reset values of the registers of the system control

coprocessor where:

• CRn is the register number within CP15

• Op1 is the Opcode_1 value for the register

• CRm is the operational register

• Op2 is the Opcode_2 value for the register.

• Type applies to the Secure, S, or the Non-secure, NS, world and is:

— B, registers banked in Secure and Non-secure worlds. If the registers are not banked

then they are common to both worlds or only accessible in one world.

— NA, no access

RO, read-only access

— RO, read-only access in privileged modes only

R/W, read/write access

— R/W, read/write access in privileged modes only

WO, write-only access

— WO, write-only access in privileged modes only

— X, access depends on another register or external signal.

Main ID寄存器的参数:

从上面c0组的Main ID寄存器,有32位,这32位被分成了5个地址段。例如[15:4]地址段是表明这是ARM11的处理器。此处的值是0xB76

 

前面的知识看到了,控制CP15协处理器,主要是设置对应的寄存器来实现控制的。接着就是来介绍如何访问协处理器的寄存器的,并且实现设置。

主要是通过两个命令来实现的mcr和mrc:r表示register普通寄存器,c表示coprocessor协处理器。

mcr命令中m表示move,c表示coprocessor,r表示register。所以mcr的意思就是把普通寄存器register的内容移到协处理器c里面。

mcr命令中m表示move,c表示coprocessor,r表示register。所以mrc的意思就是把协处理器c里面的内容移到普通寄存器register里面。

 

指令的格式:

You can access CP15 registers with MRC and MCR instructions:

MCR{cond} P15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>

MRC{cond} P15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>

上面是CP15的访问格式,CP14-CP0同理。

各个参数的值,上面的表格已经给出了:

 

上图看到在c0组的Main ID寄存器,在设置mrc,把Main ID寄存器的内容读到r1寄存器:

从上图知道:

  1. CRn=c0:c0组的
  2. Op1=0
  3. CRm=c0
  4. Op2=0
  5. Rd=r1:就是要把Main ID读到r0寄存器。

这样就设置好了。接下来实验访问Main ID:

读取Main ID指令:

MRC P15,0,r1,c0,c0,0

运行结果:

读出来的值是0x410fb766,这跟我们的核手册的说明里的值是一致的,下图。说明读取成功:

上图中[31:24]=0x41,[23:20]=0x0,[19:16]=0xF,[15:4]=0xB76,最后四位[3:0]是修订位,是在0x0到0x7之间,这里是6,也是对的。所以读出正确。

 

上面就是对CP15里的Main ID的读取操作。

 

接下来是往Control寄存器里写数据:

往c1组的Control寄存器写入r1寄存器的值:

MCR P15,0,r1,c1,c0,0

上面运行了,就把r1的值写进去了。

 

转载于:https://www.cnblogs.com/FORFISH/p/5188709.html


http://www.niftyadmin.cn/n/1792816.html

相关文章

计算机网络技术动漫方向2020,2020宁德职业技术学院专科录取分数线(含历年录取分数线)...

2020宁德职业技术学院录取专科录取分数线(含历年录取分数线)信息主要是为了让考生了解自身当前学业水平&#xff0c;以达到为次年高考目标的目的。历年录取分数线信息仅供参考考生的努力才是关键&#xff0c;希望2020宁德职业技术学院录取专科录取分数线(含历年录取分数线)信息…

MySQL常见命令管理

一、SQL结构化查询语言 SQL&#xff0c;英文全称Structured Query Language&#xff0c;中文意思是结构化查询语言。它是一种对关系数据库中的数据进行定义和操作的语言方法&#xff0c;是大多数关系数据库管理系统所支持的工业标准。 SQL分类&#xff1a;DDL:数据定义语言&…

Android studio无法发现nexus 5x解决方法

原因&#xff1a;没有安装adb interface驱动。解决方法&#xff1a;1. 使用Android device manager下载google usb driver。2. 打开设备管理器&#xff0c;右键带黄色感叹号的adb interface -> 更新驱动 -> 浏览计算机... -> “SDK下载目 录”\extras\google\us…

退出计算机用户的快捷方式,如何使用CMD命令实现计算机倒计时和快捷键关闭

在使用计算机的过程中&#xff0c;应经常使用CMD命令操作倒计时和关闭快捷键. 但是&#xff0c;许多用户尚未使用此操作&#xff0c;并且直到现在他们都不会使用它. 但是&#xff0c;鉴于此功能的实用性&#xff0c;让我介绍如何使用CMD命令为所有人实现倒计时和快捷键关闭操作…

I2C接口的EEPROM操作

虽然这个器件很老了&#xff0c;但是简单好用&#xff0c;也是I2C操作的一个经典例子。 首先确认地址。24C01/02/04/08/16/32等等器件&#xff0c;后缀的数字是比特数。比如08&#xff0c;是8K bit,1024个字节。所以容量不同&#xff0c;他们的寻址地址范围也是不一样的。 参考…

统计数字

【问题描述】某次科研调查时得到了n个自然数&#xff0c;每个数均不超过1500000000&#xff08;1.5*109&#xff09;。已知不相同的数不超过10000个&#xff0c;现在需要统计这些自然数各自出现的次数&#xff0c;并按照自然数从小到大的顺序输出统计结果。【输入格式】输入文件…

小学生智能计算机怎么玩音乐,如何开启孩子的音乐智能

以下是OMG小编为大家收集整理的文章&#xff0c;希望大家能喜欢。开启音乐智能的四大要领&#xff1a;1 启发音乐智能从胎教开始。怀孕期间因荷尔蒙的变化&#xff0c;容易造成妈妈情绪的波动&#xff0c;因此在怀孕期间&#xff0c;保持愉快平和的心情是母体健康的关键之一&am…

iOS: 复选框使用---第三方框架SSCheckBoxView-master

在iOS开发中对应用程序进行设置时一般都用UISwitch&#xff0c;偶尔显得单调&#xff0c;这时候你可以选择使用第三方开源类库SSCheckBoxView 。 SSCheckBoxView是一个可用在iOS上一个复选框UI控件&#xff0c;提供选中和不被选中两种情况&#xff0c;和5中风格&#xff0c;如…