(嵌考即将来临)以下是转帖一位网友的嵌考笔记
嵌入式系统设计师考试笔记之电子电路设计基础
欧浩源(ohy3686@qq.com) 20080930
一、引言
在嵌入式系统的硬件设计中,嵌入式微处理器和外围设备接口技术是两个最为核心的部分,然而支撑这个两个部分的基础确实电子电路的基本技术。任何一个嵌入式系统的设计都离不开电子电路的设计。作为嵌入式系统设计师的考试,对这方面的考查或多或少有几题,但在整个考试题目中所占的比例不多。过去的两分考题中,06年考了4题,07年没有考查相关题目。这不能说明以后的考试就不会考查这方面的知识,毕竟这个部分是一个不可缺少的基础。同时,在嵌入式的一些基础知识题目的解题中,也需要一定电子电路设计的基础知识。电子电路设计的基础知识可以写成几本书,但是不要害怕。正是如此,考试考查的只可能是重要概念、基础知识和基本技能。过去的真题也验证了这一点,考查的都是电子电路设计的基本步骤,一些基本概念、布线布局的基本原则以及抗干扰的一些基本措施。想当年,我也是这样赌一把,把教程上的基本东西梳理清楚,感觉可以应用考试的题目。当然这是一种偷懒的做法,如果您有时间和精力,完全把握这方面的内容是件好事情。
二、复习笔记
1、电路设计原理
(1)电路板设计主要分为3个步骤:设计电路原理图、生成网络表、设计印制电路版。
(2)网络表是电路原理设计和印制电路板设计中的一个桥梁,它是设计工具软件自动布线的灵魂。
(3)网络表的格式包括2部分:元器件声明和网络定义。(缺少任一部分都有可能在布线的时候出错)
(4)电路原理图设计不仅是整个电路设计的第一步,也是电路设计的基础。包括以下的一些具体步骤:
A、建立元器件库中没有的库元件。
B、设置图纸属性。
C、放置元件。
D、原理图布线。
E、检查与校对。
F、电路分析与仿真。
G、生成网络表。
H、保存与输出。
2、PCB电路设计
(1)PCB设计是电子产品物理结构设计的一部分,它的主要任务是根据电路的原理和所需元件的封装形式进行物理结构的布局和布线。
(2)PCB设计包括下面一些具体步骤:
A、建立封装库中没有的封装。
B、规划电路板。
C、载入网络表和元件封装。
D、布置元件封装。
E、布线。
F、设计规则检查。
G、PCB仿真分析。
H、存档输出。
3、多层PCB设计的注意事项
(1)高频信号线一定要短,不可以有尖角(90度直角),两根线之间的距离不宜平行、过近,否则可能会产生寄生电容。
(2)如果是两面板,一面的线布成横线,一面的线布成竖线,尽量不要布成斜线。
(3)一般来说,线宽一般为0.3mm,间隔也为0.3mm,这个长度约为8~10mil。但是对于电源线或者大电流线应该有足够宽度,一般需要60~80mil。焊盘一般为64mil。
(4)单面板的生产工艺都很差,因此,单面板的焊盘尽量做得大一些,线要尽量粗一些。
(5)铜膜线的地线应该在电路板的周边,同时将电路上可以利用的空间全部使用铜箔做地线,增强屏蔽能力,并且防止寄生电容。
(6)电路图上的地线表示电路中的零电位,并用作电路中其他各点的公共参考点,在实际电路中由于地线阻抗的存在,必然会带来共阻干扰,因此,在布线是,不能将具有地线符号的点随便连接在一起,这可能引起有害的耦合而影响电路的正常工作。
4、PCB设计中的可靠性知识
(1)地线设计:在电子设备中,接地是控制干扰的重要方法。
A、正确选择单点接地与多点接地。
a、在低频电路中(工作频率小于1MHz),采用一点接地。
b、在高频电路中(工作频率大于10MHz),采用就近多点接地。
B、将数字电路与模拟电路分开,两者地线不要相混。分别与电源端地线相连。
C、尽量加粗地线。若地线很细,接地电位则随电流的变化而变化,如有可能,接地线的宽度应大于3mm。
D、将接地线构成环路,可以明显提高抗噪声能力。
(2)电磁兼容性设计
A、选择合理的导线宽度。
a、瞬变电流在印制线条上所产生的冲击干扰主要是由印制导线的电感成分造成的。
b、时钟引线、行驱动器和总线驱动器的信号线常常载有大的瞬变电流,导线要尽可能短。
c、对于分立元件,导线宽度载1.5mm左右可满足要求。
d、对于集成电路,导线宽度可在0.2mm~1mm之间选择。
B、采用正确的布线策略:最好采用井字形网状布线结构。
a、PCB的一面横向布线,另一面纵向布线,然后在交叉孔处用金属化孔相连。
b、尽量减少导线的不连续性,例如导线不要突变,拐角应大于90度。
c、尽量避免长距离的平行走线,尽可能拉开线与线之间的距离。
d、信号线与地线及电源线尽可能不交叉。
e、在一些对干扰十分敏感的信号线之间设置一根地线,可以有效抑制串扰。
C、抑制反射干扰。
(3)去耦电容配置。
配置去耦电容可以抑制因负载变化而产生的噪声,是印制电路板的可靠性设计的一种常规做法。配置原则如下:
A、 电源输入端跨接一个10~100uF的电解电容。
B、 为每个集成电路芯片配置一个0.01uF的陶瓷电容。
C、 对于噪声能力弱、关断时电流变化大的器件和ROM、RAM等存储型器件,应在芯片的电源线和地线之间直接接入去耦电容。
D、去耦电容的引线不能过长,特别是高频旁路电容不能带引线。
(4)PCB的尺寸与器件的布置。
A、相互有关的元件尽量放得靠近一些。
B、时钟发生器、晶振和CPU的时钟输入端易产生干扰,要相互靠近一些。
C、易产生噪声的元件、小电流电路、大电流电路等应尽量原理逻辑电路。
(5)散热设计。
5、电子设计原理
(1)EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包。利用EDA工具,电子工程师可以将电子产品的由电路设计、性能分析到IC设计图或PCB设计图整个过程在计算机上自动处理完成。
(2)“自顶向下”的设计方法。
先从系统设计入手,在顶层进行功能框图的划分和结构设计。在框图一级进行仿真和纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,然后用综合优化工具生成具体的门电路网表,其对应的物理实现级可以是PCB或专用集成电路。
(3)VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为3种描述形式的混合描述。
6、电子电路测试原理与方法
(1)故障检测:判断故障是否存在,即只判断有无故障。
(2)故障诊断(故障定位):不仅判断故障是否存在,而且指出故障位置。
(3)仿真:对设计过程中得到的电路参数验证其正确性。
(4)测试:判断产品是否合格。
(5)可测试设计的3个方面是:测试生成、测试验证、测试设计。
(6)JTAG测试接口是IC芯片测试方法的标准。
7、硬件抗干扰测试
(1)形成干扰的3个基本要素:干扰源、传播路径和敏感器件。
(2)干扰的耦合方式:干扰源产生的干扰信号要通过一定的耦合通道才对系统产生作用。
A、直接耦合:最有效的方式是加入去耦电容。
B、公共阻抗耦合。
C、电容耦合。
D、电磁感应耦合(磁场耦合)。
E、漏电耦合。
(3)抑制干扰源的技术
尽可能减小干扰源的du/dt和di/dt,这是抗干扰设计中最优先考虑和最重要的原则。
A、 主要通过在干扰源两端并联电容来实现减小干扰源的du/dt。
B、 主要通过在干扰源回路串联电感或电阻及增加续流二极管来实现di/dt。
(4)切断干扰传播路径的技术
A、充分考虑电源对嵌入式系统的影响。例如给电源加滤波电路或稳压器。
B、若微处理器的I/O口接控制电机等噪声器件,应在I/O和噪声源之间加隔离。
C、晶振与微处理器的引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。
D、电路板合理分区,如强、弱信号,数字、模拟信号。
E、尽可能将干扰源与敏感元件远离。
F、用地线把数字区与模拟区隔离。
G、数字地与模拟地要分离,最后再一点接于电源地。
H、微处理器和大功率器件的地线要单独接地,以减小互相干扰。
I、大功率器件尽可能放在电路板边缘。
(5)提高敏感元件的抗干扰性能
A、布线时尽量减少回路环的面积,以降低感应噪声。
B、电源线和地线要尽量粗,除减小压降外,更重要的是降低耦合噪声。
C、微处理器闲置的I/O口不要悬空,要接地或接电源。
D、其他IC的闲置端在不改变系统逻辑的情况下接地或电源。
E、使用电源监控及看门狗电路,可大幅度提高整个电路的抗干扰性能。
F、在满足要求的前提下,尽量降低微处理器的晶振和选用低速数字电路。
三、真题解析
1、2006年38题
电路板的设计主要分为三个步骤,不包括(38)这一个步骤。
(38) A、生成网络表 B、设计印制电路版
C、设计电路原理图 D、自动布线
<答案>:D
见复习笔记1,这是嵌入式硬件设计的常识。
2、2006年39题
现代电子设计方法包含了可测试设计,其中(39)接口是IC芯片测试的标准接口。
(39)A. BIST B. JATG C. UART D. USB
<答案>:B
见复习笔记6,概念性问题。
3、2006年40题
多层印制电路板(4层或者4层以上)比双面板更适合于高速PCB布线,最主要的原因是(40)
(40) A.通过电源平面供电,电压更稳定。
B.可以大大减小电路中信号回路的面积。
C、多层印制电路板工艺简单。
D、自动布线更容易。
<答案>:B
可以用排除法,根据常识首先可以排除C和D。
见复习笔记7,布线时尽量减少回路环的面积,以降低感应噪声。因此,相比之下,B选型是最主要原因。
4、2006年41题
下面不符合数字电路(或者集成电路)的电磁兼容性设计方法的是(41)
(41) A. IC的电源及地的引脚较近,有多个电源和地。
B.使用贴片元件,不是用插座。
C. IC的输出级驱动能力应超过实际应用的要求。
D.对输入和按键采用电平检测(而非边沿检测)
<答案>:C(参考郭春柱著的《嵌入式系统设计师案例导学》)
数字电路(或集成电路)的电磁兼容性(EMI)设计在进行器件选型时,通常遵循一下原则:
(1) 在满足技术指标前提下,尽量选用低速时钟的IC。
(2) 所选IC的电源及地引脚较近。
(3) 所选IC有多个电源及地线引脚。
(4) 所选IC的输出电压波动性小,输出级能力不超过实际应用要求。
(5) 所选IC的电源瞬态电流(穿透电流)低。
(6) 所选IC的输入电容尽量小。
(7) 所选IC具有可控开关速率。
(8) 所选IC地线反射较低。
(9) 建议在PCB上焊接表贴芯片。
在EMC电路技术方面,通常遵循以下原则:
(1) 对输入和按键采用电平检测(而非边沿检测)。
(2) 降低负载电容,以使靠近输出端的集电极开路驱动器便于上拉,电阻值尽量大。
(3) 使用前沿速率尽可能慢而且平滑的数字信号(不超过失真极限)。
(4) 在PCB样板上,允许对信号边沿速度或带宽进行控制。
(5) 微处理器散热片与芯片之间通过导热材料隔离,并在周围多点射频接地。
(6) 不能在看门狗或电源监视电路上使用可编程器件。
(7) 电路中尽量配置一只高质量的看门狗。
(8) 电源的监视电路要对电源中断、跌落、浪涌和瞬态干扰有抵抗能力。
四、小结
到这里,关于嵌入式系统设计师考试的硬件方面的复习笔记也就整理完毕了。后面有时间的话,继续嵌入式软件设计和系统体系设计方面的内容。前面的文章得到了不少朋友的评论,收到不少他们的来信。谢谢你们的支持,希望我的这些文章能帮到你们。
祝大家好运,下次再见!
嵌入式系统设计师考试笔记之嵌入式微处理器
欧浩源(ohy3686@qq.com) 200809010
一、引言
嵌入式微处理器是嵌入式系统的核心器件,深入理解嵌入式微处理器的工作原理,组成结构、体系结构以及软件编程等方面,无论对嵌入式设计师考试的准备还是对嵌入式项目的开发都有一定的帮助。在目前白花盛放的嵌入式微处理器市场,各种各样大大小小的嵌入式微处理器就像菜市场里面的青菜一样。要对各种嵌入式微处理器都有深入的理解几乎是不可能的。但是万变不离其中,在总多的嵌入式微处理器中都有着共同的概念、原理与规律。我们要做的是分析嵌入式微处理器的基本结构、基本工作原理、体系结构、市场发展趋势、各种微处理器的特点与应用场合等等。我个人觉得,面对全国的考试,其考点应该是大家都应该去掌握的一些共有的基本知识,或者是大家都熟悉,流行程度甚广的一些微处理器的使用,而不是一些个性化的知识点或者偏门器件的使用。
二、复习笔记
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]
LDR R0, [R1, #4]! ;R0?[R1+4] R1?R1+4
LDR R0, [R1], #4 ;R0?[R1] R1?R1+4
LDR R0, [R1, R2]! ;R0?[R1+R2]
E、 多寄存器寻址:一条指令可以完成多个寄存器值的传送。
LDMIA R0, {R1, R2, R3} ;R1?[R0] R2?[R0+4] R3?[R0+8]
F、 相对寻址:以程序计数器PC的当前值作为基地址,指令中的地址标号作为偏移量,两者相加之后得到操作数的有效地址。
BL NEXT ;跳转到子程序NEXT处执行
……
NEXT
……
MOV PC, LR ;从子程序返回
G、堆栈寻址:支持4种类型的堆栈工作方式:
a、 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生长。
b、 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生长。
c、 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生长。
d、 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生长。
(7)ARM的存储方法
A、大端模式:数据的高字节存储在低地址中,低字节存储在高地址中。
B、小端模式:数据的低字节存储在低地址中,高字节存储在高地址中。
(8)ARM中断与异常
A、ARM内核支持7种中断,不同的中断处于不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断地址入口。当一个中断发生是,相应的R14(LR)存储中断返回地址,SPSR存储当前程序状态寄存器CPSR的值。
B、由于ARM内核支持流水线工作,LR寄存器存储的地址可能是发生中断后面指令的地址,所以不同的中断处理完成后,必须将LR寄存器值经过处理后再写入P15(PC)寄存器。
C、ARM异常的具体含义:
a、复位:当处理器的复位电平有效时,产生复位异常,程序跳转到异常复位异常处理程序处执行。
b、未定义的指令:当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可以使用该异常机制进行软件仿真。
c、软件中断:该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现操作系统调用功能。
d、指令预取中止:如果处理器预取指令的地址不存在或该地址不允许当前指令访问,存储器向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。
e、数据访问中止:如果处理器数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常。
f、外部中断请求:当ARM外部中断请求管脚有效,而且CPSR中的I位为0时,产生IRQ异常。系统的外设可以通过该异常请求中断服务。
g、快速中断请求:当ARM快速中断请求管脚有效,而且CPSR的F位为0时,产生FIQ异常。
D、ARM处理器对异常中断的响应过程
a、将下一条指令的地址存入相应的连接寄存器LR中。
b、将CPSR复制到相应的SPSR中。
c、根据异常的类型,强制设置CPSR的运行模式位。
d、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
E、ARM处理器从异常中断处理程序中返回
a、恢复中断的程序的处理器状态,将SPSR复制到CPSR中。
b、若在进入异常处理时设置了中断禁止位,要在此清除。
c、将连接寄存器LR的值减去相应的偏移量后送到PC。
F、复位异常中断处理程序不需要返回。在复位异常中断程序开始整个用户程序的执行。
三、真题解析
1、2007年上午49题
在ARM处理器中, (49)寄存器包括全局的中断禁止位,控制中断禁止位就可以打开或者关闭中断。
(49)A. CPSR B. SPSR C. PC D. IR
<答案>:A
考查ARM体系结构的基础知识,CPSR为当前程序状态寄存器,包含全局中断控制位。
2、2007年下午试题一(题目略)
考查8051定时器应用、外部时钟硬件连接、实际项目流程设计以及寻址方式。
3、2006年上午27题
通常所说的32位微处理器是指(27)
(27)A.地址总线的宽度为32位 B.处理器数据长度只能为32位
C. CPU字长为32位 D.通用寄存器数目为32个
<答案>:C
根据常识,很容易将B和D排除掉。
所谓字长,指CPU在单位时间内(同一时间)能一次处理的二进制数的位数。
因此,能处理字长为8位数据的CPU通常就叫8位的CPU,32位CPU的字长为32位。
对于字长和字节,通常8位称为一个字节,而字长的长度是不固定的,对于不同的CPU,字长的长度不一样。8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节。
四、小结
从这两年的考试真题来看,关于嵌入式微处理器方面的题目不多,06和07年上午题目各一题。而且考的都是基础中的基础概念。这些几乎就是每个搞计算机或者单片机的人一进门就要理解的概念。虽然考试的题目不多,然而对嵌入式微处理器的很多基本概念和原理的理解对试卷上的其他题目的解答都有一点的帮助。随着ARM技术的飞速普及,07年也开始出现ARM体系结构的题目,我觉得在今后的考试中,这方面题目可能会不断出现。在下午题目中,一道硬件相关的题目是少不了的,嵌入式微处理器作为嵌入式系统的核心,多多少少会设计到。06年考查X86,07年考查MCS-51,这是计算机也可以说是嵌入式发展和普及的一个过程,今后会不会考查ARM的应用呢?完全有这个可能性。然而目前MCU的市场仍然火爆,最近ARM推出的cortex-M3也不不断占领MCU的市场,可见MCS-51的为基础的应用仍然不断涌现。07年考查了8051的应用,今后我觉得可能还会继续出的吧。