嵌入式系统试题
一、 选择题
1、以下说法不正确的是( B )。
A、任务可以有类型说明 B、任务可以返回一个数值
C、任务可以有形参变量 D、任务是一个无限循环
2、ADD R0,R1,#3属于( A )寻址方式。
A. 立即寻址 B. 多寄存器寻址
C. 寄存器直接寻址 D. 相对寻址
3、μCOS-II操作系统中最多可以管理( A )个任务。
A、64 B、56
C、128 D、63
4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为( D )。
A、0x21 B、0x68
C、0x65 D、0x02
5、以ARM为内核的微处理器是( D )位的。
A、4位 B、8位
C、16位 D、32位
6、RS232-C串口通信中,表示逻辑1的电平是( D )。
A、0v B、3.3v
C、+5v~+15v D、-5v~-15v
7、寄存器R14除了可以做通用寄存器外,还可以做( B )。
A、程序计数器 B、链接寄存器
C、栈指针寄存器 D、基址寄存器
8、采用RS232-C串行通信至少需要三根线,其中不包括( A )。
A、电源线 B、地线
C、发送数据线 D、接收数据线
9、ARM指令集和Thumb指令集分别是( D )位的。
A. 8位,16位 B. 16位,32位
C. 16位,16位 D. 32位,16位
10、ARM寄存器组有( D )个寄存器。 31通用 6状态
A、7 B、32
C、6 D、37
二、填空题
11、发展到现在,常用的操作系统包括三大类,分别为: 、 、和 。
Windows Linux Unix (或 分时、实时、批处理)
12、在图形操作系统中,字符通常有两种存储方式:一种是 图形点阵 方式;一种是 矢量图形 方式。在嵌入式开发系统中一般使用 图形点阵 方式。
13、ARM7指令系统采用三级流水线指令,分别包括: 取指 、 译码 和 执行 。
14、ARM处理器有七种工作模式,分别为 中断 、 快中断 、 中止 、 用户 、 管理员 、 系统 、和 未定义 状态。
15、OSTaskSuspend (self)可把正在运行的任务 挂起 ,参数self指 任务自身优先级 。用此函数挂起的任务可通过 OSTaskResume(self) 函数唤醒。
16、创建信号量OSSemCreat(0)函数中,参数0表示 所创建信号量初始值为0 。
17、若一个优先级为35的任务就绪,则在就绪表中,OSRdyTbl[]的
OSRdyTbl[4]的第3位置 置位,变量OSRdyGrp的 第4位置 置位。
18、网络通信中面向连接的协议是___ TCP ____,面向无连接的协议是___ UDP _____。
19、事件控制块ECB中OSEventType表示 事件类型 ,OSEventCnt表示 信号量计数器 。
20、如果信号量是用于表示打印机不忙,那么该信号量的初始值应设为 1 。
三、简答题
21、简述占先式和非占先式操作系统内核特点?并画图说明他们之间的主要区别。
● 不可抢占:一个进程若被选中就一直运行下去,直到它被阻塞(I/O,或正在等待其他进程),或主动地交出CPU。高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占CPU运行。
● 可抢占:当一个进程在运行时,调度程序可以打断它。另外,在其他一些情形下,如就绪队列中有新进程的优先级高于当前正运行的进程,如果当前内核允许抢占,则可以将当前任务挂起,并立即进行任务调度,执行优先级更高的进程。
高优先级优先的抢占调度
22、 画图说明μCOS-II操作系统各状态之间是如何切换的,并标明所有可能的切换函数。
OsStart 开始任务调度 Os_Task_Sw 任务切换
23、 什么是μCOS-II操作系统的时钟节拍?
● 时钟节拍是特定的周期性中断。
● 这个中断可以看作是系统心脏的脉动。中断间的时间间隔取决于不同的应用,一般在10ms~200ms之间。
● 时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。
● 时钟节拍率越快,系统的额外开销就越大。
24、 ARM处理器有几种工作模式?并做说明每种工作模式的含义
ARM处理器有7种工作模式:
处理器模式 | 说明 |
用户 (usr) | 正常程序执行模式,除了用户模式外,其他模式均可视为特权模式 |
系统 (sys) | 运行操作系统的特权任务,与用户类似,但有直接切换到其它模式等特权 |
快中断(fiq) | 支持高速数据传输及通道处理,FIQ异常响应时进入此模式 |
中断 (irq) | 用于通用中断处理,IRQ异常响应时进入此模式 |
管理 (svc) | 操作系统保护模式,系统复位和软件中断响应时进入此模式 |
中止 (abt) | 用于支持虚拟内存和/或存储器保护 |
未定义 (und) | 支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式 |
25、简述任务切换的过程。
● 当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自己的堆栈中。
● 入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的堆栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。
● 做任务切换所需要的时间取决于CPU有多少寄存器要入栈。
四、 程序填空题(本大题共2个小题,每小题6分,共12分)
26、有两个任务代码如下,其中Task_A、Task_B的优先级分别为:28、37。分析LCD上的显示结果。
Void Task_A()
{ ClearScreen();
LCD_Printf(“task1 is running!\n”);
OSTimeDly(400);
}
Void Task_B()
{ ClearScreen();
LCD_Printf(“hello task2! \n”);
OSTimeDly(160);
}
在LCD上的显示结果为:
第一次:____ task1 is running!_____
第二次:_____ hello task2!_______
第三次:______hello task2!________
第四次:_____ task1 is running!____
第五次:______ hello task2!______
第六次:_______hello task2!______
27、在分辨率为320x240的LCD上,执行完下列程序后,画出在LCD上显示的图形并在划横线处添加注释。
void Main_Task(void *Id)
{ int oldx,oldy;
PDC pdc;
ClearScreen();
pdc=CreateDC();
SetDrawOrg(pdc, LCDWIDTH/2,LCDHEIGHT/2, &oldx, & oldy);
Circle(pdc,0, 0, 50); //___以原点为圆心,50为半径画圆_______
MoveTo(pdc, -50, -50);// __画笔移动到坐标(-50,-50)处__
LineTo(pdc, 50, -50);// __从坐标(-50, -50)到(模拟串口使用printf函数50, -50)画直线__
ArcTo(pdc, 80, -20, TRUE, 30); //_从当前坐标开始以30为半径
// 顺时针画圆弧到坐标(80, -20)__
LineTo(pdc, 80, 20);
ArcTo(pdc, 50, 50, TRUE, 30);
LineTo(pdc, -50, 50);
ArcTo(pdc, -80, 20, TRUE, 30);
LineTo(pdc, -80, -20);
ArcTo(pdc, -50, -50, TRUE, 30);
OSTimeDly(3000);
}
320x240的LCD
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论