[计算机类试卷]软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题模拟试卷1及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题模拟试卷1及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题模拟试卷1及答案与解析.doc(33页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题模拟试卷 1及答案与解析 一、试题一 1 阅读以下关于嵌入式系统 A/D接口技术的说明,根据要求回答问题 1至问题 6。 说明 12位逐次逼近式 A/D转换芯片 AD574A内置双极性电路的启动转换和读取数据命令均由控制总线提供,具有自动校零和自动极性转换功能,非线性误差小于1/2LBS,转换时间为 25s。 AD574A芯片的内部框图及各引脚的功能图如图 6-6所示。图 6-7所示为 AD574A单极性输人电路原理图。 表 6-2 为 AD574A工作时控制端 标志意义表。1 图 6-7电路原理图中有哪几种模拟电压输入 ? 2 图 6-
2、7单极性输入电路原理图中,电位器 R1、 R2分别用于 A/D转换电路中哪些性能的调整 ? 3 AD574A芯片的工作模式分为全速工作模式和单一工作模式。如果需要 AD574A工作于单一模式,只需将 (1)和 端接至 +5 V电源端, (2)和 A0接至 0 V,仅用端来控制 A/D转换的启动和数据输出。当 =0时,启动 A/D转换器,经25s后 STS= 1,表明 A/D转换结束,此时将 (3)置 1,即可从数据端读取数据。 (1) (3)空缺处供 选择的答案 A CE B A0 C D E 4 为了测量某材料的性质,要求以 500点 /s的速度连续采样 1 min。图 6-7所示的A/D转
3、换电路能否在转换时间指标上满足该要求 ?请列出简要计算过程。 5 若 12位逐次逼近式 A/D转换芯片 AD574A的满量程电压为 10 V,非线性误差小于土 1/2LBS,其最小有效位的量化单位为 9.77 mV,求该 A/D转换芯片的绝对精度。请列出简要计算过程。 6 从启动信号到转换结束的数字量输出需要经过一段时间,然而模拟量转换期间要求模拟信号保持不变, 因此必须使用采样保持电路。请在 150字以内说明采样保持电路主要完成的功能。 二、试题二 7 阅读以下关于基于嵌入式系统的住宅安全系统的技术说明,根据要求回答问题 1至问题 4。 【说明】 基于某嵌入式系统的住宅安全系统可使用传感器
4、(如红外探头和摄像头等 )来检测各种意外情况,如非法进入、火警及水灾等。 房主可以在安装该系统时配置安全监控设备 (如传感器、显示器和报警器等 ),也可以在系统运行时修改配置,通过录像机和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信息交互。在安装过程中,系统给每个 传感器赋予一个 D编号和类型,并设置房主密码以启动和关闭系统,设置传感器事件发生时应自动拨出的电话号码。当系统检测到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测到的事件的性质等信息。图 6-19所示是住宅安全系统的顶层数据流图,图 6-20所示是住宅安全系统的第 0层数据流图,图 6
5、-21所示是对住宅安全系统的第 0层数据流图中加工 4的细化图。7 请将住宅安全系统的顶层数据流图 (图 6-19)中 (A) (D)空缺处,以及第 0层数据流图 (图 6-20)中 (E)空缺处的内容填写完整。 8 将图 6-21所示的加工 4的细化图中的数据流补充完整,请按以下答题格式分别指明加工名称、数据流名称和数据流方向 (输入 /输出 )。 答题格式示例: 4.2 评估设置 ( 告警数据 )4.3 产生告警信号 或 4.3 产生告警信号 ( 告警类型 ) 9 修改在住宅安全系统第 0层数据流图 (图 6-20)中的数据存储 “配置信息 ”,将会影响第 0层数据流图中的哪些加工 ? 1
6、0 数据流图是系统分析阶段用于描述系统逻辑模型的图形描述工具。嵌入式实时系统分析阶段的主要任务是确定需要解决的问题或 需要完成的目标及其 (1) ,同时对实时系统的软 /硬件做全面的分析,并对软 /硬件做合理的分解,为实时系统的设计打下基础。实时系统的分析需要建模和 (2) ,以便系统分析人员估计 “时间和大小 ”。建立系统模型时应明确体现 (3) 、 (4) 、功能特点及约束条件等因素。 三、试题三 11 阅读以下关于嵌入式系统技术的说明,根据要求回答问题 1至问题 3。 说明 某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有 32路模拟量输入、 96路开关量
7、、 16路 脉冲量输入和水位落差量输入,产生显示信息、报警信号、监测报表和水位传感器控制信号等输出。该水电站安全监测系统具有以下几个特点: (1)对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块。 (2)监视的对象比较固定,系统硬件的规模相对固定不变。 (3)尽可能允许把所有软件都固化在 EPROM中。 (4)人机交互作用的内容固定,即由操作人员通过键盘去调用此系统中所存入的相应应用程序,不会去修改应用程序。 基于以上安全监测系统的特点 ,该水电站技术研发部门准备选用现有的工业控制机系统及现成的各种模板等硬件,由本部门的开发人员自行开发软件。
8、所开发的软件主要包括: (1)应用程序,即按各类输入 /输出量的采集、处理、显示、报警和制表等功能分别作为若干任务块,由这些任务组成应用程序。 (2)多任务嵌入式实时操作系统,用来协调各任务的资源分配与管理,管理任务之间的联系与多任务操作。 11 根据以上安全监测系统的特点,技术研发人员郭工程师提出了一个自行编制简化 “多任务嵌入式实时操作系统 ”的方案,以适应于协调管理硬件资源和监测对象的实 际需求,其中只保留了标准的多任务实时操作系统的核心功能,例如 CPU管理、中断管理和外设管理等。请在 200字以内简要说明郭工程师提出的简化的 “多任务嵌入式实时操作系统 ”可能具有哪些优点。 12 设
9、计简化的多任务嵌入式实时操作系统时,由于多个任务均可能要求占用 CPU这个关键资源,因此 CPU的任务管理是一个非常重要的设计内容。在该嵌入式实时操作系统中,作为占用资源的基本单位,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。在任何时候,一个任务只会处于其中的某一个状态。请根据图 6-8中已给出的信息将 (1) (5)空缺处填写完整。 13 在该水电站安全监测系统中,数据采集任务 (Collect_task)把所采集的数据送入一单缓冲区,计算任务 (Calculate_task)从该单缓冲区中取出数据进行计算。以下是利用信号量机制实现两个任务共享单缓冲区的
10、C语言形式化描述程序。请将程序代码中 (6) (9)空缺处以及 (10)空缺处的内容填写完整。 int sr=0 int (6) : main() cobegin Collect_task(); Calculate_task(); coend Collect_task() While(采集工作未完成 ) 采集一个数据, P(se), 将数据送入缓冲区中: (7) , Calculate_task() While(计算工作未完成 ) (8) , 从缓冲区中取出数据: (9) 进行数据计算送入缓冲区中, 如果以上程序中 “int sf 0; ”语句不小心被改写成 “ints -1; ”,那么系统运
11、行时将会进入 (10) 状态。 四、试题四 14 阅读以下说明和 Socket程序,根据要求将程序代码中 (1) (10)空缺处的内容填写完整。 【说明】 网络应用的基本模型是客户机 /服务器模型,这是一个不对称的编程模型,通信的 双方扮演不同的角色,分别是客户机和服务器。 一般发起通信请求的应用程序称为客户软件,该应用程序通过与服务器进程建立连接来发送请求,然后等待服务器返回所请求的内容。服务器软件一般是指等待接收并处理客户机请求的应用程序,通常由系统执行,等待客户机请求,并且在接收到请求之后,根据请求的内容,向客户机返回合适内容。 本题中的程序较为简单,客户机接收用户在键盘上输入的文字内容
12、,服务器将客户机发送来的文字内容直接返回给客户机,在通信过程中服务器方和客户机方都遵守的通信协议如下: 由客户机首先发送请求, 该请求由首部和内容两大部分组成,两个部分各占一行文字,通过行结束符 n隔离。 首部只有一个 Length域,用于指定请求的内容部分的长度,首部的结构为 关键词 Length+ +数值 +n 内容部分为一行文字,其长度必须与 Length域的数值相符。 例如,客户机的请求为 “Length 14n hello, welcome to my home!”,服务器接收请求处理后返回文字 “Hello, welcome to my home!”。 【 Socket程序】 /服
13、务 器主程序部分 #include stdio.h / 引用头文件部分略 #define SERVER_PORT 8080 /服务器监听端口号为 8080 #define BACKLOG 5 /连接请求队列长度 int main(int argc, char *argv ) int listenfd, connfd; /监听套接字、连接套接字描述符 struct sockaddr_in servaddr; /服务器监听地址 listenfd (1) , /创建用于监听的套接字 if(listenfd 0) fprintf(stderr, “创建套接字错误 !“) /套接字创建失败时打印错误信息
14、 exit(1); bzero(&servaddr.sizeof(servadd); /将地址结构置空 servaddr.sin_family AF_INET; /设置地址结构遵循 TCP/IP协议 servaddr.sin_addrs_addr htonl. (2) /设置监听的 IP地址为任意合法地址,并将该地址转换为网络字节顺序 servaddr.sin_port (3); /设置监听的端口,并转化为网络字节顺序 if(bind(4) 0) fprintf(stderr, “绑定套接字与地址 !“), exit(1); /将监听地址与用于监听的套接字绑定,绑定失败时打印错误信息 if(l
15、isten(listedfd, BACKLOG) 0) fprintf(stderr, “转换套接字为监听套接字 !“); exit(1); /将用于监听的套接字由普通套接字转化为监听套接字 for(; ) connfd (5); /从监听套接字的连接队列中接收已经完成的连接并创建新的连接套接字 if(connfd 0) fprintf(stderr, “接收连接失败 !“); exit(1); /接收失败打印错误信息 serv_respon(connfd); /运行服务器的处理函数 (6); /关闭连接套接字 close(listenfd); /关闭监听套接字 /服务器通信部分 #inclu
16、de stdio.h / 引用头文件部分略 void serv_respon(int sockfd) int nbytes; char buf1024 for(; ) nbytes read_requ(sockfd, buf, 1024); /读出客户机发出的请求,并分析其中的协议结构,获知请求的内 /部分的长度,并将内容复制到缓冲区 buf中 if(nbytes= 0) return; /如客户机结束发送就退出 else if(bytes 0) fprintf(siderr, “读错误情息 :%sn“, strerror(errno); return; /读请求错误打印错误信息 if(wri
17、te_all(sockfd, buf, nbytes) 0) /将请求中的内容部分反向发送回客户机 fprintf(siderr, “写错误信息: %sn“, strerror(errno); int read_requ(int sockfd, char*buf int size) char inbuf256, int n; int i; i read_line(sockfd, inbuf, 256); /从套接字接收缓冲区中读出一行数据,该数据为客户请求的首部 if(i 0) return(i); else if(i 0) return(0); if(strncmp(inbuf, “ “,
18、6) 0) sscanf(7), “%d“, &n), /从缓冲区 buf中读出长度信息 else sprintf(buf, “ “, 14); return(14); /取出首部 Length域中的数值,该数值为内容部分的长度 return(read_all(sockfd, buf, n), /从接收缓冲区中读出请求的内容部分 int get_char(int fd, char*ch) /*get_char的处理方式较为特殊,并不是每次调用 read函数读一个字符,而是一次从缓冲区中读一块内容,再一次一个字符提交给函数 read_line,如果提交完了就再读一块, 这样可以提高读缓冲区的效率
19、。另外,由于客户机是分两次调用writ_all函数将请求的首部和内容发送给服务器,因此 get_char不会取出请求内容部分的字符 */ /声明静态变量,在 get_char多次被调用期间,该变量的内存不释放 static int offset=0; static int size 0; static char buffC1024; for(; size 0(8); ) size read(M, bur, 1024), /一次从套接字缓冲区中读出一个数据块 if(size 0) if(errno EINTR) size 0; contine; /EINTR表示本次读操作没有成功,但可以继续使用
20、该套接字读出数 i else return(-1); offset = 0, /读出数据后,将偏址置为 0 *ch = buf(9); /将当前的字符取出,并将偏址移向下一字符 return(1); int read_line(int fd, char * buf, int maxlen) /函数 read_line的作用是读出请求的首部,其处理的方法是每次调用get_char函数 /取出一个字符,检查该字 符是否是回车符 n,如果是回车符,就返回请求的首部 int i, n; char ch; for(i=0; i maxlen; ) n=get_char(fd, &ch); /取出一个字符
21、 if(n=1) buffi+ ch; /将字符加入字符串中 if(10) break; else if(n 0) return(-1); else break; bufi=0; return(i); 【部分 Socket数据结构与函数说明】 1地址结构 sockaddr_in类型的结构定义; sockaddr_in是通用套接字结构 SOCkaddr在 TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。 Struct sockaddr_in short int sin_family; /地址类型 AF_XXX,其中 AF_INET为 TCP/IP专用 unsigned short
22、int sin_port; /端口号 struct in_addr sin_addr; /Internet地址 /端口号以及 Internet地址使用的是网络字节顺序,需要通过函数 htons转换 struct_inaddr _u32 s_addr; /类型为 unsignel long hostent类型的结构定义: struct hostent char *h_name; /主机的正式名称 char* * h_aliases; /别名列表 int h_addrtvPe /主机地址类型: AF_XXX int h_length: /主机地址长度: 4字节 (32位 ) char* *h_ad
23、dr_list; /主机 IP地址列表 #define h_addr h_addr_list0 2基本函数 int socket(int domain, int type, int protocol); 函数 socket创建一个套接字描述符,如果失败则返回 -1。 domain为地址类型;type为套接字类型,本题中为 SOCK_STREAM; protocol指定协议,本题中为 0。 int connect(int sockfd, struct sockaddr *servaddr, int addrlen); 函数 connect与服务器建立一个连接,成功返回 0, 失败返回 -1。 s
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 嵌入式 系统 设计师 下午 应用技术 试题 模拟 答案 解析 DOC
