下半年嵌入式系统设计师考试真题及答案下午卷.docx
《下半年嵌入式系统设计师考试真题及答案下午卷.docx》由会员分享,可在线阅读,更多相关《下半年嵌入式系统设计师考试真题及答案下午卷.docx(38页珍藏版)》请在冰豆网上搜索。
![下半年嵌入式系统设计师考试真题及答案下午卷.docx](https://file1.bdocx.com/fileroot1/2022-12/28/14f48754-43d2-46d0-a861-0d084616119d/14f48754-43d2-46d0-a861-0d084616119d1.gif)
下半年嵌入式系统设计师考试真题及答案下午卷
2015下半年嵌入式系统设计师考试真题及答案-下午卷
第1题
阅读以下关于某嵌入式系统设计的说明,回答问题1至问题4。
【说明】
某公司承接了某嵌入式系统的研制任务。
该嵌入式系统由数据处理模块、系统管理模块、FC网络交换模块和智能电源模块组成,系统组成如图1-1所示。
数据处理模块处理系统的应用任务;系统管理模块除了处理系统的应用任务外,还负责管理整个嵌入式系统;FC网络交换模块采用消息机制,支持广播和组播,主要负责系统的数据交换;智能电源模块负责给其他模块供电,该模块根据系统命令可以给其他模块供电或停止供电。
问题:
1.1该系统的软件大部分是用C语言编程的,编程人员经常会使用运算符,请按优先级由高到低的次序,重新排序下面的运算符:
%,=,<=,&&。
问题:
1.2该系统的开发要求按软件能力成熟度模型CMM3级开发,请回答下列问题:
(1)CMM3级包含多少个关键过程域?
(2)请写出CMM3级的关键过程域。
(3)CMM2级包含多少个关键过程域?
(4)在对该开发软件单位进行CMM3级达标评级时,只需检査3级的关键过程域还是3级和2级的关键过程域都需要检查?
问题:
1.3
(1)在本系统中,FC网络采用何种拓扑结构?
请从如下4项中选择最为合适的。
A.总线B.树型C.星形D.点对点
(2)FC网络除了用于交换的光纤基础架构,还必须有高性能的I/O通道结构支持,I/O通道在FC网络中的优势是什么?
问题:
1.4智能电源模块首先进行系统初始化,初始化后各设备就可使用,再根据系统初始配置表对嵌入式系统的其他模块供电。
智能电源模块通常完成两件事情:
一、周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策;二、进入中断处理程序,处理系统管理模块的各种命令,如果系统管理模块命令关机下电,则智能电源模块对所有模块(也包括自己)进行下电处理。
图1-2是智能电源模块上的管理软件处理流程图,请完成该流程图,给
(1)〜(5)处填空。
答案解析:
按优先级由高到低的次序,运算符排序为:
%,<=,&&,=
本题考查嵌入式系统设计中的基本C语言编程、软件工程化、FC网络以及智能电源管理设计等知识及应用。
本问题考查C语言的基础知识。
在C语言中,对各种运算符的优先级是有规定的,必须掌握。
优先级最高者其实并不是真正意义上的运算符,包括:
数组下标、函数调用操作符、各结构成员选择操作符。
它们都是自左向右结合。
单目运算符的优先级仅次于上述运算符,在所有的真正意义的运算符中,它们的优先级最高。
双目运算符的优先级低于单目运算符的优先级。
在双目运算符中,算术运算符的优先级最高,移位运算符次之,关系运算符再次之,接着就是逻辑运算符,赋值运算符,最后是条件运算符。
总结以下两点:
(1)任何一个逻辑运算符的优先级低于任何一个关系运算符;
(2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高。
下表是C语言运算符优先级表(由上至下,优先级依次递减)。
综上所述,本题中运算符优先级由高到低的次序为:
%,<=,&&,=
答案解析:
(1)CMM3级(已定义级)包括7个关键过程区域
(2)同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点
(3)CMM2级(可重复级)包括6个关键过程区域
(4)3级和2级的关键过程域都需要检查
CMM即软件能力成熟度模型,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。
CMM是美国卡内基-梅隆大学软件工程研究所与企业、政府合作的基础上开发的模型,主要用于评价软件企业的质量保证能力。
目前,国内外的很多大型企业采用这一模型,如国内的鼎新、浪潮通软、用友、金蝶、创智、亚信、华为等公司都启动了CMM软件过程改进计划。
国军标GJB500-2003«军用软件能力成熟度模型>>就是以CMM为参考蓝本而制定的。
CMM模型将软件能力成熟度自低到高依次划分,1级为初始级、2级为可重复级、3级为已定义级、4级为已管理级、5级为优化级。
除等级〖外,每个成熟度等级被分解成几个关键过程域,指明为了改进其软件过程组织应关注的区域,关键过程域识别出为了达到各成熟度等级所必须着手解决的问题。
CMM共有18个关键过程域,其中初始级无关键过程域。
CMM2级(可重复级)包括6个关键过程域,为软件配置管理、软件质量保证、软件子合同管理、软件项目跟踪与监督、软件项目策划、软件需求管理;
CMM3级(已定义级)包括7个关键过程域,为同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点;
CMM4级(已管理级)包括2个关键过程域,为软件质量管理和定量过程管理;CMM5级(优化级)包括3个关键过程域,为过程更改管理、技术改革管理和缺陷预防。
在CMM某一级达标时,必须是该级别的所有关键过程域满足要求,同时低级别的所有关键过程域也必须达标。
因此,某单位进行CMM3级达标评级时,对3级和2级的关键过程域都需要检查。
答案解析:
(1)C
(2)简单、廉价、高速
数据通信网络常见的拓扑结构由简单到复杂依次为:
点对点、总线、树型、星形。
点到点型指网络中一个信息源节点连接到一个或多个目的节点,是专用的链路,具有通信效率高,延迟小的优点,但是建立多点全互联的网络具有连线多、成本高、资源利用率低等缺点。
总线型指网络中一个信息源节点连接到一个或多个目的节点,采用集中控制、令牌访问、CSMA/CD等方式,具有连线少、成本较低、资源利用率高等优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。
树型指网络中所有节点挂接到一个树形结构上,可以采用集中控制、令牌访问等方式,具有连线简单、成本较低的优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。
星形指网络中所有节点连接到中心交换机,节点之间的通信经过交换机路由转发,具有通信吞吐量高、延迟小、连线较简单的优点,但存在成本高、交换机单点故障风险的缺点。
仁题为了满足嵌入式系统对高带宽、低延迟的通信要求,通过分析以上网络的拓扑结构特点,FC网络应选择星形结构。
星形结构是最佳的方案。
SAN通常有FCSAN和IPSAN两种实现技术。
FCSAN采用I/O结合光线通道,IPSAN采用iSCSI实现异地间数据交换,具有简单、廉价、高速等优势。
答案解析:
(1)按初始配置表给各模块供电
(2)电源模块温度检测
(3)向其他模块供电的各路电流检测
(4)屏蔽中断
(5)处理系统控制模块发来命令
智能电源模块首先进行系统初始化,再根据系统初始配置表对嵌入式系统的其他模块供电。
按照智能电源模块的工作过程,判断有无中断,如有中断,则进入中断处理程序。
如没有中断,则周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策。
在中断处理程序中,首先屏蔽中断,喂看门狗,统计中断次数,接收系统控制模块的各种命令,处理系统控制模块发来的这些命令,打开中断。
如果系统控制模块命令关机下电,则智能电源模块对所有模块(也包括自己)进行下电处理。
智能电源模块上的管理软件处理流程图如图1-3所示。
第2题
阅读以下关于某四轴飞行器系统设计的说明,回答问题1至问题4。
【说明】
在某四轴飞行器系统设计中,利用惯性测量单元(IMU)、PID电机控制、2.4G无线遥控通信和高速空心直流电机驱动等技术来实现一个简易的嵌入式四轴飞行器方案。
整个系统的设计包括飞控板和遥控板两部分,两者之间采用2.4G无线模块进行数据传输。
飞控板采用高速单片机STM32作为处理器,采用含有三轴陀螺仪、三轴加速度计的运动传感器MPU6050作为惯性测量单元,通过2.4G无线模块和遥控板进行通信,最终根据PID控制算法以PWM方式驱动空心电机来控制目标。
图2-1为李工设计的系统总体框图。
飞控板和遥控板的核心处理器都采用STM32F103。
飞控系统的惯性测量单元采用MPU6050测量传感器,MPU6050使用IIC接口,时钟引脚SCL、数据引脚SDA和数据中断引脚分别接到STM32的对应管脚,图2-2为该部分原理图。
遥控板采用STM32单片机进行设计,使用AD对摇杆模拟数据进行采集,采用NRF2401无线模块进行通信,图2-3为该部分原理图。
李工所设计的系统软件同样包含飞控板和遥控板两部分,飞控板软件的设计主要包括无线数据的接收、自身姿态的实时计算、电机PID增量的计算和PWM的电机驱动。
遥控板主控制器软件通过ADC外设对摇杆数据进行采集,把采集到的数据通过2.4G无线通信模块发送至飞控板。
图2-4为飞控系统的软件流程示意图。
问题:
2.1由图2-1系统总体框图设计可知,飞控板和遥控板之间是用2.4G无线通信进行数据传输,各自主处理器和无线通信模块之间是SPI接口。
同时,在飞控板上,处理器和惯性测量单元是通过IIC进行数据交互。
以下关于SPI接口和IIC接口的描述中,正确的是:
(1)、
(2)、(3)、(4)。
A.SPI和IIC都是主从式通信方式
B.SPI的数据收发线是各自独立的,IIC也是同样
C.SPI和IIC的传输都不需要片选控制
D.IIC总线是一个多主机的总线,可以连接多于一个能控制总线的器件到总线
E.IIC总线包括标准模式,快速模式和高速模式,相互之间的传输速度差异并不大
F.在原理设计中,到底采用SPI和IIC:
哪种方式,需要依据外设芯片的接口而定
G.SPI是一种环形总线结构
H.在IIC总线上,可以有多个从设备具有相同的IIC地址
问题:
2.2
(1)图2-2飞控板部分原理图中,R4的作用是什么?
(2)图2-3遥控板部分原理图中,C11、C12、C13、C14的作用是什么?
问题:
2.3在STM32处理器的PWM使用过程中,最为关键的就是PWM的频率和占空比。
PWM的频率依赖于PWM模块的参考时钟频率,自动装载寄存器ARR的值加1之后再乘以参考时钟频率即可得到PWM的频率。
PWM的占空比是用捕获比较寄存器CCR和自动装载寄存器ARR获得的,PWM占空比=CCR/(ARR+1)。
假设当前主控板的STM32处理器PWM模块的参考时钟频率为1kHz,要将PWM模块的频率设置为100kHz,则ARR寄存器的值应设置为多少?
如果此时占空比希望设置为20%,那么CCR寄存器的值应该设置为多少?
问题:
2.4飞控系统每0.5毫秒进行一次定时器的触发,每次中断都会检查一次无线模块数据的接收,以确保飞控系统控制信息的实时性。
每2次中断(即1毫秒)读取一次MPU6050单元的数据,并进行算法处理。
每4次中断(即2毫秒)通过计算当前飞控板系统的姿态,结合遥控端的目标姿态,根据两者的差值通过PID控制算法对各个电机进行调速控制。
每200次中断(即100毫秒)采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。
图2-4为飞控系统软件实现的简要流程图,根据以上描述,请补全图2-4中的空
(1)〜(6)处的内容。
答案解析:
(1)〜(4):
A、D、F、G(顺序不限)
本题考查嵌入式软硬件系统协同设计过程中的知识及应用。
此类题目要求考生认真阅读题目中的题干描述,仔细理解设计的原理框图,详细观察提供的硬件原理图和所描述的软件实现流程示意图。
前后结合进行题目分析。
由图2-1系统总体框图可知,飞控板和遥控板之间是用2.4G无线通信进行数据传输,各自主处理器和无线通信模块之间是SPI接口。
同时,在飞控板上,处理器和惯性测量单元是通过IIC进行数据交互。
IIC(Inter-IntegratedCircuit)和SPI(SerialPeripheralInterface)这两种通信协议非常适合近距离低速芯片间进行通信。
Philips(forIIC)和Motorola(forSPI)出于不同背景和市场需求制定了这两种标准通信协议。
IIC开发于1982年,SPI总线首次推出是在
1979年。
SPI包含4根信号线,分别是:
(1)SCLK:
SerialClock(outputfrommaster)
(2)MOSI,SIMO:
MasterOutput,SlaveInput(outputfrommaster)
(3)MISO,SOMI:
MasterInput,SlaveOutput(outputfromslave)
(4)SS:
SlaveSelect(activelow,outputfrommaster)
SPI是单主设备(single-master)通信协议,这意味着总线中只有一支中心设备能发起通信。
当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOS1实现“写”,同时可对MISO采样而实现“读”。
SPI有4种操作模式一一模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。
与SPI的单主设备不同,IIC是多主设备的总线,IIC没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线——‘serialdata'(SDA)和‘serialclock’(SCL)。
IIC数据传输速率有标准模式(100kbps),快速模式(400kbps)和高速模式(3.4Mbps),另外一些变种实现了低速模式(10kbps)和快速+模式(1Mbps)。
物理实现上,IIC总线由两根信号线和一根地线组成。
IIC通信过程大概如下。
首先,主设备发一个START信号,这个信号就像对所有其他设备喊:
请大家注意!
然后其他设备开始监听总线以准备接收数据。
接着,主设备发送一个7位设备地址加一位的读写操作的数据帧。
当所有设备接收数据后,比对地址以判断自己是否为目标设备。
如果比对不符,设备进入等待状态,等待STOP信号的来临;如果比对相符,设备会发送一个应答信号一ACKNOWLEDGE作回应。
当主设备收到应答后便开始传送或接收数据。
数据帧大小为8位,尾随1位的应答信号。
主设备发送数据,从设备应答;相反主设备接收数据,主设备应答。
当数据传送完毕,主设备发送一个STOP信号,向其他设备宣告释放总线,其他设备回到初始状态。
在物理实现上,SCL线和SDA线都是漏极开路(open-drain),通过上拉电阻外加一个电压源。
当把线路接地时,线路为逻辑0,当释放线路,线路空闲时,线路为逻辑1。
基于这些特性,IIC设备对总线的操作仅%“把线路接地”一输出逻辑0。
答案解析:
(1)增强驱动能力
(2)滤波,保持信号的稳定性
在一般的硬件设计尤其是IIC的电路设计中,对于SDA和SCL两线,由于其内部是漏极开路(open-drain),通过上拉电阻外加一个3.3V电源,用于增强系统的驱动能力。
同时在电源设计中,为了去除干扰噪声,需要对电源进行滤波处理,通常采用电容进行滤波处理,以保护系统电源信号的稳定性。
答案解析:
ARR寄存器的值:
99
CCR寄存器的值:
20
在STM32处理器的PWM使用过程中,最为关键的就是PWM的频率和占空比。
PWM的频率依赖于PWM模块的参考时钟频率,自动装载寄存器ARR的值加1之后再乘以参考时钟频率即可得到PWM的频率。
PWM的占空比是用捕获比较寄存器CCR和自动装载寄存器ARR获得的,PWM占空比=CCR/(ARR+1)。
进行ARR寄存器的值计算过程中,符合的公式为:
ARR寄存器=要设置的频率/时钟频率-1。
根据占空比则指导CCR的设置符合的公式为:
CCR寄存器=(占空比)×(ARR+1)。
答案解析:
(1)检查一次无线模块数据的接收
(2)count%2=0
(3)读取MPU6050单元的数据,并进行算法处理
(4)计算当前飞控板系统的姿态,对各个电机进行调速控制
(5)count%200=0
(6)采集电池电压,通过无线模块把电池电压发送给遥控板
飞控系统每0.5毫秒进行一次定时器的触发,每次中断都会检查一次无线模块数据的接收,以确保飞控系统控制信息的实时性。
每2次中断(即1毫秒)读取一次MPU6050单元的数据,并进行算法处理。
每4次中断(即2毫秒)通过计算当前飞控板系统的姿态,结合遥控端的目标姿态,根据两者的差值通过PID控制算法对各个电机进行调速控制。
每200次中断(即100毫秒)采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。
根据以上说明,可以知道其实现流程应该为:
系统启动,如果定时器到,需要检查一次无线模块数据的接收,并进行计数增加。
对计数进行判断,如果是除2的余为0则说明是2次中断的倍数到达,k要进行MPU6050单元的数据读取和处理,如果中断是4的倍数,那么就说明需要计算飞控板系统的姿态,并对电机进行调速控制。
如果是200次的倍数,则需要采集电池电压,并通过无线模块把电池电压发送给遥控板。
第3题
阅读以下关于某嵌入式系统多路数据采集的说明,回答问题1至问题3。
【说明】
某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较,只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。
设计人员设计函数nUm_0f_paSSer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:
(1)采用如下数据结构存储通道号及采集值:
(2)当输入参数异常时,函数返回-1;
(3)若正确统计了无故障通道数目,则返回该数目;
(4)该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目。
汗发人员根据上述要求使用ANSIC对代码实现如下(代码中第一个数字代表行号):
问题:
3.1嵌入式软件中通常使用圈复杂度来衡量程序的可维护性(一般要求圈复杂度不大于10),请计算函数num_of_passer的圈复杂度。
问题:
3.2作为测试人员,请参照表3-1序号1的方式使用代码审查的方法找出该程序中所包含的至少3处错误。
问题:
3.3覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。
在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请指出对函数num_of_passer达到100%语句覆盖、100%分支(DC)覆盖和100%MC/DC覆盖所需的最少测试用例数目。
答案解析:
圈复杂度:
7
本题考查软件测试的一些基本概念和通过代码审查查找软件缺陷以及设计测试用例的能力。
此题目要求考生认真阅读题目所给的软件设计说明信息和软件代码,熟悉结构体数据类型和不同代码覆盖率的要求,结合软件测试的一些基本概念,在此嵌入式软件中进行实际应用。
控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。
控制流图是McCabe复杂度计算的基础,McCabe度量标准是将软件的流程图转化为有向图,然后以图论的知识和计算方法来衡量软件的质量。
McCabe复杂度包括圈复杂度(Cyclomaticcomplexity)、基本复杂度、模块涉及复杂度、设计复杂度和集成复杂度等。
在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。
圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。
程序的可能错误和高的圈复杂度有着很大关系。
有以下3种方法计算圈复杂度:
嵌入式软件中通常使用圈复杂度来衡量程序的可维护性,一般要求圈复杂度不大于10。
函数num_of_passer的流程图如下图3-1所示。
有以下3种方法计算圈复杂度:
1.没有流程图的算法:
基数为1,碰到以下项加1:
分支数(如if、for、while和dowhile);switch中的case语句数;
如果条件是2个复合条件的话,则加2,否则加1。
2.给定流程图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量。
3.给定流程图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
按第1种没有流程图的算法,函数num_of_passer中一个for,两个if,但是一个if是3个复合条件应该加3,另一个if是两个组合条件,应该加2,,所以圈复杂度为基数
(1)+for
(1)+if(3)+if
(2)=7,圈复杂度为7。
按第2种圈复杂度V(G),定义为V(G)=E-N+2算法,函数num_of_passer流程图中E为16,N为11,所以V(G)=16-11+2=7。
按第3种圈复杂度V(G),定义为V(G)=P+1,函数num_of_passer流程图中P为6,所以V(G)=P+1=6+1=7。
上述3种算法中的任意方法,函数num_of_passer的圈复杂度都计算为7。
答案解析:
代码审查是不执行软件代码,而通过阅读软件代码发现代码可能存在的错误的过程。
代码审查的测试内容包括检查代码和设计的一致性;检查代码执行标准的情况;检查代码逻辑表达的正确性;检查代码结构的合理性;检查代码的可读性。
通过对说明的阅读,按照说明中描述的要求进行函数num_of_passer的代码审查。
阅读第1行代码,函数返回值定义为unsignedint;而在说明的第
(2)条描述了当输入参数异常时,函数返回-1;这样发现说明和代码不一致,显然代码定义的unsignedint不能返回-1,此为第1处错误。
修改函数返回值的定义为int类型即可。
阅读第3行代码,定义了无故障通道数目counter,在定义时未进行初始化,并且在第8行使用前依然未初始化。
这就导致counter的初值为非确定值,可能出错,此为第2处错误。
在第3行定义counter时初始化为0或者在使用前进行初始化为0均可。
阅读第4行代码,对模块输入参数进行合法性检查,num合法值为1至16;然后査找使用num之处,在第6行对num进行了使用,但第6行使用时却从0开始,而且是小于等于num,这就意味着如果第4行num值为最大值16,在第6行就需要循环判断17次(0到16),而本题的说明中描述很清楚,最多就16路通道,此为第3处错误。
但此问题的更改有两种方案,方案1可以更改第4行num>16为num>=16,缩小此参数的合法范围;方案2可以更改第6行n<=num为n阅读第7行代码,对每个通道采集的双余度值进行有效性判断。
按照说明,当余度设备采集值均不小于45时,才表示该路通道正常;但代码中使用当余度设备釆集值均大于45时,表示该路通道正常,在对边界点45的处理上与说明不一致,此为第4处错误。
将第7行代码中的两个“>”符号修改为“>=”