首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说兑明和图、表,回答下列问题,将解答填入答题纸的对应栏内。 【说明】 某车载导航系统的结构如图1一1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。
阅读下列说兑明和图、表,回答下列问题,将解答填入答题纸的对应栏内。 【说明】 某车载导航系统的结构如图1一1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。
admin
2013-01-19
70
问题
阅读下列说兑明和图、表,回答下列问题,将解答填入答题纸的对应栏内。
【说明】
某车载导航系统的结构如图1一1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。
导航处理系统由主处理机模块、电子盘模块、信号处理模块和电源模块组成,主处理机模块执行电了地图功能、导航控制功能等,生成的导航显示画面通过信号线在LCD液晶彩色显示屏显示给驾驶员;信号处理模块处理外部采集数据,将处理后的数据通过内部总线传输给主处理机模块;电子盘模块存储电子地图数据及导航数据。
显示系统由LCD液晶彩色显示屏、面板键盘(门定义键盘)和电源模块组成,主要是显示导航画面,也可通过面板键盘进行导航控制。
主处理机模块与信号处理模块间通过双端口存储器进行数据交换。李工设计时,将双端口存储器空间划分为两个缓冲区,两个缓冲区分别交替地接收信号处理机传输来的最新数据,然后按数据块方式提供给用户程序使用。
假设每个缓冲区的大小为512 KB,将512 KB数据写入当前空闲缓冲区接口服务为Write Buffer,将当前有效的512 KB数据读出缓冲区的接口服务为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;
return(0);
}
int PPC_Read_Data(char*Data)( /* 数据处理模块读数据程序段*/
int len=0;
if((!(*BufferFlag[0]))&&(!(*BufferFlag[1]))){
return(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;
}
}
renurn(0);
}
选项
答案
(1)!(*Mutex[0])或者*Mutex[0]==0x00或者*Mutex[0]==0 (2)*Mutex[0]=0x00或者*Mutex[0]=0 (3)len=Read Buffert(1,Data)
解析
本题考查嵌入式系统中的C程序设计,要求考生正确使用软件锁。
在本题中主处理机模块与信号处理模块间通过双端口存储器进行数据交换。由信号处理模块发送数据,主处理机模块接收数据。
在本题中给出了很多假设条件,如将双端口存储器空间划分为两个缓冲区,两个缓冲区分别交替地接收信号处理机传输来的最新数据;再如假设双端口存储器中不提供硬件信号量,两个缓冲区间的互斥操作由软件标记实现,软件对双端口存储器的单次操作(读写一个字的操作)为原了操作。同时本题也给出了软件程序的架构,BufferFlag为缓冲区有无新数据的标志,Mutex为软件锁。
在数据处理模块端的初始化程序INIT PPC()中,、BufferFlag和Mutex被分配在缓冲区的前端,并被初始化为无数据和未锁定。
信号处理模块写数据程序DSP_Write_Data()中,初始化与数据处理模块端类似,同样以BufferFlag表示与数据处理模块端的对应的标志,即两端操作的是相同的地址空间;同样.Mutex也表示与数据处理模块端的对应的软件锁,即两端操作的是相同的地址空间。信号处理模块写数据程序DSP_Write_Data()是一个无限循环程序,在等待信号处理模块产生新的数据,之后就将数据写入双缓冲Data中。具体过程如下:
1)循环等待新数据;
2)如果缓冲区0未被锁定,则:
(1)缓冲区0加锁;
(2)写数据到缓冲区0;
(3)标记缓冲区0未有数据:
(4)缓冲区0解锁。
3)如果缓冲区0已被锁定,则对缓冲区1重复上述步骤。
在数据处理模块端读数据程序PPC_Read_Data()首先判断双缓冲有无数据,如果缓冲区0有数据,再判断缓冲区0是否加锁,如果未加锁,则先加锁,再读数据,再解锁。对缓冲区1同样如此处理。
转载请注明原文地址:https://kaotiyun.com/show/OhWZ777K
本试题收录于:
嵌入式系统设计师下午应用技术考试题库软考中级分类
0
嵌入式系统设计师下午应用技术考试
软考中级
相关试题推荐
给定关系R(A,B,C,D,E)与S(B,C,F,G),那么与表达式π2,4,6,7(σ2<7(RS))等价的SQL语句如下:SELECT(41)________________FROMR,SWHERE(42)______________
在下列机制中,(23)________________是指过程调用和响应调用所需执行的代码在运行时加以结合;而(24)________________是过程调用和响应调用所需执行的代码在编译时加以结合。
假设铁路自动售票系统有n个售票终端,该系统为每个售票终端创建一个进程Pj(i=1,2,…,n)管理车票销售过程。假设Tjj=1,2,…,m)单元存放某日某趟车的车票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的购票张数。Pi进程的工作流程如下图所
流水线的吞吐率是指单位时间流水线处理的任务数,如果各段流水的操作时间不同,则流水线的吞吐率是(3)________________的倒数。
在数据库系统运行中,经常会找出频繁执行的SQL语句进行优化。常见的优化策略有:尽可能减少多表查询或建立(65);用带(66)的条件子句等价替换OR子句;只检索需要的属性列等。(65)
以下关于单链表存储结构特征的叙述中,不正确的是()。
函数调用和返回控制是用()实现的。
以下关于系统原型的叙述中,不正确的是()。
以下关于软件测试的叙述中,正确的是()。
随机试题
实践是实现人生价值目标的途径。
TheotherdayIheardanAmericansaytoaChinesestudentofEnglish"YouspeakverygoodEnglish."Butthestudentanswered,"
A,高压氧疗B,持续低流量给氧C,无控制性给氧D,鼻导管持续高浓度给氧E,呼气末正压给氧对成人呼吸窘迫综合征的治疗采用
下颌阻生牙拔除时,其软组织覆盖牙颌面超过多少时应切开
患者,女,20岁。食海鲜后皮肤出现大小不等、形状不一的风团,高起皮肤,边界清楚,色红,瘙痒,伴恶心,肠鸣泄泻,舌红,苔黄腻,脉滑数。除曲池、合谷、血海、膈俞、委中外,应加取
下列选项中说法错误的是()。
1,5,16,27,()。
发奋:成功( )。
HowwillthemangotoBeijingZoo?
Itisdifficulttoimaginewhatlifewouldbelikewithoutmemory.Themeaningsofthousandsofeverydayperceptions,thebases
最新回复
(
0
)