1、2006年下半年软件水平考试(中级)嵌入式系统设计师下午(技术应用)试题真题试卷及答案与解析 一、试题一 1 阅读下面有关车载 GPS终端系统的叙述,回答问题 1至问题 3,将答案填入答题纸的对应栏中。 说明 GPS是全球定位系统 (Global Position System)。车载 GPS终端是置于机动车内的实时定位装置,其应用对象是需要定位和调度的车辆。车辆可以通过终端与 GPS进行实时、准确的定位,并能够通过无线通信网络上报远程的车辆调度中心。中心可以通过终端远程监视车行轨迹,并可在特殊情况下通过终端控制 车辆。同时,终端还装备车载电话,可以在出现特殊情况时及时地通知车辆调度中心。 图
2、 16-1所示为车载终端系统的用例图,对于车载 GPS终端系统来说,主要的角色有两个:车辆调度中心用户和车载终端用户。 图 16-2所示为车载终端系统中的 GSM无线电通信模块的状态图,用于与调度中心进行联系。 GSM模块共有四个状态:通话中、有问题、待命和短消息通信中。 图 16-3为车载终端用户在遇到特殊情况下通过车载电话或按键与调度中心保持通信的处理过程顺序图。 1 图 16-2的状态图不完全,请将其补充完整,并将下面给出的转换关系 填入图 16-2的适当位置。 转换关系: 用户需要语音通话 通话完成 重新连接网络 未找到网络或网络出错 2 按照你对 GPS终端系统的理解,将下列 A F
3、标记的处理过程填入图 16-3中的(1) (6)处,并选择正确的处理顺序。 A语音对话 /按下按钮 B发送信息到通信模块 C监听命令 D接收成功要求监听信息 E要求监听 F通过 GSM发送信息 处理顺序选项: ABDFCE ACDBFE ABFDEC ACBDEF 3 画出 UML模型中常用关系符的图示:依赖、泛化、关联、聚合和实现。 二、试题二 4 阅读以下说明和 X86汇编语言代码,将应填入 (n)处的字句写在答题纸的对应栏内。 说明 设有数组 X和 Y。 X数组中有 X1, X2、 、 X10十个数, Y中有 Y1、Y2、 、 Y10十个数。编制程序计算: Z1=X1+Y1 Z2=X2+
4、Y2 Z3=X3-Y3 Z4=X4-Y4 Z5=X5-Y5 Z6=X6+Y6 Z7=X7-Y7 Z8=X8-Y8 Z9=X9+Y9 Z10=X10+Y10 设置一个 10位的标志尺: LOGIC_RULE,若它的每一位决定了当前按顺序该做加法 (该位为 0)或减法 (该位为 1)操作,则由上列等式可知 LOGIC RULE中的低 10位应是 (1)。 汇编程序代码 datarea segment ;define data segment x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y8,y10 z dw z1
5、,z2,z3,z4,z5,z6,z7,z8,z9,z10 logic_ruledw (2) ;LOGIC_RULE initialize datarea ends program segment ;define code segment main proc far assume cs: program, ds:datarea start: ;starting execution address (3) ;save old data segment sub ax, ax ;put zero in AX push ax ;save it on stack ;set DS register to c
6、urrent data segment mov ax,datarea mov ds,ax ;MAIN PART OF PROGRAM GOES HERE mov bx,0 mov ex,10 mov dx,logic_rule next: mov ax,xbx shr dx,1 jc subtract (4) jmp short result subtract: sub ax, y bx result: (5) ;result= Zn add bx,2 loop next ret ;return to DOS main endp ;end of main part of program pro
7、gram ends ;end of code segment end start ;end of assembly 附:指令及寄存器说明。 MOV 传送字或字节 PUSH 把字压入堆栈 SHR 逻辑右移 JC 有进位时转移 JMP 无条件转移指令 SUB 减法 ADD 加法 LOOP CX不为零时循环 JNE/JNZ 不等于时转移 CMP 比较 段寄存器 2个: CS: 代码段寄存器 DS: 数据段寄存器 数据寄存器 4个: AX: 累加器 BX: 基址寄存器 CX: 计数寄存器 DX: 数据寄存器 4 (1)00 1101 1100 (2)00dch, 或 00DCH,或 220,或等价的二
8、进制形式 (3)push ds (4)add ax,ybx (5)mov zbx, ax 三、试题 三 5 阅读以下说明和 C语言代码,回答问题 1至问题 4,将解答填入答题纸的对应栏内。 说明 有两个任务 (编号分别为 0和 1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。 代码一 1: int flag2; /* flag 数组,初始化为 FALSE */ 2: Enter_Critical_Section(int my_task_id, int other_ta
9、sk_id) 3: 4: while (flagother_task_id = TRUE); /* 空循环语句 */ 5: flagmy_task_id = TRUE; 6: 7: Exit_Critical_Section(int my_task_id, int other_task_id) 8: 9: flagmy_task_id = FALSE; 10: 当一个任务要访问临界资源时 ,就可以调用代码一给出的这两个函数。代码二给出了任务 0的一个例子。 代码二 Enter_Critical_Section(0,1); 使用这个资源 Exit_Critical_Section(0,1); 做
10、其他事情 5 什么是临界资源 (critical resource)?请用 100字以内文字简要说明。 6 代码一所示的方法能够实现共享资源的互斥访问吗 ?请用 300字以内文字举例说明。 7 代码一采用了一种繁忙等待 (busywaiting)的策略,这种策略的缺点是什么 ?请用100字以内 的文字简要说明。 8 如果把 Enter_Critical_Section()函数中的两条语句互换一下位置,会出现什么情况 ? 四、试题四 9 阅读以下说明和 C语言代码,回答问题 1至问题 5,将解答填入答题纸的对应栏内。 说明 在实模式存储管理方案下,嵌入式系统的内存地址空间的布局一般可以分为五个段
11、:代码段 (text)、数据段 (data)、 bss段 (bss)、堆 (heap)和栈 (stack)。 图 16-4为一段例程。 1: #include 2: unsigned char gvCh; 3: unsigned short gvShort; 4: unsigned int gvInt = 0x12345678; 5: unsigned long gvLong = 0x87654321; 6: void main(void) 7: 8: unsigned char arraylO,*p; 9: p = malloc(lO*sizeof(char); 10: while (1);
12、 9 代码段、数据段和 bss段的大小是在什么时候确定的 ? 10 常用的堆空间的管理方法主要有哪两种 ? 11 当图 16-4所示的程序经过编译连接并装入内存时,与 while语句相对应的可执行代码存放在哪一个段 ? 12 在图 16-4所示的程序中,变量 gvCh、 gvShort、 gvInt、 gvLong、 array和 p分别存放在哪一个段 ? 13 malloc函数申请的空间位于哪一个段 ? 五、试题五 14 阅读以下关于嵌入式系统中异步串口的叙述,回答问题 1至问题 4。 说明 异步串口是嵌入式处理器上最常用的资源之一。一般而言,异步传输的数据以帧的方式传输。每一帧有效数据前有
13、一个起始位,帧结束于一个或多个停止位。异步串口的数据由起始位和停止位分割成数据帧。常用的异步串口数据帧格式如图 16-5所示。 RS-232、 RS-422和 RS-485都是常用的异步串口标准,它们的时序完全一样,只是在电气特性上有所区别,它们之间通过通用异步收发器 (UART)可实现转换。 UART控制器可以集成到芯片中或者通过嵌入式处 理器总线连接,所以,通常从 UART发出的异步串口时序的逻辑电平都是处理器 I/O电压标准 (比如, TTL和 LVTTL等标准 )。若要求符合 RS-232、 RS-422或者 RS-485的电气特性,则需要接口电路做转换。使用 MAX3232芯片实现的
14、串口电平转换的电路原理图如图 16-6所示。14 请说明异步传输和同步传输的不同之处。 15 根据图 16-1,请用 300字以内文字简要描述异步串口的数据传输过程。 16 如果系统设计采用串行数据传输最高波特率为 115200bps、 16倍分频,则时钟至少为多少赫 兹 ? 17 图 16-6所示的电路原理图设计实现了几路串口 ?每个串口为多少条连接线 ? 2006年下半年软件水平考试(中级)嵌入式系统设计师下午(技术应用)试题真题试卷答案与解析 一、试题一 1 【正确答案】 【试题解析】 统一建模语言 UML是面向对象的建模语言,强调两个重要的概念;鼓励将设计描述为许多交互的对象,而不是一
15、些大的单块代码;至少一些对象对应系统中部分实际的软件或硬件,可以用 UML模型化同系统交互的外部世界,在这种情况下,对象可能与人或其他机器对应。 图 16-2是车载终端系 统中的 GSM无线电通信模块的状态图, GSM模块共有四个状态:通话中、有问题、待命和短消息通信中。当 GSM模块在通话、待命和短消息通信状态中出现问题时,会转入错误处理即进入有问题状态。当用户需要语音通话时,转入通话状态,通话完毕后,通信模块重新回到待命状态。当模块无法处理问题时,可以试图连接网络,上报车辆调度中心,此时模块处于空闲待命状态。 图 16-3为车载终端用户通过车载电话或按键与调度中心保持通信的处理过程顺序图。
16、处理过程如下: 用户通过 (1)按下按钮或语音对话试图连接调度中心, (2)主控器模 块接到连接请求后或连接建立后可以发送消息给通信模块, (5)通信模块负责处理并通过 GSM发送消息, (6)调度中心接收消息成功后要求监听信息,并把该要求返回给车载系统的 GSM通信模块, (3)GSM通信模块把该请求交给主模块, (4)主模块把监听信息交给 GSM通信模块,然后可由 (5)交给调度中心。 2 【正确答案】 (1)A,或语音对话按下按钮 (2)B,或发送信息到通信模块 (3)E,或要求监听 (4)C,或监听命令 (5)F,或通过 GSM发送信息 (6)D,或接收成功要求监听信息 正确的处理顺序
17、为 ,或 ABFDEC 3 【正确答案】 二、试题二 4 【正确答案】 (1)Z1的 +运算对应于第 0位值为 0, Z2的 +运算对应于第 1位值位0,直到 Z10的运算对应于第 9位,因此低 10位为 0011011100。 (2)LOGIC_RULE初始化为 (1)计算的值,十六进制为 00dch。 (3)把数据段压入堆栈,保存旧的数据段。 (4)dx是保存的 LOGIC RULE值,逻辑右移一位是 1则跳转到 subtract执行减操作,否则顺序执行加操作。 (5)将执行的结果移入 Z。 三、试题三 5 【正确答案】 在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进
18、程使用。需要互斥访问的资源称为临界资源 (critical resource),如打印机、共享变量和表格等。 【试题解析】 本题考查的是任务之间的互斥问题,即基于繁忙等待的任务互斥实现方法。在多道程序系统中,各个任务是并发执行的,由于时钟中断的原因,使任务之间的执行顺序变得难以预测,每个任务都有可能在任意一条语句的后面被中断。在这种情形下,如果要采用基于繁忙等待的互斥实现方法,就必须考察所有的可能,即如果每个任务在不同的位置被中断时,能 否正确地实现任务间互斥。另外,在这种基于繁忙等待的方法下,每个任务要循环地去判断当前能否访问临界资源,这样会浪费大量的 CPU时间,而且如果设计不合理,容易导
19、致死锁。 6 【正确答案】 代码一所示的方法不能实现资源的互斥访问。 例如,考虑如下的情形; (1)初始化的时候, flag数组的两个元素值均为 PALSE; (2)任务 0先执行,在执行 while循环语句时,由于 flag1=FALSE,所以顺利结束,不会被卡住,假设这个时候来了一个时钟中断,打断其运行: (3)任务 1去执行,在 执行 while循环语句时,由于 flag0=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区; (4)后来当任务 0再执行时,也进入了临界区,这样就同时有两个任务在临界区。 7 【正确答案】 缺点是会浪费大量的 CPU时间。 简要说明:繁忙等待 (bu
20、sy waiting )的基本思路是,当一个任务要进入临界区,首先需要检查是否允许它进入,若允许,则直接进入;否则,循环等待,使用一个循环语句不断执行测试指令,从而浪费了大量的 CPU资源。 8 【正确答案】 可能会出现死锁。 四、试题 四 9 【正确答案】 在编译时确定。 10 【正确答案】 固定分区、可变分区。 11 【正确答案】 代码段。 12 【正确答案】 全局变量 gvCh和 gvShort由于没有设置初始值,所以放在 bss段中。 全局变量 gvInt和 gvLong有初始值,所以放在 data段中。 指针 p和数组 array,它们都是 main函数的局部变量,所以存放在栈中。
21、13 【正确答案】 堆空间。 五、试题五 14 【正确答案】 异步通信系统的数据传输,其接收器时钟与发送器时钟是不同步的 【试题解析】 异步传输与同步传输两者之间的主要区别在于发送器或接收器之一是否向对方发送时钟同步信号。 异步传输 (Asynchronous Transmission)以字符为单位传输数据,采用位形式的字符同步信号,发送器和接收器具有相互独立的时钟 (频率相差不能太多 ),并且两者中任一方都不向对方提供时钟同步信号。异步传输的发送器与接收器双方在数据可以传输之前不需要协调:发送器可以在任何时刻发送数据,而接收器必须随时都处于准备接收数据的状态。计算机主机与输入,输出设备之间一
22、般采用异步传输方式,如键盘、典型的 RS-232串口 (用于计算机与调制解调器或 ASCII码终端设备之间 ):发送方可以在任何时刻发送一个字符 (由一个开始位引导,然后连续发完该字符的各位,后面跟一个位长以上的哑位九 同步传输 (Synchronous Transmission)以数据帧为单位传输数据,可采用字符形式或位组合形式的帧同步信号 (后者的传输效率和可靠性高 ),由发送器或接收器提供专用于同步的时钟信号。在短距离的高速传输中,该时钟信号可由专门的时钟线路传输;计算机网络采用同步传输方式时,常将时钟同步信号植入数据信号帧中,以实现接收器与发送器的时钟同 步。 15 【正确答案】 【试
23、题解析】 如图 16-5所示的是在现有的嵌入式处理器上最常用的 8位有效数据、无奇偶校验 (N)、 1停止位 (SN1)的异步串口数据帧格式。有了起始位和停止位,可以使接收端与发送端保持帧同步。一帧数据是从最低有效位开始传输的。同时,要传输的数据中的每个字节要求至少 2位用于保证同步,因此,对于 8N1的格式,同步的位数增加了超过 20%的额外开销。奇偶校验指的是在有效数据帧传输完以后,接着再发送一个数据位,使有效数据帧中的各位数据加上此数据位的结果为奇数 (或偶数 )。 异步 传输的数据是以帧的方式传输的。每一帧有效数据前有一个起始位,帧结束于一个或多个停止位。也就是说,为了保证同步 (不至
24、于因为一个位的丢失引起整个串行总线的混乱 ),异步串口的数据由起始位和停止位分割成数据帧。通常,每帧数据只有 5位、 6位、 7位或 8位。传输线在逻辑 1时处于空闲状态。当每帧数据开始传输时,先发送一个起始位。起始位是从逻辑 1到逻辑 0的迁移,这个变化表明一帧数据开始传输,接收端则在开始检测到起始位的时候,按照收发两端事先约定好的通信速度检测后面的数据位,从而组成一帧数据。在传输的最后,利用一个或多个停止位 (逻辑 1)使传输线回到空闲状态,然后发送方才可以发送下一个字节的数据。 16 【正确答案】 B 【试题解析】 由于串行数据传输最高波特率为 115200bps、 16倍分频,故时钟至少为 11520016 =1.8432MHz 17 【正确答案】 实现了两路的串口,每个串口为三条连接线。 【试题解析】 如图 16-6所示的电路原理图中,一片 MAX3232实现了两路串口的电平转换,分别为左上方的 UART0和左下方的 UART1。每路串口具有三条连接线,第一路串口的三条连接线为 RS232RXD0、 RS232TD0和接地 GND,第二路串口的三条连接线为 RS232RXD1、 RS232TXD1和接地 GND。