第3章 ARM的内部资源

合集下载

体系结构ARM内部资源ARM内部结构教程

体系结构ARM内部资源ARM内部结构教程
ARM处理器直接支持8位字节、16位半字或者32位 字的数据类型。其中,以能被4整除的地址开始连续的4 个字节构成1个字,字的数据类型为4个连续的字节。从 偶数地址开始连续的2个字节构成一个半字,半字的数 据类型为2个连续的字节。ARM指令的长度刚好是1个 字,Thumb指令的长度刚好是一个半字。
• 2.1.1 存储器的字与半字(2)
将执行结果写回到寄存器
• 2.1.2 5级流水线 (3)
在传统的80C51单片机中,处理器只有完成一条 指令的读取和执行后,才会开始下一条指令的处理所以 PC总是指向正在“执行”的指令。而ARM9处理器采用 5级流水线,具有5个工位,将指令的处理分为5个阶段 ,分别是取指、译码、执行、访存和回写。因此ARM“ 正在执行”第3条指令的同时对第4条指令进行译码,将 第5条指令从存储器中取出,对第2条指令完成访存操作 ,对第1条指令完成回写操作。那么一条ARM9流水线 只有在取第6条指令的时,第一条指令才算完成执行。 也就是说,在流水线中同时存在5条指令,它们分别处 于不同的处理阶段。
• 2.1.2 5级流水线 (1)
ARM处理器使用流水线来增加处理指令流的速度 ,这样可使几个操作同时进行,并使处理和存储器之间 的操作更加流畅、连续,能提供1.1MIPS/MHz的指令执 行速度。
相比ARM7(3级流水线),ARM9增加了2个功 能部件分别访问存储器并写回结果,且将读寄存器的操 作转移到译码部件上,使流水线各部件在功能上更平衡 。
5级流水线如图2.1所示(其中PC为程序计数器) ,流水线使用5个阶段,因此指令分为5个阶段执行。 ■ 取指:从存储器装载一条指令; ■ 译码:识别将要被执行的指令; ■ 执行:处理指令,产生ALU运算结果或产生存储器 地址(对于存储器访问指令来讲); ■ 访存:访问数据存储器; ■ 回写:将执行结果写回寄存器。

ARM存储器结构总结

ARM存储器结构总结

ARM存储器:片内Flash、片内静态RAM、片外存储器映射确实是一一对应的意思。

重映射确实是从头分派这种一一对应的关系。

我们可以把存储器看成一个具有输出和输入口的黑盒子。

输入量是地址,输出的是对应地址上存储的数据。

当然这个黑盒子是由很复杂的半导体电路实现的,具体的实现的方式我们现在不管。

存储单位一般是字节。

这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应的存储单元上存储的数据就会出现在数据总线上面。

普通的单片机把可执行代码和数据存放到存储器中。

单片机中的CPU从储器中取指令代码和数据。

其中存储器中每个物理存储单元与其地址是一一对应而且是不可变的,。

而ARM比较复杂,ARM芯片与普通单片机在存储器地址方面的不同在于:ARM芯片中有些物理存储单元的地址可以根据设置变换。

就是说一个物理存储单元现在对应一个地址,经过设置以后,这个存储单元就对应了另外一个地址了(这就是后面要说的重新映射)。

例如将0x00000000地址上的存储单元映射到新的地址0x00000007上。

CPU存取0x00000007就是存取0x00000000上的物理存储单元。

(随便举的例子为了说明道理,没有实际意义)存储器重新映射(Memory Re-Map)存储器重新映射是将复位后用户可见的存储器中部分区域,再次映射到其他的地址上。

存储器重新映射包括两个方面:1、Boot Block重新映射(关于Boot Block的相关内容看我博客中的另一篇文章)。

2、异常(中断)向量重新映射Boot Block重新映射:本来Boot Block在片内Flash的最高8KB,但是为了与将来期间相兼容,生产商为了产品的升级换代,在新型芯片中增加内部Flash容量时,不至于因为位于Flash高端的Boot Block的地址发生了变化而改写其代码,整个Boot Block都要被重新映射到内部存储器空间的顶部,即片内RAM的最高8KB。

ARM体系结构详解 第3章

ARM体系结构详解 第3章

ARM指令的寻址方式
多寄存器寻址和堆栈寻址之间的关系 堆栈 之前 之后 之前 之后
LDMDA LDMFA
向上生长 满
STMIB STMFA STMIA STMEA LDMDB LDMEA
向下生长 满 空
LDMIB LDMED LDMIA LDMFD STMDB STMFD STMDA STMED
多寄存器 寻址
ARM指令的寻址ห้องสมุดไป่ตู้式
STMFA r13!, {r0-r5} ; Push onto a Full Ascending Stack LDMFA r13!, {r0-r5} ; Pop from a Full Ascending Stack STMFD r13!, {r0-r5} ; Push onto a Full Descending Stack LDMFD r13!, {r0-r5} ; Pop from a Full Descending Stack STMEA r13!, {r0-r5} ; Push onto an Empty Ascending Stack LDMEA r13!, {r0-r5} ; Pop from an Empty Ascending Stack STMED r13!, {r0-r5} ; Push onto Empty Descending Stack LDMED r13!, {r0-r5} ; Pop from an Empty Descending Stack
ARM指令的寻址方式
堆栈寻址 堆栈是一种数据结构,按先进后出( 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的 , ) 方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆 方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置, 栈指针总是指向栈顶. 栈指针总是指向栈顶. 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈( 满堆栈 ), 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack), 而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈 空堆栈( 而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack). ) 同时,根据堆栈的生成方式,又可以分为递增堆栈( 同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending 递增堆栈 Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址 ),当堆栈由低地址向高地址 ) 递减堆栈( ), 生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈. 生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈. 这样就有四种类型的堆栈工作方式, 这样就有四种类型的堆栈工作方式,ARM微处理器支持这四种类型的堆栈 微处理器支持这四种类型的堆栈 工作方式, 工作方式,即:

ARM体系结构详解(我上课时老师的100多页PPT课件)

ARM体系结构详解(我上课时老师的100多页PPT课件)

嵌入式系统设计导论—基于32位微处理器与实时操作系统第三讲 ARM嵌入式微处理器体系结构北京航空航天大学机器人研究所魏洪兴本节提要1ARM编程模型ARM 异常处理嵌入式处理器概述l嵌入式微处理器是嵌入式系统的核心。

目前32位嵌入式微处理器是市场的主流。

l32位嵌入式微处理器市场,我们可以发现超过100家的芯片供应商和近30种指令体系结构。

l在1996年以前,最成功的嵌入式微处理器是Motorola公司的68000系列。

此外嵌入式微处理器市场还包括其它体系结构,如Intel公司的I960,Motorola公司的Coldfire,Sun公司的Sparc,以及嵌入式X86系列平台。

l当然,最引人注目的还是ARM公司的ARM系列、MIPS公司的MIPS系列,以及Hitachi公司的SuperH系列(其中ARM和MIPS 都知识产权公司,把他们的微处理器IP技术授权给半导体厂商,由他们生产形态各异的微处理器芯片)。

l功耗。

一般的嵌入式微处理器都有三种运行模式:运行模式(operational);待机模式(standby or power down);停机模式(and clock-off)。

功耗的评测指标是MIPS/W;l代码存储密度。

传统的CISC指令集计算机具有较好的代码存储密度。

而RICS指令集计算机由于要求指令编码长度固定,虽然可以简化和加速指令译码过程,但为了实现与CISC指令集计算机相同的作业,往往需要更多的指令来完成,从而增加了代码长度。

如Hitachi的SuperH体系结构采用了定长的16位指令,对每条指令按16位的格式存储。

ARM则采用16位扩展的Thumb指令集,片内的逻辑译码器将其等价为32位的ARM指令而实时解码。

而MIPS则采用MIPS16方法来解决这个问题。

(影响代码密度的另外一个主要因素是所采用的C编译器。

ANSI C是当前嵌入式领域的标准编程语言,随着嵌入式微处理器性能的提高,面向对象的语言也将被采用并会逐渐成为主流,一些编译器供应商已经开始着手解决代码密度问题。

ARM课件第3章

ARM课件第3章

⒈ 指令编码格式 指令编码格式见图3.5。 图3.5中,第1操作数总是寄存器Rn。Rd称 为目的寄存器,TST、TEQ、CMP和CMN指令不 送结果到目的寄存器Rd,其他指令产生的结果 送Rd。 第2操作数Operand2可以是寄存器Rm的值 经过移位产生的32位值,或8位立即数经过循环 右移产生的32位的值,指令中bit[25]的值用来 选择Rm或8位立即数。
【例3.3】 使用分支并且连接指令调用不同的子程序。
CMP BLEQ BLGT BL R0,#0 SUBEQ SUBGT SUBLT ;比较,设置标志位 比较, 比较 ;相等,则调用SUBEQ 相等,则调用 相等 ;大于,则调用SUBGT 大于,则调用 大于 ;小于,则调用SUBLT 小于,则调用 小于
⒈ 指令编码格式 指令编码格式见图3.3。 ⒉ 指令含义 通过拷贝一个通用寄存器Rn的内容到程序 计数器PC ,指令实现分支功能。这条指令也允 许指令集被转换,当这条指令被执行时,Rn的 bit[0]位确定后续指令代码被译码作为ARM指令 或Thumb指令。
⒊ 指令汇编格式 ⒋ 使用举例 【例3.1】 处理器从执行ARM指令代码处分支到 标号为Goto_THUMB处,并且执行Thumb 指令代码,然后又返回到Back_ARM处,执行 ARM指令代码。
;假定处理器当前正在执行 假定处理器当前正在执行ARM指令 假定处理器当前正在执行 指令 ;将分支目标地址送 ,使R1的bit[0]=1 将分支目标地址送R1, 将分支目标地址送 的 ;分支并且转换为 分支并且转换为Thumb状态 分支并且转换为 状态
ADR R1,Goto_THUMB+1 BX … R1
图3.11 扩展循环右移(RRX)
在使用指令中bit[11:7]指定对Rm的移位 量,bit[6:5]指定移位类型时,指令汇编格式 举例见表3.3。

ARM体系结构与结构---第三章精品文档

ARM体系结构与结构---第三章精品文档
跳转指令B,仅仅跳转; 带返回地址的跳转指令BL,跳转同时还将BL指令 的下一条指令的地址(返回地址)放入LR;
使用PC实现长跳转
MOV LR,PC 取指 译码 执行
MOV PC,#0XFF000000 取指 译码 执行
ADD R0,R1,R2
取指 译码 执行
P?C-8
PC-4 PC指针
数据传送指令: MOV MVN;
算术运算指令: ADD ADC SUB SBC RSB RSC;
逻辑运算指令: AND ORR EOR BIC;
比较指令:
CMP CMN TST TEQ。
数据处理指令只能对寄存器的内容进行操作,而不能对 内存中的数据进行操作。数据处理指令中除比较指令外均可选择 使用S后缀,并影响状态标志。
• ARM指令集——ARM数据处理指令
数据处理指令大致可分为4类:
数据传送指令: MOV MVN;
算术运算指令: ADD ADC SUB SBC RSB RSC;
逻辑运算指令: AND ORR EOR BIC;
比较指令:
CMP CMN TST TEQ。
数据处理指令只能对寄存器的内容进行操作,而不能对 内存中的数据进行操作。数据处理指令中除比较指令外均可选择 使用S后缀,并影响状态标志。
逻辑运算指令: AND ORR EOR BIC;
比较指令:
CMP CMN TST TEQ。
数据处理指令只能对寄存器的内容进行操作,而不能对 内存中的数据进行操作。数据处理指令中除比较指令外均可 选择使用S后缀,并影响cpsr状态标志。
3.2 指令集介绍
• ARM指令集——ARM数据处理指令
数据处理指令大致可分为4类:
跳转指令中的实际值(signed_immed_24)是相对PC值的一个偏 移量;它的值由汇编器来计算,它是 24 位有符号数,左移两位后 (去掉一位符号位后,有效偏移为 25 位(+/- 32 M)) ,由符号扩展 到 32 位。

嵌入式系统基础-第3章--ARM体系结构-PPT

嵌入式系统基础-第3章--ARM体系结构-PPT

N
N=1表示运算的结果为负数;N=0表示运算的结果为正
数或零
共页
41
标志位
含义
Z
Z=1表示运算的结果为零;Z=0表示运算的结果为非
零。
C
当运算结果产生了进位时(无符号数溢出),C=1;
否则C=0
V
V=1表示有溢出;V=0表示无溢出
Q
在ARM v5及以上版本的E系列处理器中,用Q标志位
指示增强的DSP运算指令是否发生了溢出。在其他版
将上图中的CPU部分叫做处理器核。
把处理器核与其通用功能模块的组 合叫做处理器。
共页
11
把在处理器基础上经芯片厂商二次开 发,以芯片形式提供的用于嵌入式系统的 产品叫做嵌入式处理器。
IP商提供的是处理器核和处理器的知 识产权,而半导体芯片生产厂商生产的则 是嵌入式处理器芯片。
世界上知名的IP商当属ARM公司和 MIPS公司。
共页
3
3.1.1 SoC与嵌入式处理器 计算机SoC的概念如下图所示:
共页
4
计算机的这种单片系统特别适合于嵌 入式应用,所以这种SoC也叫做嵌入式处 理器。
3.1.2 嵌入式处理器的研发和生产方式
宿主对象的多样化,势必决定了嵌 入式系统的多样化、个性化。
1、在SoC技术出现之前
共页
5
CPU和与其配合的接口及功能模块都 是单独的芯片。 2、在SoC技术出现之后
37
3、程序计数器R15(PC)
在ARM中,基本寄存器R15固定地作为 程序计数器来使用。为了提高程序的可读 性,也通常使用PC来标识。
4、程序状态寄存器PSR
基本寄存器R16专门用作程序状态寄 存器。同样为了提高程序的可读性,在程 序中用PSR来标识他。

第3章 ARM的内部资源

第3章  ARM的内部资源

• •
3.2.1 bank0总线宽度 总线宽度

bank0的数据总线(nGCS0)必须首先设置成 位或 的数据总线( 的数据总线 )必须首先设置成16位或 32位的。因为 位的。 通常作为引导ROM区(映射到地 位的 因为bank0通常作为引导 通常作为引导 区 ),在复位时 址0x0000-0000),在复位时,系统将检测 ),在复位时,系统将检测OM[1:0]上 上 的逻辑电平,并依据这个电平来决定bank0区存储器的 的逻辑电平,并依据这个电平来决定 区存储器的 总线宽度。 总线宽度。
3.1.3 体系结构
• S3C2440处理器为手持设备和通用嵌入式应用提供了丰 处理器为手持设备和通用嵌入式应用提供了丰 富片上集成系统解决方案,包括: 富片上集成系统解决方案,包括: 16/32 位RISC体系结构和 体系结构和ARM920T内核强大的指令集; 内核强大的指令集; 体系结构和 内核强大的指令集 加强的ARM体系结构 体系结构MMU,用于支持 加强的 体系结构 ,用于支持WinCE和Linux; 和 ; 采用ARM920T CPU 内核支持 内核支持ARM调试体系结构; 调试体系结构; 采用 调试体系结构 内部高级微控制总线( 内部高级微控制总线(AMBA)体系结构 )体系结构(AMBA2.0, , AHB/APB); ; 支持高速总线模式和异步总线模式, 支持高速总线模式和异步总线模式,支持外部等待信号 延长总线周期。 延长总线周期。
3.3 S3C2440内部资源详解 内部资源详解

S3C2440的内部资源十分丰富,所集成的接口能使得 的内部资源十分丰富, 的内部资源十分丰富 S3C2440方便的运用于各种场合,比如移动设备,工 方便的运用于各种场合, 方便的运用于各种场合 比如移动设备, 业控制设备以及医疗设备中。同时, 业控制设备以及医疗设备中。同时,这些接口使用非常 方便,硬件连接简单, 方便,硬件连接简单,操作上一般通过软件控制寄存器 的方式实现。相信读者看过下面的内容以后, 的方式实现。相信读者看过下面的内容以后,能很快的 进入ARM的内部,为后续的开发工作奠定良好的基础 的内部, 进入 的内部 。

ARM9_嵌入式系统原理及应用教程第3章

ARM9_嵌入式系统原理及应用教程第3章
空递增方式EA(Empty Ascending):堆栈

3.1.8 相对寻址

与基址变址寻址方式相类似,相对寻址以 程序计数器PC的当前值为基地址,指令中 的地址标号作为偏移量,将两者相加之后 得到操作数的有效地址。以下程序段完成 子程序的调用和返回,跳转指令BL采用了 相对寻址方式: BL NEXT;跳转到子程序NEXT 处执行 ……

3.1.5 寄存器移位寻址

LSL(或ASL)操作
通用寄存器,LSL(或ASL) 操作数 LSL(或ASL)可完成对通用寄存器中 的内容进行逻辑(或算术)的左移操作, 按操作数所指定的数量向左移位,低位用 零来填充,最后一个左移出的位放在状态 寄存器的C位CPSR[29]中,如图3-1所示。存器寻址就是利用寄存器中的内容 作为操作数,寄存器本身就是操作数地址。 这种寻址方式是各类微处理器经常采用的 一种方式,也是一种执行效率较高的寻址 方式。
R3 R2 0xAA 0xAA 0x55
例如指令:
MOV R2, R3 ;R2←R3 ADD R2,R3,R4
MOV
R3中的内容赋给R2
含义 相等
不相等 无符号数大于或等于 无符号数小于 负数 正数或零 溢出 未溢出 无符号数大于 无符号数小于或等于 带符号数大于或等于
1011
1100 1101
LT
GT LE
N不等于V
Z清零且(N等于V) Z置位或(N不等于V)
带符号数小于
带符号数大于 带符号数小于或等于
3.2.2 条件码
示例: C代码: if(a > b) a++; else 对应的汇编代码: CMP R0,R1 ;R0与R1比较 ADDHI R0,R0,#1

3 ARM体系结构

3 ARM体系结构
(在ARM状态下),也可以为16位(在 Thumb状态下)。 ARM微处理器中支持字节(8位, char)、半字(16位,short)、字(32 位,int)三种数据类型。 字需要4字节对齐(地址的低两位为0)、 半字需要2字节对齐(地址的最低位为0)
ARM体系结构
3.5 处理器模式
• • • • • • •
ARM体系结构
堆栈指针—R13
• • •
R13在ARM指令中常用作堆栈指针,但这只是一 种习惯用法,用户也可使用其他的寄存器作为堆 栈指针。 在Thumb指令集中,某些指令强制性的要求使用 R13作为堆栈指针。 由于处理器的每种运行模式均有自己独立的物理 寄存器R13,在初始化部分,都要初始化每种模 式下的R13,这样,当程序的运行进入异常模式 时,可以将需要保护的寄存器放入R13所指向的 堆栈,而当程序从异常模式返回时,则从对应的 堆栈中恢复。
ARM体系结构
ARM状态下的寄存器组织(1)

通用寄存器:通用寄存器包括R0~R15,可以 分为三类:
未分组寄存器R0~R7 分组寄存器R8~R14 程序计数器PC(R15)
ARM体系结构
ARM状态下的寄存器组织(2)
ARM体系结构
未分组寄存器R0~R7
• •
在所有的运行模式下,未分组寄存器都指向同 一个物理寄存器,他们未被系统用作特殊用途。 在中断或异常处理进行运行模式转换时,由于 不同的处理器运行模式均使用相同的物理寄存 器,可能会造成寄存器中数据的破坏,这一点 在进行程序设计时应引起注意。
ARM体系结构
子程序连接寄存器—R14
• •
子程序连接寄存器或连接寄存器LR。 当执行BL子程序调用指令时,可以从R14中得到R15(程 序计数器PC)的备份。在每一种运行模式下,都可用R14 保存子程序的返回地址,当用BL或BLX指令调用子程序 时,将PC的当前值拷贝给R14,执行完子程序后,又将 R14的值拷贝回PC,即可完成子程序的调用返回。

ARM架构

ARM架构
R15(PC) 状态寄存器 CPSR SPSR R15 CPSR
R13(SP)
R13
R13
R13_svc R13_svc R14_svc R14_svc
2-3-1 ARM状态下的寄存器组织
寄存器类别 寄存器在汇编中的名 称 用户 用户 R0(a1) R1(a2) R2(a3) R3(a4) R4(v1) R5(v2) R6(v3) 通用寄存器 和程序计数 器 R7(V4) R8(V4) R9(SB,v6) R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8 R9 R9 R10 R10 R11 R11 R8 R9 各模式下实际访问的寄存器 系统 系统 管理 管理 中止 中止 R0 R1 R2 R3 R4 R5 R6 R7 R8_fiq R8_fiq R9_fiq R9_fiq R10_fiq R10_fiq R11_fiq R11_fiq 未定义 未定义 中断 中断 快中断 快中断
1-4-1 常见ARM微处理器系列介绍
ARM9系列微处理器在高性能和低功耗特性方面提供 最佳的性能:
5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 全性能的MMU,支持Windows CE、Linux、Palm OS 等多种主流 嵌入式操作系统。 MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
2-1 ARM微处理器的工作状态
处理器状态: ARM9处理器内核使用V4T版本的ARM结构,具有 两种操作状态:
ARM状态:32位,这种状态下执行的是字方式的ARM指令 Thumb状态:16位,这种状态下执行半字方式的ARM指令。

arm课件第3章2

arm课件第3章2

北华航天工业学院 房好帅 fanghaoshuai@
2、LDR
LDR{cond} Rn, =<expression>
<expression>为常量,表示将此常量送到Rn寄存器;
<expression>为标号,表示将标号位置的绝对地址送 到Rn寄存器; 标号位置的绝对地址: 所在段由编译器设定的运行域地址 + 标号距所在段起始 的偏移 段运行域地址:程序要想正确运行,段应该在内存所处 的地址;
5、文字池声明 LTORG AREA my_pj,CODE,READONLY ENTRY MOV R0,#0x01 LDR R3, =result_var STR R0, [R3] finish_l NOP B finish_l LTORG用于声明一个文字池(即数据 缓冲区)配合LDR伪指令使用,写在 LTORG 代码段最后; ALIGN AREA my_dt,DATA,READWRITE result_var DCD 0x00000000 END
北华航天工业学院 房好帅 fanghaoshuai@
7、宏定义 MACRO MEND
MACRO与MEND表示宏定义的开始和结束,宏定义格 式如下: MACRO {$Label} MacroName {$parameter0}, {$parameter1}, … ;指令代码 MEND MACRO MEND不能顶格写
北华航天工业学院 房好帅 fanghaoshuai@
AREA my_pj,CODE,READONLY ENTRY 定义了代码段,不能顶格写 MOV R0,#0x01 段名:my_pj MOV R1,#0x02 属性:CODE表示代码段 ADD R2, R0, R1 可读写:READONLY只读 LDR R3, =result_var STR R2, [R3] ENTRY不能顶格 finish_l NOP B finish_l LTORG ALIGN 段名my_dt,DATA表示数据的, READWRITE表示可读写

ARM_Cortex-M3内核结构

ARM_Cortex-M3内核结构

ARM CortexM3 内核结构2.1ARM CortexM3 处理器简介2、1、1 概述ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即 Advanced RISC Machines 得缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色得芯片。

这种运行模式运营得成果受到全球半导公司以及用户得青睐。

目前ARM体系结构得处理器内核有:ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以及Cortex等。

2005年ARM推出得ARM Cortex系列内核,分别为:A系列、R系列与M系列,其中A系列就是针对可以运行复杂操作系统(Linux、Windows CE、Symbian 等)得处理器;R系列就是主要针对处理实时性要求较高得处理器(汽车电子、网络、影像系统);M系列又叫微控制器,对开发费用敏感,对性能要求较高得场合。

CortexM系列目前得产品有M0、M1、M3,其中M1用在FPGA中。

CortexM系列对微控制器与低成本应用提供优化,具有低成本、低功耗与高性能得特点,能够满足微控制器设计师进行创新设计得需求。

其中,ARM CortexM3处理器得性能就是ARM7得两倍,而功耗却只有ARM7得1/3,适用于众多高性能、极其低成本需求得嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,ARM CortexM3提供了32位微控制器市场前所未有得优势。

CortexM3内核,内部得数据路径为32位,寄存器为32位,存储器接口也就是32位。

CortexM3采用了哈佛结构,拥有独立得指令总线与数据总线,可以让取指与数据访问分开进行。

CortexM3还提供一个可选得MPU,对存储器进行保护,而且在需要得情况下也可以使用外部得cache。

另外在CortexM3中, 存储器支持小端模式与大端存储格式。

CortexM3内部还附赠了很多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。

arm内核全解析_arm内核体系结构分类介绍

arm内核全解析_arm内核体系结构分类介绍

arm内核全解析_arm内核体系结构分类介绍ARM处理器是英国Acor n有限公司设计的低功耗成本的第一款RISC微处理器。

全称为Ad vanced RISC Machine。

ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。

ARM内核特点ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。

它具有经典RISC的特点:* 大的、统一的寄存器文件;* 简单的寻址模式;* 统一和固定长度的指令域,3地址指令格式,简化了指令的译码。

编译开销大,尽可能优化,采用三地址指令格式、较多寄存器和对称的指令格式便于生成优化代码;* 单周期操作,ARM指令系统中的指令只需要执行简单的和基本的操作,因此其执行过程在一个机器周期内完成;* 固定的32位长度指令,指令格式固定为32位长度,这样使指令译码结构简单,效率提高;* 采用指令流水线技术。

ARM内核体系结构ARM架构自诞生至今,已经发生了很大的演变,至今已定义了7种不同的版本:V1版架构:该架构只在原型机ARM1出现过,其基本性能包括基本的数据处理指令(无乘法)、字节、半字和字的Load/Store指令、转移指令,包括子程序调用及链接指令、软件中断指令、寻址空间64MB。

V2版架构:该版架构对V1版进行了扩展,如ARM2与ARM3(V2a版)架构,增加的功能包括乘法和乘加指令、支持协处理器操作指令、快速中断模式、SWP/SWPB的最基本存储器与寄存器交换指令、寻址空间64MB。

V3版架构:该版对ARM体系结构作了较大的改动,把寻址空间增至32位(4G B),增加了当前程序状态寄存器CPSR和程序状态保存寄存器 SPSR以便于异常处理。

增加了中止和未定义2种处理器模式。

ARM6就采用该版结构。

指令集变化包括增加了M RS/MSR指令,以访问新增的CPSR /SPSR寄存器、增加了从异常处理返回的指令功能。

ARM9嵌入式系统原理及应用教程第3章

ARM9嵌入式系统原理及应用教程第3章

ARM9嵌入式系统原理及应用教程第3章ARM9是一种常用的嵌入式系统处理器架构,被广泛应用于各种嵌入式系统中。

ARM9嵌入式系统原理及应用教程第3章主要介绍了ARM9嵌入式系统的编程模型和寄存器,以及ARM体系结构中的异常处理机制和中断处理机制。

在ARM9嵌入式系统中,ARM架构采用了一个三级、32位的保留字段处理器,这个处理器具有高度的灵活性和可编程性。

ARM9嵌入式系统主要由CPU、存储器、外设和外围接口组成。

ARM9的寄存器包括13个通用寄存器、程序计数器(PC)和程序状态寄存器(PSR)。

通用寄存器用于存储数据,而PC用于存储程序地址。

PSR用于存储程序状态,如标志位和操作模式等。

ARM9的编程模型采用了两种指令集,即Thumb指令集和ARM指令集。

Thumb指令集是一种紧凑的32位指令集,适用于存储空间有限的系统。

而ARM指令集是一种更为灵活和强大的32位指令集,适用于需要更高性能和更大存储空间的系统。

ARM9嵌入式系统可以根据需要在两种指令集之间进行切换。

ARM9嵌入式系统中的异常处理机制是一种用于处理系统中断或异常事件的机制。

ARM9嵌入式系统中的异常分为两种类型,即预取中止(Prefetch Abort)和数据中止(Data Abort)。

异常处理机制可以帮助嵌入式系统在出现异常情况时进行错误处理和恢复,并确保系统继续正常运行。

ARM9嵌入式系统中的中断处理机制是一种用于处理外部中断事件的机制。

ARM9嵌入式系统通过设计中断控制器和中断向量表来实现中断处理机制。

中断控制器负责检测和识别外部中断信号,而中断向量表则用于存储中断处理程序的入口地址。

当发生外部中断事件时,中断控制器会向CPU发送中断请求,CPU会根据中断向量表中的入口地址跳转到相应的中断处理程序进行处理。

ARM9嵌入式系统的应用非常广泛,包括但不限于移动设备、网络设备、工业控制系统、智能家居等。

ARM9嵌入式系统具有低功耗、高性能、灵活性和可编程性等特点,可以满足不同应用领域的需求。

ARM体系结构与结构---第三章

ARM体系结构与结构---第三章

跳转指令中的实际值(signed_immed_24)是相对PC值的一个偏 移量;它的值由汇编器来计算,它是 24 位有符号数,左移两位后 (去掉一位符号位后,有效偏移为 25 位(+/- 32 M)) ,由符号扩展 到 32 位。
• ARM指令——分支指令
BL指令格式如下:
BL{cond} Label; PC←label , LR ←PC-4
应用示例:
CMP R1,#10 ; R1与10比较,设置相关标志位
CMP R1,R2
; R1与R2比较,设置相关标志位
注意:CMP指令与SUBS指令的区别在于CMP指令不保存运算 结果。
• ARM数据处理指令——比较取反指令
CMN (Compare Negative)指令格式如下:
CMN{cond} Rn, operand2 ; Rn+operand2 标志N、Z、C、V
跳转指令B,仅仅跳转; 带返回地址的跳转指令BL,跳转同时还将BL指令 的下一条指令的地址(返回地址)放入LR;
使用PC实现长跳转
MOV LR,PC 取指 译码 执行
MOV PC,#0XFF000000 取指 译码 执行
ADD R0,R1,R2
取指 译码 执行
P?C-8
PC-4 PC指针
第3章 ARM指令系统
第3章 目录
指令集介绍 ARM指令集 Thumb指令集
• ARM指令集——跳转(分支)指令
在ARM中有两种方式可以实现程序的跳转: 1、使用跳转(分支Branch)指令B或BL跳转 2、直接向PC寄存器赋值实现跳转,实现在232(4GB)空
间的跳转,如:mov pc,r2 ;r2跳转的地址 。 B、BL跳转指令:

徐春雷ARM体系结构域编程第3章

徐春雷ARM体系结构域编程第3章
算术逻辑运算指令的应用。 跳转指令的应用。 Load/Store指令的应用。 批量Load/Store指令的应用。 信号量指令的应用。 与系统相关的一些指令的应用。
15
3.2.1 算术逻辑运算指令的应用
1. 位操作指令应用举例 2. 实现乘法的指令段举例 3. 64位数据运算举例 4. 转换内存中数据存储方式的指令段
B 跳转指令。 BL 带返回的跳转指令。 BLX 带返回和状态切换的跳转指令。 BX 带状态切换的跳转指令。
5
3.1.2 数据处理指令
数据处理指令包括以下指令: 数据处理指令包括以下指令:
MOV 数据传送指令。 MVN 数据求反传送指令。 CMP 比较指令。 CMN 基于相反数的比较指令。 TST 位测试指令。 TEQ 相等测试指令。 ADD 加法指令。 SUB 减法指令。 RSB 逆向减法指令。 ADC 带位加法指令。 SBC 带位减法指令。 RSC 带位逆向减法指令。 AND 逻辑与操作指令。 BIC 位清除指令。 EOR 逻辑异或操作指令。 ORR 逻辑或操作指令。
这些指令包括以下5条 这些指令包括以下 条:
CDP 协处理器数据操作指令。 LDC 协处理器数据读取指令。 STC 协处理器数据写入指令。 MCR ARM寄存器到协处理器寄存器的数据传送指令。 MRC 协处理器寄存器到ARM寄存器的数据传送指令。
14
3.2 一些基本的ARM指令功能段
本节主要包括以下几部分的内容: 本节主要包括以下几部分的内容:
6
3.1.3 乘法指令
ARM有两类乘法指令:一类为32位的乘法指令, 有两类乘法指令:一类为 位的乘法指令 位的乘法指令, 有两类乘法指令 即乘法操作的结果为32位 另一类为64位的乘 即乘法操作的结果为 位;另一类为 位的乘 法指令,即乘法操作的结果为64位 法指令,即乘法操作的结果为 位。两类指令 共有以下6条: 共有以下 条
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1.3 体系结构
• S3C2440处理器为手持设备和通用嵌入式应用提供了丰 处理器为手持设备和通用嵌入式应用提供了丰 富片上集成系统解决方案,包括: 富片上集成系统解决方案,包括: 16/32 位RISC体系结构和 体系结构和ARM920T内核强大的指令集; 内核强大的指令集; 体系结构和 内核强大的指令集 加强的ARM体系结构 体系结构MMU,用于支持 加强的 体系结构 ,用于支持WinCE和Linux; 和 ; 采用ARM920T CPU 内核支持 内核支持ARM调试体系结构; 调试体系结构; 采用 调试体系结构 内部高级微控制总线( 内部高级微控制总线(AMBA)体系结构 )体系结构(AMBA2.0, , AHB/APB); ; 支持高速总线模式和异步总线模式, 支持高速总线模式和异步总线模式,支持外部等待信号 延长总线周期。 延长总线周期。
3.3 S3C2440内部资源详解 内部资源详解

S3C2440的内部资源十分丰富,所集成的接口能使得 的内部资源十分丰富, 的内部资源十分丰富 S3C2440方便的运用于各种场合,比如移动设备,工 方便的运用于各种场合, 方便的运用于各种场合 比如移动设备, 业控制设备以及医疗设备中。同时, 业控制设备以及医疗设备中。同时,这些接口使用非常 方便,硬件连接简单, 方便,硬件连接简单,操作上一般通过软件控制寄存器 的方式实现。相信读者看过下面的内容以后, 的方式实现。相信读者看过下面的内容以后,能很快的 进入ARM的内部,为后续的开发工作奠定良好的基础 的内部, 进入 的内部 。
3.3.4 脉冲带宽调制定时器 (PWM)

S3C2440有五个 位的定时器。定时器 ,1,2,3具有 有五个16位的定时器 定时器0, , , 具有 有五个 位的定时器。 脉冲宽度可调( 脉冲宽度可调(PWM)功能。定时器 是没有输出管脚的 )功能。定时器4是没有输出管脚的 内部定时器。定时器0有一个死区发生器 有一个死区发生器, 内部定时器。定时器 有一个死区发生器,可以和一个大 电流装置一起使用。 电流装置一起使用。 定时器0和 共用一个 位的分频器,而定时器2, 和 共 共用一个8位的分频器 定时器 和1共用一个 位的分频器,而定时器 ,3和4共 用一个8位的分频器 每个定时器有一个时钟分频器, 位的分频器。 用一个 位的分频器。每个定时器有一个时钟分频器,能 产生5个不同的分频信号 个不同的分频信号( , , , 产生 个不同的分频信号(1/2,1/4,1/8,1/16和TCLK 和 )。每个定时器块接收它自己的来自时钟分频器的时钟信 )。每个定时器块接收它自己的来自时钟分频器的时钟信 而这时钟分频信号又是来自相应的8位分频器的 位分频器的。 位 号,而这时钟分频信号又是来自相应的 位分频器的。8位 分频器是可编程的,根据寄存器TCFG0和TCFG1的值, 的值, 分频器是可编程的,根据寄存器 和 的值 时钟信号进行分频。 将PCLK时钟信号进行分频。 时钟信号进行分频
3.1.1 主要结构

S3C2440的频率是 的频率是400MHz,其ARM920T核由 核由ARM9TDMI、 的频率是 , 核由 、 存储管理单元( 存储管理单元(MMU)和高速缓存三部分组成。其中,MMU )和高速缓存三部分组成。其中, 可以管理虚拟内存,高速缓存由独立的16KB地址和 地址和16KB数据 可以管理虚拟内存,高速缓存由独立的 地址和 数据 高速Cache组成。ARM920T有两个内部协处理器:CP14和 组成。 有两个内部协处理器: 高速 组成 有两个内部协处理器 和 CP15。CP14用于调试控制,CP15用于存储系统控制以及测 用于调试控制, 。 用于调试控制 用于存储系统控制以及测 试控制。 试控制。
3.3.1 Cache 高速缓存

Cache高速缓存是 项全相连模式,采用 高速缓存是64项全相连模式 采用I高速缓存是 项全相连模式, Cache(16KB)和D-Cache(16KB),而且每行 字长度, 字长度, 和 ,而且每行8字长度 其中每行带有一个有效为和两个dirty位。伪随机数或 其中每行带有一个有效为和两个 位 轮转循环替换算法位,采用写穿式( 轮转循环替换算法位,采用写穿式(write-through) ) 或写回式( 操作来更新主存储器。 或写回式(write-back)cache操作来更新主存储器。 ) 操作来更新主存储器 写缓冲器可以保存16个字的数据和 个地址。 个字的数据和4个地址 写缓冲器可以保存 个字的数据和 个地址。
第3章 ARM的内部资源 章 的内部资源

S3C2440是三星公司生产的,基于ARM920T的16/32位 是三星公司生产的,基于 是三星公司生产的 的 位 RISC嵌入式微处理器,是目前市场上应用非常广泛的一款 嵌入式微处理器, 嵌入式微处理器 嵌入式处理器。该处理器是一个多用途的通用芯片, 嵌入式处理器。该处理器是一个多用途的通用芯片,它内 部集成了微处理器和常用外围组件,具有较高的性价比。 部集成了微处理器和常用外围组件,具有较高的性价比。 本章将一一介绍这款处理器的各种内部资源。 本章将一一介绍这款处理器的各种内部资源。
3.3.2 时钟和电源管理
• 时钟电源控制块由三部分组成:时钟控制、 时钟电源控制块由三部分组成:时钟控制、USB控制 控制 和电源控制。 和电源控制。S3C2440中的时钟控制逻辑能生成包括 中的时钟控制逻辑能生成包括 CPU内部时钟(FCLK)在内的所需时钟信号。主时钟 内部时钟( 内部时钟 )在内的所需时钟信号。 脉冲( 脉冲(HCLK)用于高级高精度系统总线外围设备。 )用于高级高精度系统总线外围设备。 FCLK应用于 应用于CPU的时钟,PCLK用于 的时钟, 用于APB bus 各种接 应用于 的时钟 用于 口设备。 口设备。 关于电源控制逻辑, 关于电源控制逻辑,S3C2440有多种电源配置方案来 有多种电源配置方案来 保证对假定任务的最佳功耗。电源控制块在S3C2440 保证对假定任务的最佳功耗。电源控制块在 中能被激活成四种模式:通用模式,慢模式, 中能被激活成四种模式:通用模式,慢模式,空闲模式 和睡觉模式。 和睡觉模式。 通用模式 慢模式 空闲模式 掉电模式
• • • •

3.2 S3C2440存储器映射 存储器映射
• • • • S3C2440的存储器控制器提供访问外部存储器所需要的存储 的存储器控制器提供访问外部存储器所需要的存储 器控制信号,主要具有以下几个特性: 器控制信号,主要具有以下几个特性: 支持大/小端方式 通过软件选择); 小端方式( 支持大 小端方式(通过软件选择); 8个存储器 个存储器bank,寻址空间:每bank 128M 字节(总共 字节(总共1G 个存储器 ,寻址空间: 字节),支持可编程的每bank 8/16/32位数据总线带宽; ),支持可编程的每 位数据总线带宽; 字节),支持可编程的每 位数据总线带宽 都采用固定的bank起始寻址,bank7具有 起始寻址, 从bank0到bank6都采用固定的 到 都采用固定的 起始寻址 具有 可编程的bank的起始地址和大小,其中 个适用于 的起始地址和大小, 个适用于ROM, 可编程的 的起始地址和大小 其中6个适用于 , SRAM,和其他另外 个适用于 个适用于ROM/SRAM和同步 和同步DRAM, ,和其他另外2个适用于 和同步 , 所有的存储器bank都具有可编程的操作周期; 都具有可编程的操作周期; 所有的存储器 都具有可编程的操作周期 支持掉电时的SDRAM自刷新模式; 自刷新模式; 支持掉电时的 自刷新模式 支持各种型号的ROM引导(NOR/NAND FLASH, 引导( 支持各种型号的 引导 , EEPROM,或其他),支持从 ),支持从 ,或其他),支持从NAND FLASH存储器的启动 存储器的启动 采用4KB内部缓冲器进行启动引导,支持启动之后 内部缓冲器进行启动引导, ,采用 内部缓冲器进行启动引导 支持启动之后NAND 存储器仍然作为外部存储器使用。 存储器仍然作为外部存储器使用。
• •
3.2.1 bank0总线宽度 总线宽度

bank0的数据总线(nGCS0)必须首先设置成 位或 的数据总线( 的数据总线 )必须首先设置成16位或 32位的。因为 位的。 通常作为引导ROM区(映射到地 位的 因为bank0通常作为引导 通常作为引导 区 ),在复位时 址0x0000-0000),在复位时,系统将检测 ),在复位时,系统将检测OM[1:0]上 上 的逻辑电平,并依据这个电平来决定bank0区存储器的 的逻辑电平,并依据这个电平来决定 区存储器的 总线宽度。 总线宽度。
3.1.2 片内资源
• • • • • • • • • • • • • • S3C2440的片内资源非常丰富,主要包括: 的片内资源非常丰富,主要包括: 的片内资源非常丰富 1个LCD控制器(支持 控制器( 带有触摸屏的液晶显示屏) 个 控制器 支持STN和TFT带有触摸屏的液晶显示屏) 和 带有触摸屏的液晶显示屏 ; SDRAM控制器; 控制器; 控制器 3个通道的 个通道的UART; 个通道的 ; 4个通道的 个通道的DMA; 个通道的 ; 4个具有 个具有PWM功能的计时器和 个内部时钟; 功能的计时器和1个内部时钟 个具有 功能的计时器和 个内部时钟; 触摸屏接口; 触摸屏接口; I2C总线接口; 总线接口; 总线接口 2个USB主机接口,1个USB设备接口; 主机接口, 个 设备接口; 个 主机接口 设备接口 2个SPI接口; 接口; 个 接口 SD接口和 接口和MMC卡接口; 卡接口; 接口和 卡接口 看门狗计数器; 看门狗计数器; 117位通用 口和 位外部中断源; 位通用I/O口和 位外部中断源; 位通用 口和24位外部中断源 8通道 位AD控制器。 通道10位 控制器 控制器。 通道

• • • •
3.3.3 中断控制器

S3C2440有60个中断源:1个看门狗定时器,5个定时器, 有 个中断源 个中断源: 个看门狗定时器 个看门狗定时器, 个定时器 个定时器, 9个UART,24个外部中断 个外部中断EINT,4个DMA,2个RTC,2 个 , 个外部中断 , 个 , 个 , 个ADC,1个IIC,2个SPI,1个SDI,2个USB,1个LCD , 个 , 个 , 个 , 个 , 个 个电池故障, 个 ,和1个电池故障,1个NAND和2个CAMERA,1个AC97 个电池故障 和 个 , 个 音频。外部中断源都是电平/边沿触发模式的 边沿触发模式的, 音频。外部中断源都是电平 边沿触发模式的,同时还具有 可编程的边沿/电平触发极性 电平触发极性。 可编程的边沿 电平触发极性。S3C2440中断控制器支持为 中断控制器支持为 紧急中断请求提供快速中断服务。 紧急中断请求提供快速中断服务。
相关文档
最新文档