嵌入式试题(总)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、嵌入式处理器分类、ARM系列分类、ARM技术演进

一、嵌入式处理器可以有哪些分类?

答:嵌入式处理器基本上可以分为嵌入式微处理器(EMPU)、嵌入式微控制器(EMCU)、嵌入式数字信号处理器(EDSP)、嵌入式片上系统(ESoC)

二、ARM系列的分类有哪些?

答:(1)ARM V4T系列:包括ARM7TDMI、ARM720T、ARM7EJ;(2)ARM V5TE 系列:ARM9E、ARM10E;(3)ARM V6系列:ARM11;(4)ARM V7系列:Cortex系列都属于V7系列,主要有Cortex-A8、Cortex-R4、Cortex-M3和Cortex-M1等处理器。

三、ARM技术的演进中都改变了什么?

答:ARM核心的体系结构从ARMV1发展到ARMV7;ARM系列的处理器从ARM1发展到了ARM11乃至Cortex系列;ARM系列的指令集包括了32位的ARM指令集、16位的Thumb指令集、16/32位的Thumb-2指令集;流水线从ARM7的3级发展到了Cortex-A8的13级;制造工艺从0.18um发展到32nm;内部的其他技术也在不断地升级和发展。

四、典型嵌入式系统的组成结构

答:从硬件上大致分为:处理器内核层、芯片级外设层、用户级外设层;从软件上大致分为:启动层、操作系统层、应用层。

二、ARM7TDMI的工作模式、工作方式、CPSR

1.ARM7TDMI有几种处理器工作模式,分别是什么?

ARM7TDMI处理器一共有7种工作模式

用户模式(usr)

快速中断模式(fiq)

外部中断模式(irq)

管理模式(svc)

数据访问中止模式(abt)

未定义指令中止模式(und)

系统模式(sys)

2.ARM7TDMI有几种工作方式,分别是什么?

ARMARM7TDMI有两种工作方式:ARM方式和Thumb方式

3.ARM7TDMI的CPSR中的条件标志位有哪些,分别表示什么意义?

N:负标志位,运算结果的第31位值,记录标志设置的结果。

Z:零标志位,如果标志设置操作的结果为0,则置位。

C:进位标志位,记录无符号加法溢出,减法无错位,循环移位。

V:溢出标志位,记录标志设置操作的有符号溢出。

4.编程实现将CPSR的值保存到通用寄存器R0中,将SPSR保存到R1中,然后使用通用寄存器R2的值修改CPSR,使用R3修改SPSR。

MRS R0,CPSR

MRS R1,SPSR

MSR CPSR,R2

MSR SPSR,R3

三、ARM7TDMI的寄存器文件、CPSR

1. ARM处理器是__RISC_结构,共有__37__个寄存器,其中__31__个通用寄存器,__6__个状态寄存器。

2.ARM状态寄存器和Thumb状态寄存器之间的关系

Thumb状态寄存器与ARM状态寄存器有如下的关系

(1)Thumb状态r0- r7与ARM状态r0- r7相同

(2)Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同

(3)Thumb状态SP映射到ARM状态r13

(4)Thumb状态LR映射到ARM状态r14

(5)Thumb状态PC映射到ARM状态PC(r15)

3.列出ARM处理器的37个32位物理寄存器。

答:未分组寄存器R0~R7;分组寄存器R8_fiq~R12_fiq,R8_usr~R12_usr,R13_usr、R13_fiq、R13_irq、R13_svc、R13_abt、R13_und, R14_usr、R14_fiq、R14_irq、R14_svc、R14_abt、R14_und;程序计数器PC(R15);CPSR,SPSR_fiq、SPSR _irq、SPSR _svc、SPSR _abt、SPSR _und。

4.用汇编语言编写程序读取存储器0x40003100地址上的数据,将数据加1。

参考答案:

COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100

AREA Example2,CODE,READONLY ; 声明代码段Example2

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START LDR R1,=COUNT ; R1 <= COUNT

MOV R0,#0 ; R0 <= 0

STR R0,[R1] ; [R1] <= R0,即设置COUNT为0

LDR R1,=COUNT

LDR R0,[R1] ; R0 <= [R1]

ADD R0,R0,#1 ; R0 <= R0 + 1

LOOP B LOOP

END

四、中断异常、响应过程、中断返回、优先级等

问答题

1、简要叙述ARM处理器对异常中断的响应过程。

2、ARM体系中的异常中断类型有哪些?

3、异常中断结束后,CPU是如何返回到主程序断点的?

编程题

4、ADC 中断从汇编程序到C程序中的中断服务程序跳转,写出基本格式

答案:

1、

1)保存处理器当前状态、中断屏蔽位以及各条件标志位。这是通过将当前程序状态寄存器

CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。各异常中断有自己的物理SPSR寄存器。

2)设置当前程序状态寄存器CPSR中相应的位。包括:进入ARM状态;设置CPSR中

的位,使处理器进入相应的执行模式;设置CPSR中的位,禁IRQ中断,当进入FIQ 模式时,禁止FIQ中断。

3)将寄存器Ir_mode(R14)设置成返回地址。

4)将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应异常中

断处理程序处执行。

2、

●复位(Reset)

●未定义的指令

●软件中断(software interrupt SWI)

●指令预取中止

●数据访问中止

●外部中断请求

●快速中断请求

3、异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:

●将所有修改过的用户寄存器从处理程序的保护栈中恢复。

●将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。

●若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。4、

汇编.s文件中定义:

B HandlerADC

...

HandlerADC

IMPORT ADC_ISR

B ADC_ISR

SUBS PC,R14,#4

.c 文件中定义中断服务程序:

__irq void ADC_ISR(void); // 注意两个_

__irq void ADC_ISR(void)

{

}

相关文档
最新文档