[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc

上传人:priceawful190 文档编号:493237 上传时间:2018-11-30 格式:DOC 页数:32 大小:453.50KB
下载 相关 举报
[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc_第1页
第1页 / 共32页
[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc_第2页
第2页 / 共32页
[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc_第3页
第3页 / 共32页
[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc_第4页
第4页 / 共32页
[计算机类试卷]2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷及答案与解析 一、试题一 0 阅读以下关于某嵌入式系统设计的说明,回答问题 1至问题 4,将答案填入答题纸的对应栏内。【说明】 某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、 FC网络交换模块和智能电源模块组成,系统组成如图 1-1所示。数据处理模块处理系统的应用任务;系统管理模块除了处理系统的应用任务外,还负责管理整个嵌入式系统; FC网络交换模块采用消息机制,支持广播和组播,主要负责系统的数据交换;智能 电源模块负责给其他模块供电,该模块根据系统命令可以给其他模块供电或停止供电。1

2、【问题 1】 该系统的软件大部分是用 C语言编程的,编程人员经常会使用运算符,请按优先级由高到低的次序,重新排序下面的运算符:, =, =, &。 2 【问题 2】 该系统的开发要求按软件能力成熟度模型 CMM 3级开发,请回答下列问题: (1)CMM 3级包含多少个关键过程域 ? (2)请写出 CMM 3级的关键过程域。 (3)CMM2级包含多少个关键过程域 ? (4)在对该开发软件单位进行 CMM 3级达标评级时,只需检查 3级的 关键过程域还是 3级和 2级的关键过程域都需要检查 ? 3 【问题 3】 (1)在本系统中, FC网络采用何种拓扑结构 ?请从如下 4项中选择最为合适的。 A总

3、线 B树型 C星形 D点对点 (2)FC网络除了用于交换的光纤基础架构,还必须有高性能的 I O通道结构支持, I O通道在 FC网络中的优势是什么 ? 4 【问题 4】 智能电源模块首先进行系统初始化,初始化后各设备就可使用,再根据系统初始配置表对嵌入式系统的其他模块供电。智能电源模块通常完成两件事情:一、周期性地查询本模块温度、各路电流 (给各模块供电的 )以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策;二、进入中断处理程序,处理系统管理模块的各种命令,如果系统管理模块命令关机下电,则智能电源模块对所有模块 (也包括自己 )进行下电处理。 图

4、 1-2是智能电源模块上的管理软件处理流程图,请完成该流程图,给 (1) (5)处填空。 二、试题二 4 阅读以下关于某四轴飞行器系统设计的说明,回答问题 1至问题 4,将解答填入答题纸的对应栏内。【说明】 在某四轴飞行器系统设计中,利用惯性测量单:元(IMU)、 PID电机控制、 2 4G无线遥控通信和高速空心直流电机驱动等技术来实现一个简易的嵌入式四轴飞行器方案。整个系统的设计包括飞控板和遥控板两部分,两者之间采用 2 4G无线模块进行数据传输。飞控板采用高速单片机 STM32作为处理器,采用含有三轴陀螺仪、三轴加速度计的运动传感器 MPU6050作为惯性测量单元,通过 2 4G无线模块和

5、遥控板进行通信,最终根据 PID控制算法以PWM方式驱动空心电机来控制目标。图 2-1为李工设计的系统总体框图。飞控板和遥控板的核心处理器都采用STM32F103。飞控系统的惯性测量单元采用 MPU6050测量传感器, MPU6050使用 IIC接口,时钟引脚 SCL、数据引脚 SDA和数据中断引脚分别接到 STM32的对应管脚,图 2-2为该部分原理图。遥控板采用 STM32单片机进行设计,使用 AD对摇杆模拟数据进行采集,采用 NRF2401无线模块进行通信,图 2-3为该部分原理图。 李工所设计的系统软件同样包含飞控板和遥控板两部分,飞控板软件的设计主要包括无线数据的接收、自身姿态的实时

6、计算、电机 PID增量的计算和 PWM的电机驱动。遥控板主控制器软件通过 ADC外设对摇杆数据进行采集,把采集到的数据通过 2 4G无线通信模块发送至飞控板。图 2-4为飞控系统的软件流程示意图。5 【问题 1】 由图 2一 1系统总体框图设计可知,飞控板和遥控板之间是用 2 4G无线通信进行数据传输,各自主处理器和无线通信模块之间是 SPI接口。同时,在飞控板上,处理器和惯性测量单元是通过 IIC进行数据交互。以下关于 SPI接口和 IIC接口的描述中,正确的是: _(1)、 _(2)、 _(3)、_(4)。 A SPI和 IIC都是主从式通信方式 B SPI的数据收发线是各自独立的, II

7、C也是同样 C SPI和 IIC的传输都不需要片选控制 D IIC总线是一个多主机的总线,可以连接多于一个能控制总线的器件到总线 E IIC总线包括标准模式,快速模式和高速模式,相互之间的传输速度差异并不大 F在原理设计中,到底采用 SPI和 IIC哪种方式,需要依据外设芯片的接口而定 G SPI是一种环形总线结构 H在 IIC总线上,可以有多个从设备具有相同的 IIC地址 6 【问题 2】 (1)图 2-2飞控板部分原理图中, R4的作用是什么 ? (2)图 2-3遥控板部分原理图中, C11、 C12、 C13、 C14的作用是什么 ? 7 【问题 3】 在 STM32处理器的 PWM使用

8、过程中,最为关键的就是 PWM的频率和占空比。 PWM的频率依赖于 PWM模块的参考时钟频率,自动装载寄存器 ARR的值加1之后再乘以参考时钟频率即可得到 PWM的频率。 PWM的占空比是用捕获比较寄存器 CCR和自动装载寄存器 ARR获得的, PWM占空比 =CCR (ARR+1)。 假设当前主控板的 STM32处理器 PWM模块的参考时钟频率为 lkHz,要将PWM模块的频率设置为 100kHz,则 ARR寄存器的值应设置为多少 ?如果此时占空比希望设 置为 20,那么 CCR寄存器的值应该设置为多少 ? 8 【问题 4】 飞控系统每 0 5毫秒进行一次定时器的触发,每次中断都会检查一次无

9、线模块数据的接收,以确保飞控系统控制信息的实时性。每 2次中断 (即 1毫秒 )读取一次MPLl6050单元的数据,并进行算法处理。每 4次中断 (即 2毫秒 )通过计算当前飞控板系统的姿态,结合遥控端的目标姿态,根据两者的差值通过 PID控制算法对各个电机进行调速控制。每 200次中断 (即 100毫秒 )采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大 小。 图 2-4为飞控系统软件实现的简要流程图,根据以上描述,请补全图 2-4中的空(1) (6)处的内容。 三、试题三 8 阅读以下关于某嵌入式系统多路数据采集的说明,回答问题 1至问题 3,将解答填入

10、答题纸的对应栏内。 【说明】 某嵌入式系统中,存在 16路数据采集通道,为了提高数据采集的可靠性,对 16路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较,只有当该通道两个余度设备采集值均不小于 45时,才表示该路通道正常。设计人员设计函数 num of passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素: (1)采用如下数据结构存储通道号及采集值: Struct value unsigned int No; 通道号, 1到 16 unsigned short Value1; 余度 1采集值 unsigned short Value2;

11、余度 2采集值 (2)当输入参数异常时,函数返回 -1; (3)若正确统计了无故障通道数目,则返回该数目; (4)该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目。 开发人员根据上述要求使用 ANSI C对代码实现如下 (代码中第一个数字代表行号 ): 1)unsigned int num_of_passer(struct value array, unsigned int num) 2) unsigned int n=0; 循环变量 3) unsigned int counter; 无故障通道数目 4) if(array=NULL) (num=0)

12、 (num 16) 5) return i; 当输入参数异常时,函数返回 1 6) for in=0; n =num; n+) 7) if(arrayn Value1 45) (arrayn Value2 45) 8) counter=counter+1; 9) return counter; 9 【问题 1】 嵌入式软件中通常使用圈复杂度来衡量程序的可维护性 (一般要求圈复杂度不大于10),请计算函数 num_of_passer的圈复杂度。 10 【问题 2】作为测试人员,请参照表 3-1序号 1的方式使用代码审查的方法找出该程序中所包含的至少 3处错误。11 【问题 3】覆盖率是度量测试完

13、整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和 MC DC覆盖率作为度量指标,请指出对函数 num_of_passer达到 100语句 覆盖、 100分支 (DC)覆盖和 100 MC DC覆盖所需的最少测试用例数目。四、试题四 11 阅读以下关于数据采集与处理系统的说明,回答问题 1至问题 3,将答案填入答题纸的对应栏内。【说明】 某公司承接了一个数据采集与处理系统的项目,由刘工负责系统的方案设计,刘工的设计方案如图 41所示。该方案是基于 PCI总线的多功能处理系统, PCI设备 1是以太网, PCI设备 2用于数据采集, PCI设

14、备 3、PCI设备 4用于和该系统中的其他处理模块进行互联, LEGACY设备 1、 LEGACY设备 2用于处理系统中一些慢速设 备。12 【问题 1】 在以下描述 PCI总线的基本概念中,正确的表述有 _(1)、_(2)、 _(3)、 _(4)、 _(5)、 _(6)。 A PCI总线是一个与处理器有关的高速外围总线 B PCI总线的基本传输机制是猝发式传送 C PCI设备一定是主设备 D PCI的物理地址与其他总线一样,是由内存地址空间和 I O地址组成 E PCI设备的地址译码不能对 配置空间直接寻址 F PCI设备识别主要是对开发商代码和设备代码进行识别 G访问配置空间时, PCI桥

15、应提供 IDSEL信号以选择 PCI设备 H系统中只允许有一条 PCI总线 I PCI总线是高速串行总线 J PCI总线有 3种桥,即 HOST PCI桥, PCI PCI桥, PCI LEGACY桥 K PCI桥是可以把一条总线的地址空间映射到另一条总线的地址空间 13 【问题 2】 PCI设备 2和主 CPU之间采用双口 RAM方式交换数据,双口 RAM是常见的共享式 多端口存储器,其最大的特点是存储数据共享。它允许两个独立的 CPU或控制器同时异步访问存储单元。既然数据共享,就必须存在访问仲裁控制,否则就会出现错误或冲突。内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;存储单

16、元数据块的访问权限分配;信令交换逻辑 (例如中断信号 )等。 两个端口对同一内存操作有 4种情况: A两个端口同时对同一地址单元读出数据; B两个端口同时对同一地址单元写入数据; C两个端口不同时对同一地址单元存取数据; D两个端口同时对同一 地址单元,一个写入数据,另一个读出数据。 在上述情况下,两个端口的存取不会出现错误的是 _(1)和_(2),会出现写入错误的是 _(3),会出现读出错误的是_(4)。 14 【问题 3】 PCI设备 2和主 CPU之间通过双端口存储器进行数据交换。刘工设计了环形队列的实现方式。设备 2向环形队列写入数据,主 CPU从环形队列读取数据。环形队列是一个首尾相

17、连的 FIFO数据结构,采用数组存储,到达尾部时将转回到 0位置,该转回是通 过取模操作来实现的。因此环形队列逻辑上是将数组元素 q0与 qMAX-1连接,形成一个存放队列的环形空间。为了方便读写,还要用数组下标来指明队列的读写位置,其中 head指向可以读的位置, tail指向可以写的位置,环形队列如图 4-2所示。使用环形队列时需要判断队列为空还是为满。当tail追上 head时,队列为满,当 head追上 tail时,队列为空。通常判断环形队列为空为满有两种判断方法。 1附加一个标志位 tag,当 head赶上 tail,队列空,则令 tag=0,当 tail赶上 head,队列满,则令

18、tag=1; 2限制 tail赶上 head,即队尾结点与队首结点之间至少留有一个元素的空间。队列空: head=tai:队列满: (rail+1) MAXN=head。 如果采用第一种方法(即附加标志实现算法 ),则环形队列的结构定义如下: typedef struct ringq int head; *头部,出队列方向 * int tail; *尾部,入队列方向 * int tag: int size; *队列总尺寸 * int spaceRINGQ MAX; *队列空间 * RINGQ; RINGQ P, *q; q= p; 初始化环形队列的 C语言代码为: q一 head=q一tail

19、=q一 tag=0: q一 size=RINGQ MAX; 判断队列为空的 C语言代码为_(1)。 判断队列为满的 C语言代码为 _(2)。 入队操作时,如果队列不满,则入队后更新尾指针的 C语言代码为 q tail=_(3)。出队操作时,如果队列不空,则出队后更新头指针的 C语言代码为 q head=_ (4)。 如果采用第二种方法,还采用上述数据结构, 初始化环形队列的 C语言代码为: q一 head=q一 tail=0; q一 size=RINGQMAX; 判断队列为空的 C语言代码为 _(5)。 判断队列为满的 C语言代码为 _(6)。 入队操作时,如果队列不满,则入队后更新尾指针的

20、C语言代码为 q tail=_(7)。出队操作时,如果队列不空,则出队后更新头指针的 C语言代码为 qhead=_(8)。 五、试题五 14 阅读以下关于 C语言编程方面的说明和程序,回答问题 1至问题 3,将答案填入答题 纸的对应栏内。 【说明】 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中: 程序 1是关于文件操作的一段程序。 程序 2是某信息管理系统的系统登录和密码验证程序,规定密码最长为 20个字符。首先,打开密码文件 sys_code,如果成功,则将文件中的密码信息与用户输入的密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系

21、统。如果打开文件 sys_code失败,则由用户输入密码并保存到密码文件 sys_code。 【程序 1】 #include #include Void main FILE*fp; char c, fname20; printf(“输入文件名: “); scanf(“ s“, fname); if(fp=fopen(fname, “r“)=_(1) printf(“不能打开文件: s n“, fname); exit(0); while(_(2) *检测文件是否结束 * C=fgetc(fp); if(_(3) *检测文件是否出错 * printf(“文件读错误 n“); break; put

22、char(c); 【程序 2】 void password() int sign=0; sign=checkcode(); if(_(1) printf(“ a n n n n n n n n n t t密码错误,请重新登录 !“); getch(); system(“cls“); exit(1); system(“cls“); printf(“ a n n n n n n n n n t t“); printf(“欢迎登录信息管理系统 ! n“); getch(); return; int checkcode() FILE*fp; char ch, syspwd21=“ 0“; char u

23、srpwd21=“ 0“; int i; *身份验证 * if(fp=fopen(“sys code“, “r“)=NULL) system(“cls“); printf(“please set your identify n“); printf(“password( =20): “); for(i=0; i 20; i+) ch=getchar(); if (ch= r ch= n) break; _(2)=ch; fp=fopen(“sys code“, “W“); fputs(syspwd, fp); fclose(fp); return 0; else system(“cls“); f

24、getS(Syspwd, 21, fp); fclose(fp); printf(“please enter your password: “); for(i=0; i 20; i+) ch=getchar(); if(ch= r ch= n)break; usrpwdi=ch; if(strcmp(_(3)!=0) return 1; return 0; 15 【问题 1】 变量存储类型是指数据在内存中存储的方法,即确定所定义的变量在内存中的存储位置,也确定了变量的作用域和生存期,内部变量有 3种存储类型。假设有一个内部整型变量 aa,请按不同存储类型给出相应的变量声明。 16 【问题 2】

25、 王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数 feof()和 ferron(),完成【程序 1】中的空 (1) (3),将答案写到答题纸相应的位置。 17 【问题 3】 王工根据系统的需求编写了【程序 2】,请填写其中的空 (1) (3),将解答填入答题纸的对应栏内。 2015年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)真题试卷答案与解析 一、试题一 1 【正确答案】 按优先级由高到低的次序,运算符排序为: , =, &, = 【试题解析】 本问题考查 C语言的基础知识。在 C语言中,对各种运算符的优先级是有规定的,必须掌握

26、。优先级最高者其实并不是真正意义上的运算符,包括:数 组下标、函数调用操作符、各结构成员选择操作符。它们都是自左向右结合。 单目运算符的优先级仅次于上述运算符,在所有的真正意义的运算符中,它们的优先级最高。 双目运算符的优先级低于单目运算符的优先级。在双目运算符中,算术运算符的优先级最高,移位运算符次之,关系运算符再次之,接着就是逻辑运算符,赋值运算符,最后是条件运算符。总结以下两点: (1)任何一个逻辑运算符的优先级低于任何一个关系运算符; (2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高。 下表是 C语言运算符优先级表 (由上至下,优先级依次递减 )。 C语言运算符优先级表综

27、上所述,本题中运算符优先级由高到低的次序为:, =, &, = 2 【正确答案】 (1)CMM 3级 (已定义级 )包括 7个关键过程区域 (2)同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点 (3)CMM 2级 (可重复级 )包括 6个关键过程区域 (4)3级和 2级的关键过程域都需要检查 【试题解析】 CMM即软件能力成熟度模型,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。 CMM是美国卡内基梅隆大学软件工程 研究所与企业、政府合作的基础上开发的模型,主要用于评价软件企业的质量保证能力。目前,国内外的很多大型企业采用这一

28、模型,如国内的鼎新、浪潮通软、用友、金蝶、创智、亚信、华为等公司都启动了 CMM软件过程改进计划。国军标 GJB500-2003军用软件能力成熟度模型就是以 CMM为参考蓝本而制定的。 CMM模型将软件能力成熟度自低到高依次划分, 1级为初始级、 2级为可重复级、 3级为已定义级、 4级为已管理级、 5级为优化级。除等级 1外,每个成熟度等级被分解成几个关键过程域,指明为了改进其软件过程组织应关注的区域,关键过程 域识别出为了达到各成熟度等级所必须着手解决的问题。CMM共有 18个关键过程域,其中初始级无关键过程域。 CMM 2级 (可重复级 )包括 6个关键过程域,为软件配置管理、软件质量保

29、证、软件子合同管理、软件项目跟踪与监督、软件项目策划、软件需求管理; CMM 3级 (已定义级 )包括 7个关键过程域,为同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点; CMM 4级 (已管理级 )包括 2个关键过程域,为软件质量管理和定量过程管理; CMM 5级 (优化级 )包括 3个关键过程域,为过程更改管理、技术改革管理和缺陷预防。 在 CMM某一级达标时,必须是该级别的所有关键过程域满足要求,同时低级别的所有关键过程域也必须达标。因此,某单位进行 CMM 3级达标评级时,对 3级和 2级的关键过程域都需要检查。 3 【正确答案】 (1)C (2)

30、简单、廉价、高速 【试题解析】 数据通信网络常见的拓扑结构由简单到复杂依次为:点对点、总线、树型、星形。点到点型指网络中一个信息源节点连接到一个或多个目的节点,是专用的链路,具有通信效率高,延迟小的优点,但是建立多点全互联的网络具有连线多、成本高、资源利用率低等缺点。总线型指网络中一个信息源节点连接到一个或多个目的节点,采用集中控制、令牌访问、 CSMA CD等方式,具有连线少、成本较低、资源利用率高等优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。 树型指网络中所有节点挂接到一个树形结构上,可以采用集中控制、令牌访问等方式,具有连线简单、成本较低的优点,但存在通信吞吐量低、

31、延迟大的缺点,尤其在网络负载重的情况下。 星形指网络中所有节点连接到中心交换机,节点之间的通信经过交换机路由转发, 具有通信吞吐量高、延迟小、连线较简单的优点,但存在成本高、交换机单点故障风险的缺点。 本题为了满足嵌入式系统对高带宽、低延迟的通信要求,通过分析以上网络的拓扑结构特点, FC网络应选择星形结构。星形结构是最佳的方案。 SAN通常有 FC SAN和 IP SAN两种实现技术。 FC SAN采用 I O结合光线通道, IP SAN采用 iSCSI实现异地间数据交换,具有简单、廉价、高速等优势。 4 【正确答案】 (1)按初始配置表给各模块供电 (2)电源模块温度检测 (3)向其他模块

32、供电的各路电流检 测 (4)屏蔽中断 (5)处理系统控制模块发来命令 【试题解析】 智能电源模块首先进行系统初始化,再根据系统初始配置表对嵌入式系统的其他模块供电。按照智能电源模块的工作过程,判断有无中断,如有中断,则进入中断处理程序。如没有中断,则周期性地查询本模块温度、各路电流(给各模块供电的 )以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策。在中断处理程序中,首先屏蔽中断,喂看门狗,统计中断次数,接收系统控制模块的各种命令,处理系统控制模块发来的这些命令,打开中断。如果系 统控制模块命令关机下电,则智能电源模块对所有模块 (也包括自己 )进

33、行下电处理。智能电源模块上的管理软件处理流程图如图 1-3所示。二、试题二 5 【正确答案】 (1) (4): A、 D、 F、 G 【试题解析】 由图 2-1系统总体框图可知,飞控板和遥控板之间是用 2 4G无线通信进行数据传输,各自主处理器和无线通信模块之间是 SPI接口。同时,在飞控板上,处理器和惯性测量单元是通过 IIC进行数据交互。 IIC(Inter-Integrated Circuit)和 SPI(Sefial Peripheral Interface)这两种通信协议非常适合近距离低速芯片间进行通信。 Philips(for IIC)和 Motorola(for SPI)出于不同

34、背景和市场需求制定了这两种标准通信协议。 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, outputfrom master) SPI是单主设备 (sin

35、gle-master)通信协议,这意味着总线中只有一支中心设备能发起通信。当 SPI主设备想读写从设备时,它首先拉低从设备对应的 SS线 (SS是低电平有 效 ),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到 MOSI实现 “写 ”,同时可对 MISO采样而实现 “读 ”。 SPI有 4种操作模式 模式 0、模式 1、模式 2和模式 3,它们的区别是定义了在时钟脉冲的哪条边沿转换 (toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值 (就是时钟信号无效时是高还是低 )。 与 SPI的单主设备不同, IIC是多主设备的总线, IIC没有物理的芯片选择

36、信号线,没有仲裁逻辑电路,只使用两条信号线 serial data(SDA)和 serial clock(SCL)。 IIC数据传输速率有标准模式 (100 kbps)、快速模式 (400 kbps)和高速模式 (3 4 Mbps),另外一些变种实现了低速模式 (10 kbps)和快速 +模式 (1 Mbps)。 物理实现上, IIC总线由两根信号线和一根地线组成。 IIC通信过程大概如下。首先,主设备发一个 START信号,这个信号就像对所有其他设备喊:请大家注意 !然后其他设备开始监听总线以准备接收数据。接着,主设备发送一个 7位设备地址加一位的读写操作的数据帧。当所有设备接收数据后,比对

37、地址以判断自己是否为目标设备。如果比对不符,设备进入等待状态,等待 STOP信号的来临;如果比对相符,设备会发送一个应答信号一 ACKNOWLEDGE作回应。当主设备收到应答后便开始传送或接收数据。数据帧大小为 8位,尾随 1位的应答信号。主设备发送数据,从设备应答;相反主设备接收数据,主设备应答。当数据传送完毕,主设备发送一个 STOP信号,向其他设备宣告释放总线,其他设备回到初始状态。在物理实现上, SCL线和 SDA线都是漏极开路 (open-drain),通过上拉电阻外加一个电压源。当把线路接地时,线路为逻辑 0,当释放线路,线路空 闲时,线路为逻辑 1。基于这些特性, IIC设备对总

38、线的操作仅有 “把线路接地 ”输出逻辑 0。 6 【正确答案】 (1)增强驱动能力 (2)滤波,保持信号的稳定性 【试题解析】 在一般的硬件设计尤其是 IIC的电路设计中,对于 SDA和 SCL,两线,由于其内部是漏极开路 (open-drain),通过上拉电阻外加一个 3 3V电源,用于增强系统的驱动能力。同时在电源设计中,为了去除干扰噪声,需要对电源进行滤波处理,通常采用电容进行滤波处理,以保护系统电源信号的稳定性。 7 【正确答案】 ARR寄存器的值: 99 CCR寄存器的值: 20 【试题解析】 在 STM32处理器的 PWM使用过程中,最为关键的就是 PWM的频率和占空比。 PWM的

39、频率依赖于 PWM模块的参考时钟频率,自动装载寄存器ARR的值加 1之后再乘以参考时钟频率即可得到 PWM的频率。 PWM的占空比是用捕获比较寄存器 CCR和自动装载寄存器 ARR获得的, PWM占空比 =CCR(ARR+1)。 进行 ARR寄存器的值计算过程中,符合的公式为: ARR寄存器 =要设置的频率时钟频率一 1。 根据占空比则指导 CCR的设置符合的公式为: CCR寄存器 =(占空比 )(ARR+1)。 8 【正确答案】 (1)检查一次无线模块数据的接收 (2)count 2=0 (3)读取 MPU6050单元的数据,并进行算法处理 (4)计算当前飞控板系统的姿态,对各个电机进行调速

40、控制 (5)count 200=0 (6)采集电池电压,通过无线模块把电池电压发送给遥控板 【试题解析】 飞控系统每 0 5毫秒进行一次定时器的触发,每次中断都会检查一次无线模块数据的接收,以确保飞控系统控制信息的实时性。每 2次中断 (即 1毫秒 )读取一次 MPU6050单元的数据,并进行算法处理。每 4次中断 (即 2毫秒 )通过计算当前飞控板系统的姿态,结合遥控端的目标姿态,根据两者的差值通过PID控制算法对各个电机进行调速控制。每 200次中断 (即 100毫秒 )采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。 根据以上说明,可以知道其实现流

41、程应该为: 系统启动,如果定时器到,需要检查一次无线模块数据的接收,并进行计数增加。对计数进行判断,如果是除 2的余为 0则说明是 2次中断的倍数到达,需要进行 MPU56050单元的数据读取和处理,如果中断是 4的倍数,那么就说明需要计 算飞控板系统的姿态,并对电机进行调速控制。如果是 200次的倍数,则需要采集电池电压,并通过无线模块把电池电压发送给遥控板。 三、试题三 9 【正确答案】 圈复杂度: 7 【试题解析】 控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。控制流图是 McCabe复杂度计算的基础, McCabe度量标准是将软件的流程图

42、转化为有向图,然后以图论的知识和计算方法来衡量软件的质量。 McCabe复杂度包括圈复杂度 (Cyclomatic complexity)、基本复杂度、模块 涉及复杂度、设计复杂度和集成复杂度等。 在软件测试的概念里,圈复杂度 “用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系 ”。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。 嵌入式软件中通常使用圈复杂度来衡量程序的可维护性

43、,一般要求圈复杂度不大于 10。函数num_of_passer的流程图如下图 3-1所示。有以下 3种方法计算圈复杂度: 1没有流程图的算法: 基数为 1,碰到以下项加 1: 分支数 (如 if、 for、 while和 do while); SWitch中的 case语句数; 如果条件是 2个复合条件的话,则加 2,否则加 1。 2给定流程图 G的圈复杂度 V(G),定义为 V(G)=E-N+2, E是流图中边的数量, N是流图中结点的数量。 3给定流程图 G的圈复杂度 V(G),定义为V(G)=P+l, P是流图 G中判定结点的数量。 按第 1种没有流程图的算法,函数num of pass

44、er中一个 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。

45、10 【正确答案】 【试题解析】 代码审查是不执行软件代码,而通过阅读软件代码发现代码可能存在的错误的过程。代码审查的测试内容包括检查代码和设计的一致性;检查代码执行标准的情况;检查代码逻辑表达的正确性;检查代码结构的合理性;检查代码的可读性。通过对说明的阅读,按照说明中描述的要求进行函数 num of passer的代码审查。 阅读第 1行代码,函数返回值定义为 unsigned int;而在说明的第 (2)条描述了当输入参数异常时,函数返回一 1;这样发现说明和代码不一致,显然代码定义的unsigned int不能返回 1,此为第 1处错误。修改函数返回值的定义为 int类型即可。 阅读第

46、 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路通道,此为第

47、3处错误。但此问题的更改有两种方案,方案 1可以更改第 4行 num 16为 num =16,缩小此参数的合法范围;方案 2可以更改第 6行 n =num为 nnum减少循环次数。 阅读第 7行代码,对每个通道采集的双余度值进行有效性判断。按照说明,当余度设备采集值均不小于 45时,才表示该路通道正常;但代码中使用当余度设备采集值均大于 45时,表示该路通道正常,在对边界点 45的处理上与说明不一致,此为第 4处错误。将第 7行代码中的两个 “ ”符号修改为 “ =”即可与说明一致。 11 【正确答案】 【试题解析】 覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和 MCDC覆盖率作为度量指标。语句覆盖率指程序中每条可执行语句至少被执行一次。分支覆盖指程序中每个判定取所有可能值至少一次。 MC DC覆盖率指在一个程序中每一种输入输出至少应出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并 且每个判定中的每个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。对函数 num_of_passer来说,为了使其中所有的语句至少执行一次,程序中的两种返回值必须各覆盖一次,所以为达到 100语句覆盖率,至少需要两个测试用例,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1