首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C语言代码,回答问题,将解答填入答题纸的对应栏内。 【说明】 在某工厂的物流车间,设计一款智能监测系统,实现对车间进行24小时不问断图像采集的功能。王工设计了一个实时监测采集系统,主要由图像采集卡和数据存储卡组成。由于实时图像的数据量
阅读下列说明和C语言代码,回答问题,将解答填入答题纸的对应栏内。 【说明】 在某工厂的物流车间,设计一款智能监测系统,实现对车间进行24小时不问断图像采集的功能。王工设计了一个实时监测采集系统,主要由图像采集卡和数据存储卡组成。由于实时图像的数据量
admin
2020-05-31
41
问题
阅读下列说明和C语言代码,回答问题,将解答填入答题纸的对应栏内。
【说明】
在某工厂的物流车间,设计一款智能监测系统,实现对车间进行24小时不问断图像采集的功能。王工设计了一个实时监测采集系统,主要由图像采集卡和数据存储卡组成。由于实时图像的数据量巨大,设计采用DMA方式进行数据传输,当DMA传输完成后,DMA控制器会发起一个硬件中断。操作系统接收到硬件中断,调用中断服务程序。
该系统的软件基于某嵌入式操作系统开发,支持中断管理、多任务调度等功能。与DMA相关的一段驱动程序示例代码如下。
【C语言程序声明与定义】
/*DMA控制寄存器基地址*/
#define DMA0_BASE_ADDR 0xC0021100
#define DMA1_BASE_ADDR 0xC0021180
/*DMA中断向量号*/
#define DMA0_INT_VECTOR 5
#define DMA1_INT_VECTOR 6
UINT32 Dma err ret=0;/* DMA传输状态全局变量,用于在DMA传输函数和DMA中断处理程序中传递DMA完成状态*/
SEM_ID sem_DMA1;/*互斥信号量*/
SEM_ID sem_DMA2;/*同步信号量*/
SEM_ID semBCreate(int/*排队规则*/,int/*初始值*/);/*操作系统创建信号量api*/
int semTake(int/*信号量ID*/,int/*等待时间*/); /*操作系统获取信号量api*/
int semGive(int/*信号量ID*/);/*操作系统释放信号量api*/
extern int intConnect(int/*中断向量*/,VOIDFUNCPTR/*中断服务程序*/,int/*参数*/);/*操作系统释中断连接程序api*/
【程序1】
/* DMA功能初始化*/
UINT32 dma_init()
{
/*创建互斥信号量*/
sem DMA1=semBCreate(SEM_Q_FIFO/*系统定义的排队方式*/,1);
/*创建同步信号量*/
sem DMA2=semBCreate(SEM_Q_FIFO/*系统定义的排队方式*/,0);
/*向操作系统挂接中断处理程序*/
intConnect(DMA0_INT_VECTOR,((1)________________)dma_intHandle,0);
return 0;
}
【程序2】
/*DMA传输函数
返回值1表示正常完成,2表示传输超时,4表示奇偶校验错
*/
UINT32 dma trans(UINT32 src_addr,/*DMA传输源地址*/
UINT32 dst addr,/*DMA传输目的地址*/
UINT32 length /*DMA传输长度*/
)
{
Dma_err_ret=0; //第1行
/* DMA控制寄存器的操作序列为原子操作,进入临界区*/
semTake((2)________________,WAIT_FOREVER/*系统定义的等待时间*/); //第2行
/* DMA寄存器初始化*/
/*代码略…*/
/*设置DMA传输的源地址、目的地址、长度*/
/*代码略…*/
/*启动DMA传输*/
/*代码略…*/
/*等待DMA传输完成*/
semTake((3)________________,WAIT_FOREVER/*系统定义的等待时间*/); //第3行
/*退出临界区*/
semGive((4)________________); //第4行
/*返回DMA传输完成状态*/
return(Dma_err_ret); //第5行
)
【程序3】
/*DMA中断处理程序*/
void dma_intHandle()
{
UINT32 tempReg=0;
UINT32 baseAddr=DMA0_BASE_ADDR;
/*获取DMA传输完成状态寄存器*/
tempReg=*(UINT32*)(base_addr+0x04);
*(UINT32*)(base_addr+0x04)=tempReg&0xff;
/*
*保存DMA传输完成状态到全局变量
* 1表示正常完成,2表示传输超时,4表示奇偶校验错
*/
Dma_err_ret=tempReg&0xff;
/*释放同步信号量,通知DMA传输完成*/
semGive((5)________________);
}
在该系统中有A、B两个应用任务同时从不同角度采集图像,都需要调用该DMA传输函数,任务A和任务B的优先级相同。该系统采用优先级抢占的调度策略。在任务A调用DMA传输函数进行DMA传输时,有时会出现函数返回值为0的情况。根据DMA控制器的芯片手册定义,1表示正常完成,2表示传输超时,4表示奇偶校验错,所以返回值不应该为0。
王工经过认真排查后,分析该故障发生的原因是当任务A调用dma_trails函数时,会发生任务suspend的情况,此时如果任务B也调用dma_trans函数,则会发生上述故障。
a.请给出dma_trans函数中会导致任务发生阻塞的代码行号。
b.按照王工的分析,对全局变量的不正确操作会导致该函数的返回值错误,请给出发生错误的代码行号。
c.王工对该程序进行了改进,将上述会导致返回值错误的代码放在某一行程序之后执行,即可解决该问题,请给出代码行号。
注意:这里的行号是指程序2中注释所标的第1行到第5行,请在第1行到第5行之中选择。
选项
答案
a.2或第2行或3或第3行 b.1或第1行 c.2或第2行
解析
临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,进程进入临界区的调度原则是:
1.如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
2.任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其他所有试图进入临界区的进程必须等待。
3.进入临界区的进程要在有限时间内退出,以便其他进程能及时进入自己的临界区。
4.如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
在程序2的dma_trans函数中,定义了一段临界区,用互斥信号量sem_DMA1进行保护,但是全局变量Dma_err_ret没有被保护,当该函数被多任务调用,发生重入时,由于程序缺陷破坏了临界区中Dma_err_ret的值,导致程序运行出错。
转载请注明原文地址:https://kaotiyun.com/show/BLWZ777K
本试题收录于:
嵌入式系统设计师下午应用技术考试题库软考中级分类
0
嵌入式系统设计师下午应用技术考试
软考中级
相关试题推荐
试题五阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。[说明]某一本地口令验证函数(C语言环境,X8632指令集)包含如下关键代码:某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPass
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】假设用户A和用户B为了互相验证对方的身份,设计了如下通信协议:1.A→B:RA2.B→A:f(PAB||RA)||RB3.A→B:f(PAB||_____
深度流检测技术就是以流为基本研究对象,判断网络流是否异常的一种网络安全技术,其主要组成部分通常不包括()。
计算机犯罪是指利用信息科学技术且以计算机为犯罪对象的犯罪行为,与其他类型的犯罪相比,具有明显的特征,下列说法中错误的是()。
以下关于认证技术的叙述中,错误的是()。
信息隐藏主要研究如何将机密信息秘密隐藏于另一公开的信息中。以下关于利用多媒体数据来隐藏机密信息的叙述中,错误的是__________________。
恶意代码是指为达到恶意目的而专门设计的程序或代码。恶意代码的一般命名格式为:..。以下恶意代码中,属于脚本病毒的是(24)_________。
Stack is quite simple. Many computer systems have stacks built into their circuitry. They also have machine-level instructions t
知识产权是一个法律概念,它的严格定义很难明确,但大多数国家的法律对知识产权界定为至少以下四个方面:商标及其相关标记、专利权、著作权和_________。
Changecontrolwithininformationtechnology(IT)systemsisaformalprocessusedtoensurethatchangestoproductorsystemare
随机试题
当且仅当竞争对手甲退出投标时,对手乙就会报一个较高的价位,我方也才不会在第一轮就被淘汰。当且仅当我方在第一轮竞争中就被淘汰之后,第一轮轮空的强有力对手丙才会在第二轮报价。当且仅当对手丙报价时,才会出现强劲对手丁不战退出的情况,或者出现另一个对手戊报一个相当
常用涂料中,具有良好耐碱性能的涂料有()。
二审法院审理过程中,原审被告提出反诉,法院就反诉调解不成,作出判决。请问本案二审法院的做法违背了民事诉讼基本制度中的()。
某企业12月31日结账后库存现金账户余额为12000元,银行存款账户余额为4500000元,其他货币资金账户余额为1500000元。货币资金项目的金额为6012000元。()
战略导向培训与开发系统的特征包括()。
一位老师在批改学生的造句时,发现如下句子:想——我想听到花开的声音。活泼——河里的水很活泼。悄悄一一我们听不懂小鱼的悄悄话。丢——上街时,毛毛把爸爸丢了。爬——牵牛花像个小弟弟,爬在树上。老师不假思索就把这些句子打“”,理由是句式不符合人的语言表达习惯。
1925—1926年的省港大罢工,是国际工人运动史上坚持时间最长的一次罢工。()
一块冰在沙里被融化到很小,它抱怨说:“要是在南极就好了,就不会被融化了。”沙听了后对它说:“沙漠里缺少冰,你在沙漠里是非常珍贵的,南极的冰很多,你到那里就失去了价值。”请结合自身谈谈这个故事对你的启示。
Thisquestionissodifficultthat______peopleareableeventounderstandit.
HowtoReinventCollegeRankings:ShowtheDataStudentsNeedMostA)Allrankingsaremisleadingandbiased(有偏见的).Butthey’rea
最新回复
(
0
)