《嵌入式系统》试题库
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 页