2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析



1
 
某车载导航系统的结构如图1-1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第1张
导航处理系统由主处理机模块、电子盘模块、信号处理模块和电源模块组成,主处理机模块执行电子地图功能、导航控制功能等,生成的导航显示画面通过信号线在LCD液晶彩色显示屏显示给驾驶员;信号处理模块处理外部采集数据,将处理后的数据通过内部总线传输给主处理机模块;电子盘模块存储电子地图数据及导航数据。
显示系统由LCD液晶彩色显示屏、面板键盘(自定义键盘)和电源模块组成,主要是显示导航画面,也可通过面板键盘进行导航控制。
 
问题:1.1   GPS天线接收卫星信号,将定位信息以帧的形式,通过RS232串行接口传输给主处理机模块。通常RS232的管脚规格如表1-1所示。
采用RS232通信,如果发送的数据量超过接收方缓冲区时,可能在接收方缓冲区因处理时间延迟等导致接收数据丢失。因此,需要进行流量控制。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第2张

请回答下面三个问题,将答案填写在答题纸的对应栏中。
(1)如果通过软件进行流量控制,也就是将流量控制信息以特殊的数据进行发送,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)
(2)如果通过硬件方式进行流量控制,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)
(3)若RS232适配器的FIFO深度为4B,通信波特率为9600bps,数据位为8位,无校验,停止位为1,无数据流控。在应用设计中每次以4字节为单位进行数据发送,每两次发送之间严格控制时间间隔为10ms,连续发送100次,在此过程中,忽略所有由于调度等因素引起的发送延迟。那么,从第1次发送开始,到第100次数据发送出去,消耗的时间为多少毫秒?

 
问题:1.2   主处理机模块与信号处理模块间通过双端口存储器进行数据交换。李工设计时,将双端口存储器空间划分为两个缓冲区,两个缓冲区分别交替地接收信号处理机传输来的最新数据,然后按数据块方式提供给用户程序使用。
假设每个缓冲区的大小为512KB,将512KB数据写入当前空闲缓冲区接口服务为Write_Buffer,将当前有效的512KB数据读出缓冲区的接口服务为Read_BufffT,假设双端口存储器中不提供硬件信号量,两个缓冲区间的互斥操作由软件标记实现,软件对双端口存储器的单次操作(读写一个字的操作)为原子操作。
下面是用C语言设计的一组对双缓冲区的管理程序代码,请填补该程序代码中的空缺,将答案填写在答题纸上。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第3张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第4张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第5张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第6张
 
问题:1.3   请回答关于面板按键设计过程中的下列问题,将答案填写在答题纸的对应栏中。
在进行面板键盘处理设计时,通常在扫描键盘过程中,按键会产生机械抖动。针对抖动问题,王工认为只有通过硬件设计才能消除抖动,而李工认为用软件方法就可以解决该问题。针对抖动问题,你认为可以采用哪类方式消除?
 
 

2
 
在某嵌入式系统设计中,使用8片RAM进行64KRAM的外部存储器扩展,如图2-1所示。该CPU共有16根地址线,8根数据线,在设计中,利用CPU的2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第7张为访问控制信号,该访问控制信号低电平有效。另外,R/2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第8张作为读写命令信号(:高电平为读,低电平为写)。8片8Kx8位的RAM芯片与CPU相连,RAM芯片的片选内部为上拉电阻到电源,各个RAM芯片的片选信号和74138译码器的输出相连,译码器的地址选择端连接到CPU的A13,A14,A15地址线上。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第9张
 
问题:2.1   根据上图所示,写出RAMO,RAM1和RAM7的地址范围(请用16进制进行表示)。
RAM0:(1)
RAM1:(2)
RAM7:(3)
若CPU操作的地址总线为A800H,结合图2-1所示的示意图,CPU访问的是哪个RAM存储器(4)。
 
问题:2.2   如果运行时发现不论往哪片RAM写入数据后,以COOOH为起始地址的存储芯片都有与其相同的数据,假设芯片与译码器可靠工作,则说明:
(1)RAM0-RAM7中(1)的片选输入端总是处于低电平。
(2)如果有问题的存储芯片的片选输入端总是处于低电平,以下可能原因中描述不正确的是(2)。
A.该存储芯片的CS端与存储芯片的2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第10张端错连或短路
B.该存储芯片的CS端与CPU的2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第11张端错连或短路
C.该存储芯片的CS端与地线错连或短路
D.该存储芯片的CS端悬空
 
问题:2.3   根据连接图,若出现地址线A15与CPU断线,并搭接到高电平上,下面描述中正确的是 。(该题为多选题)
A.此时存储器只能寻址A15=1的地址空间
B.此时存储器只能寻址总共64KB空间的高32KB地址空间
C.此时访问64KB空间的高32KB地址空间时会错误地访问到低32KB地址空间
D.此时访问64KB空间的低32KB地址空间时会错误地访问到高32KB地址空间
 
 

3
 
操作系统主要功能之一是处理机管理,处理机管理主要是实现处理机扩充,以支持多个进程的并行运行,提高计算机的计算效率。
进程是动态的概念,通常称进程为程序的一次执行。进程的主体部分是程序,包括程序和数据。进程在执行期间具备确定的状态。
线程是进程中某个单独执行的控制流,也称为轻量进程。
 
问题:3.1   简述抢占(剥夺)式调度算法和非抢占式调度算法的特点。
 
问题:3.2   请从下列叙述中选择出正确的叙述并将其序号填写在答题纸上。(该题为多选题)
A.在多进程多线程系统中,处理机调度的最小单位是进程
B.线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度的实体
C.一个线程可以属于多个进程
D.进程处于可执行状态时,它的线程可以被调度执行,处于阻塞状态时,其所有线程均不能执行
E.进程的多个线程共享进程的地址空间
 
问题:3.3   进程状态之间切换关系如图3-1所示,具体说明进程三种状态的特点,并将三种状态之间的切换条件(a)至(d)填写在答题纸对应栏目中。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第12张
 
 

4
 
看门狗(Watchdog)技术是嵌入式系统设计中保证系统可靠的常用技术。嵌入式控制系统运行时由于受到外部干扰或者内部系统错误,程序有时会出现“跑飞”现象,导致整个系统瘫痪。为了防止这一现象的发生,对系统可靠性要求较高的场合往往要加入看门狗电路。当系统“跑飞”时,看门狗电路能自动恢复系统的运行。
 
问题:4.1   设某嵌入式系统程序完整运行所需的周期时间是tp,看门狗的定时周期为tw,要求tw(1)tp,在程序运行过程中需要定时(2)(俗称“喂狗”),只要程序正常运行,定时器就不会溢出。若由于千扰等原因使系统不能在tp时刻修改定时器的计数值,定时器将在tw时刻 (3),引发(4),使系统得以重新运行。
请填充以上叙述中空缺处的内容,将答案填写在答题纸的对应栏中。
 
问题:4.2  

张工在某嵌入式系统中设计实现了看门狗电路,采用的芯片寄存器如表4-1、表4-2、表4-3、表4-4所示。
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第13张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第14张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第15张

 
 

5
 
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中:
【程序1】是李工编写的一个数据交换子程序。
【程序2】是赵工编写的一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,it;mid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。
【程序1】
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第16张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第17张
2012年下半年嵌入式系统设计师下午试卷案例考试真题答案解析第18张
 
问题:5.1   执行【程序1】后,打印出来的a=3,b=4;并没有完成数据交换,请指出李工的问题?并改正程序错误。将答案填写在答题纸中对应的栏目。
 
问题:5.2   仔细阅读并分析【程序2】中的C语言代码,完成其中(1)〜(5)空白填空,将答案填入答题纸的对应栏内。
 
问题:5.3   李工编写某嵌入式软件时,遇到了一些问题,请帮助李工解答下面2个问题,并将答案填写在答题纸中对应的栏目。
(1)李工在编译时,程序没有通过编译,经检查程序后将文件头的#include<filename.h>改为#include”filename.h”后编译通过,请问#include<filename.h>和#include”filename.h”的区别是什么?
(2)李工在编写一段C++程序时,需要调用一段已编译的C语言函数,为什么要加extern”C”?
 
 

,