“守纪律、讲规矩”要求广大党员干部特别是领导干部必须牢固树立纪律和规矩意识,做识时务的明白
查看答案
试题一(共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分)
请回答关于面板按键设计过程中的下列问题,将答案填写在答题纸的对应栏中。
在进行面板键盘处理设计时,通常在扫描键盘过程中,按键会产生机械抖动。针对抖动问题,王工认为只有通过硬件设计才能消除抖动,而李工认为用软件方法就可以解决该问题。针对抖动问题,你认为可以采用哪类方式消除?
为了方便读者理解,在没有改变意思或基本没改变意思的情况下,可以修改引语。()