嵌入式原理与接口技术复习简答题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章简答
1.简述ARM指令集的主要能力。
答:条件执行;寄存器访问;在线式桶形寄存器的访问。
2.简述程序计数器pc、连接寄存器lr、堆栈指针sp、CPSR和SPSR的用法。
答:LR:寄存器r14用作子程序连接寄存器。
当一条分支并且连接指令(BL)被执行时,寄存器r14收到r15的一个拷贝。
在其他时间,r14能被看作通用寄存器。
PC:在ARM状态下,r15的bit[1:0]是无定义且必须被忽略的,而r15的bit[31:2]含有程序计数值。
在Thumb状态下,r15的bit[0]是无定义且必须被忽略的,而r15的bit[31:1]含有程序计数值。
CPSR和SPSR与ARM状态下的CPSR和SPSR是相同的;SP映射到ARM状态下的r13 3.简述处理器如何从ARM 状态转换到Thumb状态。
答:分支并且转换状态指令BX,在指令中指定了一个Rn寄存器,将Rn内容拷贝到PC,同时使PC[0]=0,如果Rn[0]=1,将处理器状态转换成Thumb状态,把目标地址处的代码解释为Thumb代码。
4.ARM指令对无符号数、带符号数装入字节或半字到寄存器是如何操作的?
答:LDRSB指令从存储器装入一字节数据到寄存器bit[7:0],用符号位bit[7]扩展寄存器的bit[31:8];LDRSH指令从存储器装入半字节到寄存器bit[15:0],用符号位bit[15]扩展寄存器的bit[31:16]。
5.简述ARM指令是如何实现条件执行的。
答:所有的ARM指令均可以在之零零操作码助记符后,跟随一个条件码助记符后缀,一句CPSR中的条件吗标志,有条件地被执行,而不需要使用分支指令实现条件分支。
6.ARM数据处理指令在什么情况下设置CPSR中的条件码标志?
7.答:算术逻辑操作指令通常对指定的两个寄存器(或1个寄存器、1个立即数)进行操作,结果存到第3个寄存器,允许选择修改或不修改CPSR中的条件码标志。
比较指令TEQ、TST、CMP和CMN,通常对指定的两个寄存器(或1个寄存器,1个立即数)进行比较,比较结果不保存到寄存器,只影响CPSR中的条件码标志。
7.简述ARM数据处理指令如何用5位立即数指定移位量,如何用Rs指定移位量,以及对Rm可以做哪些移位操作。
简述如何对指定的8位立即数进行循环右移。
答:直接使用bit[11:7]中的值作为移位量;使用指令中bit[11:8]指定Rs寄存器,且用Rs中最低字节指定移位量;逻辑左移,逻辑右移,算术右移,循环右移;进行移位操作时,要把指令中bit[7:0]指定的8位无符号立即数作为最低字节,高位bit [31:8]用0扩展,形成一个32位数,对这个32位数进行循环右移。
移位的次数,由指定中bit[11:8]指定的4位无符号数乘以2得到,分别为0,2,4,…30。
8.简述在ARM状态下,在特权方式或用户方式,同样的MSR指令执行结果有何区别。
答:在用户方式下,CPSR的控制位被保护,不能改变,只有条件码标志能被改变。
在特权方式,允许改变整个CPSR。
在用户方式,不能使用SPSR寄存器,因为这种方式不存在这样的寄存器。
9.简述ARM单个数据传送指令中回写/不回写、先/后索引的含义。
答:指令中可以指定回写位,当指令中W=1时,通过计算得到的存储器地址,回写到基址寄存器;W=0时,基址寄存器的值保持原值。
基址寄存器先与偏移量加或减得到存储器地址,再传送数据,称为先索引方式,用指令中P=1指定;直接以基址寄存器内容作为存储器地址,访问存储器传送数据后,再执行基址寄存器加或减偏移量操作,称为后索引方式,用指令P=0指定。
10.简述ARM LDM/STM指令堆栈操作中空、满、递增、递减的含义。
答:堆栈指针指向栈中最后一项;堆栈指针指向栈中下一个可用空间;STM指令使堆栈向
存储器地址增大方向生长;STM指令使堆栈向存储器地址减少方向生长。
11.简述ARM软件中断指令编码格式中bit[23:0]的通常含义。
答:指令中的低24位bit[23:0]被称为中断立即数,被处理器忽略,但是可以用来给管理方式的代码传送信息。
12.简述ARM协处理器指令如何指定协处理器和协处理器的寄存器、如何指定协处理器的操作。
答:CDP中用p#指定协处理器,将执行<expression1>域规定的对cn和cm的操作,结果存cd。
LDC、STC中用CP#域用于标识协处理器号,只有与这个域的内容相匹配的协处理器,才提供数据或访问数据。
CRd域和N位信息用于协处理器,不同的协处理器可能以不同的方法解释,但是习惯上把CRd作为被传送的寄存器,N位用于选择两种传送数据长度的一种。
MRC、MCR指令中用p#用于指定于哪一个协处理器传送数据。
习惯上,<expression1>、<expression2> 域用来指定要求协处理器执行的操作,cn是协处理器寄存器,作为传送信息的源或目的;cm是协处理器第二个寄存器,它可能包含一些具体处理操作,取决于指定的特殊操作。
13.可以与协处理器寄存器交换数据的部件有哪些?答:存储器,CPSR,R15。
补充
1、什么是嵌入式系统?有何特点?
答:所谓嵌入式,实际上是“嵌入式计算机系统”,的简称,它是相对于通用计算机系统而言,注重于发展独立的单芯片技术。
嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。
特点:(1)嵌入式系统是将先进的计算机技术,半导体技术以及电子技术与各行业的具体应用相结合的产物,这一点就决定了他必然是一个技术密集,资金密集,高度分散,不断创新的知识集成系统。
(2)系统内核小 (3)专用性强(4)系统精简(5)系统软件要求(6)嵌入式软件开发要走向标准化,需要使用多任务的操作系统。
(7)嵌入式系统本身并不具备在其上进行进一步开发的能力。
2、举例在你的身边常见到的嵌入式系统产品,谈一谈你对“嵌入式系统”的初步理解。
答:产品有:洗衣机,空调,手机。
嵌入式系统就是内置小计算机系,可以对机器进行智能控制的系统。
3、嵌入式系统的3个基本特点?
答:(1)专用性(2)嵌入型(3)计算机系统
4、什么是嵌入式处理器,嵌入式处理器可以分为几大类?
答:嵌入式处理机是嵌入式的核心,是控制,辅助系统运行的硬件单元。
分类:四大类(1)嵌入式微处理器(2)嵌入式微控制器(3)嵌入式DSP处理器(4)SoC片上系统
5、广泛使用的三种类型的操作系统?
答:多道批处理操作系统、分时操作系统以及实时操作系统。
6、列举常见的4种嵌入式操作系统?说明你对嵌入式操作系统的基本认识,嵌入式
操作系统在嵌入式系统开发中的必要性。
答:嵌入式Linux、Win CE、VxWorks、μC/OS-II
没有操作系统的计算机效率十分底下,把操作系统嵌入到计算机中,可以提高
系统的可靠性,开发效率,缩短了开发周期。
1、 ARM是什么样的公司?
答:它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的 RISC 处理器。
特点是只设计芯片,而不生产。
它将技术授权给世界上许多著名的半导
体、软件和OEM厂商,并提供服务。
2、什么是RISC?什么是CISC?
答:RISC是精简指令集计算机的缩写。
CISC是复杂指令集计算机的缩写。
3、举出2个ARM公司当前应用比较多的ARM处理器核?
答:ARM7系列、ARM9系列、ARM10系列、ARM11系列、intel的Xscale系列和MPCore 系列。
4、 ARM7TDMI中的T、D、S、I分别表示什么含义?
答:T:支持高密度16位的Thumb指令集
D:支持片上调试
S:ARM7TDMI 的可综合(synthesizable)版本(软核) I:支持EmbededICE观察硬件 M:支持64位乘法
5、 ARM7TDMI处理器采用什么样的体系结构,其可寻址地址空间多大?
答:ARM处理器使用冯.诺依曼结构
使用单个平面的232个8位字节地址空间。
地址空间可以看作是包含230个32位字,
或231个16位半字。
7、 ARM处理器哪几种状态和模式?
答:共7种。
(1)用户模式(2)快速中断模式(3)外部中断模式(4)管理模式(5)数据访问中断模式(6)系统模式(7)未定义指令模式
8、简述ARM处理器两种状态的应用特点。
答:ARM状态:处理器执行32位字对齐方式的ARM指令,每条ARM指令长度为32位,指令的功能强大,处理器默认为此状态。
Thumb状态:处理机执行16位半字对齐方式的Thumb。
每条Thumb指令长度为16位,是ARM指令功能的子集。
9、简述ARM处理器7种模式的应用特点。
答:(1)用户模式:ARM处理器正常的程序执行模式。
(2)快速中断模式:用于高速数据传输或通道处理。
(3)外部中断模式:用于通用的中断处理。
(4)管理模式:操作系统使用的保护模式。
(5)数据访问中断模式:当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
(6)系统模式:运行具有特权的操作系统任务。
(7)未定义指令模式:当未定义的指令执行时进入该模式,可用于支持硬件处理器的软件仿真。
10、结合CPSR的结构,说明其中的M[4:0]的作用和T位的作用。
答:M[4:0]是模式控制位,这些位决定处理器的工作模式。
T位:T位标志控制处理器按照ARM指令集运行,还是按照Thumb指令集运行。
11、结合CPSR的结构,说明其中的I位和F位的作用。
答:I位和F位都是中断禁止标志位,用来时能或禁止ARM的两种外部中断。
15、简述ARM处理器的CPSR和SPSR的功能、作用和工作方式。
答:CPSR是当前状态寄存器,他可以在任何运行模式下被访问,它包括条件标志位,中断标志位,当前处理器模式标志位,以及其他的一些相关的控制盒状态位。
ARM内核就是通过使用CPSR来监视和控制内部操作的。
SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。
16、简述ARM7的内部寄存器R13、R14、R15的主要功能、作用和工作方式。
答:R13作为堆栈指针SP,用于指定堆栈操作出入口的地址。
其他6个R13寄存器为堆栈
寄存器。
为用户模式和系统模式共用一个。
R14可以用作通用寄存器,也可以用作链接寄存器。
链接寄存器用于保存子程序地址或者返回地址。
R15:程序寄存器,总是指向正在“取指”的指令
17、什么是计算机的寻址方式?ARM有几种寻址方式?
答:寻址方式是根据指令编码中给出的地址码字段来寻找真实操作数的方式。
寄存器寻址、立即寻址、寄存器间接寻址、基址加偏移寻址寻址、块拷贝寻址、堆栈寻址、相对寻址。
18、什么是堆栈?ARM中的堆栈是如何定义和使用的?
答:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。
ARM处理器将R13作为堆栈指针SP,用于保存堆栈的出入口处地址。
19、何谓存储的“大端模式”、“小端模式”?写出数据0x12345678在0x20000000字单元中“小端模式”下的存储细节。
答:大端模式:按照数据的低字节存放在高地址中的顺序进行存储。
小端模式:按照数据的高字节存放在高地址中的顺序进行存储。
0x20000000存放0x78,0x20000001存放0x56,0x20000002存放0x34 0x20000003存放0x12。
20、什么是“字对齐”和“半字对齐”?ARM指令必须字对齐存放,Thumb指令必须半字对齐存放,这句话正确吗?
答:如果一个字数据的访问存储地址A能被4整除,即地址的低两位为零,则为字对齐的存储器访问。
如果一个半数据的访问的存储地址A能被2整除,即地址的最低位为零,则为半字对齐的存储器访问,
如果Thumb状态下将一个非字对齐的地址写入PC,则数据在写入PC时第 0位被忽略,最终PC的bit0为0,将会产生不可预料的结果。
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
1、 ARM7TDMI支持哪几种指令集,各有什么特点?
答:支持ARM指令集和Thumb指令集两种。
ARM指令集:指令32位,效率高,代码密度低,所有ARM指令都是可以有条件执行的。
Thumb指令集:指令16位,代码密度较高,Thumb指令仅有一条指令具备条件执行功
2、 ARM汇编指令的基本格式?
答:基本指令:
在ARM指令集中,每条指令占有4个字节,即指令长度为32位。
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用于系统功能调用。
15、设计编程:LPC2131的P0[1:0] 两引脚分别连接了2个按键K1和K4;P0[7:6] 两引脚分别连接了2个指示灯LED1和LED2;请编制驱动程序,使Kx 按键时,LEDx 灯亮。
答:
#define k1 1<<0
#define k2 1<<1
#define LED1 1<<7
#define LED2 1<<8
main() {
PINSEL0=0x00000000;
IO0DIR=IO0DIR & (~k1);
IO0DIR=IO0DIR & (~k2);
IO0DIR=IO0DIR|LED1;
IO0DIR=IO0DIR|LED2;
IO0CLR=IO0CLR|LED1|LED2;
While(1) {
If((IO0PIN & k1)==0) IO0SET=LED1;
else IO0SET=LED1;
If((IO0PIN & k2)==0) IO0SET=LED2;
else IO0SET=LED2; } }
16、名词解释:中断、中断源、中断优先级、中断屏蔽、中断向量、中断响应、中断控制。
答:中断:CPU在执行一个程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。
中断源:把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。
中断优先级:为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。
中断屏蔽:
中断向量:中断服务程序的入口地址。
中断响应:中断响应是当中央处理机发现已有中断请求时,中止,保存现行程序执行,并自动引出中断处理程序的过程。
中断控制:CPU能否暂停正在执行的中断服务程序,而转去执行为另一个中断源而编写的中断服务程序,如果另一个中断源的优先级高,CPU就暂停正在执行中断服务程序而转去执行为另一个中断源而编写的中断服务程序,否则,另一个中断源就不能打断正在执行的中断服务程序。
22.编写1+2+3+……+100的汇编程序。
AREA Block, CODE, READONL Y
ENTRY
start
mov r0,#0;
mov r1,#1
aga add r0,r0,r1
add r1,r1,#1
cmp r1,#101
bne aga
MOV r0, #0x18 ;
angel_SWIreason_ReportException
LDR r1, =0x20026 ;
ADP_Stopped_ApplicationExit
SWI 0x123456
END
23.如何实现128位数的减法,举例说明。
AREA Block, CODE, READONL Y
ENTRY
start
ldr r1,=num1
ldr r2,=num2
ldr r3,=result
ldr r4,[r1],#4
ldr r5,[r2],#4
subs r0,r4,r5
str r0,[r3],#4
ldr r4,[r1],#4
ldr r5,[r2],#4
sbcs r0,r4,r5
str r0,[r3],#4
MOV r0, #0x18 ;
angel_SWIreason_ReportException
LDR r1, =0x20026 ;
ADP_Stopped_ApplicationExit
SWI 0x123456
AREA BlockData, DA TA, READWRITE
Num1 DCD 55,66,77,88
Num2 DCD 11,22,33,44
result DCD 0,0,0,0
END
24.将存储器中起始地址M1处的4个字数据,移动到地址M2处。
(LDM/STM实现)
ldr r1,=m1
ldr r2,=m2
ldmia r1!,{r3-r6}
stmia r2!,{r3-r6}
30.读下面一段程序,试分析其功能。
EORS R4,R0,R1 BPL K MOV R3,0 B END0 K MVN R0,R0 MOV R3,R0 END 0 ……
功能:判R0和R1中的数据是否同号,若是,则把R0中的数据取反并送到R3中,否则O →R3。
31.读下面一段程序,试分析其功能。
LDR R0,X+2 | BGT L1
LDR R1,X | CMP R1,R3
LDR R2,Y+2 | BLS L2
LDR R3,Y | L1 MOV R4,1
ADDS R1,R1,R1 | B EXIT
ADC R0,R0,R0 ;求2P(R0:R1) | L2 MOV R4,2
CMP R0,R2 |EXIT SWI 0x123456;结束程序
BLT L2 |
功能:若2x>y 则R4=1;若 2x<=y 则R4=2
33.已知数据段中的整数数组x和y,试以冒泡算法将x中的数按从大至小的顺序排序,并存入y数组。
AREA BlockData, DA TA, READWRITE
x DCD
1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
y DCD
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
34.有100个有符号的字数据,存放在内存BUFF中,编完整的程序(包括代码段、数据段)找出最大值、最小值分别放入内存单元MAX、MIN中。
AREA Block, CODE, READONL Y
ENTRY
start
ldr r0,=BUFF;
mov r1,#100
ldr r4,[r0];max
ldr r5,[r0];min
cmpe ldr r3,[r0]
cmp r4,r3
bgt cmpnext;
mov r4,r3;小于等于
cmpnext
cmp r5,r3
blt loop
Mov r5,r3; 小于
loop add r0,r0,#4
sub r1,r1,#1
cmp r1,#0
bne cmpe
ldr r0,=MAX;
str r4,[r0]
ldr r0,=MIN;
str r5,[r0]
MOV r0, #0x18 ;
angel_SWIreason_ReportException
LDR r1, =0x20026 ;
ADP_Stopped_ApplicationExit
SWI 0x123456
AREA BlockData, DA TA, READWRITE
BUFF DCD
1,-2,3,4,5,6,7,-8,1,2,3,4,5,6,7,8,1,2,3,12
MAX DCD 0
MIN DCD 0 END ........忽略此处.......。