hqyj-arm接口随堂试题-及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hqyj-arm接口随堂试题-及参考答案
ARM 接口试题(时间:1个小时)
姓名:【姓名】
一、选择题(每空1分,共37分,包括单选和多选,多选、少选均不得分)
1.ARM 属于【A】
[A] RISC 架构[B] CISC架构
2.ARM A9 指令集是【C】位宽,Thumb 指令集是【B】位宽的。
[A] 8位[B] 16 位[C] 32位[D] 64位
3.ARMA9 指令集是【D】字节对齐,Thumb 指令集是【B】对齐的
[A] 1[B] 2 [C] 3 [D] 4
4.复位后,ARM处理器处于【B】模式,【D】状态
[A] User[B] SVC [C] System [D] ARM [E] Thumb
5.ARM A9处理器总共【E】个寄存器,System模式下使用【A】个寄存器,SVC模式下使
用【B】个寄存器。
[A] 17个[B] 18个[C] 30个[D] 37个[E] 40个
6.ARM处理器中优先级别最高的异常为【D】,【B】异常属于硬件产生的中断
[A] SWI [B] IRQ [C] SVC [D] RESET
7.ARM数据处理指令中有效的立即数是【ACEGH】
[A] 0X00AB0000[B] 0X0000FFFF [C ] 0XF000000F [D ] 0X8000012
[E] 0X00001F80 [F] 0XFFFFFFFF [G] 0 [H] 0XFF000000
8.ATPCS规定中,推荐子函数参数最大为【D】个
[A] 1[B] 2 [C ] 3 [D ] 4
9.ATPCS规定中,栈是【B】
[A] 满加[B] 满减[C ] 空加[D ] 空减
10.在用ARM汇编编程是,其寄存器有多个别名,通常PC是指【D】,LR 是指【C】,SP
是指【B】
[A] R12[B] R13 [C ] R14 [D ] R15
11.CPSR寄存器中反映处理器状态的位是【D】
[A] J位[B] I位[C ] F位[D ] T位
12.下面属于ARM 子程序调用指令的是【C】
[A] B[B] BX [C ] BL [D ] MOV
13.ARM7属于【A】结构,ARM9属于【B】结构。
[A] 冯.诺依曼[B] 哈佛
14.ARM7是【B】级流水线,ARM9是【C】级流水线。
[A] 1[B] 3 [C ] 5 [D ] 7
15.ARM中可以访问状态寄存器的指令是【CD】,能够访问内存的指令是【B】
[A] MOV[B] LDR [C ] MCR [D ] MRS
16.异步串口中数据位可以是【ABCD】
[A] 5[B] 6 [C ] 7 [D ] 8
17.EXYNOS4412异步串口的停止位可以是【AB】
[A] 0[B] 1 [C ] 2 [D ] 3
18.EXYNOS4412异步串口的收发端可以工作在哪种模式【ABC】
[A] 中断[B] DMA [C] 轮询
19.EXYNOS4412采用的是【D】核心
[A] ARM7TDMI[B] ARM9TDMI [C ] ARM926EJ-S [D ] Cortex-A9
20.在串行异步通讯中,发送端串口的TxD要和接收端串口的【B】相连接
[A] TxD[B] RxD [C ] nCTS [D ] nRTS
21.在嵌入式系统设计中可以通过【B】来采集变化的电压,可以用【C】来发出报警声
[A] DAC[B] ADC [C ] PWM [D ] Timer [E] RTC
22.异常向量表位置是否在0x0(【C】
[A] 是[B] 不是[C ] 不一定
23.以下属于DMA特点的有【AD】
[A] 占用CPU[B] 占用总线[C ] 不占用CPU [D ] 不占用总线
24.下面指令有问题的是【C】
[A] mov r1,r2 [B] mov r1,#0xfff0[C ] ldr r1,#0x1024[D ] ldr r1,=#0x1024
25.LDR R0, [R1], #4,如果R0初始值为0x100,R1初始值为0x200,0x200指向内容为0x500,
这条指令执行完成后对应R0,R1值是多少【C】
[A] 0x500 0x204[B] 0x200 0x504 [C ] 0x500 0x504 [D] 0x200 0x204
26. ARM异常和模式对应下面正确的是【ABCD】
[A] reset svc [B] swi svc [c] fiq fiq [d] data abort abort
27. 异常向量表可以存放什么【C】
[A] 异常处理函数地址[B] 异常处理函数[C] 异常处理函数跳转指令
28.FIQ的什么特点使得它处理的速度比IRQ快【ABC】
[A] FIQ优先级高于IRQ [B]FIQ位于向量表最后一个[C]FIQ私有寄存器多
二、简答题(共20分)
1. 简述ARM发生异常时,ARM核心会自动做哪些事情?从异常返回时,我们要做哪些事情?【】
答:当异常产生时:内核拷贝CPSR到SPSR中,设置适当的CPSR位,改变处理器状态进入ARM态,改变处理器模式进入相应的异常模式,设置中断禁止位禁止响应中断(如果需要),保存返回地址LR,设置PC为相应的异常向量。
返回时:从SPSR恢复CPSR,从LR 恢复PC。
2. 用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。
【】
答:假定低32位数存放在r0和r1里面,高32位数存放在r2和
r3里面。
加法:
ADDS r0, r0, r1
ADC r2, r2, r3
减法:
SUBS r0, r0, r1
SBC r2, r2, r3
6. 下列ARM 指令将做什么?【】
a) LDR r0,[r1,#6]
b) LDR r0, =0x999
答:a)将r1+6地址处的数据读出,保存到r0中,r1值不变
b)使用LDR伪指令将0x999这个地址存放到r0中
7.简述static和volatile 关键字的含义和作用。
【】
答:
stack:1、修饰函数内部静态变量,只会被初始化一次,而且变量存储在全局数据段中而不是函数栈中,所以其生命期会一直持续到程序退出
2、修饰全局变量和函数时,只能本文件使用,对外部文件不可访问
volatile:防止编译器优化,使处理器每次读取该变量的数据时都从内存读,而不是从缓存中读。
8. 简述EXYNOS4412的watchdog编程的主要步骤(功能实现复位,以伪代码方式答题)【】答:
1)设置看门狗中断操作,包括全局中断和看门狗中断使能及看门狗中断向量的定义,如果只是进行复位操作,这一步不用设置。
2)对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子、分频器的分频值,中断使能和复位使能等。
3)对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。
4)启动看门狗定时器。
void mydelay_ms(int time)
{
int i, j;
while(time--)
{
for (i = 0; i < 5; i++)
for (j = 0; j < 514; j++);
}
}
void do_irq(void)
{
static int a = 1;
int irq_num;
irq_num = CPU0.ICCIAR&0x3ff; //获取中断号
switch(irq_num)
{
case 57:
printf("in the irq_handler\n");
EXT_INT41_PEND = EXT_INT41_PEND |((0x1 << 1)); //清GPIO 中断标志位 ICDICPR.ICDICPR1 = ICDICPR.ICDICPR1 | (0x1 << 25); //清GIC中断标志位break;
case 75:
printf("in the WDT interrupt!\n");
WDT.WTCLRINT = 0;
ICDICPR.ICDICPR2 = ICDICPR.ICDICPR2 | (0x1 << 11); //清GIC中断标志位break;
}
CPU0.ICCEOIR = CPU0.ICCEOIR&(~(0x3ff))|irq_num; //清cpu 中断标志位
}
void wdt_init(void)
{
WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2)|(1 << 0);
WDT.WTDAT = 25000;
ICDDCR = 1; //使能分配器
ICDISER.ICDISER2 = ICDISER.ICDISER2 | (0x1 << 11); //使能相应中断到分配器ICDIPTR.ICDIPTR18 = ICDIPTR.ICDIPTR18 & (~(0xff << 24))|(0x1 << 24); //选CPU接口
CPU0.ICCPMR = 255; //中断屏蔽优先级
CPU0.ICCICR = 1; //使能中断到CPU
}
int main (void)
{
wdt_init();
printf("hello reset!\n");
while(1)
{
WDT.WTCNT = 25000; mydelay_ms(100);
}
return 0;
}。