1、2021 下半年嵌入式系统设计师考试真题及答案-下午卷第 1 题阅读以下关于某嵌入式系统设计的说明,答复以下问题1 至问题 4。【说明】某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、FC 网络交换模块和智能电源模块组成,系统组成如图 1-1 所示。数据处理模块处理系统的应用任务;系统管理模块除了处理系统的应用任务外,还负责管理整个嵌入式系统;FC 网络交换模块采用消息机制,支持播送和组播,主要负责系统的数据交换;智能电源模块负责给其他模块供电,该模块根据系统命令可以给其他模块供电或停顿供电。问题:1.1 该系统的软件大部分是用C 语言编程的,编程人员经常会使用运
2、算符,请按优先级由高到低的次序,重新排序下面的运算符:,=,=,&。问题: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/
3、O 通道构造支持,I/O 通道在 FC 网络中的优势是什么?问题:1.4智能电源模块首先进展系统初始化,初始化后各设备就可使用,再根据系统初始配置表对嵌入式系统的其他模块供电。智能电源模块通常完成两件事情:一、周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,假如异常,那么进展异常处理,并报系统管理模块,由系统管理模块进展决策;二、进入中断处理程序,处理系统管理模块的各种命令,假如系统管理模块命令关机下电,那么智能电源模块对所有模块(也包括自己)进展下电处理。图 1-2 是智能电源模块上的管理软件处理流程图,请完成该流程图,给(1)(5)处填空。答案解析:按优先级由
4、高到低的次序,运算符排序为:%,=,&,=此题考察嵌入式系统设计中的根本 C 语言编程、软件工程化、FC 网络以及智能电源管理设计等知识及应用。本问题考察C 语言的根底知识。在 C 语言中,对各种运算符的优先级是有规定的,必须掌握。优先级最高者其实并不是真正意义上的运算符,包括:数组下标、函数调用操作符、各构造成员选择操作符。它们都是自左向右结合。单目运算符的优先级仅次于上述运算符,在所有的真正意义的运算符中,它们的优先级最高。双目运算符的优先级低于单目运算符的优先级。在双目运算符中,算术运算符的优先级最高, 移位运算符次之,关系运算符再次之,接着就是逻辑运算符,赋值运算符,最后是条件运算符。
5、总结以下两点:(1) 任何一个逻辑运算符的优先级低于任何一个关系运算符;(2) 移位运算符的优先级比算术运算符要低,但是比关系运算符要高。下表是C 语言运算符优先级表(由上至下,优先级依次递减)。综上所述,此题中运算符优先级由高到低的次序为:%,就是以CMM 为参考蓝本而制定的。CMM 模型将软件才能成熟度自低到高依次划分,1 级为初始级、2 级为可重复级、3 级为已定义级、4 级为已管理级、5 级为优化级。除等级外,每个成熟度等级被分解成几个关键过程域,指明为了改良其软件过程组织应关注的区域,关键过程域识别出为了到达各成熟度等级所必须着手解决的问题。CMM 共有 18 个关键过程域,其中初始
6、级无关键过程域。CMM2 级(可重复级)包括 6 个关键过程域,为软件配置管理、软件质量保证、软件子合同管理、软件工程跟踪与监视、软件工程筹划、软件需求管理;CMM3 级(已定义级)包括 7 个关键过程域,为同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点;CMM4 级(已管理级)包括 2 个关键过程域,为软件质量管理和定量过程管理;CMM5 级(优化级)包括 3 个关键过程域,为过程更改管理、技术改革管理和缺陷预防。在 CMM 某一级达标时,必须是该级别的所有关键过程域满足要求,同时低级别的所有关键过程域也必须达标。因此,某单位进展CMM3 级达标评级时,
7、对 3 级和 2 级的关键过程域都需要检查。答案解析:(1) C(2) 简单、廉价、高速数据通信网络常见的拓扑构造由简单到复杂依次为:点对点、总线、树型、星形。点到点型指网络中一个信息源节点连接到一个或多个目的节点,是专用的链路,具有通信效率高,延迟小的优点,但是建立多点全互联的网络具有连线多、本钱高、资源利用率低等缺点。总线型指网络中一个信息源节点连接到一个或多个目的节点,采用集中控制、令牌访问、CSMA/CD 等方式,具有连线少、本钱较低、资源利用率高等优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。树型指网络中所有节点挂接到一个树形构造上,可以采用集中控制、令牌访问等方
8、式,具有连线简单、本钱较低的优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。星形指网络中所有节点连接到中心交换机,节点之间的通信经过交换机路由转发,具有通信吞吐量高、延迟小、连线较简单的优点,但存在本钱高、交换机单点故障风险的缺点。仁题为了满足嵌入式系统对高带宽、低延迟的通信要求,通过分析以上网络的拓扑构造特点, FC 网络应选择星形构造。星形构造是最正确的方案。SAN 通常有FCSAN 和IPSAN 两种实现技术。FCSAN 采用I/O 结合光线通道,IPSAN 采用iSCSI 实现异地间数据交换,具有简单、廉价、高速等优势。答案解析:(1) 按初始配置表给各模块供电(2)
9、 电源模块温度检测(3) 向其他模块供电的各路电流检测(4) 屏蔽中断(5) 处理系统控制模块发来命令智能电源模块首先进展系统初始化,再根据系统初始配置表对嵌入式系统的其他模块供电。按照智能电源模块的工作过程,判断有无中断,如有中断,那么进入中断处理程序。如没有中断,那么周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,假如异常,那么进展异常处理,并报系统管理模块,由系统管理模块进展决策。在中断处理程序中,首先屏蔽中断,喂看门狗,统计中断次数,接收系统控制模块的各种命令, 处理系统控制模块发来的这些命令,翻开中断。假如系统控制模块命令关机下电,那么智能电源模块对所有
10、模块(也包括自己)进展下电处理。智能电源模块上的管理软件处理流程图如图1-3 所示。第 2 题阅读以下关于某四轴飞行器系统设计的说明,答复以下问题1 至问题 4。【说明】在某四轴飞行器系统设计中,利用惯性测量单元(IMU)、PID 电机控制、2.4G 无线遥控通信和高速空心直流电机驱动等技术来实现一个简易的嵌入式四轴飞行器方案。整个系统的设计包括飞控板和遥控板两部分,两者之间采用 2.4G 无线模块进展数据传输。飞控板采用高速单片机STM32 作为处理器,采用含有三轴陀螺仪、三轴加速度计的运动传感器MPU6050 作为惯性测量单元,通过 2.4G 无线模块和遥控板进展通信,最终根据PID 控制
11、算法以PWM 方式驱动空心电机来控制目的。图 2-1 为李工设计的系统总体框图。飞控板和遥控板的核心处理器都采用STM32F103。飞控系统的惯性测量单元采用MPU6050 测量传感器,MPU6050 使用 IIC 接口,时钟引脚SCL、数据引脚SDA 和数据中断引脚分别接到STM32 的对应管脚,图 2-2 为该部分原理图。遥控板采用 STM32 单片机进展设计,使用AD 对摇杆模拟数据进展采集,采用NRF2401 无线模块进展通信,图 2-3 为该部分原理图。李工所设计的系统软件同样包含飞控板和遥控板两部分,飞控板软件的设计主要包括无线数据的接收、自身姿态的实时计算、电机 PID 增量的计
12、算和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 和
13、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 使用过程中,最为关键的就是 PW
14、M 的频率和占空比。PWM 的频率依赖于PWM 模块的参考时钟频率,自动装载存放器 ARR 的值加 1 之后再乘以参考时钟频率即可得到PWM 的频率。PWM 的占空比是用捕获比拟存放器CCR 和自动装载存放器ARR 获得的,PWM 占空比=CCR/(ARR+1)。假设当前主控板的 STM32 处理器 PWM 模块的参考时钟频率为 1kHz,要将 PWM 模块的频率设置为 100kHz,那么 ARR 存放器的值应设置为多少?假如此时占空比希望设置为 20%,那么CCR 存放器的值应该设置为多少?问题:2.4 飞控系统每 0.5 毫秒进展一次定时器的触发,每次中断都会检查一次无线模块数据的接收,以
15、确保飞控系统控制信息的实时性。每2 次中断(即 1 毫秒)读取一次MPU6050 单元的数据,并进展算法处理。每 4 次中断(即 2 毫秒)通过计算当前飞控板系统的姿态,结合遥控端的目的姿态,根据两者的差值通过PID 控制算法对各个电机进展调速控制。每200 次中断(即 100 毫秒)采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。图 2-4 为飞控系统软件实现的简要流程图,根据以上描绘,请补全图 2-4 中的空(1)(6)处的内容。答案解析:(1)(4):A、D、F、G(顺序不限)此题考察嵌入式软硬件系统协同设计过程中的知识及应用。此类题目要求考生认真
16、阅读题目中的题干描绘,仔细理解设计的原理框图,详细观察提供的硬件原理图和所描绘的软件实现流程示意图。前后结合进展题目分析。由图 2-1 系统总体框图可知,飞控板和遥控板之间是用2.4G 无线通信进展数据传输,各自主处理器和无线通信模块之间是SPI 接口。同时,在飞控板上,处理器和惯性测量单元是通过 IIC 进展数据交互。IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)这两种通信协议非常合适近间隔 低速芯片间进展通信。Philips(forIIC)和 Motorola(forSPI)出于不同背景和市场需求制定了这两种标
17、准通信协议。IIC 开发于 1982 年,SPI 总线首次推出是在1979 年。SPI 包含 4 根信号线,分别是:(1) SCLK:Serial Clock(output from master)(2) MOSI,SIMO:Master Output,Slave Input(output from master)(3) MISO,SOMI:Master Input,Slave Output(output from slave)(4) SS:Slave Select(active low,output from master)SPI 是单主设备(single-master)通信协议,这意味着总
18、线中只有一支中心设备能发起通信。当 SPI 主设备想读/写从设备时,它首先拉低从设备对应的SS 线(SS 是低电平有效),接着开场发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到 MOS1 实现“写, 同时可对MISO 采样而实现“读。SPI 有 4 种操作形式一一形式 0、形式 1、形式 2 和形式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。与 SPI 的单主设备不同,IIC 是多主设备的总线,IIC 没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线seria
19、ldata(SDA)和serialclock(SCL)。IIC 数据传输速率有标准形式(100kbps),快速形式(400kbps)和高速形式(3.4Mbps),另外一些变种实现了低速形式(10kbps)和快速+形式(1Mbps)。物理实现上,IIC 总线由两根信号线和一根地线组成。IIC 通信过程大概如下。首先,主设备发一个START 信号,这个信号就像对所有其他设备喊:请大家注意!然后其他设备开场监听总线以准备接收数据。接着,主设备发送一个7 位设备地址加一位的读写操作的数据帧。当所有设备接收数据后,比对地址以判断自己是否为目的设备。假如比对不符,设备进入等待状态,等待 STOP 信号的降
20、临;假如比对相符,设备会发送一个应答信号一ACKNOWLEDGE 作回应。当主设备收到应答后便开场传送或接收数据。数据帧大小为 8 位,尾随 1 位的应答信号。主设备发送数据,从设备应答;相反主设备接收数据,主设备应答。当数据传送完毕, 主设备发送一个STOP 信号,向其他设备宣告释放总线,其他设备回到初始状态。在物理实现上,SCL 线和 SDA 线都是漏极开路(open-drain),通过上拉电阻外加一个电压源。当把线路接地时,线路为逻辑 0,当释放线路,线路空闲时,线路为逻辑 1。基于这些特性,IIC 设备对总线的操作仅“把线路接地一输出逻辑0。答案解析:(1) 增强驱动才能(2) 滤波,
21、保持信号的稳定性在一般的硬件设计尤其是IIC 的电路设计中,对于 SDA 和 SCL 两线,由于其内部是漏极开路(open-drain),通过上拉电阻外加一个 3.3V 电源,用于增强系统的驱动才能。同时在电源设计中,为了去除干扰噪声,需要对电源进展滤波处理,通常采用电容进展滤波处理,以保护系统电源信号的稳定性。答案解析:ARR 存放器的值:99 CCR 存放器的值:20在 STM32 处理器的PWM 使用过程中,最为关键的就是PWM 的频率和占空比。PWM 的频率依赖于 PWM 模块的参考时钟频率,自动装载存放器 ARR 的值加 1 之后再乘以参考时钟频率即可得到 PWM 的频率。PWM 的
22、占空比是用捕获比拟存放器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 毫秒进展一次定时器的触
23、发,每次中断都会检查一次无线模块数据的接收, 以确保飞控系统控制信息的实时性。每2 次中断(即 1 毫秒)读取一次MPU6050 单元的数据, 并进展算法处理。每 4 次中断(即 2 毫秒)通过计算当前飞控板系统的姿态,结合遥控端的目的姿态,根据两者的差值通过 PID 控制算法对各个电机进展调速控制。每 200 次中断(即 100 毫秒)采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。根据以上说明,可以知道其实现流程应该为:系统启动,假如定时器到,需要检查一次无线模块数据的接收,并进展计数增加。对计数进展判断,假如是除2 的余为 0 那么说明是 2 次中
24、断的倍数到达,k 要进展MPU6050 单元的数据读取和处理,假如中断是 4 的倍数,那么就说明需要计算飞控板系统的姿态,并对电机进展调速控制。假如是 200 次的倍数,那么需要采集电池电压,并通过无线模块把电池电压发送给遥控板。第 3 题阅读以下关于某嵌入式系统多路数据采集的说明,答复以下问题1 至问题 3。【说明】某嵌入式系统中,存在 16 路数据采集通道,为了进步数据采集的可靠性,对 16 路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通道采集值进展比拟, 只有当该通道两个余度设备采集值均不小于 45 时,才表示该路通道正常。设计人员设计函数 nUm_0f_paS
25、Ser 用于统计无故障通道数目,在该函数的设计中考虑了如下因素:(1) 采用如下数据构造存储通道号及采集值:(2) 当输入参数异常时,函数返回-1;(3) 假设正确统计了无故障通道数目,那么返回该数目;(4) 该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目。汗发人员根据上述要求使用ANSIC 对代码实现如下(代码中第一个数字代表行号):问题:3.1嵌入式软件中通常使用圈复杂度来衡量程序的可维护性(一般要求圈复杂度不大于 10),请计算函数num_of_passer 的圈复杂度。问题:3.2作为测试人员,请参照表 3-1 序号 1 的方式使用代码审查
26、的方法找出该程序中所包含的至少 3 处错误。问题:3.3覆盖率是度量测试完好性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC 覆盖率作为度量指标, 请指出对函数 num_of_passer 到达 100%语句覆盖、100%分支(DC)覆盖和 100%MC/DC 覆盖所需的最少测试用例数目。答案解析: 圈复杂度:7此题考察软件测试的一些根本概念和通过代码审查查找软件缺陷以及设计测试用例的才能。此题目要求考生认真阅读题目所给的软件设计说明信息和软件代码,熟悉构造体数据类型和不同代码覆盖率的要求,结合软件测试的一些根本概念,在此嵌入式软
27、件中进展实际应用。控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。控制流图是McCabe 复杂度计算的根底,McCabe 度量标准是将软件的流程图转化为有向图,然后以图论的知识和计算方法来衡量软件的质量。McCabe 复杂度包括圈复杂度(Cyclomatic complexity)、根本复杂度、模块涉及复杂度、设计复杂度和集成复杂度等。在软件测试的概念里,圈复杂度“用来衡量一个模块断定构造的复杂程度,数量上表现为独立线性途径条数,即合理的预防错误所需测试的最少途径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经历,程序的可能错误和高的
28、圈复杂度有着很大关系。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。有以下 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(
29、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
30、种圈复杂度 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;而在说明
31、的第(2)条描绘了当输入参数异常时,函数返回-1;这样发现说明和代码不一致,显然代码定义的unsignedint 不能返回-1,此为第 1 处错误。修改函数返回值的定义为int 类型即可。阅读第 3 行代码,定义了无故障通道数目counter,在定义时未进展初始化,并且在第8 行使用前仍然未初始化。这就导致counter 的初值为非确定值,可能出错,此为第2 处错误。在第 3 行定义counter 时初始化为 0 或者在使用前进展初始化为 0 均可。阅读第 4 行代码,对模块输入参数进展合法性检查,num 合法值为 1 至 16;然后査找使用num之处,在第 6 行对num 进展了使用,但第6
32、 行使用时却从 0 开场,而且是小于等于num,这就意味着假如第 4 行 num 值为最大值 16,在第6 行就需要循环判断 17 次(0 到 16),而此题的说明中描绘很清楚,最多就 16 路通道,此为第 3 处错误。但此问题的更改有两种方案,方案 1 可以更改第 4 行 num16 为 num=16,缩小此参数的合法范围;方案 2 可以更改第 6 行 n=num 为 n符号修改为“=即可与说明一致。答案解析:覆盖率是度量测试完好性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和 MC/DC 覆盖率作为度量指标。语句覆盖率指程序中每条可执行
33、语句至少被执行一次。分支覆盖指程序中每个断定取所有可能值至少一次。MC/DC 覆盖率指在一个程序中每一种输入输出至少应出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每个断定中的每个条件必须可以独立影响一个断定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使断定结果改变。对函数num_of_paSSer 来说,为了使其中所有的语句至少执行一次,程序中的两种返回值必须各覆盖一次,所以为到达 100%语句覆盖率,至少需要两个测试用例,即参数异常的测试用例和参数正常的测试用例。函数 num_of_passer 在第 4 行和第 7 行有两处条件判断,为了使程序中每个断定
34、取所有可能值至少一次,第 4 行需要取TRUE 和FALSE,第 7 行需要取TRUE 和FALSE。由于第 4 行取FALSE时,就能覆盖到第 7 行断定,同时又由于第 7 行的断定在一个大于一次的循环中,一个测试用例就可以覆盖到第 7 行的TRUE 和FALSE,所以函数 num_of_passer100%的分支覆盖也最少两个测试用例就可以满足,即一个第 4 行取 TRUE 的测试用例和一个第 4 行取 FALSE、第 7 行取TRUE 和FALSE 的测试用例即可,由于第 7 行的条件判断在屡次循环中,取 TRUE 和FALSE 的测试用例也比拟好构造。函数 num_of_passer
35、的组合条件也出如今第 4 行和第 7 行。对第 4 行的组合条件需要 4 个测试用例来满足 MC/DC 覆盖,分别为参数array 为 NULL,array 不为 NULL 且 num 为 0,array 不为NU.LL 且 num 为大于 16 的值,array 不为NULL 且 num 为 1 到 16 之间的值。对第7 行的组合条件需要3 个测试用例来满足MC/DC覆盖,分别为Value145 且Value245,Value145 且Value2=45,Value1tail=(3)。出队操作时,假如队列不空,那么出队后更新头指针的C 语言代码为q-head:(4)。假如采用第二种方法,还
36、采用上述数据构造,初始化环形队列的C 语言代码为:判断队列为空的C 语言代码为(5)。判断队列为满的C 语言代码为(6)。入队操作时,假如队列不满,那么入队后更新尾指针的C 语言代码为q-tail=(7)。出队操作时,假如队列不空,那么出队后更新头指针的C 语言代码为g-head=(8)。答案解析:(1) (6):B、E、F、G、J、K该方案是基于PCI 总线的多功能处理系统。PCI(Peripheral Component Interconnect) 总线是一种高性能部分总线,是为了满足外设间以及外设与主机间高速数据传输而提出来的。在数字图形、图像和语音处理,以及高速实时数据采集与处理等对数
37、据传输率要求较高的应用中,采用 PCI 总线来进展数据传输,可以解决原有的标准总线数据传输率低带来的瓶颈问题。PCI 总线是一种树型构造,并且独立于 CPU,可以和 CPU 并行操作。PCI 总线上可以挂接PCI 设备和PCI 桥片,一个PCI 设备可以既是主设备也是从设备,但是在同一个时刻,这个PCI 设备或者为主设备或者为从设备。在PCI 总线中有 3 类设备,PCI 主设备、PCI 从设备和桥设备。其中PCI 从设备只能被动地接收来自HOST 主桥,或者其他PCI 设备的读写恳求; 而 PCI 主设备可以通过总线仲裁获得PCI 总线的使用权,主动地向其他 PCI 设备或者主存储器发起存储
38、器读写恳求。而桥设备的主要作用是管理下游的 PCI 总线,并转发上下游总线之间的总线事务。PCI 总线有 3 种桥,即HOST/PCI 桥、PCI/PCI 桥和PCI/LEGACY 桥。PCI 总线的地址总线与数据总线是分时复用的。这样做的好处是,一方面可以节省接插件的管脚数,另一方面便于实现猝发数据传输。在做数据传输时,由一个PCI 设备做发起者(主控,Initiator 或 Master),而另一个PCI 设备做目的(从设备,Target 或 Slave)。总线上的所有时序的产生与控制,都由 Master 来发起。PCI 总线在同一时刻只能供一对设备完成传输,这就要求有一个仲裁机构(Arbiter),来决定谁有权利拿到总线的主控权。PCI 总线有如下显著的特点:(1) 高速性,PCI 部分总线以 33MHz 的时钟频率操作,采用 32 位数据总线,数据传输速率可高达 132MB/S,远超