协处理器控制位详解cp15.
- 格式:doc
- 大小:517.00 KB
- 文档页数:18
MMU,全称Memory Manage Unit,中文名——存储器管理单元。
许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。
但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。
覆盖块0首先运行,结束时他将调用另一个覆盖块。
虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。
人们必须找到更好的办法从根本上解决这个问题。
不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。
比如对一个16MB的程序和一个内存只有4MB的机器,OS通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。
而这个16M的程序在运行前不必由程序员进行分割。
任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。
这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF(4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF(64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。
与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集,这里举一个最简单的例子直观地说明这两者,对于一台内存为256MB的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256MB)。
arm汇编cp15格式-回复CP15格式是一个用于ARM架构处理器中的协处理器格式。
它被用于实现对特殊寄存器和一些特权操作的访问和控制。
在本文中,我们将一步一步地回答一些关于CP15格式的问题,包括它的功能、如何使用它以及它的一些使用示例。
一、什么是CP15格式?CP15格式是ARM架构中的一个协处理器格式。
它被用来实现对一些特殊寄存器和特权操作的访问和控制。
这些特殊寄存器和特权操作对于操作系统和处理器架构之间的通信和控制至关重要。
二、CP15格式的功能是什么?CP15格式的主要功能包括:1. 访问系统控制寄存器(System Control Registers,SCR)和体系结构版本寄存器(Architectural Version Registers,AVR)等特殊寄存器;2. 控制处理器的访问权限和特权级别;3. 提供对异常处理的支持,例如中断处理和系统调用;4. 管理cpu缓存和内存管理单元(MMU)等。
5. 提供对TLB(Translation Lookaside Buffer)的访问和控制。
三、怎么使用CP15格式?使用CP15格式,我们需要通过特殊的指令来进行访问和控制。
在ARM 汇编语言中,这些指令通常以"MCR"(Move to Co-processor Register)或"MRC"(Move from Co-processor Register)开头,后跟协处理器编号和寄存器编码。
下面是一些使用CP15格式的示例:1. 读取系统控制寄存器的值:MRC p15, 0, R1, c1, c0, 0这条指令读取CP15寄存器1(c1)中的值,并将其放入R1寄存器中。
2. 更新系统控制寄存器的值:MCR p15, 0, R0, c1, c0, 0这条指令将R0寄存器的值写入CP15寄存器1(c1)中,从而更新系统控制寄存器的值。
四、CP15格式的使用示例1. 启用或禁用MMU:MRC p15, 0, R1, c1, c0, 0 读取系统控制寄存器的值ORR R1, R1, #0x1 << 0 将R1寄存器中的Bit 0位置1以启用MMUMCR p15, 0, R1, c1, c0, 0 更新系统控制寄存器的值通过读取和更新系统控制寄存器的值来启用或禁用MMU。
嵌⼊式试题集(含答案)---内容简单-不够详尽1、ARM微处理器有7种⼯作模式,它们分为两类⾮特权模式、特权模式。
其中⽤户模式属于⾮特权模式2、ARM⽀持两个指令集,ARM核因运⾏的指令集不同,分别有两个状态ARM 、Thumb,状态寄存器CPSR的T 位反映了处理器运⾏不同指令的当前状态3、ARM核有多个寄存器,其中⼤部分⽤于通⽤寄存器,有⼩部分作为专⽤寄存器,R15 寄存器⽤于存储PC,R13通常⽤来存储SP 。
ARM处理器有两种总线架构,数据和指令使⽤同⼀接⼝的是冯诺依曼,数据和指令分开使⽤不同接⼝的是哈佛结构4、ARM微处理器复位后,PC的地址通常是0x0 ,初始的⼯作模式是Supervisor 。
5、ARM微处理器⽀持虚拟内存,它是通过系统控制协处理器CP15 和MMU(存储管理部件)来进⾏虚拟内存的存储和管理。
当系统发⽣数据异常和指令领取异常时,异常处理程序透过嵌⼊式操作系统的内存管理机制,通过MMU交换物理内存和虚拟内存的页⾯,以保证程序正常执⾏。
6、编译链接代码时,有两种存储代码和数据的字节顺序,⼀种是⼩端对齐,另⼀种是⼤端对齐。
7、构建嵌⼊式系统开发环境的⼯具链有多种,其中开放源码的⼯具链是GNU⼯具链,ARM公司提供的⼯具链是ADS⼯具链计算机有CISC和RISC两种类型,以ARM微处理器为核⼼的计算机属于RISC类型,其指令长度是定长的8、⽬前使⽤的嵌⼊式操作系统主要有哪些?请举出六种较常⽤的。
Windows CE/Windows Mobile、VxWork、Linux、uCos、Symbian、QNX任选六9、Boot Loader在嵌⼊式系统中主要起什么作⽤?完成哪些主要的⼯作?答:Boot Loader是在嵌⼊式系统复位启动时,操作系统内核运⾏前,执⾏的⼀段程序。
通过Boot Loader,初始化硬件设备,建⽴内存和I/O空间映射图,为最终加载操作系统内核调整好适当的系统软硬件环境。
第1章复习要点1.1.1节嵌入式系统的概念1.1.3节嵌入式系统的特点1.3节嵌入式处理器1.4节嵌入式系统的组成第2章复习要点2.1节计算机体系结构分类2.3.1节 ARM和Thumb状态2.3.2节 RISC技术2.3.3节流水线技术2.4.3节 ARM存储系统第3章复习要点3.1节ARM编程模式3.2节ARM指令格式及其寻址方式3.3节ARM指令集(课上所讲的指令)第4章复习要点4.1节汇编语言源程序格式4.2节汇编语言的上机过程第5章复习要点5.1节键盘接口5.2节 LED显示器接口5.5.1节 UART异步串行接口作业题答案:1.什么是嵌入式系统?∙第一种,根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
∙第二种,嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
2.与通用型计算机相比,嵌入式系统有哪些特点?⏹通常是面向特定应用的;⏹空间和各种资源相对不足,必须高效率地设计,量体裁衣、去除冗余;⏹产品升级换代和具体产品同步,具有较长的生命周期;⏹软件一般都固化在存储器芯片或单片机本身;⏹不具备自举开发能力,必须有一套开发工具和环境才能进行开发3.举例介绍嵌入式微处理器有哪几类?一、嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式处理器目前主要有Aml86/88、386EX、SC-400、Power PC、68000、MIPS、ARM系列等。
二、嵌入式微控制器(Microcontroller Unit, MCU)嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。
关于mrc?p15,0,r0,c1,c0,0
mrc是协处理器命令。
用于读取协处理器中的寄存器的数据到ARM处理器的寄存器里面。
mrc p15,0,r0,c1,c0,0 这句话的意思应该是读协处理器中的寄存器数据到ARM处理器的r0里面。
应该是ARM访问MMU,一般cp15就是MMU。
<MCR|MRC>{cond} p#, <expression1>,Rd,cn,cm{, <expression2>}
MRC 从协处理器移到ARM7寄存器(L=1)
MCR 从ARM7寄存器移到协处理器(L=0)
{cond} 两个字符的条件代码
p# 被请求得协处理器的惟一标识苻
<expression1> 计算一个常量并放到CP Opc域
Rd 是一个表达式计算ARM7有效寄存器序号
cn 和cm 是计算有效协处理器寄存器CRn CRm序号
<expression2> 计算一个常量,并放到CP域
举例:
MRC 2,5,R3,c5,c6 ;请求协处理器2 执行操作5 ,操作数为c5和c6,
; 传送结果到R3 (单次32位字)
MCR 6,0,R4,c6 ; 请求协处理器6执行操作0,操作数为R4
;结果送到c6。
arm汇编cp15格式-回复[ARM汇编CP15格式] 是一种用于ARM架构的处理器指令集。
在本文中,我们将详细介绍CP15格式并逐步解答相关问题。
CP15格式,也称为协处理器15(Co-processor 15),是ARM体系结构中的一种特殊指令格式。
它用于访问处理器的系统控制寄存器(System Control Registers),这些寄存器可以对系统的整体行为进行配置和控制。
首先,让我们了解一下CP15格式的基本结构。
CP15指令由四部分组成:协处理器代码(coproccode)、操作码(opcode)、操作数(operand)、和目标寄存器(destination register)。
协处理器代码(coproccode)指定要访问的协处理器的类型,例如CP15。
操作码(opcode)指定进行的具体操作,例如读取或写入寄存器。
操作数(operand)用于指定操作数的来源或目标位置。
目标寄存器(destination register)用于存储操作的结果。
现在,我们来回答一些与CP15格式相关的问题。
问题一:CP15格式有什么作用?CP15格式允许程序访问处理器的系统控制寄存器,从而配置和控制系统的各种行为。
例如,通过CP15指令,程序可以访问处理器的缓存控制寄存器,从而控制缓存的策略和行为。
此外,CP15指令还可以用于访问处理器状态寄存器,从而查询或修改一些处理器的状态信息。
问题二:CP15格式常用的操作有哪些?CP15指令提供了广泛的操作,用于对系统进行配置、查询和控制。
常见的操作包括读取和写入寄存器、查询和修改处理器状态、控制缓存和内存管理等。
问题三:如何使用CP15格式进行寄存器读写操作?要使用CP15格式进行寄存器读写操作,首先需要指定相应的协处理器代码(coproccode)。
对于CP15来说,该代码是15。
然后,在操作码(opcode)中指定读取或写入操作,并在操作数(operand)中指定寄存器的标识符。
ARM之协处理器CP15
CP15 系统控制协处理器(the system control coprocessor)他通过协处理器指令MCR 和MRC 提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在bootloader 时钟初始化用到)CP15 的寄存器只能被
MRC 和MCR(Move to Coprocessor from ARM Register )指令访问
他包括15 个具体的寄存器如下:-R0:ID 号寄存器这是一个只读寄存器,
返回一个32 位的设备ID 号,32 具体功能参考2410 datesheet 的table 2-5
-R0:缓存类型寄存器(CACHE TYPE REGISTER),注意有2 个R0,根据MCR 操作数的不同传送不同的值,这也一个只读寄存器,包含了caches 的信息。
读这个寄存器的方式是通过设置协处理操作码为1.
如:
MRC p15,0,Rd,c0,c0,1; 返回caches 的详细信息
详见:table 2-6
-R1:控制寄存器2-10
-R2:转换表基址寄存器(Translation Table Base --TTB)2-12
-R3:域访问控制寄存器(Domain access control )2-13
-R4:保留2-14
-R5:异常状态寄存器(fault status -FSR)2-14
-R6:异常地址寄存器(fault address -FAR)2-15
-R7:缓存操作寄存器2-15
-R8:TLB 操作寄存器2-18
-R9:缓存锁定寄存器2-19
-R10:TLB 锁定寄存器2-21。
在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。
CP15包含16个32位的寄存器,其编号为0~15。
访问CP15寄存器的指令MCR ARM寄存器到协处理器寄存器的数据传送MRC 协处理器寄存器到ARM寄存器的数据传送MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR 指令和MRC指令将会触发未定义指令的异常中断。
MCR指令MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。
如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令语法格式MCR{<cond>} <p>,< opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}MCR{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}其中,<cond>为指令执行的条件码。
当<cond>忽略时指令为无条件执行。
< opcode_1>为协处理器将执行的操作的操作码。
对于CP15协处理器来说,< opcode_1>永远为0b000,当< opcode_1>不为0b000时,该指令操作结果不可预知。
<Rd>作为源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中。
<CRn>作为目标寄存器的协处理器寄存器,其编号可能是C0,C1,…,C15。
<CRm>和<opcode_2>两者组合决定对协处理器寄存器进行所需要的操作,如果没有指定,则将为<CRm>为C0,opcode_2为0,否则可能导致不可预知的结果。
The CRm field and opcode_2 field are used to specify a particular action when addressing registers.The opcode_1, opcode_2 and CRm fields should be zero, except when the values specified are used to select the desired operations, in all instructions which access CP15. Using other values will result in unpredictable behavior. Attempting to read from a non-readable register, or writing to a non-writable register will cause unpredictable results.使用示例下面的指令从ARM寄存器R4中中将数据传送到协处理器CP15的寄存器C1中。
其中R4为ARM寄存器,存放源操作数,C1、C0为协处理器寄存器,为目标寄存器,opcode_1为0,opcode_2为0。
MCR p15, 0, R4, C1, C0, 0MRC指令MRC指令将协处理器的寄存器中的数值传送到ARM处理器的寄存器中、如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令语法格式MRC{<cond>} <p>,< opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}MRC{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}参数用法同MCR指令CP15中的寄存器介绍Register(寄存器)Read WriteC0ID Code (1)UnpredictableC0Catch type(1)UnpredictableC1Control ControlC2Translation table base Translation tablebaseC3Domain access control Domain accesscontrolC4Unpredictable UnpredictableC5Fault status(2)Fault status (2)C6Fault address Fault addressC7Unpredictable Cache operationsC8Unpredictable TLB operationsC9Cache lockdown(2)Cache lockdown (2)C10TLB lock down(2)TLB lock down(2)C11Unpredictable UnpredictableC12Unpredictable UnpredictableC13Process ID Process IDC14Unpredictable UnpredictableC15Test configuration Test configurationNotes:1.Register location 0 provides access to more than one register. The register accesseddepends upon values of the opcode_2 field. See the register description for details.2.Separate register for instruction and data .See the register description for details.寄存器0:ID Code Register ( 0 )This is a read-only register which returns a 32-bit device ID code这是一个只读寄存器,它存放微处理器的标识码。
The ID code register is accessed by reading CP15 register 0 with the opcode_2 field set to any value other than 1(the CRm field should be zero when reading). For example:MRC p15, 0, Rd, C0, C0, 0ID Code内容如下:Register bits Function Value[31:24]Implementor0x41(‘A’,表示Arm公司) [23:20]Specification revision0x1[19:16]Architecture version(4T)0x2(ARM体系版本4T) [15:4]Part number0x920[3:0]Layout revision0x0寄存器0:Cache type register ( 1 )This is a read-only register which contains information about the size and architecture of the caches, allowing operating systems to establish how to perform such operations as cache cleaning and lockdown.这个只读寄存器包含了高速缓存的大小和类型。
The cache type register is accessed by reading CP15 register 0 with the opcode_2 field set to 1.for example:MRC p15, 0, Rd, C0, C0, 1; returns cache detailsThe format of cache type register (寄存器的数据格式如下)Register bits Function Value[31:29]Reserved000[28:25]Cache type (缓存类型)0110[24]Harvard/Unified1(defines Harvard cache) [23:21]Reserved000[20:18]Data Cache size(数据缓存大小)101(defines 16KB)[17:15]Data Cache associativity110(defines 64 way)[14]Reserved0[13:12]Data Cache words per line10(defines 8 words per line) [11:9]Reserved000[ 8:6]Instruction Cache size(指令缓存大小)101(defines 16KB)[5:3]Instruction Cache Associativity110(defines 64 way)[2]Reserved0[1:0]Instruction Cache per line10(defines 8 words per line)寄存器1:Control register对该寄存器读写指令如下:MRC p15, 0, Rd, c1, c0, 0 ; read control registerMCR p15, 0, Rd, c1, c0, 0 ; write control register该寄存器功能如下表Registe bits Name Function Value31iA bit Asynchronous clock select见时钟模式表30nF bit notFastBus select见时钟模式表29:15-Reserved Read = UnpredictableWrite = should be zero14RR bit Round robin replacement0 = Random replacement1 = Round robin replacement13V bit Base location of exceptionregister(异常寄存器基地址)0 = Low address = 0x0000 00001 = High address = 0xFFFF 000012I bit Instruction cache enable0 = Instruction cache disable1 = Instruction cache enable11:10-Reserved Read = 00Write = 009R bit ROM protection见图18S bit System protection见图17 B bit Big-endian/little-endian0 = Little-endian operation1 = Big-endian operation6:3- Reserved Read = 1111Write = 11112 C bit Data cache enable0 = data cache disable1 = data cache enable1 A bit Alignment fault enable Data address alignment fault checking(地址对齐检查)0 = 禁用地址对齐检查功能1 = 使能地址对齐检查功能0M bit MMU enable0 = MMU disable1 = MMU enable时钟模式表Clocking mode(时钟模式)iA nFFastbus mode (快速总线模式)00Reserved10Synchronous (同步模式)01Asynchronous (异步模式)11寄存器2:Translation Table Base(TTB) RegisterRegister bits Function31:14 Pointer to first level translation table base . Read /write13:0 ReservedRead = UnpredictableWrite = Should be zero访问C2寄存器指令如下:MRC p15, 0, Rd, C2, C0, 0 ; Read TTB registerMCR p15, 0, Rd, C2, C0, 0 ; Write TTB register该寄存器存放第一级转换表基地址。