全国计算机技术与软件专业技术资格 ( 水平 ) 考试 2011 年下半年嵌入式系统设计师下午试卷 ( 考试时间 14:00~16:30 共 150 分钟 ) 请按下述要求正确填写答题纸 1. 在答题纸的指定位置填写你所在的省 自治区 直辖市 计划单列市的名称 2. 在答题纸的指定位置填写准考证号 证件类型 证件号码和姓名 3. 答题纸上除填写上述内容外只能写解答 4. 本试卷共 5 道题, 全部是必答题, 满分 75 分 5. 解答时字迹务必清楚, 字迹不清时, 将不评分 6. 仿照下面例题, 将解答写在答题纸的对应栏内 例题 2011 年下半年全国计算机技术与软件专业技术资格 ( 水平 ) 考试日期是 (1) 月 (2) 日 因为正确的解答是 11 月 12 日, 故在答题纸的对应栏内写上 11 和 12 ( 参看下表 ) 例题 解答栏 (1) 11 (2) 12 2011 年下半年嵌入式系统设计师下午试卷第 1 页 ( 共 14 页 )
试题一 ( 共 15 分 ) 阅读以下关于某嵌入式系统设计方案的叙述, 回答问题 1 至问题 3, 将答案填入答题纸的对应栏内 说明 某公司承接了开发周期为 6 个月的某机载嵌入式系统软件的研制任务 该机载嵌入式系统硬件由数据处理模块 大容量模块 信号处理模块 FC 网络交换模块和电源模块组成, 如图 1-1 所示 数据处理模块和大容量模块的处理器为 PowerPC7447, 数据处理模块主要对机载数据进行处理, 完成数据融合 ; 大容量模块主要存储系统数据, 同时也有数据处理的能力 ; 信号处理模块的处理器为专用的数字信号处理器 DSP, 完成雷达数据处理, 并将处理后的数据发送给数据处理模块 ;FC 网络交换模块为己开发的模块, 本次不需要开发软件, 主要负责系统的数据交换 ; 电源模块主要负责给其它模块供电, 电源模块上没有软件 PowerPC7447 和 DSP 是 32 位处理器, 内存按字节编址 PowerPC7447 以大端方式 (big_endian) 存储数据,DSP 以小端方式 (little_endian) 存储数据 问题 1 (5 分 ) 在数据处理模块 1 中, 需要使用 A/D 变换器对外部电源模块的电压进行检测 当前数据处理模块中的 A/D 变换器为 10 位, 当 A/D 变换器的输入模拟电压最大为 5.115V 时,A/D 输出为 3FFH 通过配置 A/D 变换器的中断寄存器及比较寄存器 ( 比较寄存器的值是用来和 A/D 转换结果进行比较 ), 可以将 A/D 变换器配置为输入电压大于一定值时产生中断, 也可以配置为输入电压小于一定值时产生中断, 通过此种方式向系统报警 请回答以下三个问题 (1) 此 A/D 变换器的量化间隔为多少 mv( 量化间隔为 A/D 变换器最低有效位 1 位所代表的模 2011 年下半年嵌入式系统设计师下午试卷第 2 页 ( 共 14 页 )
拟电压值 )? (2) 如果规定下限阈值为 4.092V, 要使用中断检测这个电压, 此时 A/D 变换器的比较寄存器应配置为多少? (3) 如果采用查询方式实现电源电压超限报警功能, 程序如何判断 A/D 变换器完成了单次数据转换? 问题 2 (5 分 ) 李工负责该系统软件的研发 在软件策划过程中, 为了加快软件的开发, 确保进度, 李工将软件分解为若干软件配置项, 每个软件配置项指定一人开发 每个配置项的开发过程包括 : 软件需求分析 软件概要设计 软件详细设计 软件编码 软件单元测试和部件级测试六个阶段 李工的做法符合软件工程的要求吗? 为什么? 问题 3 (5 分 ) 田工负责编写信号处理模块与数据处理模块 2 的通信程序, 约定好的数据组织方式如表 1-1 所示 以下是信号处理模块端的一段程序 : unsigned int msgid=0x01; // 表示从信号处理模块发送到数据处理模块 2 的消息 ID typedef struct FCSND_Data_struct unsigned char A; unsigned int B; unsigned short C; unsigned char D[16]; } FCSND_DATA; FCSND_DATA senddata;...... FillfcData(&sendData); // 将待发送数据赋值到 senddata 数据结构中 sendfc((msgid,&senddata,sizeof(fcsnd_data)); // 发送数据 2011 年下半年嵌入式系统设计师下午试卷第 3 页 ( 共 14 页 )
以下是数据处理模块 2 端的一段程序 : unsigned int msgid=0x00; // 接收到的消息 ID typedef struct FCRCV_Data_struct unsigned char A; unsigned int B; unsigned short C; unsigned char D[16]; }FCRCV_DAT; FCRCV_DATA recvdata;...... recvfc((msgid,&recvdata,sizeof(fcrcv_data)); 接收数据 请问以上程序是否存在问题? 如果存在问题, 请分析原因 试题二 ( 共 15 分 ) 阅读以下关于某嵌入式处理器和 8255 的叙述, 回答问题 1 至问题 3, 将答案填入答题纸的对应栏内 说明 图 2-1 为使用某嵌入式处理器和 8255 对打印机进行控制的电路图, 其中 8255 的中断请求 PC3 接到处理器的中断请求输入端 INT0 上, 打印机的数据口接在 8255 的 PA0~PA7 上, 打印机的输出电平 ACK 接在 8255 的 PC6 上 为了使用嵌入式处理器对打印机进行控制, 在程序设计时, 需要将 8255 的 PA 口设置为工作方式 1;PB 口设置在工作方式 0, 配置为输入 ;PC 口的 PC0 PCI PC2 PC3 和 PC4 定义为输出 为了在打印机输出为低电平时通过 8255 的 PC3 产生有效的中断请求信号 INTRA, 必须使得 A 口的中断请求使能 INTE=1, 实际上就是通过 C 口的按位复位操作将 PC6 置 1, 整个程序分为四部分 : 依次是 8255 的初始化, 嵌入式处理器的中断初始化, 嵌入式处理器的主程序和打印字符的中断处理程序 其中 8255 的端口配置功能如表 2-l 所示 嵌入式处理器的中断使能控制字含义如表 2-2 所示, 该处理器的典型汇编指令如表 2-3 所示 2011 年下半年嵌入式系统设计师下午试卷第 4 页 ( 共 14 页 )
EA: 全部中断,O= 关中断,1= 开中断 ES: 串口中断,O= 关中断,1= 开中断 ET1: 定时器 1 中断,O= 关中断,1= 开中断 EX1: 外部 INT1 中断,O= 关中断,1= 开中断 ETO: 定时器 O 中断, 0= 关中断,l= 开中断 Ex0: 外部 INT0 中断,O= 关中断,1= 开中断 2011 年下半年嵌入式系统设计师下午试卷第 5 页 ( 共 14 页 )
问题 l (6 分 ) 根据图 2-1 所示, 通过嵌入式处理器访问 8255 的 PA 口 PB 口和 PC 口对应的地址分别是什么?( 请用 16 进制描述 ) 对应的地址 : PA 口 :(1) PB 口 :(2) PC 口 :(3) 问题 2 (4 分 ) 在嵌入式处理器的汇编语言中, 最简单的指令寻址方式为立即寻址和直接寻址, 请回答下面两个汇编语言语句所描述的含义, 将答案填写在答题纸的对应栏中 MOV A,#3AH:(1) MOV R4,3AH:(2) 问题 3 (5 分 ) 以下汇编程序用于打印机输出控制, 请将下面汇编程序的空 (1)~(5) 补充完整, 并将解答填入答题纸的对应栏中 8255 的 A 口工作在方式 1 输出, 初始化程序 : 2011 年下半年嵌入式系统设计师下午试卷第 6 页 ( 共 14 页 )
INTl55:MOV DPTR,#8003H MOV A, 10100010B MOVX @DPTR,A ; 配置 A 口在工作方式 1 B 口在工作方式 0 MOV A, 00001101B MOVX @DPTR,A ; 将 PC6 口置位 嵌入式处理器的中断初始化程序 : INT031: MOV IE,(1) ; 开总中断及所有五个中断源用十六进制表示 ANL TCON,#OFEH ; 规定 INTO 下降沿低电平产生中断请求嵌入式处理器主程序 : ( 打印存储单元 20H 开始向后的内容, 中断处理程序中每次从 20H 中取到需要打印的存储单元地址, 直到遇到存储单元里面内容不是 0AH 为止 ) ORG 0100H MOV R0,#20H ; 取打印缓冲区地址 MOV DPTR,#8000H MOV A,(2) ; 取打印字符 INC R0 INC R0 MOV 20H,R0 MOVX @DPTR,A ; 输出打印 当字符打印结束会产生一次中断, 中断服务程序如下 : ORG 1300H PRINTER: PUSH PSW ; 压栈操作 PUSH Acc PUSH R0 PUSH DPH PUSH DPL MOV R0,(3) ; 用十六进制表示 MOV DPTR,#8000H 2011 年下半年嵌入式系统设计师下午试卷第 7 页 ( 共 14 页 )
MOVX A,@R0 MOVX @DPTR,A ; 取打印字符 ; 输出打印 INC R0 MOV 20H,RO ; 将需要取打印内容的地址放置到 20H 单元 CJNE A,#OAH,NEXT ANL IE,(4) ; 关 INT0 中断, 用十六进制表示 NEXT:POP DPL POP DPH POP (5) POP Acc POP PSW RETI 试题三 ( 共 15 分 ) 阅读以下关于嵌入式软件测试用例设计的叙述, 回答问题 1 至问题 3, 将答案填入答题纸的对应栏内 说明 某程序段的流程如图 3-1 所示,x y 是两个变量,K J 表示一段程序执行体, 表 3-1 所示为本题可供选择的四组测试用例组 2011 年下半年嵌入式系统设计师下午试卷第 8 页 ( 共 14 页 )
问题 l (3 分 ) 简答以下问题 (1) 条件覆盖的含义是什么? (2) 路径覆盖的含义是什么? 问题 2 (2 分 ) 在程序测试用例设计中, 有语句覆盖 条件覆盖 判定覆盖 ( 分支覆盖 ) 和路径覆盖等 其中, 是最强的覆盖准则 请把以下 4 个选项中正确的选项序号填入上述空白处 1 语句覆盖 2 条件覆盖 3 判定覆盖 ( 分支覆盖 ) 4 路径覆盖 问题 3 (10 分 ) 为了对图 3-1 所示的程序段进行覆盖测试, 必须适当地选取测试用例组 实现判定覆盖至少应采用的测试用例组是 (1) 和 (2), 实现条件覆盖至少应采用的测试用例组是 (3); 实现路径覆盖至少应采用的测试用例组是 (4) 和 (5) 请把以下 8 个选项中正确的选项序号填入上述空白处 1 测试用例组 I 和 II 2 测试用例组 II 和 III 3 测试用例组 III 和 IV 4 测试用例组 I 和 IV 5 测试用例组 I II 和 III 6 测试用例组 II III 和 IV 7 测试用例组 I III 和 IV 8 测试用例组 I II 和 IV 试题四 ( 共 15 分 ) 阅读以下关于中断的叙述, 回答问题 1 至问题 4, 将答案填入答题纸的对应栏内 说明 在某嵌入式系统中, 王工设计的计算机模块如图 4-1 所示 它要求 CPU 在执行完 2011 年下半年嵌入式系统设计师下午试卷第 9 页 ( 共 14 页 )
当前指令后转而对中断请求进行处理 假定 :TDC 为查询链中每个设备的延迟时问,Ta Tb Tc 分别为设备 A B c 的中断服务程序所需的执行时间,Ts 和 TR 为保存现场和恢复现场所需的时间 问题 1 (2 分 ) 一般计算机系统根据对中断处理的策略不同, 可分为单级中断系统和多级中断系统 本项目中王工设计的系统属于哪一类中断系统? 请将设备 A 设备 B 设备 C 三个设备的中断优先级按照从高到低的次序排列 问题 2 (5 分 ) 本系统不允许中断嵌套, 如果 CPU 响应中断, 则中断处理过程按照如下流程执行, 将 (1)~ (5) 的内容填入答题纸上相应的位置 中断处理过程流程 : a) CPU 检查响应中断的条件是否满足 ; b) 如果 CPU 响应中断, 则 (1); c) (2) ; d) 分析中断原因 ; e) (3) ; f) 退出中断, (4) ; g) (5),CPU 继续执行 问题 3 (4 分 ) 当设备 A 设备 B 设备 C 同时发出中断请求时, 请计算出处理器处理设备 A B C 2011 年下半年嵌入式系统设计师下午试卷第 10 页 ( 共 14 页 )
的时间 TA TB 和 TC 如果处理三个设备所需要的总时问为 T, 那么本系统所设计的中断极限频率 f 是多少? 问题 4 (4 分 ) 嵌入式系统中多用 I/O 设备管理软件来管理外设 I/0 设备管理软件一般分为 4 层, 层次关系和每一层的主要功能说明如图 4-2 所示 请给出 4 层软件的名称, 将 (1)~(4) 的内容填入答题纸上相应的位置 试题五 ( 共 15 分 ) 阅读以下关于 C 语言及 C 代码的叙述, 回答问题 1 至问题 3, 将答案填入答题纸的对应栏内 说明 在开发某嵌入式系统时, 设计人员根据系统要求, 分别编写了如下三部分程序, 其中 : C 代码 1 是李工为了在嵌入式平台上开发一段可变参数函数, 在 X86 平台上实现的一个参数个数可变函数实例 C 代码 2 是王工在编写软件时, 自己编写的内存拷贝函数 C 代码 3 是赵工编写的一段数据处理的程序, 其中 fun() 的含义为从已创建的一个单向链表中查找倒数第 index 个节点 他的设计思路为 : 首先创建两个指针 ptr1,ptr2, 并且都指向链表头, 然后 ptr1 向前走 index 步, 这样 ptr1 和 ptr2 之间就间隔 index 个节点, 然后 ptr1 和 ptr2 同时向前步进, 当 ptr1 到达最后一个节点时,ptr2 就是倒数第 index 个节点了 ReverseList() 为赵工编写的对已有单向链表进行逆序重排的函数 C 代码 1 long sum(int i,...) 2011 年下半年嵌入式系统设计师下午试卷第 11 页 ( 共 14 页 )
int *p,j; long s=0; P=&i+1; for(j=0;j<i;j++) S+=p[j]; return s; } long Sum=sum(3,1,2,3); C 代码 2 static int pent;... void *MyMemcpy(void *dest,const void *src,int n) char *pdest=(char*)dest; char *psrc=(char*)src; for(int i=0;i<n;i++) *(pdest+i)=*(psrc+i); } return dest; } C 代码 3 node *fun(node *head,int index) node *ptr1,*ptr2; int i=o; ptr1=head; ptr2=head; if(head==null head->next==null) return ptr1; 2011 年下半年嵌入式系统设计师下午试卷第 12 页 ( 共 14 页 )
while(i<index) (1) ; if(ptr1==null) return head; i++; } while(prt1->next!=null) ptr1=ptr1->next; (2) ; } return (3) ; node *ReverseList(node *head) node *temp1=null; node *temp2=null; node *temp3=null; if((head->next==null) (head==null)) return head; } temp1=head; temp3=temp1->next; temp1->next=null; while(temp3->next!=null) temp2=temp3; temp3=temp3->next; (4) ; 2011 年下半年嵌入式系统设计师下午试卷第 13 页 ( 共 14 页 )
temp1=temp2; } temp3->next=temp1; return (5) ; 问题 1 (3 分 ) 执行 C 代码 1 后,Sum 的值应为多少? 请用十进制表示 问题 2 (7 分 ) 请问 C 代码 2 中 static 的作用是什么?const 的作用是什么? 王工自己编写的内存拷贝函数安全吗? 如存在缺陷, 请指出缺陷在哪里 问题 3 (5 分 ) 仔细阅读并分析 C 代码 3, 填补其中的空 (1)~(5) ( 本试题的参考答案请在软考网下载 网址是 http://www.ruankao.net) 2011 年下半年嵌入式系统设计师下午试卷第 14 页 ( 共 14 页 )