2011年计算机软件水平考试嵌入式系统设计师辅导笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011年计算机软件水平考试嵌入式系统设计师辅导笔记
(一)
1、嵌入式系统的定义
(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4 个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet 阶段。
(3)知识产权核(IP 核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。
(4)IP 核模块有行为、结构和物理 3 级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。
2、嵌入式系统的组成:硬件层、中间层、系统软件层和应用软件层
(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O 接口。
嵌入式核心模块=微处理器+电源电路+时钟电路+存储器
Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。
它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。
(2)中间层(也称为硬件抽象层HAL 或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP 层提供的接口开发即可。
BSP 有两个特点:硬件相关性和操作系统相关性。
设计一个完整的BSP 需要完成两部分工作:
A、嵌入式系统的硬件初始化和BSP 功能。
片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。
B、设计硬件相关的设备驱动。
(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。
RTOS 是嵌入式应用软件的基础和开发平台。
(4)应用软件:由基于实时系统开发的应用程序组成。
3、实时系统
(1)定义:能在指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统。
(2)区别:通用系统一般追求的是系统的平均响应时间和用户的使用方便;而实时系统主要考虑的是在最坏情况下的系统行为。
(3)特点:时间约束性、可预测性、可靠性、与外部环境的交互性。
(4)硬实时(强实时):指应用的时间需求应能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如:航天、军事。
(5)软实时(弱实时):指某些应用虽然提出了时间的要求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如:监控系统、实时信息采集系统。
(6)任务的约束包括:时间约束、资源约束、执行顺序约束和性能约束。
4、实时系统的调度
(1)调度:给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程。
(2)抢占式调度:通常是优先级驱动的调度,如uCOS。
优点是实时性好、反应快,调度算法相对简单,可以保证高优先级任务的时间约束;缺点是上下文切换多。
(3)非抢占式调度:通常是按时间片分配的调度,不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃,如WinCE。
优点是上下文切换少;缺点是处理器有效资源利用率低,可调度性不好。
(4)静态表驱动策略:系统在运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表,指明各任务的起始运行时刻及运行时间。
(5)优先级驱动策略:按照任务优先级的高低确定任务的执行顺序。
(6)实时任务分类:周期任务、偶发任务、非周期任务。
(7)实时系统的通用结构模型:数据采集任务实现传感器数据的采集,数据处理任务处理采集的数据、并将加工后的数据送到执行机构管理任务控制机构执行。
5、嵌入式微处理器体系结构
(1)冯诺依曼结构:程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,采用单一的地址及数据总线,程序和数据的宽度相同。
例如:8086、ARM7、MIPS…
(2)哈佛结构:程序和数据是两个相互独立的存储器,每个存储器独立编址、独立访问,是一种将程序存储和数据存储分开的存储器结构。
例如:AVR、ARM9、ARM10…
(3)CISC 与RISC 的特点比较(参照教程22 页)。
计算机执行程序所需要的时间P 可以用下面公式计算:
P=I×CPI×T
I:高级语言程序编译后在机器上运行的指令数。
CPI:为执行每条指令所需要的平均周期数。
T:每个机器周期的时间。
(4)流水线的思想:在CPU 中把一条指令的串行执行过程变为若干指令的子过程在CPU 中重叠执行。
(5)流水线的指标:
吞吐率:单位时间里流水线处理机流出的结果数。
如果流水线的子过程所用时间不一样长,则吞吐率应为最长子过程的倒数。
建立时间:流水线开始工作到达最大吞吐率的时间。
若m 个子过程所用时间一样,均为t,则建立时间T=mt。
(6)信息存储的字节顺序
A、存储器单位:字节(8 位)
B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。
C、32 位微处理器的虚拟地址空间位232,即4GB。
D、小端字节顺序:低字节在内存低地址处,高字节在内存高地址处。
E、大端字节顺序:高字节在内存低地址处,低字节在内存高地址处。
F、网络设备的存储顺序问题取决于OSI 模型底层中的数据链路层。
6、逻辑电路基础
(1)根据电路是否具有存储功能,将逻辑电路划分为:组合逻辑电路和时序逻辑电路。
(2)组合逻辑电路:电路在任一时刻的输出,仅取决于该时刻的输入信号,而与输入信号作用前电路的状态无关。
常用的逻辑电路有译码器和多路选择器等。
(3)时序逻辑电路:电路任一时刻的输出不仅与该时刻的输入有关,而且还与该时刻电路的
状态有关。
因此,时序电路中必须包含记忆元件。
触发器是构成时序逻辑电路的基础。
常用的时序逻辑电路有寄存器和计数器等。
(4)真值表、布尔代数、摩根定律、门电路的概念。
(教程28、29 页)
(5)NOR(或非)和NAND(与非)的门电路称为全能门电路,可以实现任何一种逻辑函数。
(6)译码器:多输入多输出的组合逻辑网络。
每输入一个n 位的二进制代码,在m 个输出端中最多有一个有效。
当m=2n 是,为全译码;当m<2n 时,为部分译码。
(7)由于集成电路的高电平输出电流小,而低电平输出电流相对比较大,采用集成门电路直接驱动LED时,较多采用低电平驱动方式。
液晶七段字符显示器LCD 利用液晶有外加电场和无外加电场时不同的光学特性来显示字符。
(8)时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状态合适更新。
同步是时钟控制系统中的主要制约条件。
(9)在选用触发器的时候,触发方式是必须考虑的因素。
触发方式有两种:
电平触发方式:具有结构简单的有点,常用来组成暂存器。
边沿触发方式:具有很强的抗数据端干扰能力,常用来组成寄存器、计数器等。
7、总线电路及信号驱动
(1)总线是各种信号线的集合,是嵌入式系统中各部件之间传送数据、地址和控制信息的公共通路。
在同一时刻,每条通路线路上能够传输一位二进制信号。
按照总线所传送的信息类型,可以分为:数据总线(DB)、地址总线(AB)和控制总线(CB)。
(2)总线的主要参数:
总线带宽:一定时间内总线上可以传送的数据量,一般用MByte/s 表示。
总线宽度:总线能同时传送的数据位数(bit),即人们常说的32 位、64 位等总线宽度的概念,也叫总线位宽。
总线的位宽越宽,总线每秒数据传输率越大,也就是总线带宽越宽。
总线频率:工作时钟频率以MHz 为单位,工作频率越高,则总线工作速度越快,也即总线带宽越宽。
总线带宽= 总线位宽×总线频率/8,单位是MBps。
常用总线:ISA 总线、PCI 总线、IIC 总线、SPI 总线、PC104 总线和CAN 总线等。
(3)只有具有三态输出的设备才能够连接到数据总线上,常用的三态门为输出缓冲器。
(4)当总线上所接的负载超过总线的负载能力时,必须在总线和负载之间加接缓冲器或驱动器,最常用的是三态缓冲器,其作用是驱动和隔离。
(5)采用总线复用技术可以实现数据总线和地址总线的共用。
但会带来两个问题:
A、需要增加外部电路对总线信号进行复用解耦,例如:地址锁存器。
B、总线速度相对非复用总线系统低。
(6)两类总线通信协议:同步方式、异步方式。
(7)对总线仲裁问题的解决是以优先级(优先权)的概念为基础。
8、电平转换电路
(1)数字集成电路可以分为两大类:双极型集成电路(TTL)、金属氧化物半导体(MOS)。
(2)CMOS 电路由于其静态功耗极低,工作速度较高,抗干扰能力较强,被广泛使用。
(3)解决TTL 与CMOS 电路接口困难的办法是在TTL 电路输出端与电源之间接一上拉电阻R,上拉电阻R 的取值由TTL 的高电平输出漏电流IOH 来决定,不同系列的TTL 应选用不同的R 值。
9、可编程逻辑器件基础(具体参见教程51 到61 页)
10、嵌入式系统中信息表示与运算基础
(1)进位计数制与转换:这样比较简单,也应该掌握怎么样进行换算,有出题的可能。
(2)计算机中数的表示:源码、反码与补码。
正数的反码与源码相同,负数的反码为该数的源码除符号位外按位取反。
正数的补码与源码相同,负数的补码为该数的反码加一。
例如-98 的源码:11100010B
反码:10011101B
补码:10011110B
(3)定点表示法:数的小数点的位置人为约定固定不变。
浮点表示法:数的小数点位置是浮动的,它由尾数部分和阶数部分组成。
任意一个二进制N 总可以写成:N=2P×S。
S 为尾数,P 为阶数。
(4)汉字表示法(教程67、68 页),搞清楚GB2318-80 中国标码和机内码的变换。
(5)语音编码中波形量化参数(可能会出简单的计算题目哦)
采样频率:一秒内采样的次数,反映了采样点之间的间隔大小。
人耳的听觉上限是20kHz,因此40kHz 以上的采样频率足以使人满意。
CD 唱片采用的采样频率是44.1kHz。
测量精度:样本的量化等级,目前标准采样量级有8 位和16 位两种。
声道数:单声道和立体声双道。
立体声需要两倍的存储空间。
11、差错控制编码
(1)根据码组的功能,可以分为检错码和纠错码两类。
检错码是指能自动发现差错的码,例如奇偶检验码;纠错码是指不仅能发现差错而且能自动纠正差错的码,例如循环冗余校验码。
(2)奇偶检验码、海明码、循环冗余校验码(CRC)。
(教程70 到77 页)
12、嵌入式系统的度量项目
(1)性能指标:分为部件性能指标和综合性能指标,主要包括:吞吐率、实时性和各种利用率。
(2)可靠性与安全性
可靠性是嵌入式系统最重要、最突出的基本要求,是一个嵌入式系统能正常工作的保证,一般用平均故障间隔时间MTBF 来度量。
(3)可维护性:一般用平均修复时间MTTR 表示。
(4)可用性
(5)功耗
(6)环境适应性
(7)通用性
(8)安全性
(9)保密性
(10)可扩展性
性价比中的价格,除了直接购买嵌入式系统的价格外,还应包含安装费用、若干年的运行维修费用和软件租用费。
13、嵌入式系统的评价方法:测量法和模型法
(1)测量法是最直接最基本的方法,需要解决两个问题:
A、根据研究的目的,确定要测量的系统参数。
B、选择测量的工具和方式。
(2)测量的方式有两种:采样方式和事件跟踪方式。
(3)模型法分为分析模型法和模拟模型法。
分析模型法是用一些数学方程去刻画系统的模型,而模拟模型法是用模拟程序的运行去动态表达嵌入式系统的状态,而进行系统统计分析,得出性能指标。
(4)分析模型法中使用最多的是排队模型,它包括三个部分:输入流、排队规则和服务机构。
(5)使用模型对系统进行评价需要解决3 个问题:设计模型、解模型、校准和证实模型。
(二)
1.嵌入式微处理器的基本结构
(1)嵌入式硬件系统一般由嵌入式微处理器、存储器和输入/输出部分组成。
(2)嵌入式微处理器是嵌入式硬件系统的核心,通常由控制单元、算术逻辑单元和寄存器3大部分组成:
A、控制单元:主要负责取指、译码和取数等基本操作并发送主要的控制指令。
B、算术逻辑单元:主要处理数值型数据和进行逻辑运算工作。
C、寄存器:用于暂存临时性的数据。
2.嵌入式微处理器的分类(根据用途)
(1)嵌入式微控制器(MCU):又称为单片机,片上外设资源一般比较丰富,适合于控制。
最大的特点是单片化,体积小,功耗和成本低,可靠性高。
目前约占70%的市场份额。
(2)嵌入式微处理器(EMPU):又称为单板机,由通用计算机中的CPU 发展而来,它的特征是具有32位以上的处理器,具有较高的性能。
通常嵌入式微处理器把CPU、ROM、RAM 及I/O 等模块做到同一个芯片上。
(3)嵌入式DSP 处理器(DSP):专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,使其处理速度比最快的CPU 还快10~50倍,在数字滤波、FFT、频谱分析等方面获得了大量的应用。
(4)嵌入式片上系统(SOC):追求产品系统最大包容的集成器件,其最大的特点是成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。
3.典型8位微处理器的结构和特点
该部分参考《教程》86~94页,以8051为重点,彻底搞清楚8位单片机的工作原理,外设控制、存储分布、寻址方式以及典型应用。
2007年11月下午的第一道题目就考查了8051的定时器使用、外部时钟连接、实际应用的流程设计以及典型的寻址方式。
这些考点几乎可以在《教程》上找到,例如外部时钟连接那个问题的答案就是《教程》89页上面的原图。
4.典型16位微处理器的结构和特点
该部分参考《教程》94~97页。
典型的微处理器可以参考MSP430,找一本这方面的书看看关于MSP430的结构原理以及典型应用。
5.典型32位微处理器的结构和特点
该部分参考《教程》97~112页。
32位处理器采用32位的地址和数据总线,其地址空间达到了232=4GB。
目前主流的32位嵌入式处理器系统主要有ARM 系列、MIPS 系列、PoewrPC 系列等。
ARM 微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式RISC 处理器结构。
按照目前的发展形式,ARM 几乎成了嵌入式应用的代名词。
按照我个人的意见,作为嵌入式系统设计师考试,逐渐增加考查ARM 体系结构与编程方面的题目是大势所趋。
2006年没有一道关于ARM 的题目,2007年出了少量题目,可能在2008年会继续增加。
在下午题方面,2006年考查了X86方面的应用、2007年考查了8051方面的应用,这个可能是一个过度过程,以目前ARM 在嵌入式领域的广泛应用和普及程度,下午题目考查ARM 应用方面或者32位其他的微处理器方面的应用题目可能在不就将来的考试中就会出现。
6、单片机系统的基本概念
(1)单片机组成:中央处理器、存储器、I/O 设备。
(2)存储器:物理实质是一组或多组具备数据输入/输出和数据存储功能的集成电路,用于充当设备缓存或保存固定的程序及数据。
A、ROM(只读存储器):一般用于存放固定的程序或数据表格等,数据在掉电后仍然会保留下来。
B、RAM(随机存储器):用于暂存程序和数据、中间计算结果,或用作堆栈用等,数据在掉电后就会丢失。
(3)I/O端口:单片机与外界联系的通道,它可以对各类外部信号(开关量、模拟量、频率信号)进行检测、判断、处理,并可控制各类外部设备。
现在的单片机I/O 口已经集成了更多的特性和功能,对I/O端口的功能进行了拓展和复用,例如外部中断、ADC 检测以及PWM 输出等等。
(4)输出电平:高电平电压(输出“1”时)和低电平电压(输出“0”时)
A、TTL 电平:正逻辑,5V 为逻辑正,0V 为逻辑负,例如单片机的输出。
B、RS232电平:负逻辑,-12V 为逻辑正,+12V 为逻辑负,例如PC 的输出。
注:因此在单片机和PC 进行通讯的时候需要一个MAX232芯片进行电平转换。
(5)堆栈:它是一种线性的数据结构,是一个只有一个进出口的一维空间。
A、堆栈特性:后进先出(LIFO)
B、堆栈指针:用于指示栈顶的位置(地址),当发生压栈或者出栈操作时,导致栈顶位置变化时,堆栈指针会随之变化。
C、堆栈操作:压栈操作(PUSH)和出栈操作(POP)。
D、堆栈类型:“向上生长”型堆栈,每次压栈时堆栈指针加1;“向下生长”型堆栈,每次压栈堆栈时指针减1。
E、堆栈应用:调用子程序、响应中断时,堆栈用于保护现场;还可以用作临时数据缓冲区来使用。
F、使用注意:堆栈溢出问题,压栈和出栈的匹配问题。
(6)定时/计数器:实质都是计数器。
用作定时器时是对单片机内部的时钟脉冲进行计数,而在用作计
数器时是对单片机外部的输入脉冲进行计数,其作用如下:
A、计时、定时或延时控制;
B、脉冲技术;
C、测量脉冲宽度或频率(捕获功能)
(7)中断:优先级更高的事件发生,打断优先级低的时间进程。
引起中断的事件称为中断源。
一个单片机可能支持多个中断源,这些中断源可以分为可屏蔽中断和非可屏蔽中断,而这些中断源并不都是系统工作所需的,我们可以根据系统需求屏蔽那些不需要的中断源。
A、中断嵌套:当一个低级中断尚未执行完毕,又发生了一个高级优先级的中断,系统转而执行高级中断服务程序,待处理完高级中断后再回过头来执行低级中断服务程序。
B、中断响应时间是指从发出中断请求到进入中断处理所用的时间;中断处理时间是指中断处理开始到中断处理结束的时间。
C、中断响应过程:
a、保护现场:将当前地址、累加器ACC、状态寄存器保存到堆栈中。
b、切换PC 指针:根据不同的中断源所产生的中断,切换到相应的入口地址。
c、执行中断服务处理程序。
d、恢复现场:将保存在堆栈中的主程序地址、累加器ACC、状态寄存器恢复。
e、中断返回:从中断处返回到主程序,继续执行。
D、中断入口地址:单片机为每个中断源分配了不同的中断入口地址,也称为中断向量。
(8)复位:通过外部电路给单片机的复位引进一个复位信号,让系统重新开始运行。
A、复位发生时的动作:
a、PC 指针从起始位置开始执行(大多数单片机都时从0x0000处开始执行)。
b、I/O 端口设置成缺省状态(高阻态、或者输出低电平)。
c、部分专用控制寄存器SFR 恢复到缺省状态。
d、普通RAM 不变(如果时上电复位,则是随即数)。
B、两种不同的复位启动方式:
a、冷启动:也叫上电复位,指在断电状态下给系统加电,让系统开始正常运行。
b、热启动:在不断电的状态下,给单片机复位引进一个复位信号,让系统重新开始。
C、两种类型的复位电路:高电平复位和低电平复位。
D 注意事项:
a、注意复位信号的电平状态及持续时间必须满足系统要求。
b、注意避免复位信号抖动。
(9)时钟电路:单片机是一种时序电路,必须提供脉冲电路才能正常工作。
时钟电路相当于单片机的心脏,它的每一次跳动(振动节拍)都控制着单片机的工作节奏。
振荡得慢时,系统工作速度就慢,振荡得快时,系统工作速度就快(功耗也增大)。
A、振荡周期:振荡源的振荡节拍。
B、机器周期:单片机完成一个基本操作需要的振荡周期(节拍)。
C、指令周期:执行一条指令需要几个机器周期。
不同的指令需要的机器周期数不同。
7、ARM体系结构的基本概念
(1)ARM:Advanced RISC Machine。
(2)ARM体系结构中支持两种指令集:ARM 指令集和Thumb 指令集。
(3)ARM内核有T、D、M、I四个功能模块:
A、T 模块:表示16位Thumb,可以在兼顾性能的同时减少代码尺寸。
B、D 模块:表示Debug,内核中放置了用于调试的结构,通常为一个边界扫描链JTAG。
C、M 模块:表示8位乘法器。
D、I 模块:表示EmbeddedICE Logic,用于实时断点观测及变量观测的逻辑电路部分。
(4)ARM处理器有7种运行模式:
A、用户模式(User):正常程序执行模式,用于应用程序。
D、快速中断模式(FIQ):快速中断处理,用于高速数据传输和通道处理。
C、外部中断模式(IRQ):用于通用的中断处理。
D、管理模式(SVE):供操作系统使用的一种保护模式。
E、数据访问中止模式(Abort):用于虚拟存储及存储保护。
F、未定义指令中止模式(Undefined):当未定义指令执行时进入该模式。
G、系统模式(System):用于运行特权级的操作系统任务。
除了用户模式之外的其他6种处理器模式称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换,其中,除了系统模式外,其他的5种特权模式又称为异常模式。
处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。
大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式切换。
当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。
这种体系结构可以使操作系统控制整个系统的资源。
当应用程序发生异常中断时,处理器进入相应的异常模式。
在每一种异常模式种都有一组寄存器,供相应的异常处理程序使用,这样就可以保证进入异常模式时,用户模式下的寄存器不被破坏。
系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器,但
是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换,它主要供操作系统任务使用。
(5)ARM处理器共有37个寄存器:31个通用寄存器和6个状态寄存器
A、通用寄存器包括R0~R15,可以分为3类:
a、未备份寄存器R0~R7:在所有的处理器模式下,未备份寄存器都是指向同一个物理寄存器。
b、备份寄存器R8~R14:
对于R8~R12来说,每个寄存器对于2个不同的物理寄存器,它们每次所访问的物理寄存器都与当前的处理器运行模式有关。
对于R13、R14来说,每个寄存器对于6个不同的物理寄存器,其中一个是用户模式和系统模式共用。
R13在ARM 指令种常用作堆栈指针。
由于处理器的每种运行模式都有自己独立的物理寄存器R13,所有在用户应用程序的初始化部分,一般要初始化每种模式下的R13,使其指向该运行模式的栈空间。
R14又称为连接寄存器(LR),在ARM 体系种具有下面两种特殊作用:在通过BL 或BLX 指令调用子程序时,存放当前子程序的返回地址;在异常中断发生时,存放异常模式将要返回的地址。
c、程序计数器R15(PC)。
由于ARM 采用了流水线机制,在三级流水线中,当正确读取了PC 的值时,该值为当前指令地址值加8个字节。
也就是说,PC 指向当前指令的下两条指令的地址。
在ARM 指令状态下,PC 的0和1位是0,在Thumb 指令状态下,PC 的0位是0。
B、程序状态寄存器
a、ARM 体系结构包含1个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器(SPSR),使用MSR 和MRS 指令来设置和读取这些寄存器。
b、当前程序状态寄存器CPSR:保存当前处理器状态的信息,可以在任何处理器模式下被访问。
c、备份程序状态寄存器SPSR:每一种异常处理器模式下都有一个专用的物理状态寄存器。
当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容,在异常中断程序退出时,可以用SPSR 中保存的值来恢复CPSR。
d、由于用户模式和系统模式不属于异常模式,它们没有SPSR,当在这两种模式下访问SPSR 时,结果是未知的。
(6)ARM指令的寻址方式
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。
A、立即寻址:操作数本身就在指令中给出,只要取出指令也就取到了操作数。
ADD R0, R0, #1 ;R0 R0+1
B、寄存器寻址:利用寄存器中的数值作为操作数。
ADD R0, R1, R2 ;R0 R1+R2
C、寄存器间接寻址:以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。
ADD R0, R1, [R2] ;R0 R1+[R2]
LDR R0, [R1] ;R0 [R1]
STR R0, [R1] ;[R1] R0
D、基址变址寻址:将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。
LDR R0, [R1, #4] ;R0 [R1+4]。