
2022年软考-嵌入式系统设计师考前模拟强化练习题84(附答案详解).docx
23页2022年软考-嵌入式系统设计师考前模拟强化练习题(附答案详解)1. 单选题某计算机字长是32位,存储容量是256KB,按字编址的寻址范围是( )问题1选项A.128KB.64KC.32KD.16K【答案】B【解析】存储容量是256KB,计算机字长是32位,也就是4B,所以按字编址的范围是256KB/4B=64K2. 单选题数据库恢复操作的基本原理是( )问题1选项A.存取控制B.加密C.完整性约束D.冗余【答案】D【解析】数据库恢复操作的基本原理是冗余机制3. 单选题下面有关Flash存储器的描述中,不正确的是( )问题1选项A.Flash存储器属于非易失存储器B.Flash存储器的读操作与SRAM存储器的读操作基本相同C.Flash存储器的写操作与SRAM存储器的写操作基本相同D.Flash存储器在写入信息前必须首先擦除原有信息【答案】C【解析】Flash Memory是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以分为:NOR Flash、NAND Flash先擦后写:由于Flash Memory的写操作只能将数据位从1写成0,而不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。
操作指令:除了NOR Flash的读,Flash Memory的其他操作不能像RAM那样,直接对目标地址进行总线操作例如执行一次写操作,它必须输入一串特殊的指令(NOR Flash ),或者完成一段时序(NAND Flash)才能将数据写入到Flash Memory中所以,不正确的是C4. 单选题DMA是一种高速的数据传输模式,下列描述中, 错误的是( )问题1选项A.DMA传输方式可以产生中断B.DMA传输过程主要由硬件来实现C.DMA传输过程包含3个阶段:申请阶段、响应阶段和数据传输阶段D.DMA操作可以通过软件来启动,也可以通过内部部件的请求来启动【答案】C【解析】输入/输出技术的三种方式:直接查询控制:有无条件传送和程序查询方式,都需要通过CPU执行程序来查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据在这种情况下CPU不做别的事情,只是不停地对外设的状态进行查询中断方式:当I/O系统与外设交换数据时,CPU无须等待也不必查询I/O的状态,而可以抽身来处理其他任务当I/O系统准备好以后,则发出中断请求信号通知CPU,CPU接到中断请求信号后,保存正在执行的程序的现场,转入I/O中断服务程序的执行,完成于I/O系统的数据交换,然后再返回被打断的程序继续执行。
与程序控制方式相比,中断方式因为CPU无需等待而提高了效率DMA:直接寄存器存取方式,是指数据在内存与I/O设备间的直接成块传送,即在内存与I/O设备间传送一个数据块的过程中,不需要CPU的任何干涉,只需要CPU正在过程开始启动与过程结束时的处理,实际操作由DMA硬件直接执行完成DMA传输方式可以产生中断;DMA传输过程主要由硬件来实现;DMA操作可以通过软件来启动,也可以通过内部部件的请求来启动;DMA传输过程包含4个阶段:请求阶段、响应阶段、传输阶段和结束阶段5. 案例题阅读以下关于C语言的基本概念和编程方面的叙述,回答问题1至问题3,将解答填入答题纸的对应栏内说明】服务型智能扫地机器人的信息处理中心,用于接收各种传感器信息和视觉信息,通过分析处理进行扫地机器人的运动控制,且负责和后台监控中心通信信息处理中心基于嵌入式计算机实现问题1】(4分)在信息处理中心的计算机系统中,系统总是要用户对变量或寄存器进行位操作,下面程序1代码中对给定整型变量a,实现了两个函数,其中:set_bit3函数用于设置a的bit 3(第3位),clear_bit3函数用于清除a的bit3(第3位)请补全程序1代码的(1)和(2),将正确代码写在答题纸的相应位置。
程序1】【问题2】(6分)信息处理计算机采用中断方式快速响应外部事件中断是嵌入式系统中重要的组成部分,这使得很多编译器开发商提供了标准C支持中断的扩展(使用关键字_interrupt)下面程序2是王工设计的中断处理程序代码,请对这段程序进行同行评审,找出你认为不合适的3个方面,将解答写入答题纸相应的位置程序2】【问题3】(5分)王工设计了信息处理中的软件算法,利用单向链表来存储信息其中如下给定的程序3中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接函数fun的功能是:把参数x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列该程序的实现如程序3所示程序3】根据题意分析程序,完成程序3的空(1)~(5),将解答写入答题纸相应的位置答案】【问题1】(1)a=a|BIT3或者a|= BIT3(2)a=a& ~BIT3或者a&=~BIT3【问题2】回答以下4项中任意3项(意思相近即可)1)中断程序的返回值中断程序中一般不能返回一个值2)中断程序参数中断程序中一般不能传递参数3)浮点运算中断程序应该是短而有效率的,一般在中断程序上下文切换时不保存浮点寄存器,尽量不要在中断程序中做浮点运算。
4)printf()一般是阻塞性调用,尽量不要在中断程序中调用阻塞性服务问题3】(1)x(2)s(3)q->next或p->next(4)s(5)q【解析】本题考查嵌入式程序开发的能力要求掌握C语言的位操纵,位操作是程序中对位模式按位进行的一元或二元操作位运算符有取反操作、按位或、按位异或、按位与、移位等要求掌握C语言中链表的相关操作,比如链表的插入、删除等操作包括了单链表、双链表该题考查的就是对单链表的操作单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构6. 单选题某系统的可靠性结构框图如下图所示假设部件1、2、3的可靠度分别为0.90、0.80、0.80(部件2、3为冗余系统)若要求该系统的可靠度不小于0.85,则进行系统设计时,部件4的可靠度至少应为( )问题1选项A.B.C.D.【答案】A【解析】并联系统的可靠度计算公式为:R=1-(1-R1)(1-R2)(1-RN)串联系统的可靠度的计算公式为:R=R1R2…RN其中以上公式中的Ri表示某个子部件的可靠度。
假设部件4的可靠度为R4,而整个系统是由子部件1、2和3并联后的子部件、子部件4这个三个子系统串联的所以整个系统的可靠度为:0.9×(1-(1-0.8)×(1-0.8))×R≥0.85也就是:R≥0.85/(0.9×(1-(1-0.8)2))答案选A7. 案例题下面是关于C语言的基本概念和编程方面的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内说明】王工在红外热像仪系统设计中负责软件模块,其核心功能在于进行人脸检测,调取温度检测模块获取检测到人的体温,将检测到的人脸信息及体温通过网络发送给平台进行存储,软件采用C语言编写问题1】(3分)请说明在C语言中下列宏定义的含义1) #define f(a,b) a##b(2)_ LINE(3)_ DATE_【问题2】 (3分)王工在利用网络发送所检测到的人脸及对应的体温信息时定义了对应的数据结构FaceTemp_ info, 内容依次包括:检测到人脸框的左上角像素坐标(横向坐标Face _x,纵向坐标Face_ Y), 人脸框的像素大小(横向宽度Face_ w,纵向高度Face_ H),以及人体温度信息Temp假设人脸框坐标信息、人脸框的像素大小都用unsigned short来表示,人体温度信息用float来表示。
请给出FaceTemp_ info 数据结构的定义问题3】(9分)在红外热像仪的图像信息处理中,王工设计了如下人脸检测、温度检测及信息发送程序,当检测到温度大于等于37.3C时,需要报警提示请补全程序中的(1) ~ (6)程序】【答案】【问题1】(1) C语言的宏定义中,#是连接a、b两端的内容的意思,它是宏定义中的关键字,表示将前后数据连接起来2)当前行号3)当前日期问题2】struct FACETEMP_ STRUCT{unsigned short Face_ X;unsigned short Face_ Y;unsigned short Face_ W;unsigned short Face_ H;float Temp;} FaceTemp_ info;或Typedef struct FACETEMP_ STRUCT{unsigned short Face_ X;unsigned short Face_ Y;unsigned short Face_ W;unsigned short Face_ H;float Temp;} FaceTemp_ info_ TPYE;FaceTemp_ _info_ TPYE FaceTemp_ info;【问题3】(1) temp >= 37.3或termp -37.3 >0.00001或temp -37.3 >10E-6(2) facetemp_ info.Face_ _X= face_ x(3) facetemp_ info.Face_ Y= face_ y(4) facetemp_ jinfo.Face_ W= face_ w(5) facetemp_ info.Face_ H= face_ h(6) &facetemp_ _info(其中(2) ~ (5)顺序可互换)【解析】【问题1】在C 程序中以#开头的行被称为预处理指令,这些指令是ANSIC 统一规定的。
编程时可使用预处理命令来扩展C 语言的表示能力,提高编程效率对C 源程序进行编译之前,首先由预处理器对程序中的预处理指令进行处理的作用就是把2个宏参数连接为1个数的作用就是将#后面的宏参数进行字符串的操作,也就是将#后面的参数两边加上一对双引号使其成为字符串DATE__ 当前日期,一个以 “MMM DD YYYY” 格式表示的字符串常量LINE__ 当前程序行的行号,表示为十进制整型常量【问题2】struct在C语言中是一个关键字,用于定义结构数据类型结构”是一种构造数据类型,现在一般叫做用户自定义数据类型,它是由若干“成员”组成的每一个成员可以是一个基本数据类型或者又是一个构造类型结构即是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它如同在说明和调用函数之前要先定义一样1. 声明和使用⼀个结构体类型的⼀般形式如下:。
