本栏目下题库来源于互联网,轻速云承诺对于用户导入平台的题库是严格保密的,不会在此呈现!
轻速云给您提供更好的在线考试系统服务!
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: MOV  DX,  (1)
    NEXT1: IN  AL,DX
    NEXT2: AND  AL,  (2)
            JZ  (3)
            MOV  DX,  (4)
            IN  AL,DX
    NEXT3: MOV    (5)  ,AL
            RET [15分]
解析:
   
3、【 简答题
试题三(共15分)
    阅读以下有关软件工程开发的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    V模型是在快速应用开发模型基础上演变而来的,由于将开发过程构造成一个V字型而得名,V模型强调软件开发的协作和速度,将软件实现和验证有机结合起来,在保证较高的软件质量情况下缩短开发周期,图3-1为V模型的完整诠释。
     
    图3-1  V模型示意图
【问题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) MOV    AX,[1200H]
    (2) MOV    AX,[BX]
    (3) MOV    AX,[BX+1100H]
    (4) MOV    AX,[BX+SI]
    (5) MOV    AX,[BX][SI+1100H]
【问题2】(5分)
    下列MOV指令都是错误的,请指出错误原因。
    (1) MOV    ES,1234H
    (2) MOV    AL,300
    (3) MOV    [SP],AX
    (4) MOV    AX,BX+DI
    (5) MOV    20H,AH [10分]
解析:
   
5、【 简答题
试题五(共15分)
    阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
    在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段 C 语言代码是驱动管理程序manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
/* 变量与类型说明*/
#include  "stdio.h"
#include  "stdlib.h"
extern int  sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, int arg2);
#define  NOERROR  0
type struct {
    int  _fd;
  } TYP_DEV_TAB;
TYP_DEV_TAB  dev_tab[50]= {101,99, 80, 120,};
/* 程序代码 */
void  manage_device(int devid, int arg1, int arg2)
{  int  place ;
  int  ret;
    for(place=0 ; place<50 ; place++)
        if dev_tab [place]._fd == devid)  break;
    if(place>=50)
        printf(" NO DEVICE  fd = %d\n ",devid);
    switch(dev_tab [place]._fd) {
        case  80:
            ret = Dev_drv3(int arg1,int arg2);
            break;
        case  99:
            ret = Dev_drv2(int arg1,int arg2);
            break;
        case  101:
            ret = Dev_drv1(int arg1,int arg2);
            break;
        case  120:
            ret = Dev_drv4(int arg1,int arg2 );
            break;
  }
  if(ret!=NOERROR)
      printf(" DEVICE  %d  error!\n ", devid);
}
int  Dev_drv1(int arg1,int arg2 )
{
  /* 局部变量声明,略 */
  /* 驱动程序代码,略*/
}
int  Dev_drv2(int arg1,int arg2 )
{
  /* 局部变量声明,略 */
  /* 驱动程序代码,略*/
}
int  Dev_drv3(int arg1,int arg2)
{
  /* 局部变量声明,略 */
  /* 驱动程序代码,略*/
}
int  Dev_drv4(int arg1,int arg2)
{
  /* 局部变量声明,略 */
  /* 驱动程序代码,略*/
}
【问题1】(8分)
    请用C语言的函数指针变量,对manage_device函数进行改造,完成下面C语言代码中的(1)、(2)、(3)和(4)处的变量说明或语句,将解答填入答题纸的对应栏内。
【C语言代码】
/* 变量与类型说明*/
#include  "stdio.h"
#include  "stdlib.h"
extern int  sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, int arg2);
#define  NOERROR  0
typedef struct {
    int  _fd;
    (1)函数指针变量说明;/*  变量名用process  */
} TYP_DEV_TAB;
TYP_DEV_TAB  dev_tab[50]= {{101, Dev_drv1},{99, Dev_drv2},
{80, Dev_drv3},{120, Dev_drv4},};
/* 程序 */
void  manage_device(int devid, int arg1, int arg2)
{  int  place ;
  int  ret;
  (2)函数指针变量说明;/*局部变量,变量名用ProcAction  */
    for(place=0 ; place<50 ; place++)  {
        if(dev_tab [place]._fd == devid) {
            (3)语句1;/*  变量名用ProcAction,得到具体函数的入口地址 */
            break;
        }
    }
    if(place>=50)
        printf("NO DEVICE  fd = %d\n",devid);
  (4)语句2;
    if(ret!=NOERROR)
        printf("DEVICE  %d  error!", devid);
}
【问题2】(3分)
    在C语言程序中,常在某些变量的说明前加extern,如本题在变量说明中的第一条加extern int sys_status;请说明加extern与不加extern的区别,在进行编译时会有什么样的不同处理?
【问题3】(2分)
    函数的参数存放在什么地址空间中?说明其作用范围。将答案填入答题纸的对应栏内。
【问题4】(2分)
    在设备驱动程序(函数)Dev_drv1中,对指针ptr的说明如下:
【C语言代码】
    int  Dev_drv1(int arg1,int arg2 )
    {
        struct  node {
            int  ID;
            char  name [20];
            int  range;
        } ;
        struct node  *ptr;
        /* 其它局部变量声明,略 */
        ptr  =  (struct  node *)malloc(sizeof(struct  node)*100);
        /* 其它程序代码,略*/
    }
  设int 为32位整数,char占8位。当对指针ptr赋完值后的值为0x3751C0,若再执行一条“ptr++;”语句,此时ptr的值为多少?(用十六进制表示)。 [15分]
解析:
    
1
1页,共5个题库
1页,共5个题库
轻速云给您提供更好的在线考试系统服务!
推荐
推荐题库
众多企事业单位的信赖之选
36万+企事业单位的共同选择
查看更多合作案例
众多企事业单位的信赖之选
开始使用轻速云组织培训考试
四步组织一场考试答题,一键搭建企业培训平台
免费使用 免费使用 预约演示
咨询热线
400-886-8169
周一到周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1 轻速云科技提供专业的在线考试系统、在线培训系统
联系我们
客服热线客服热线:400-886-8169 | 周一至周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1
轻速云科技提供专业的在线考试系统、在线培训系统
在线咨询 400-886-8169