嵌入式系统期末考试题库及答案 下载本文

内容发布更新时间 : 2024/4/28 23:33:35星期一 下面是文章的全部内容请认真阅读。

《嵌入式系统》试题库

10、 下述程序为 S3C4510B 控制 GPIO 端口输出的一段程序。 #define IOPMOD (*(volatile unsigned long *)0x03FF5000) #define IOPDATA (*(volatile unsigned long *)0x03FF5008) void Delayms(unsigned int); int main(){

unsigned long LED; IOPMOD = 0xFFFFFFFF; IOPDATA = 0xEF; for(; ;){

LED = IOPDATA; LED = (LED >> 1); IOPDATA = LED; Delayms(20); if(!(IOPDATA & 0x01))

IOPDATA = 0xEF;

} return(0); }

请问:①关键词“volatile”在此程序中的作用是什么?

②哪些语句是读内存(不包括读内存常量 0xFFFFFFFF、0xEF)?哪些语句是写内存? ③哪些语句是读端口?哪些语句是写端口? 答:

①关键词“volatile”在此程序中的作用是阻止编译器优化;

②读内存语句有:IOPDATA = LED;写内存语句有:LED = IOPDATA; ③读端口语句有:LED = IOPDATA;写端口语句有:IOPDATA = LED。

//将所有 IO 口置为输出模式 //延迟程序

//IO port mode register //IO port data register

第 37 页 共 44 页

《嵌入式系统》试题库

11、 分析下述 S3C44B0x 的示例程序。

#include

volatile unsigned long timeval; // 当前时刻 int main(void)

{ init_timer();// Initialize Timer while(1) {

pPIO->PDATE = 0xFD; // Turn LED1 On wait(1000);// Wait 1000ms

pPIO->PDATE = 0xFB; // Turn LED2 On wait(1000);// Wait 1000ms }}

// 初始化 Timer5 以及开定时中断 void init_timer(void) {……}

// 1ms 产生一次定时中断

__irq void HandlerTIMER5(void) {timeval++;

pIC->I_ISPC = INT_TIMER5; }

/* 等待函数,以毫秒为单位 */ void wait(unsigned long time) {unsigned long tick; tick = timeval;

while ((timeval - tick) < time); }

问:① 语句“while (1){…… }”的作用是什么?② 关键词“__irq”的作用是什么?③ 语句 “pIC->I_ISPC = INT_TIMER5;”的作用是什么?④ 子程序 HandlerTIMER5 并未被调用,它 是如何执行的?⑤ 此程序的功能是什么? 答:

① 语句“while (1){……}”的作用是死循环、等待中断、LED 显示; ② 关键词“__irq”的作用是指明该函数为 IRQ 中断服务子程序; ③ 语句“pIC->I_ISPC = INT_TIMER5;”的作用是清除中断请求标志;

④ 中断源发出中断请求,CPU 响应中断并查询中断源得到中断向量表入口地址,到中断 向量表相应入口地址取指令执行,该处为跳转指令,执行跳转指令跳转到子程序 HandlerTIMER5 处执行; ⑤ 此程序的功能是双灯闪烁。

第 38 页 共 44 页

《嵌入式系统》试题库

12、 右下图为雷达自动伺服系统。高低角为实时跟踪,采用 PID 控制(一种控制算法), 采样周期为 20ms;方位角为步进控制,每一次步进 0.1 度。。 ①该系统是否是嵌入式系统?为什么?

②该系统有三个计算机,请为该系统选配操作系统(是否需要,需要什么样的操作系统), 简单说明理由。

雷达自动伺服系统

俯仰通道实时跟踪,方位步进0.1度

天线

上位机 工控机

RS422A

接收机

功放 角度 传感器

伺服电机

高低角

转台

下位机 S3C44B0x

RS232C

键盘 显示

80C51

功放 步进电机

方位角

答:

① 该系统为嵌入式系统。因为该系统以应用为中心,我们首先看到的是雷达自动伺复系 统,而非通用计算机系统;以计算机技术为基础,包括至少 3 块处理器,而且可能配有操 作系统,两个下位机属于典型的专用计算机系统;对于下位机软硬件必须裁减,对功能、 可靠性、功耗、体积、成本有要求,以满足雷达自动伺复系统的要求。

② 下位机 80C51 的任务简单:显示、键盘、串口通信、步进控制,而且本身计算能力弱, 无需配操作系统;

③ 下位机 S3C44B0x 的任务也简单:两个串口通信、一个 PID 控制,本身计算能力属于 中等,但实时性、可靠性要求高,采用实时操作系统可保证实时性和可靠性,可配简单实 时操作系统,如 uC/OS-II;也可不配操作系统,PID 计算量不大,但要仔细设计 PID 控制 软件,以保证实时性,但可靠性会降低;

④ 上位机工控机计算能力强,任务复杂,要完成雷达接收信号的处理,但实时性要求不 是很高,为了简化应用软件设计,要配操作系统,一般配 Embedded 2000/XP 等复杂而非 实时嵌入式操作系统,软件设计大幅度简化。

第 39 页 共 44 页

《嵌入式系统》试题库

13、 在μC/OS-II 中,使用下列信息(以二进制表示)计算出当前就绪的最高优先级任务 的任务 ID(tid),并指出 OSRdyGrp 的值(以二进制表示),给出详细的计算过程。(提示: 使用 OSUnMapTbl 作为已知的映射表,使用 C 语句实现计算过程的算法) OSRdyTbl[0] = 00000000、OSRdyTbl[1] = 01000000、OSRdyTbl[2] = 10001001 OSRdyTbl[3] = 11110111、OSRdyTbl[4] = 00100011、OSRdyTbl[5] = 11110101 OSRdyTbl[6] = 00010000、OSRdyTbl[7] = 11110010 答:

OSRdyGrp = 11111110

Y = OSUnMapTbl[OSRdyGrp]; X = OSUnMapTbl[OSRdyTbl[Y]]; Tid = Y * 8 + X;

Y = 1; X = 6; Tid = 14;

第 40 页 共 44 页