《嵌入式系统》考试试卷
班级 姓名 学号
题号 | 一 | 二 | 三 | 四 | 总得分 | 评卷人 | 审核人 |
得分 |
1、 完全把系统软件和硬件部分隔离开来,从而大大提高了系统的可移植性。
A. 图形用户接口 B. 驱动映射层 C. 硬件交互层 D. 硬件抽象层
2、实时操作系统(RTOS)内核与应用程序之间的接口称为 。
A. 输入/输出接口 B. 文件系统 C. API D. 图形用户接口
3、为了提高嵌入式软件的可移植性,应注意提高它的 。
A. 易用性 B. 简洁性 C. 可靠性 D. 设备无关性
4、在ARM处理器中, 寄存器包括全局的中断禁止位,控制中断禁止位就可以打开或者关闭中断。
A. CPSR B. SP C. PC D. LR
5、下面 特性不符合嵌入式操作系统特点。
A. 实时性 B. 不可定制 C. 微型化 D. 易移植
6、在嵌入式系统的存储结构中,存取速度最快的是 。
A. 内存 B. 寄存器组 C. Flash D. Cache
7、处理机主要由处理器、存储器和总线组成,总线包括 。
A. 数据总线、串行总线、逻辑总线、物理总线
B. 并行总线、地址总线、逻辑总线、物理总线
C. 并行总线、串行总线、全双工总线
D. 数据总线、地址总线、控制总线
8、若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要 △t。
A. 1190 B. 1195 C. 1200 D. 1205
9、如上题,如果按照三级流水线方式执行,执行完100条指令需要___△t。
A. 504 B. 507 C. 508 D. 510
10、通常所说的32位微处理器是指
A.地址总线的宽度为32位 B. 处理的数据长度只能是32位
C. CPU字长为32位 D. 通用寄存器数目为32个
11、在CPU和物理内存之间进行地址转换时, 将地址从虚拟地址空间映射到物理地址空间
A. TCB B. MMU C. CACHE D. DMA
12 以下叙述中,不符合RISC指令系统特点的是___
A 指令长度固定,指令种类小
B 寻址方式种类丰富,指令功能尽是增强
C 设置大量通用寄存器,访问存储器指令简单
D 选择使用频率较高的一些简单指令
13、嵌入式系统应用软件一般在宿主机上开发,在目标机上运行,因此需要一个 环境。
A. 交互操作系统 B. 交叉编译 C. 交互平台 D. 分布式计算
14、在ARM下列指令中错误的是__
A MOV R1,#128 B MOV R1,0x3fc
C LDR R1,=0x1128 D LDR R1,0x3f
15、在指令系统的各种寻址方式中,获取操作数最快的方式是___。
A. 直接寻址 B. 立即寻址 C. 寄存器寻址 D. 间接寻址
二、分析题(共15分)
1、已知地址0x80018,0x80014,0x80010中分别存放数据0x01,0x02,0x03其中r0=0x00080010, r1=0x00000000, r2=0x00000000, r3=0x00000000
执行指令 LDMIA r0, {r1-r3}后,写出r0,r1,r2,r3的值?(5分)
LDMIA r0, {r1-r3},就是将R1<-[R0] R1中的值为0x03
R2<-[R0+4] R2中的值为0x02
R3<-[R0+8] R3中的值为0x01
R0中的值为0x03
R0为0x10
2.将如下的程序代码中的斜体加粗部分用汇编语言代替,实现混合编程(5分)
*((U8*) 0x10000006) = 0x00;
for(i=0;i<0x10;i++)
{
__asm__("ldr r5,=0x10000006");
__asm__("ldr r8,=0x00 ");
__asm__("strb r8,[r5]");
Delay (100000);
}
*((U8*) 0x10000004) = seg7table[i];
__asm__("ldr r6,=seg7table");
for(i=0;i<0x10;i++)
{
__asm__("ldr r5,=0x10000004");
__asm__("ldr r8,[r6],#0x01");
__asm__("strb r8,[r5]");
Delay (100000);
}
3、取你学号的后两位数,以二进制格式写入如图的第二行中,完成任务就绪表,问:你的学号=33,OSRdyTbl[1]=100001b(二进制数),OSRdyGrp=94(十进制数) ,并计算出当前最高优先级的值8(5分)
三、编程题:(20分)
针对JXARM9-2410实验箱,在我们所做的外部中断实验中,假设,编译后,文件2410init.s中标号IsrIRQ内存地址为0x300006,外部中断3的中断服务函数eint3_isr的首地址为0x30000888,且定义.EQU _ISR_STARTADDRESS, 0x33fffe84,(是你学号的后两位乘以4后的十六进制数),其余代码不变,分析2410init.s代码回答下列问题:
HandleIRQ=0x33fffe84+0x18=0x33fffe9c [HandleIRQ]= 0x300006外部中断3的中断向量地址=0x33fffe84+0x2c=0x33fffeb0外部中断3的中断向量地址中的内容=0x30000888
四、问答题(35分)
1、在嵌入式系统中,Bootloader有何功能,启动代码功能是什么?
两者有何关系?在我们所做的带有中断功能的实验中,能否把启动代码去掉,为什么(10分)
答:功能
硬件初始化
引导操作系统
下载程序
烧写flash
启动代码主要是设置入口指针、中断向量、初始化存储系统、REMAP部分、初始化堆栈以及必要的I/O和C语言所需的存储器空间、呼叫C程序。
启动代码 功能
硬件初始化
引导C代码
启动代码相当于bootloader的第一个阶段。
不能删除启动代码,因为启动代码中实现设置中断向量的功能,中断向量表设置在从0x00开始连续8*4字节的空间。
2、ARM的寄存器组织是怎样的?并说明R13、R14、PC(R15)有何特殊作用(15分)
ARM微处理器共有37个32位寄存器,其中31个通用寄存器,6个为状态寄存器。但是这些寄存器不能同时被访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R0~R14、程序计数器PC、一个或两个状态寄存器都是可访问的。
ARM的通用寄存器包括R0~R15,可以分为3类:未分组寄存器R0~R7、分组寄存器R8~R14、程序寄存器PC(R15)。程序状态寄存器包含一个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器(SPSR)。CPSR可在任何运行模式下被访问,它包括条件码标志位、中断禁止位、当前处理器模式标志位,以及其他一些的控制和状态位,备份的程序状态寄存器用来进行异常处理。
寄存器R13在ARM指令中常用作堆栈指针,用户也可以使用其他的寄存器作为堆栈指针。而在Thumb指令中,某些指令强制性要求使用R13作为堆栈指针。
R14也称作子程序链接寄存器或连接寄存器LR。当执行BL子程序调用指令时,从R14中得到R15(程序计数器PC)的备份。
程序计数器PC(R15)在ARM状态下,R15[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC;虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊。
3、什么是嵌入式系统?嵌入式系统的特点是什么?在嵌入式系统中会不会出现象微软和英特尔那样的行业巨头,谈谈你的观点(10分)
嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适用于对系统的功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
广义上讲,凡是带有微处理器的专用软硬件系统都可称为嵌入式系统。如各类单片机和DSP系统。这些系统在完成较为单一的专业功能时具有简洁高效的特点。
从狭义上讲,更加强调那些使用嵌入式微处理器构成系统,具有自己操作系统,具有特定功能,用于特定场合的嵌入式系统。
特点是:
(1)系统内核小
由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。
(2)专用性强
嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。不同的任务,往往需要对系统进行较大更改。
(3)高实时性的操作系统
这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。
(4)嵌入式系统需要开发工具和环境
其本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
应该不会出现象微软和英特尔那样的行业巨头,因为嵌入式系统的特点有一条为专业性强,软件系统和硬件系统的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化的增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大的更改。