主观

试题二(共15分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

 在某嵌入式系统设计中,使用8片RAM进行64KRAM的外部存储器扩展,如图2-1所示。该CPU共有16根地址线,8根数据线,在设计中,利用CPU的作为访问控制信号,该访问控制信号低电平有效。另外,作为读写命令信号(高电平为读,低电平为写)。8片8Kx8位的RAM芯片与CPU相连,RAM芯片的片选内部为上拉电阻到电源,各个RAM芯片的片选信号和74138译码器的输出相连,译码器的地址选择端连接到CPU的A13,A14,A15地址线上。

【问题1】(8分)

根据上图所示,写出RAM0,RAM1和RAM7的地址范围(请用16进制进行表示)。

RAM0: (1)

RAM1: (2)

RAM7: (3)

若CPU操作的地址总线为A800H,结合图2-1所示的示意图,CPU访问的是哪个RAM存储器(4)。

【问题2】(4分)

如果运行时发现不论往哪片RAM写入数据后,以C000H为起始地址的存储芯片都有与其相同的数据,假设芯片与译码器可靠工作,则说明:

(1) RAM0~RAM7中(1) 的片选输入端总是处于低电平。

(2)如果有问题的存储芯片的片选输入端总是处于低电平,以下可能原因中描述不正确的是(2) 。

A.该存储芯片的CS端与存储芯片的端错连或短路

B.该存储芯片的CS端与CPU的端错连或短路

C.该存储芯片的CS端与地线错连或短路

D.该存储芯片的CS端悬空

【问题3】(3分)

根据连接图,若出现地址线A15与CPU断线,并搭接到高电平上,下面描述中正确的是( )。(该题为多选题)

A.此时存储器只能寻址A15=1的地址空间

B.此时存储器只能寻址总共64K字节空间的高32K字节地址空间

C.此时访问64K字节空间的高32K字节地址空间时会错误地访问到低32K字节地址空间

D.此时访问64K字节空间的低32K字节地址空间时会错误地访问到高32K字节地址空间

参考答案
您可能感兴趣的试题

试题五(共15分)

阅读下列说明和程序,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中:

【程序1】是李工编写的一个数据交换子程序。

【程序2】是赵工编写的一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。

【程序1】

#include

swap(int x,int y){

     int t:

     t= x;

     x=y;

     y=t;

}

main() {

     int a,b;

     a=3;

     b=4;

     swap(a,b);

     printf(”%d, %d\n",a,b);

}

【程序2】

typedef struct Item {

   int itemid;

   union {

          char data;

          struct Item *link;

   }un;

   struct Item *nextItem;

} ItemNode;

int EqualItem( ItemNode*x,ItemNode*y){

   int res;

   if(x==y) retun1;

   if(1){

     if (2){

        If(x->itemid==0){

           res= (3) ;

        }

        else{

           res= (4) ;

       }

       if (res){

           retun (5) ;

       }

     }

   }

   Return0;

}

【问题1】(6分)

执行【程序1】后,打印出来的a=3,b=4;并没有完成数据交换,请指出李工的问题?并改正程序错误。将答案填写在答题纸中对应的栏目。

【问题2】(5分)

 仔细阅读并分析【程序2】中的C语言代码,完成其中(1)~(5)空白填空,将

答案填入答题纸的对应栏内。

【问题3】(4分)

 李工编写某嵌入式软件时,遇到了一些问题,请帮助李工解答下面2个问题,并将答案填写在答题纸中对应的栏目。

(1)李工在编译时,程序没有通过编译,经检查程序后将文件头的#include改为#include“filename.h”后编译通过,请问#include和#include“filename.h”的区别是什么?

(2)李工在编写一段C++程序时,需要调用一段已编译的C语言函数,为什么要加exten“C”?

试题四(共15分)

阅读下列说明和表,回答问题1至问题2,将解答填入答题纸的对应栏内。

【说明】

看门狗(Watchdog)技术是嵌入式系统设计中保证系统可靠的常用技术。嵌入式控制系统运行时由于受到外部干扰或者内部系统错误,程序有时会出现“跑飞”现象,导致整个系统瘫痪。为了防止这一现象的发生,对系统可靠性要求较高的场合往往要加入看门狗电路。当系统“跑飞”时,看门狗电路能自动恢复系统的运行。

【问题1】(8分)

 设某嵌入式系统程序完整运行所需的周期时间是tp,看门狗的定时周期为tw,要求tw(1)tp,在程序运行过程中需要定时(2)(俗称“喂狗”),只要程序正常运行,定时器就不会溢出。若由于干扰等原因使系统不能在tp时刻修改定时器的计数值,定时器将在tw时刻(3),引发(4),使系统得以重新运行。

请填充以上叙述中空缺处的内容,将答案填写在答题纸的对应栏中。

【问题2】(7分)

张工在某嵌入式系统中设计实现了看门狗电路,采用的芯片寄存器如表4-1、表4-2、表4-3、表4-4所示。

王工编写了以下程序代码,实现看门狗电路的初始化。请仔细阅读每行代码,然后回答问题。

 #define PCLK   10000000                                  //第1行

 #define rWTCON (*(volatile unsigned int*)0x53000000)            //第2行

 #define rWTDAT (*(volatile unsigned int*)0x53000004)            //第3行

 #define rWTCNT (*(volatile unsigned int*)0x53000008)            //第4行

 void watchdog_test(void)                                    //第5行

 {                                                       //第6行

   rWTCON =((PCLK/1000000-1)<<8) | (3<<3) | (1<<2);            //第7行

   rWTDAT =7812;                                         //第8行

   rWTCNT =7812;                                         //第9行

   rWTCON |=(1<<5);                                     //第10行

}

请将以下问题的答案写在答题纸的对应栏中。

(1)在程序的第2、3、4行,分别使用了volatile关键字,请说明该关键字的作用。

(2)在程序的第7行,实现了对看门狗的三个功能设置,除了设置预装比例值外,其它两个功能分别是什么?

(3)在程序的第10行,实现了对看门狗的哪个功能设置?

(4)该系统结构采用的编址方式是什么?

(5)该系统的位序是大端方式还是小端方式?

试题二(共15分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

 在某嵌入式系统设计中,使用8片RAM进行64KRAM的外部存储器扩展,如图2-1所示。该CPU共有16根地址线,8根数据线,在设计中,利用CPU的作为访问控制信号,该访问控制信号低电平有效。另外,作为读写命令信号(高电平为读,低电平为写)。8片8Kx8位的RAM芯片与CPU相连,RAM芯片的片选内部为上拉电阻到电源,各个RAM芯片的片选信号和74138译码器的输出相连,译码器的地址选择端连接到CPU的A13,A14,A15地址线上。

【问题1】(8分)

根据上图所示,写出RAM0,RAM1和RAM7的地址范围(请用16进制进行表示)。

RAM0: (1)

RAM1: (2)

RAM7: (3)

若CPU操作的地址总线为A800H,结合图2-1所示的示意图,CPU访问的是哪个RAM存储器(4)。

【问题2】(4分)

如果运行时发现不论往哪片RAM写入数据后,以C000H为起始地址的存储芯片都有与其相同的数据,假设芯片与译码器可靠工作,则说明:

(1) RAM0~RAM7中(1) 的片选输入端总是处于低电平。

(2)如果有问题的存储芯片的片选输入端总是处于低电平,以下可能原因中描述不正确的是(2) 。

A.该存储芯片的CS端与存储芯片的端错连或短路

B.该存储芯片的CS端与CPU的端错连或短路

C.该存储芯片的CS端与地线错连或短路

D.该存储芯片的CS端悬空

【问题3】(3分)

根据连接图,若出现地址线A15与CPU断线,并搭接到高电平上,下面描述中正确的是( )。(该题为多选题)

A.此时存储器只能寻址A15=1的地址空间

B.此时存储器只能寻址总共64K字节空间的高32K字节地址空间

C.此时访问64K字节空间的高32K字节地址空间时会错误地访问到低32K字节地址空间

D.此时访问64K字节空间的低32K字节地址空间时会错误地访问到高32K字节地址空间

试题一(共15分)

阅读下列说明和图、表,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某车载导航系统的结构如图1-1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。

 

导航处理系统由主处理机模块、电子盘模块、信号处理模块和电源模块组成,主处理机模块执行电子地图功能、导航控制功能等,生成的导航显示画面通过信号线在LCD液晶彩色显示屏显示给驾驶员;信号处理模块处理外部采集数据,将处理后的数据通过内部总线传输给主处理机模块;电子盘模块存储电子地图数据及导航数据。

显示系统由LCD液晶彩色显示屏、面板键盘(自定义键盘)和电源模块组成,主要是显示导航画面,也可通过面板键盘进行导航控制。

【问题1】(6分)

GPS天线接收卫星信号,将定位信息以帧的形式,通过RS232串行接口传输给主处理机模块。通常RS232的管脚规格如表1-1所示。

采用RS232通信,如果发送的数据量超过接收方缓冲区时,可能在接收方缓冲区因处理时间延迟等导致接收数据丢失。因此,需要进行流量控制。

请回答下面三个问题,将答案填写在答题纸的对应栏中。

(1)如果通过软件进行流量控制,也就是将流量控制信息以特殊的数据进行发送,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)

(2)如果通过硬件方式进行流量控制,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)

(3)若RS232适配器的FIFO深度为4字节,通信波特率为9600bps,数据位为8位,无校验,停止位为1,无数据流控。在应用设计中每次以4字节为单位进行数据发送,每两次发送之间严格控制时间间隔为10ms,连续发送100次,在此过程中,忽略所有由于调度等因素引起的发送延迟。那么,从第1次发送开始,到第100次数据发送出去,消耗的时间为多少ms?

【问题2】(6分)

主处理机模块与信号处理模块间通过双端口存储器进行数据交换。李工设计时,将双端口存储器空间划分为两个缓冲区,两个缓冲区分别交替地接收信号处理机传输来的最新数据,然后按数据块方式提供给用户程序使用。

假设每个缓冲区的大小为512KB,将512KB数据写入当前空闲缓冲区接口服务为Write_Buffer,将当前有效的512KB数据读出缓冲区韵接口服务为Read_Buffer,假设双端口存储器中不提供硬件信号量,两个缓冲区间的互斥操作由软件标记实现,软件对双端口存储器的单次操作(读写一个字的操作)为原子操作。

下面是用C语言设计的一组对双缓冲区的管理程序代码,请填补该程序代码中的空缺,将答案填写在答题纸上。

int *BufferFlag[2];     /* 0表示无有效数据,0xff表示有新数据 */

int *Mutex[2];      /* 软件锁,0表示未锁定,0xff表示锁定 */

   int Read_Buffer(int id,char*data); /* 从缓冲区读数据,用于数据处理模块,id表示缓冲的序列号,0表示缓冲区1,1表示缓冲区2,data为存放读取数据的缓冲,返回值表示读取到有效数据的长度 */

  void Write_Buffer(int id, char *data);/* 向缓冲区写数据,用于信号处理模块,id表示缓冲的序列号,0表示缓冲区1,1表示缓冲区2,data为待写入数据的缓冲 */

  int INIT_PPC(){ /*数据处理模块端的初始化,缓冲区起始地址为0xffffc000。*/

     BufferFlag=(int*)0xffffc000;

     Mutex=(int*) 0xffffc010;

     *BufferFlag[0]=0;

     *BufferFlag[1]=0;

     *Mutex[0]=0;

     *Mutex[1]=0;

     retun (0);

 }

 int PPC_Read Data(char*Data){   /* 数据处理模块读数据程序段 */

   int   len=0;

   if((!(*BufferFlag[0]))&&(!(*BufferFlag[1]))){

      retum (0);                /*无新数据*/

   }

   if(*BufferFlag[0]){

      if( (1) ){

         *Mutex[0]=0xff;

         len= Read_Buffer(0,Data);

         *BufferFlag[0]=0x00;

         (2);

      }

  }

  else{

   if(*BufferFlag[1]){

        if(!(*Mutex[1])){

          *Mutex[1]= 0xff;

           (3)

          *BufferFlag[1]=0x00;

          *Mutex[1]= 0x00;

        }

     }

  }

  return (len),

}

  int DSP_Write_Data(){

 /*信号处理模块写数据程序段,初始化与数据处理模块端类似,同样以BufferFlag表示与数据处理模块端的对应的标志,即两端操作的是相同的地址空间; 同样Mutex也表示与数据处理模块端的对应的软件锁,即两端操作的是相同的地址空间。这里就略去双口在DSP上的起始地址说明和初始化部分。*/

   char Data[1024*512];

   while(1){

   ∥等待信号处理模块产生新的数据并存入数据缓冲Data中;

   if(!(*Mutex[0])){ 

     *Mutex[0]=0xff;

      Write_Buffer(0,Data);

      *BufferFlag[0]= 0xff;

      *Mutex[0]= 0x00;

    }

    else if(!(*MuteX[1])){

      *Mutex[1]= 0xff;

      Write_Buffer(1,Data);

      *BufferFlag[1]=0xff;

      *Mutex[1]= 0x00;

    }

  }

  retum (0);

}

【问题3】(3分)

 请回答关于面板按键设计过程中的下列问题,将答案填写在答题纸的对应栏中。

 在进行面板键盘处理设计时,通常在扫描键盘过程中,按键会产生机械抖动。针对抖动问题,王工认为只有通过硬件设计才能消除抖动,而李工认为用软件方法就可以解决该问题。针对抖动问题,你认为可以采用哪类方式消除?

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服