2008年下半年嵌入式系统设计师下午试卷(B)

考试总分:5分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2008年下半年嵌入式系统设计师下午试卷(B)

开始答题

试卷预览

  • 1. 试题一(共20分)下面是关于某测试设备的叙述,仔细阅读并分析,回答问题1至问题4,将答案填入答题纸的对应栏内。【说明】某测试设备是一个嵌入式系统,是为了测试一个专用设备而研制的,如图1-1所示。测试设备用于测试被测设备的各项软、硬件功能,包括2路RS232串口、2路模拟量、电源以及专用设备的其它内部部件。在被测专用设备内部有专门的自检测程序,来测试内部各部件。测试设备的串口与被测设备相连接,加电后,通过按测试设备的周边键与被测设备握手同步,再向被测设备发送检测消息,被测设备测试自己的某项功能后,通过串口将测试结果发回给测试设备,显示在测试设备的LCD屏上。测试设备的硬件由处理器模块、IO模块和电源模块组成,处理器模块上有CPU、存储器、2路串口、键盘控制器;IO模块上有D/A、A/D转换器,用作为模拟量输入和采集电源的电压值,以测试被测设备的模拟量和电源;电源模块提供测试设备的电源;测试设备模块间采用ISA总线。测试设备的2路串口与被测设备相连,同时测试设备的D/A、A/D转换控制器的输入线路与被测设备的模拟量和电源线相连,可直接测试被测设备的2路RS232串口、2路模拟量、电源。测试设备的软件由底层驱动(串口驱动、D/A、A/D驱动和自定义键盘驱动)、嵌入式操作系统和测试软件组成。图1-1某测试设备结构示意图【问题1】(4分)设存储器容量为4兆字,字长32位,模块数为4,分别用顺序方式和交叉方式进行组织,存储周期为200ns,数据线宽度32位,总线传送周期为50ns,请计算顺序存储器和交叉存储器的平均存取时间(单位:ns)和带宽(单位:位/秒)。【问题2】(6分)测试设备的软件工作过程为:测试设备和被测设备同时加电,测试设备的操作系统启动后自动执行测试程序。测试程序首先采集被测设备的电源是否正常,并在屏幕显示测试信息。如果被测设备正常,则向被测设备发送握手消息,与被测设备同步;如果同步不上,则报“不能与设备同步”,测试结束。接下来,测试程序接收周边键命令,按要求测试。如果测试2路模拟量,则由测试设备通过D/A转换,向被测设备发送模拟信号,被测设备得到模拟信号,判断正确性后,通过串口将结果返回给测试设备。另外,被测设备还有4个功能项是通过串口发送测试命令给被测设备的,由被测设备内的自测试程序测试后,将结果再通过串口传回给测试设备。请完成图1-2所示的流程图,按编号将正确答案填写在答题纸的对应栏中。图1-2测试设备的测试软件流程图【问题3】(6分)请把下面列出的6个空位的答案填入答题纸上相应的位置。1.ISA总线为(1)位总线;2.由模拟信号到数字信号的转换过程称为(2);3.将数字信号变成模拟信号的过程称为(3);4.D/A转换器的主要性能指标有(4)、(5)、(6)。(回答其中的三个主要性能指标即可)【问题4】(4分)在本测试设备的异步串行传输中,数据格式为:数据位8位、奇校验位1位、停止位1位。当波特率为9600b/s时,每秒钟传送的有效数据是多少字节?为保证数据收发正确,试分析发送方和接收方时钟允许的误差范围,并以百分比形式给出最大误差。[20分]
  • 2. 试题二(共15分)阅读以下关于输入输出接口设计的说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】图2-1为采用查询方式工作的输入接口,地址译码器中A15~A1直接接或门输入。图2-1输入接口的电路原理图【问题1】(5分)输入设备在向接口传送8位数据的同时,还传送负脉冲STB,该信号的作用是什么?【问题2】(3分)D触发器的作用是什么?【问题3】(7分)用查询方式将输入设备的一个数据读入CPU的BL中,程序段如下所示,请完成该段8086汇编程序,将(1)~(5)的内容填入答题纸上相应的位置。START:MOVDX,(1)NEXT1:INAL,DXNEXT2:ANDAL,(2)JZ(3)MOVDX,(4)INAL,DXNEXT3:MOV(5),ALRET[15分]
  • 3. 试题三(共15分)阅读以下有关软件工程开发的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。【说明】V模型是在快速应用开发模型基础上演变而来的,由于将开发过程构造成一个V字型而得名,V模型强调软件开发的协作和速度,将软件实现和验证有机结合起来,在保证较高的软件质量情况下缩短开发周期,图3-1为V模型的完整诠释。图3-1V模型示意图【问题1】(4分)图3-1所示的V模型中,与开发阶段中概要设计对应测试阶段称为(1)。在系统或配置项测试阶段处应采用(2)方法。请将(1)和(2)处的内容填入答题纸上相应位置。【问题2】(4分)请完成下面叙述,在(3)、(4)处填入恰当的内容,将解答填写在答题纸的对应栏中。从图3-1中水平对应关系看,左边是软件设计过程,右边是软件测试过程。在软件设计过程中,SQA应按(3)进行检查活动。在软件测试过程中,系统测试是基于(4)的测试。【问题3】(7分)完成下面对V模型优点的论述,将答案填写在答题纸的对应栏中。1.客户需求分析对应验收测试。在进行需求分析、功能设计的同时,测试人员就可以阅读、审查分析结果,从而(5)。2.系统设计人员做系统设计时,测试人员可了解实现的过程,可(6)。3.设计人员做详细设计时,测试人员可参与设计,对设计(7),同时(8),并基于用例开发测试脚本。4.编码的同时进行单元测试,可尽快找出程序中的缺陷,提高(9)。5.避免了瀑布模型所带来的误区,即软件测试是在(10)之后进行。[15分]
  • 4. 试题四(共10分)阅读以下有关80X86汇编语言的叙述,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】本题由两部分组成,第一部分为计算AX寄存器的值,第二部分为判错题。【问题1】(5分)已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]到[20103H]依次存放12H、34H、56H、78H,[21200H]到[21203H]依次存放2AH、4CH、B7H、65H,说明下列每一条指令执行后AX寄存器的内容。(1)MOVAX,[1200H](2)MOVAX,[BX](3)MOVAX,[BX+1100H](4)MOVAX,[BX+SI](5)MOVAX,[BX][SI+1100H]【问题2】(5分)下列MOV指令都是错误的,请指出错误原因。(1)MOVES,1234H(2)MOVAL,300(3)MOV[SP],AX(4)MOVAX,BX+DI(5)MOV20H,AH[10分]
  • 5. 试题五(共15分)阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。【C语言代码】/*变量与类型说明*/#include"stdio.h"#include"stdlib.h"externintsys_status;externintDev_drv1(intarg1,intarg2);externintDev_drv2(intarg1,intarg2);externintDev_drv3(intarg1,intarg2);externintDev_drv4(intarg1,intarg2);#defineNOERROR0typestruct{int_fd;}TYP_DEV_TAB;TYP_DEV_TABdev_tab[50]={101,99,80,120,};/*程序代码*/voidmanage_device(intdevid,intarg1,intarg2){intplace;intret;for(place=0;place=50)printf("NODEVICEfd=%d\n",devid);switch(dev_tab[place]._fd){case80:ret=Dev_drv3(intarg1,intarg2);break;case99:ret=Dev_drv2(intarg1,intarg2);break;case101:ret=Dev_drv1(intarg1,intarg2);break;case120:ret=Dev_drv4(intarg1,intarg2);break;}if(ret!=NOERROR)printf("DEVICE%derror!\n",devid);}intDev_drv1(intarg1,intarg2){/*局部变量声明,略*//*驱动程序代码,略*/}intDev_drv2(intarg1,intarg2){/*局部变量声明,略*//*驱动程序代码,略*/}intDev_drv3(intarg1,intarg2){/*局部变量声明,略*//*驱动程序代码,略*/}intDev_drv4(intarg1,intarg2){/*局部变量声明,略*//*驱动程序代码,略*/}【问题1】(8分)请用C语言的函数指针变量,对manage_device函数进行改造,完成下面C语言代码中的(1)、(2)、(3)和(4)处的变量说明或语句,将解答填入答题纸的对应栏内。【C语言代码】/*变量与类型说明*/#include"stdio.h"#include"stdlib.h"externintsys_status;externintDev_drv1(intarg1,intarg2);externintDev_drv2(intarg1,intarg2);externintDev_drv3(intarg1,intarg2);externintDev_drv4(intarg1,intarg2);#defineNOERROR0typedefstruct{int_fd;(1)函数指针变量说明;/*变量名用process*/}TYP_DEV_TAB;TYP_DEV_TABdev_tab[50]={{101,Dev_drv1},{99,Dev_drv2},{80,Dev_drv3},{120,Dev_drv4},};/*程序*/voidmanage_device(intdevid,intarg1,intarg2){intplace;intret;(2)函数指针变量说明;/*局部变量,变量名用ProcAction*/for(place=0;place=50)printf("NODEVICEfd=%d\n",devid);(4)语句2;if(ret!=NOERROR)printf("DEVICE%derror!",devid);}【问题2】(3分)在C语言程序中,常在某些变量的说明前加extern,如本题在变量说明中的第一条加externintsys_status;请说明加extern与不加extern的区别,在进行编译时会有什么样的不同处理?【问题3】(2分)函数的参数存放在什么地址空间中?说明其作用范围。将答案填入答题纸的对应栏内。【问题4】(2分)在设备驱动程序(函数)Dev_drv1中,对指针ptr的说明如下:【C语言代码】intDev_drv1(intarg1,intarg2){structnode{intID;charname[20];intrange;};structnode*ptr;/*其它局部变量声明,略*/ptr=(structnode*)malloc(sizeof(structnode)*100);/*其它程序代码,略*/}设int为32位整数,char占8位。当对指针ptr赋完值后的值为0x3751C0,若再执行一条“ptr++;”语句,此时ptr的值为多少?(用十六进制表示)。[15分]
相关试卷
相关题库