13.ARM协处理器的知识

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的值写进去了。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

时间: 2024-10-14 01:18:30

13.ARM协处理器的知识的相关文章

ARM汇编程序基本知识

ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为执行代码,数据段存放代码运行时需要用到的数据,通用段不包含用户代码和数据,所有通用段共用一个空间.段使用AREA伪操作来定义,并且说 明相关属性,如 代码段定义 AREA Init, CODE, READONLY … 数据段定义 AREA Stack1,DATA,READWRITE,NOINIT,A

[转载]ARM协处理器CP15寄存器详解

用于系统存储管理的协处理器CP15  原地址:http://blog.csdn.net/gameit/article/details/13169405 MCR{cond}     coproc,opcode1,Rd,CRn,CRm,opcode2 MRC {cond}    coproc,opcode1,Rd,CRn,CRm,opcode2 coproc         指令操作的协处理器名.标准名为pn,n,为0~15 opcode1      协处理器的特定操作码. 对于CP15寄存器来说,

[国嵌笔记][027][ARM协处理器访问指令]

协处理器作用 协处理器用于执行特定的处理任务,如数学协处理器可以执行控制数字处理,以减轻处理器的负担.ARM处理器最多可以支持16个协处理器,其中CP15是最重要的一个协处理器 CP15的作用 CP15是系统控制协处理器,通过额外的寄存器可以控制cache,MMU,系统时钟等功能 访问协处理器 1.CP15有16组寄存器,通过mcr和mrc指令来访问协处理器里的寄存器,从而达到访问协处理器的目的 2.通过datasheet中的CP15 register map summary可以查找到相关的寄存

ARM协处理器CP15寄存器详解

ref:http://blog.csdn.net/gameit/article/details/13169405 背景: 在uboot中,start.s中涉及到了 CP15 的有关操作.查阅有关资料,进行学习. 用于系统存储管理的协处理器CP15,可以通过 下面两条汇编指令控制 MCR {cond} coproc,opcode1,Rd,CRn,CRm,opcode2 MRC {cond} coproc,opcode1,Rd,CRn,CRm,opcode2 *这2条指令仅适用于32位寄存器,因为6

1.ARM的基础知识

ARM简述 ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权.ARM技术具有很高的性能和功效,因而容易被厂商接受.同时,合作伙伴的增多,可获得更多的第三方工具.制造和软件支持,这又会使整个系统成本降低,让产品进入市场的时间加快,从而具有更大的竞争优势. 一.ARM技术的应用领域及其特点 采用ARM技术IP核的微处理器遍及汽车.消费电子.成像.工业控制.海量存储.网络.安保和无线等各类产品市场. 1.什么是IP核? IP核是指拥有知识产权的控制功能单元.(IP核是一段具有特定电路功能的硬件

ARM各种版本号知识以及型号的发展(三星为例)

1.ARM型号的发展历史 2.单片机.工业上一般使用RTOS(实时操作系统),Linux.Android用在影音娱乐等对实时性要求没那么高的场合: 3.ARM内核版本号和Soc版本号是由ARM确定的,而Soc型号是由半导体公司确定的: 4.Cortex系列ARM产品线分割成了3个系列,这个是市场细分的需要和选择: 5.ARM已经发布了一些64位架构如A53等,主要面向高性能服务器类的应用: 6.ARM下一步重点发展方向是Cortex-M7,特点是低功耗,主要面向物联网终端. 参考来源: 朱有鹏老

ARM总线方面知识

AMBA简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片上总线设计是最关键的问题.为此,业界出现了很多片上总线标准.其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构.AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanc

(11.13)Java小知识!

今天想要与大家分享一下有关于构造方法的知识! 构造方法的定义与作用 构造方法是一种特殊类型的方法.当一个对象被创建的时候,构造方法用来初始化对象,也就是说构造方法其实是一个名词而不是动词,像我刚刚开始接触的时候会把构造方法当成动词理解,就比较麻烦.构造方法和它所在类的名字相同,但构造方法没有返回值,因此不能再构造方法中使用return语句返回一个值. 构造方法的语法格式如下: [访问修饰符]<类名>([参数列表]){ 构造方法的语句体 } 其中,修饰符可以为public,protect,pri

python全栈学习记录--3(2018.1.13) 计算机基础知识

一.Linux操作系统1.unix是目前世界上最稳定,安全的系统.是分时操作系统,多个联机终端和采用多道技术.2.开源代表代表公开,所有人可以编辑查看,但不代表免费.3.服务器要的是性能,稳定,效率,不间断运行.故LINUX更能胜任,WINDOW不行,运行久了就会很卡.4.桥接:用交换机的方式上网,相当于在局域网内多增加一台电脑联网.5.虚拟内存一般设为物理内存的1.5-2倍,但不超过8G.物理内存大于4G就足以运行目前几乎所有程序了,没必要设置虚拟内存了. 二.网络基础之OSI五层协议1.网络