当前位置:首页 > ARM嵌入式系统试题及答案
21、ARM指令长度和Thumb指令长度固定位长吗?位长分别是多少?
答:固定 , ARM为一个字(32bit),Thumb为一个半字(16bit)
22、ARM7TDMI中的中断分为那两类?在CPU级别如何分别屏蔽?
答:分别为IRQ,FIQ ,在cpu级别通过状态寄存器CPSR中的I和F位置位来屏蔽。
23、什么是ARM7TDMI中的异常?简述ARM7TDMI中的复位、IRQ、FIQ和软中断等几种
主要异常的控制原理。
答:异常是指正常的程序被暂时中止的状态模式。
复位异常时处理器进行管理模式执行相应操作,I和F均为禁止;软中断异常 也进入管理模式,I位禁止;IRQ异常时进入中断模式,I位禁止;FIQ异常进 入快速中断模式,I和F位均为禁止,都是通过异常向量表。
24、简述ARM7TDMI中产生复位、IRQ、FIQ和软中断等几种主要异常的条件,这几种
异常会使ARM分别进入到哪种模式?ARM核响应异常的过程,以及这几种异常地返回指令是什么? 答:复位异常:当nRESET信号被拉低时,ARM处理器放弃正在执行时的指令,等到nRESET下信号再次变高时,ARM执行下列操作:(1)强制M[4:0]复为10011,进入管理模式;(2)将CPSR中的I和F置位;(3)将CPSR中的T位清零(4)强制pc从地址0x00开始对下一条指令进行取值;(5)返回ARM状态并回复执行,无返回指令。 IRQ:只有CPSR中相应的I位被清除时,才可能发生IRQ异常,进入中断模式,内核自动作如下处理:(1)将异常处理的返回地址保存到R14-irq中(2)用户模式的CPSR被保存到SPSR-irq中;(3)修改CPSR,禁止新的IRQ中断产生,进入ARM状态,IRQ模式(4)置IRQ模式下的IRQ异常处理程序的中断入口地址向量。 地址0x00000018。 返回指令:subspc , R14-irq , #4
FIQ:只有CPSR中的想用下位被清零时,才发生下IQ异常进入FIQ模式,FIQ中的8个专用寄存器用来保护中断地址。其返回指令: subs pc,R14-fiq , #4
软中断swi:用于进入“管理模式”,通常用于请求一个特定的管理函数。返回指令:movs pc,R14-svc
三、ARM7TDMI指令系统
1、 ARM7TDMI支持哪几种指令集,各有什么特点?
答:支持ARM指令集和Thumb指令集两种。
ARM指令集:指令32位,效率高,代码密度低,所有ARM指令都是可以有条件执行的 。
Thumb指令集:指令16位,代码密度较高,Thumb指令仅有一条指令具备条件执行功
2、 ARM汇编指令的基本格式?
答:基本指令:
在ARM指令集中,每条指令占有4个字节,即指令长度为32位。
5
3、 何谓ARM指令的条件码?默认的条件码是什么?举例说明ARM指令的条件码对指
令执行的影响。
答:条件码是按照指定条件执行的操作条件:默认条件码是AL(无条件执行) 例子:比较两值大小,并进行相应加1处理:
cmp R0,R1;ADDHI R0,R0,#1;ADDLS R1,R1,#1
4、 解释何为“满堆栈”、“空堆栈”、“递增堆栈”和“递减堆栈”? ARM指令系统中是如何支
持的?
答:满堆栈:堆栈指针指向最后压入栈的有效数据项。 空堆栈:堆栈指针指向下一个待压入数据的空位置。
递增堆栈:在向堆栈写入数据后,堆栈指针的值变大,即向高地址方向生长。 递减堆栈:在想堆栈写入数据后,堆栈指针的值变小,即向低地址方向生长。 ARM指令支持四种对战类型:满递增,空递增,满递减,空递减。
5、 请说明MOV指令与LDR加载指令的区别和用途。
答:LDR的操作数既可以来源于寄存器也可以来源于存储器,MOV的操作数能来源 于寄存器。
LDR指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、
程序的跳转、外围部件的控制操作等;MOV指令将8位立即数或寄存器传送到目 标寄存器(Rd),可用于移位运算等操作。
6、 解释 B指令、BL指令与BX指令的功能差别?简述他们的应用场合。
答:B指令:是分支指令,跳转到标号指定的地址程序。 Bl指令:带连接的分支指令,跳转到指定的地址程序,同时还将程序计数器PC的值保存到LR寄存器中。 BX指令:带状态切换的分支指令,跳转到Rm指定的地址处执行程序,根据跳转地址的最低位 来切换处理器状态。 B/BL指令跳转范围限制在当前指令的+-32MB地址内。
7、 解释SWI(软中断)指令的执行过程和典型应用。
答:SWI指令用于产生软中断,从而实现先从用户模式到管理模式的变换。在切换时,CPSR寄存器内容将保存到管理模式的SPSR中,同时程序跳转到SWI异常向量入口处。 SWI用于系统功能调用。
8、 ARM汇编指令条件码如下表,分析下两段程序片断的功能,写出其等价的类C语
言功能描述: 条件助记符 EQ NE CS/HS CC/LO MI
标志 Z=1 Z=0 C=1 C=0 N=1 相等 不相等 含义 无符号数大于或等于 无符号数小于 负数 6
PL VS VC HI LS GE LT GT LE AL NV
N=0 V=1 V=0 C=1,Z=0 C=0,Z=1 N=V N!=V Z=0,N=V Z=1,N!=V 任何 任何 正数或零 溢出 没有溢出 无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行 (指令默认条件) 从不执行(不要使用) 程序片断1:
CMP R0, R1 ADDHI R0 , R0 , #1 ADDLS R1 , R1 , #1
程序片断2:
CMP R0 , #10 CMPNE R1 , #20 ADDNE R0 , R0 , R1
答:if(R0>R1) R0++; else R1++;
if(R0!=10) if(R1!=20) R0+=R1;
9、 结合ARM7TDMI结构中的流水线结构,解释IRQ中断返回指令:
SUBS PC , R14_irq , #4 的原理
答:ARMTTDMI采用三级流水线结构,PC指向正在取值的指令,产生IRQ时,保存在R14-IRQ中的是PC的值,在返回时为保证正确性应返回到PC-4即中断前“正在译码”的指令地址。所以返回指令为:subs pc,R14-irq,#4;
四、LPC2000系列ARM硬件资源原理与使用
1、 LPC2000系列器件有几种常见的封装形式和其封装特点?
答:常见的封装有64脚封装,144脚封装
特点:功耗低,有多个32位定时器,多达9个外部中断,16K字节静态RAM,
1/128/256k字节片Flash存储器,128为宽度接口加速器,4路10位ADC或8路10 位ADC(64脚和144脚封装),46或76~112个GPIO(64脚和144脚封装)。
2、 简要说明一下LPC2000系列器件片内存储器的特点?
7
答:片内存储器分为片内Flash和片内静态RAM。片内Flash通过128位宽度的总线 与ARM内核相连,具有很高的速度,特有的存储器加速功能,可以将程序直接放 在Flash上运行。SRAM支持8位、16位和32位的读写访问。
3、 在LPC2000系列ARM芯片中,内Flash有哪几种写入方式?
答:(1)使用JTAG仿真/调试器,通过芯片的JTAG借口下载程序。 (2)使用在系统编程技术,通过UART0接口下载程序。
(3)使用在应用编程技术,在用户程序运行时对Flash进行擦出和/或编程操作, 实现数据的存储和固件的现场升级。
4、 ARM寄存器PC、CPSR、SPSR分别有什么用?
答:PC是CUP中的程序计数器,内容总是指向正在“取指”指令的地址。 CPSR是当前程序状态寄存器,用来监视和控制内部操作的。
SPSR是物理状态寄存,用于保存CPSR的当前值,从异常退出时则由它来恢复 CPSR。
5、 什么是ARM处理器的异常?ARM处理器是如何处理异常的?
答:异常:在执行正常程序过程中,当发生某种异常事件或某种外部请求时,处理器就暂停执行当前的程序,进入异常模式。 如何处理异常:
1) 保存执行状态:将CPSR复制到发生的异常模式下的SPSR中。
2) 模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到ARM执行模式,禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断。
3) 保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。
4) 跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程序中。
6、 什么是ARM体系结构中的异常向量表?在应用中有何作用?
答:处理器规定了异常处理程序入口的地址区间,并规定了地址的存放顺序,一般称为异常向量表。
在异常处理过程中,可以加快异常服务的响应速度。
7、 在ARM体系结构中,异常向量表中存放的是什么内容?
答:异常处理程序的程序入口地址。
8、 在ARM体系结构中,异常向量表中0x0014(保留字)单元存放的是什么内容?有何
用途?
答:保留的异常入口,早期的ARM结构中会被用到,而在ARM7中是保留的,以确保软件能与不同的ARM结构兼容。而在有些处理器芯片中,这4个字节已经有了非常特殊的用特。
8
共分享92篇相关文档