首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C语言代码,回答问题,将解答填入答题纸的对应栏内。 【说明】 在某工厂的物流车间,设计一款智能监测系统,实现对车间进行24小时不问断图像采集的功能。王工设计了一个实时监测采集系统,主要由图像采集卡和数据存储卡组成。由于实时图像的数据量
阅读下列说明和C语言代码,回答问题,将解答填入答题纸的对应栏内。 【说明】 在某工厂的物流车间,设计一款智能监测系统,实现对车间进行24小时不问断图像采集的功能。王工设计了一个实时监测采集系统,主要由图像采集卡和数据存储卡组成。由于实时图像的数据量
admin
2020-05-31
43
问题
阅读下列说明和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)________________);
}
在操作系统的头文件中,有如下类型定义:
typedef void (*VOIDEUNCPTR)(); /*ptr to function returning void*/
typedef int (*FUNCPTR) (); /* ptr to function returning int */
1.该类型定义了一组什么类型的变量,简述其功能。
2.在程序1的dma_init函数中,应该将intConneet函数的第二个参数转换成相应的类型,可以消除编译警告,请补充其中空(1)________________的内容。
选项
答案
1.函数指针。函数指针是指向函数的指针,包含了函数的地址,可以通过它直接调用函数。 2.(1)VOIDFUNCPTR
解析
本题考查嵌入式软件程序设计能力。
函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样。函数指针有两个用途:调用函数和作为函数的参数。
函数指针的声明方法为:
返回值类型(*指针变量名)([形参列表1);
“返回值类型”说明函数的返回类型,“(指针变量名)”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:
int func(int x);/*声明一个函数*/
int(*f)(int x);/*声明一个函数指针*/
f=func;/*将func函数的首地址赋给指针f*/
或者使用下面的方法将函数地址赋给函数指针:
f=&func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
在【C语言程序声明与定义】中,intConnect函数的第二个参数声明为VOIDFUNCPTR型,它是一个返回值为空的函数指针,所以在程序1的dma init函数中,应该将intConnect函数的第二个参数转换成VOIDFUNCFTR类型,可以消除编译警告。
转载请注明原文地址:https://kaotiyun.com/show/nLWZ777K
本试题收录于:
嵌入式系统设计师下午应用技术考试题库软考中级分类
0
嵌入式系统设计师下午应用技术考试
软考中级
相关试题推荐
并发操作可能带来的数据不一致性有(52),解决的办法是并发控制,主要技术是(53)。(53)
阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】安全目标的关键是实现安全的三大要素:机密性、完整性和可用性。对于一般性的信息类型的安全分类有以下表达形式:{(机密性,影响等级),(完整性,影响等级),(可用性,影
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】恶意代码是指为达到恶意目的而专门设计的程序或者代码。常见的恶意代码类型有:特洛伊木马、蠕虫、病毒、后门、Rootkit、僵尸程序、广告软件。2017年5月,勒索软件
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】假设用户A和用户B为了互相验证对方的身份,设计了如下通信协议:1.A→B:RA2.B→A:f(PAB||RA)||RB3.A→B:f(PAB||_____
计算机犯罪是指利用信息科学技术且以计算机为犯罪对象的犯罪行为,与其他类型的犯罪相比,具有明显的特征,下列说法中错误的是()。
计算机取证是将计算机调查和分析技术应用于对潜在的、有法律效力的证据的确定与提取。以下关于计算机取证的描述中,错误的是()。
从网络安全的角度看,以下原则中不属于网络安全防护体系在设计和实现时需要遵循的基本原则的是(9)________________。
基于公开密钥的数字签名算法对消息进行签名和验证时,正确的签名和验证方式是(70)________。
信息网络系统的现场实施通常分哪几个步骤进行?请简述网络设备采购到货环节监理的流程?
若在一个32位字长的嵌入式微处理器上定义了1个int类型的常量a= 0x8192F3A5,按大端存储法存放于0x6000内存地址处,以下选项中能正确表达这种存放顺序的是(36)。
随机试题
采用热收缩片对底漆补口时,钢管除锈应达到()。
小儿风湿热与类风湿热的主要区别是
A.1天B.2周C.3个月D.12个月E.24个月工业毒物用大鼠进行亚慢性毒性试验的染毒期为
患者,男,50岁。每日吸烟20支已多年。近来经常咳嗽,痰中有血丝,1周前突感呼吸困难。x线透视见右侧胸腔大片致密阴影,胸腔穿刺抽出大量血性胸水。应首先考虑的是()
A.240nmB.260nmC.280nmD.570nmE.680nm酪氨酸的最大吸收峰在哪一波长附近
出让国有土地使用权的法定条件是()。
正四面体型分子一般是以()杂化轨道成键。
下列各项不属于教育目的制定的客观依据的是()
可扩展置标语言XML(eXtensibleMarkupLanguage)是一种置标语言。它依赖于描述一定规则的标签和能够读懂这些标签的应用处理工具来发挥它的强大功能。其中在XML文档中使用CSS样式单正确的方式为(7),XSL的格式对象称为(8),使用
In1910theworldwasshockedbyaparticularlycold-bloodedmurder.H.H.Crippenwas【21】______Americandoctorwhoworkedin
最新回复
(
0
)