武汉理工大学2010期末(A卷)嵌入式试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程:嵌入式系统应用班级学号:姓名:
题号一二三四五六七八九十合计
题分
一.选择题(每题2分,共20分)
1. 在嵌入式系统的存储结构中,存取速度最快的是。
A. 内存
B. 寄存器组
C. Flash
D. Cache
2.下面哪种操作系统不属于商用操作系统。
A. windows xp
B. Linux
C. VxWorks
D. WinCE
3. 在ARM处理器中,寄存器包括全局的中断禁止位,控制中断禁止位就可以打
开或者关闭中断。
A. CPSR
B. R1
C. PC
D. IR
4. 嵌入式系统应用软件一般在宿主机上开发,在目标机上运行,因此需要一个
环境。
A. 交叉开发
B. RTOS
C. 交互平台
D. 分布式计算
5. 0x17&0x11的运算结果是。
A.0x01
B. 0x11
C. 0x17
D. 0x07
6. ARM7的异常中断优先级中,最高优先级为。
A. 预取指异常中止
B. 复位
C. 数据异常中止
D. FIQ
7. 以下哪个指令能够完成从ARM指令集跳转到Thumb指令集:。
A. BX指令
B. B指令
C. BL指令
D. SWI指令
8. 以下的哪个说法是正确的。
A. 移植操作系统时需要修改操作系统中与处理器直接相关的程序
B. 嵌入式开发不需要硬件支持
C. 所有的电子设备都属于嵌入式设备
D. 嵌入式系统必须有操作系统
9. 为了提高嵌入式软件的可移植性,应注意提高它的。
A. 易用性
B. 简洁性
C. 可靠性
D. 设备无关性
10. 把堆栈数据出栈到R0的指令为。
A. 指令STR SP!, R0
B. 指令LDR SP!, R0
C. 指令STR R1! , R0
D. 指令LDR R1! , R0 二.填空题(每题1分,共20分)
1. LDR R0,[R1,#4]!的运行结果:R0为,R1为。
2. ARM7采用了指令流水线,ARM9采用了指令流水线。
3. 在ARM7体系结构下,当执行指令A(地址0x8000)时,PC等于。
4. ARM处理器支持和指令集。
5. ARM7TDMI的T、D、M、I具体含义分别是、、、。
6. 嵌入式微处理器可以分为3类:、、。
7. ARM7TDMI内核拥有和两种中断。
S3C4B0X芯片中可接收个中断源的中断请求,当有多个中断同时发出中断请求时,根据进行处理,为了解决中断反映时间过长,芯片中采用了中断模式。
三.简答题(每题5分,共10分)
1. S3C44B0X的存储器控制器对地址空间是如何划分的?每个地址空间为多大?哪
些地址空间可变用于SDRAM存储器?
2. ARM的处理器内核有几种工作模式,其中哪些为特权模式?
四.写出下列英文缩写的中文含义。
(每词2分,共10分)
MCU RTOS SOPC UART IDE
五.程序阅读(每题10分,共20分)
1. 阅读下面这段程序,说明程序实现的功能,以及从wordcopy标号起,后面的四行代码具体的功能。
(10分)
.global _start
.text
.equ num 20
ENTRY
_start
LDR r0, =src
LDR r1, =dst
MOV r2, #num
wordcopy
LDR r3, [r0], #4
STR r3, [r1], #4
SUBS r2, r2, #1
BNE wordcopy
stop
MOV r0, #0x18
考试试题纸(A卷)
LDR r1, =0x20026
SWI 0x123456
.data /*定义该段为数据段*/
.long src 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
.long dst 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.end
2.下面这段程序为串口通讯程序中的一部分,说明程序的实现的功能,以及标有数字的四行代码具体的功能。
(10分)
while(1)
{
while((rUTRSTAT0 & 0x1)==0x0); /* 1 */
data = rURXH0; /* 2 */
if(data=='\r')
{
while(!(rUTRSTAT0 & 0x2));
rUTXH0 = data;
while(!(rUTRSTAT0 & 0x2));
rUTXH0 = '\n';
}
else
{
while(!(rUTRSTAT0 & 0x2)); /* 3 */
rUTXH0 = data; /* 4 */
}
}
六.编程序(每题10分,共20分)
1. 下面给出中断程序中主函数一部分,要求填写相关代码实现外部中断1。
编写外部中断服务程序,其函数名为ext1_isr,并且在中断服务函数中利用“*(unsigned char*)0x2000000=0x0F”语句实现亮灯的功能。
int Main()
{
int old_index ;
rINTCON=0x7; /* Non-vect,IRQ disable,FIQ disable */ rINTMOD=0x0; /*设置所有中断为IRQ模式*/
rINTCON=0x5; /*Non-vect,IRQ enable,FIQ disable */
init_interrupt_handler((unsigned int)IsrIRQ);
(1)
(2)
ext0_count = 0;
dither_count = 0;
while(1)
{
delay();
dither_count++;
}
}
2. 系统中有一个数码管,连接图如图一所示,地址0x200000为数码管的数据寄存器。
原理图二给出了相关的电路图。
(1)此接法为什么接法,什么电平使选中的LED 灯亮?(2)编写C语言程序实现在数码管上依次显示“PLA”。
图一LED结构及连接图
图二数码管原理图
嵌入式系统应用试卷A答案
一.选择题(每题2分,共20分)
1. B
2. B
3. A
4. A
5. B
6. B
7. A
8. A
9. D 10. B
二.填空题(每题1分,共20分)
1. [R1+4] R1+4
2. 3级5级
3. 0x8008
4. ARM Thumb
5. T:“Thumb”16位压缩指令集;D:支持片上Debug(调试),使处理器能够停止以响应调试请求;M:增强型Multiplier,与前代相比具有较高的性能且产生64位的结果;I:“EmbeddedICE”硬件以支持片上断点和观察点
6. 嵌入式微处理器嵌入式控制器MCU 嵌入式DSP
7. FIQ IRQ 中断控制器30 中断优先级矢量/向量
三.简答题(每题5分,共10分)
1. S3C44B0X中的地址空间包括8个地址空间,每个地址空间最大可为32M,其中
Bank6和Bank7两个地址空间可变并可于SDRAM存储器。
2. 答:ARM微处理器支持7种运行模式,分别为:用户模式;快速中断模式;外部中
断模式;管理模式;数据访问终止模式;系统模式;未定义指令中止模式。
除用户模式外,都为特权模式。
四.写出下列英文缩写的中文含义。
(每词2分,共10分)
MCU--Micro Controller Unit 微控制器单元
RTOS—Real Time Operating System 实时操作系统
SOPC—System On Programmable Chip 可编程片上系统
UART—Universal Asynchronous Receiver/Transmitter 通用异步收/发器IDE—Integrate Development Environment 集成开发环境
五.程序阅读(每题10分,共20分)
1. 完成数据块的复制
LDR r3, [r0], #4 /* 从源数据块中拷贝一个数据到r3 */
STR r3, [r1], #4 /* 把数据存储到目的区域*/
SUBS r2, r2, #1 /* 减小计数值*/
BNE wordcopy /* 判断拷贝数据是否完成,否则继续拷贝*/ 2. 从串口接收数据,再传回给PC
while((rUTRSTA T0 & 0x1)==0x0); /* 等待数据*/
data = rURXH0; /* 读取数据*/
while(!(rUTRSTA T0 & 0x2)); /* 等待发送缓冲空.*/
rUTXH0 = data; /* 将数据写到数据端口*/
六.编程序(每题10分,共20分)
1.
(1) install_isr_handler(HandleEINT1, (void*)ext1_isr);
(2) rINTMSK=(0x07ffffff&~(BIT_GLOBAL|BIT_EINT1));
(3)
void EINT0_Isr()
{
rI_ISPC=BIT_EINT0;/* 清除中断标志*/
*(unsigned char*)0x2000000=0x0F
}
2.
(1)共阳极接法,低电平时数码管亮
(2)
#define U8 unsigned char
static int delayLoopCount=1000;
unsigned char seg7table[3] =
{
0x0C,0x47,0x08 //如果考虑dp点,数值可以为0x8c, 0xc7, 0x88 };
void Delay(int time);
void Test_Seg7(void);
void Test_Seg7(void)
{
int i;
for( ; ; )
{
/* 数码管依次将字符显示出来*/
for(i=0;i<2;i++)
{
/* 查表并输出数据*/
*((U8*) 0x02000000) = seg7table[i];
Delay (1000);
}
}
}
void Delay(int time)
{
int i;
for(;time>0;time--)
for(i=0;i<delayLoopCount;i++);
}
void Main()
{
Test_Seg7();
}。