ARM嵌入式期末考试试题.docx
《ARM嵌入式期末考试试题.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式期末考试试题.docx(6页珍藏版)》请在冰点文库上搜索。
一、选择题(共5)
1、下面哪个不是嵌入式操作系统的特点。
(C)
A.内核精简 B.专用性强 C.功能强大D.高实时性
2、ARM指令集合Thumb指令集分别是(D)位的。
A.8,16 B.16,32 C.16,16 D.32,16
3、FIQ中断的入口地址是(A)
A.0x0000001CB.0x00000008 C.0x00000018D.0x00000014
4、ADDR0,R1,#6,执行该指令时属于(A)寻址方式。
A.立即寻址B.多寄存器寻址C.寄存器直接寻址D.相对寻址
5、寄存器R13除了可以用作通用寄存器之外,还可以作为(B)
A.程序计数器B.堆栈指针寄存器C.链寄存器D.基址寄存器
6、一个32位字0x12345678,在采用bigEndian存储,在内存的排列正确的 是(B)
A.78563412 B.12345678C.87654321D.21436587
二、填空题(共5个)
1、嵌入式系统体系结构一般具有冯.诺依曼和哈佛两种基本形式,且ARM7采用冯.诺依曼体系结构。
2、从编程角度看,ARM微处理器一般有ARM和Thumb两种工作状态。
3、ARM9处理器使用了程序存储器和数据存储器分开独立编址的哈佛结构,并采用5级指令流水线,5级流水线操作分别是取指、译码、执指、缓冲和写回。
4、ARM微处理器支持字节、半字、字三种数据类型,数据的位数分别为8位、16位、32位,其中字必须以4字节为边界对齐,半字必须以2字节为边界对齐。
5、复位异常的优先级最高,因此在任何情况下,只要进入该状态系统无条件地将PC指向0x00000000处,以执行系统第一条指令。
三、判断题(共5个)
1、ARM7采用3级指令流水线,即取指令、译码和执行指令。
(√)
2、BootLoader是在操作系统内核运行之前运行的一段小程序。
(√)
3、嵌入式系统开发环境只需要宿主机和目标机就可以。
(×)
4、ARM指令中“%”后面的数字为十进制数。
(×)
5、无论何种模式下R15均作为PC使用。
(√)
6、ATPCS中的参数传递规则只能使用寄存器R0-R3来进行参数的传递。
(×)
7、在C语言程序中调用汇编语言程序的方法是使用EXTERN关键字。
(√)
8、Char*a[5];是数组指针的声明格式。
(×)
9、指令ADDRd,Rn,#3和指令ADDRd,Rn,Rm的寻址方式不同。
(√)
10、指令MULR1,R1,R6是正确的。
(×)(因为目标寄存器R1不能同时做第一操作数)
四、写出下列简称的含义(共5个)
1、MMU:
存储管理单元
2、SOC:
嵌入式片上系统
3、RISC:
精简指令集计算机
4、EDSP:
嵌入式数字信号处理器
5、IDE:
集成开发环境
6、IRQ:
外部中断请求
7、ICE:
实时在线仿真器
8、CPSR:
当前程序状态寄存器
9、IPC:
内部进程间通信
10、MCU:
微控制单元
五、简答题(共3个)
1、ARM体系结构的技术特点是什么?
答:
(1)单调周期操作
(2)采用加载/存储指令结构(执行速度快)
(3)固定32位指令(结构简单、效率高)
(4)地址指令格式(三地址指令格式,优化代码)
(5)指令流水线技术(提高执行效率)
2、为什么要使用Thumb模式?
与ARM代码相比较,Thumb代码的两大优势是什么?
如何完成Thumb指令模式和ARM指令模式之间的切换?
答:
ARM体系结构除了支持执行效率很高的32位ARM指令集以外,为兼容数据总线宽度为16位的应用系统,也支持16位的Thumb指令集。
Thumb指令集是ARM指令系统的一个子集,允许指令编码的长度为16位。
与等价的32位代码相比较,Thumb指令集在保留32位代码的优势的同时,大大节省系统的存储空间。
由ARM状态切换到Thumb状态通过BX指令,当操作数寄存器的最低位为1时,可执行BX指令使微处理器进入Thumb状态;当操作数寄存器的最低位为0时,可执行BX指令使微处理器进入ARM状态。
3、具体说明ARM7TDMI中的T、D、M和I代表什么?
答:
ARM7TDMI是ARM7系列成员中应用最为广泛的32位高性能嵌入式RISC
处理器内核,其中T表示支持高密度16位的Thumb指令集,D表示支持片上 调试,M代表支持64位乘法,I表示支持EmbededICE调试硬件。
4、ARM存储字数据有两种方式,即大端格式和小端格式,如有一个32位字0x12345678存放的起始地址为0x00040000,在两种格式下分别如何存放?
并计算机通常情况默认为什么格式?
答:
大端格式:
32位字数据的高字节存储在低地址,而字数据的低字节存放在高地址中,0x00040000—0x00040003分别存放0x12,0x34,0x56,0x78
小端格式:
32位字数据的高字节存储在高地址,而字数据的低字节存放在低地址中,0x00040000—0x00040003分别存放0x78,0x56,0x34,0x12
系统初始化时默认为小端格式。
5、ARM程序可以使用两种语言进行设计,一种是汇编语言,一种是C/C++语言,则汇编语言和C/C++语言各自的特色是什么?
汇编语言特点:
程序执行速度快,程序代码生成量少,但是可读性差,汇编语言属于低级语言,在通常情况下可以使用汇编语言编写驱动程序、需要严格计算执行时间的程序以及需要加速执行的程序。
C/C++语言:
是高级语言,能够快速的编写应用程序,有丰富的程序库支持,程序易编写,具有结构化,程序可读性强,易于修改,便于调试和维护。
6、ARM7种功能模式是什么?
答:
(1)用户模式:
正常用户模式,程序正常执行模式。
(2)FIQ模式:
处理快速中断,支持高速数据传送或通道处理。
(3)IRQ模式:
处理普通中断。
(4)SVC模式:
操作系统保护模式,处理软件中断。
(5)中止模式:
处理存储器故障,实现虚拟存储器和存储器保护。
(6)未定义模式:
处理未定义的指令陷阱,支持硬件协处理器的软件仿真。
(7)系统模式:
运行特权操作系统任务。
7、ARM对异常中断的响应过程:
(1)保存处理器当前状态、中断屏蔽位以及各条件标志位;
(2)设置当前程序状态寄存器CPSR中的相应位;
(3)将寄存器lr_mode设置成返回地址;
(4)将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应 异常中断处执行。
六.程序指令题
1、解释指令的含义
(1)ORRR0,R2,#0x0FF0000
把R2和数字常量相或,结果赋给R0。
(2)LDRR0,[R1,#4]
表示寄存器R1的值加上4作为操作数的有效地址,将取得的操作数存入寄 存器R0中。
(R0<-[R1+4])
(3)LDRR0,[R1,#4]!
表示寄存器R1的值加上4作为操作数的有效地址,将取得的操作数寄存器 R0,再将寄存器R1的值增加4.(R0<-[R1+4],R1<-R1+4)
(4)STRR0,[R1],#8
将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。
(5)SWPR0,R0,[R1]
将R1所指向的存储器中的字数据与R0中的字数据交换。
2、完成程序-------实验题目
功能:
将数据从源数据区snum复制到目标数据区dnum,数据的个数为num,复制时以4个字为单位进行。
对于最后所剩不足4个字的数据,以字为单位进行复制。
.global_start
.text
.equnum,20
_start:
.arm
movsp,#0x400
adrr0,Tstart+1
bxr0
.thumb
Tstart:
ldrr0,=src
ldrr1,=dst
movr2,#num/*将需要复制的字数据个数存放在R2*/
Blockcopy:
movr3,r2,lsr#2
beqCopywords
push{r4-r7}
Quadcopy:
ldmiar0!
{r4-r7}
stmiar1!
{r4-r7}
subr3,#1
bneQuadcopy
pop{r4-r7}
Copywords:
movr3,#3
andr2,r3
beqstop
Wordcopy:
ldmiar0!
{r3}
stmiar1!
{r3}
subr2,#1A
bneWordcopy
stop:
bstop
.align
src:
.long1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
dst:
.long0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
要求:
注释上面的代码