1、嵌入式处理器分类:
答:微处理器(Microprocessor Unit, MPU)
微控制器(Microcontroller Unit, MCU)
片上系统(System On Chip)
2、嵌入式系统的设计有很多要求,主要体现在哪些方面:
答:1) 、功耗低:嵌入式系统中,尤其是在用电池供电的嵌入式系统中,这是一个主要考虑的因素。大耗电量直接影响到硬件费用,并影响电源寿命以及带来散热问题。
2)、低成本:包含硬件成本和软件成本。硬件成本主要决定于所使用的微处理器、所需的内存及相应的外围芯片;软件成本通常难于预测,但一个好的设计方法有利于降低软件成本。
3)、多任务、多速率:系统同时运行多个实时性任务,系统必须同时控制这些动作,但这些动作有些速度慢,有些速度快。
4)、系统内核小:由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如ENEA 公司的OSE 实时OS ,内核只有5K ,而Windows 的内核则要大得多。
5)、专用性强:嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。
2、简述嵌入式系统与单片机、PC 相比的优势:
答:1)、性能方面:采用32位RISC 结构微处理器,主频从30MHz 到上GHz ,处理能力大大超 出单片机系统,接近PC 机的水平,但体积更小,能够真正地“嵌入”到设备中;
2)、实时性方面:嵌入式控制器内嵌实时操作系统(RTOS ),能够完全保证控制系统的强实时性;
3)、人机交互方面:嵌入式控制器可支持大屏幕的液晶显示器,提供功能强大的图形用户界面;输入方法多种多样;
4)、系统升级方面:嵌入式控制器可为控制系统专门设计,其功能专一,成本较低,而且开放的用户程序接口(API )保证了系统能够快速升级和更新。
4、嵌入式操作系统优点:
答:1)、使程序的设计和扩展变得容易,大大提高了开发效率。
2)、充分发挥32位CPU 多任务的潜力,实现多任务设计,能够充分利用硬件资源和实现资 源共享。
3)、实时性能够得到更好的保证。
5、嵌入式系统设计的主要步骤:
答:以自顶向下的角度来看,系统设计从系统需求分析开始;
第二步是规格说明,在这一步我们对需求设计的系统功能进行更细致地描述,这些描述并不涉及系统的组成;
第三步是系统结构设计,在这一阶段以大的构件为单位设计系统内部详细构造,明确软、硬件功能的划分;
第四步是构件设计,它包括系统程序模块设计、专用硬件芯片选择及硬件电路设计;
第五步是系统集成,在完成了所有构件设计的基础上进行系统集成,构造出所需的完整系统。
6、嵌入式最小硬件系统的组成:
嵌入式控制器:1) 时钟系统 2)供电系统 3)存储器系统 4)复位及配置系统 5)调试测试接口
7、ARM7TDMI 的特点:
答:1)、使用RISC 指令集 (Reduced Instruction Set Computer),实现了高的指令吞吐量、出色的实时中断响应、小的、高性价比的处理器宏单元;
2)、具有三级流水线,流水线分三级,分别是取指、译码、执行;
3)、存储器访问数据类型多样,ARM 处理器支持下列数据类型: 字节、半字、字;
4)、存储器接口具备多种存储周期,ARM7TDMI 有4种基本的存储周期:空闲周期(指令不访问存储器)、非顺序周期(访问与前一次无关)、顺序周期(访问与上次相同或加1)、协处理器寄存器周期(协处理器寄存器传送期间);
5)、采用了嵌入式ICE-RT 逻辑调试技术,支持断点调试。
8、简述ARM7流水线技术:
答:ARM7流水线技术可使几个操作同时进行,并使处理和存储器系统连续操作。提高了CPU 的运行效率,增加处理器指令流的速度,使内部信息流动通畅。
ARM7TDMI的流水线分3级,分别为:取指、译码、执行。
具体形式如下:
注意:程序计数器(PC )指向取指的指令而不是正在执行的指令。
9、ARM7TDMI 处理器核的特点:
答:ARM7TDMI 处理器内核使用V4版本的ARM 结构,该结构包含32位ARM 指令集和16位Thumb 指令集。因此ARM7TDMI 处理器有两种操作状态:
ARM 状态:32位,这种状态下执行的是字方式的ARM 指令;
Thumb 状态:16位,这种状态下执行半字方式的ARM 指令。
注意:两个状态之间的切换并不影响处理器模式或寄存器内容。进入异常模式时程序切换至ARM 模式,返回时回到原模式。
10、ARM7处理器的模式及每种模式下处理器执行的功能:
11、ARM 寄存器的类型及功能:
答:ARM7TDMI 处理器内部有37个32位用户可见的寄存器。其中有31个通用寄存器,6个状态寄存器。
1)、其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
2)、寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。
3)、寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ 模式之外的所有寄存器模式,另一个用于FIQ 模式。这样在发生FIQ 中断后,可以加速FIQ 的处理速度。
4)、寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器。
5)、寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。
6)、寄存器R13常作为堆栈指针(SP )。在ARM 指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb 指令集中存在使用R13的指令。
7)、R14为链接寄存器(LR ),在结构上有两个特殊功能:
在每种模式下,模式自身的R14版本用于保存子程序返回地址;
当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。
8)、寄存器R15为程序计数器(PC ),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。
9)、寄存器CPSR 为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR )”可以被访问。每种异常都有自己的SPSR ,在进入异常时它保存CPSR 的当前值,异常退出时可通过它恢复CPSR 。
12、简述CPSR 的组成及各位数据的含义:
答:CPSR 反映了当前处理器的状态,其组成及各位数据的含义如下:
1)、条件代码标志:①负(N):运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;
②零(Z):指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;
③进位(C):当进行加法运算(包括CMN 指令) ,并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令) ,并且最高位产生借位时C=0,否则C=1;
④溢出(V) :当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V 通常不变。
2)、控制位:①中断禁止位,分别控制一种类型的中断:
当I 位置位时,IRQ 中断被禁止;
当F 位置位时,FIQ 中断被禁止。
②处理器状态位,T 位反映了正在操作的状态:
当T 位为1时,处理器正在Thumb 状态下运行;
当T 位清零时,处理器正在ARM 状态下运行。
③模式位,其包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。
3)、保留位:CPSR 中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR 标志和控制位时,不要改变这些保留位。
13、在IRQ 异常发生后及退出异常时,ARM7内核会对寄存器R14、CPSR 、R15做哪些相应的操作: 答:用户程序运行时发生IRQ 中断,硬件完成以下动作:
将CPSR 寄存器内容存入IRQ 模式的SPSR 寄存器
置位I 位(禁止IRQ 中断)
清零T 位(进入ARM 状态)
设置MOD 位,切换处理器模式至IRQ 模式
将下一条指令的地址存入IRQ 模式的LR 寄存器
将跳转地址存入PC ,实现跳转
在异常处理结束后,异常处理程序完成以下动作:
将SPSR 寄存器的值复制回CPSR 寄存器;
将LR (R14)寄存的值减去一个常量后复制到PC 寄存器,跳转到被中断的用户程序。
14、举例说明ARM7处理器的基本寻找方式:
答:1). 寄存器寻址; 2).立即寻址;
3).寄存器移位寻址; 4).寄存器间接寻址;
5).变址寻址; 6). 多寄存器寻址;
7). 堆栈寻址; 8). 块拷贝寻址;
9). 相对寻址。
举例:1)、MOV R1,R2 ;将R2的值存入R1
SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0
2)、SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位
MOV R0,#0xFF000 ;将立即数0xFF000装入R0寄存器
3)、MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R2×8
ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R1
4)、LDR R1,[R2] ; 将R2指向的存储单元的数据读出
; 保存在R1中
SWP R1,R1,[R2] ; 将寄存器R1的值和R2指定的存储
; 单元的内容交换
5)、LDR R2,[R3,#0x0C] ; 读取R3+0x0C地址上的存储单元
; 的内容,放入R2
LDR R0,[R1] ,#4 ;R0=[R1],R1=R1+4 ;后索引基址寻址
;ARM 这种自动索引机制不消耗额外的时间
LDR R0,[R1,R2] ;R0=[R1+R2] ; 基址加索引寻址;
6)、LDR R1!,{R2-R4,R6} ; 将R1指向的单元中的数据读出到
;R2~R4、R6中(R1自动加16)
STR R0!,{R2-R4,R6} ; 将寄存器R2~R4、R12的值保
; 存到R0指向的存储; 单元中
;(R0自动加16)
8)、STMIA R0!,{R1-R7} ; 将R1~R7的数据保存到存储器中。
; 存储指针R0在保存第一个值之后增加,
; 增长方向为向上增长。
STMIB R0!,{R1-R7} ; 将R1~R7的数据保存到存储器中。
; 存储指针R0在保存第一个值之前增加,
; 增长方向为向上增长。
9)、 BL SUBR1 ; 调用到SUBR1子程序
BEQ LOOP ; 条件跳转到LOOP 标号处
...
LOOP MOV R6,#1
...
SUBR1 ...
15、LRC2000时系统控制模块包括哪几部分,各执行什么功能:
答:1)晶体振荡器 通过外接晶振或时钟源为系统提供时钟信号
2)复位 复位使ARM 内核与外设部件进入一个确定的初始状态
3)存储器映射控制 控制异常向量表的重新设方式
4)锁相环(PLL ) 将晶体振荡器输入的时钟倍频到一个合适的时钟频率
5)VPB分频器 将内核时钟与外设时钟分开的部件
6)功率控制 使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗
7)唤醒定时器 系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信号
16、简述LPC2000微控制器上电至复位期间晶振的工作过程:
答:1)在芯片未上电时,芯片振荡器没有工作;
2)芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms ;
3)在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns 。
18、简述LPC2000确定PLL 设定的过程:
答:1) 选择处理器的操作频率(Fcclk)。这可以根据处理器的整体要求、UART 波特率的支持等因素来决定。
2)选择振荡器频率(Fosc)。Fcclk 一定要是Fosc 的整数倍。
3)计算M 值以配置MSEL 位。M = Fcclk/Fosc,M 的取值范围为1~32。实际写入MSEL 位的值为M-1的整数倍。
Embest IDE 的调试功能包括:
断电功能:断点设置、断点屏蔽、断点取消、条件断点、查看断点列表。
程序的单步执行。
变量监视功能:随程序运行同步更新变量,变量值即时修改。
寄存器即时查看与修改。
提供外围寄存器编辑器,可查看编辑ARM 处理器的外围寄存器定义。
存储器查看与修改,存储器内容显示格式定制。