试卷详情

2017年嵌入式系统设计师下午真题卷

开始做题

试卷预览

问答题

企业根据利润提成发放奖金。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成15%;利润在20万到40万之间时,高于20万元的部分,可提成20%;40万到60万之间时高于40万元的部分,可提成25%;60万到100万之间时,高于60万元的部分,可提成30%;高于100万元时,高于100万元的部分可提成35%o已知企业本年度12个月的月利润存储在数组profit中,程序要求根据月利润计算月奖金并存储到数组bonus中,然后计算并返回该企业的年度总利润total_profito该程序的实现如下:

【程序】int calculate_bonus(const int profit[ ], int bonus[ ]){int n=12;int i=0;int sum_profit=0;int bonus1,bonus2,bonus4,bonus6,bonuslO;bonus1=100000*0.1;bonus2=bonus1+100000*0.15;bonus4=bonus2+200000*0.2;bonus6=bonus4+200000*0.25; bonusl0=bonus6+400000*0.3;for (i=0;iimage.pngn; i++){if (profit[i]image.png=100000)(1);else if(profit[i]image.png=200000)(2);else if(profit[i]image.png=400000)(3);else if(profit[i]image.png=600000)(4);else if(profit[i]image.png=1000000)(5) ;else(6) ;}/*以下代码计算年度总利润*/i=0;while(iimage.pngn)sum_profit += profit[++i];return sum_profit;}

问题:5.1 在程序中,使用关键字const修饰输入参数profit,请将这样修饰的作用写出。如果程序中bonus数组也使用const修饰,是否正确,并给出解释。

问题:5.2 分析程序中的计算年度总利润的代码,指出错误的一行代码;然后用一条语句实现正确代码。

问题:5.3 根据题意分析程序,完成程序中的(1)~(6),每个空行只能写一行代码,即用一条语句来描述。

查看答案开始考试

正确答案:

本题解析:

问题1:(1)限定变量,不允许被修改(2)不正确,因为该数组需要被修改。

问题2:(1)sum_profit += profit[++i];(2)sum_profit += profit[i++];

问题3:(1)bonus[i]=profit[i]*0.1

(2)bonus[i]=bonus1+(profit[i]-100000)*0.15

(3)bonus[i]=bonus2+(profit[i]-200000)*0.20

(4)bonus[i]=bonus4+(profit[i]-400000)*0.25

(5)bonus[i]=bonus6+(profit[i]-600000)*0.30

(6)bonus[i]=bonus10+(profit[i]-1000000)*0.35

问题1:const修饰的数据类型是常类型,只能读不能写。

问题2:根据题意,1月到12月的利润分别保存在profit[0]到profit[11]之中,所以年度总利润应该是这12个元素相加,下标从0到11,题中的sum_profit += profit[++i]是从1加到12,因为是先i++再计算。

问题3:根据题意,企业员工在1月到12月创造的利润分别保存在profit[0]到profit[11]中,作为计算每个月奖金的输入,用const修饰,在函数执行期间不能改变。而根据利润计算出的每个月的奖金则作为输出数组保存在bonus[0]到bonus[11]中。根据题目计算方法,前半部分为计算1到12月的奖金,并且是分段计算,逻辑十分简单。

问答题

某飞行器供油阀控制软件通过控制左右两边的油箱BL、BR向左右发动机EL、ER供油,既要保证飞行器的正常飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:

(1)无故障情况下,控制左油箱Bl向左发动机BL供油,右油箱EL向右发动机BR供油,不上报故障;

(2)当左油箱BL故障时,控制右油箱BR分别向左、右发动机EL和ER供汩,并上报二级故障——左油箱故障;

(3)当右油箱BR故障时,控制左油箱BL分别向左、右发动机EL和ER供汩,并上报二级故障——右油箱故障;

(4)当左发动机EL故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL还是右油箱BR向右发动机Er供油,并上报一级故障——左发动机故障;

(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL.还是右油箱BR向左发动机El供油,并上报一级故障——右发动机故障;

(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油,并上报一级故障——故障油箱和发动机所处位置;

(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制,并上报特级故障——两侧油箱或两侧发动机故障;

(8)故障级别从低到高依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。

问题:1 在嵌入式软件测试中,一般采用的测试方法有白盒测试、黑盒测试和灰盒测试方法,白盒测试方法中需要基于(1)进行测试;根据本题给定的条件,最恰当的测试方法应选择(2)。

问题:2 覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标。在实现第6条功能时,设计人员对部分功能采用了下列算法:if((BL==故障)&&(EL==故障)){BR供油ER;BL断油;EL断油;}请指出对上述算法达到100%语句覆盖、100%分支(DC)覆盖和100%MC/DC覆盖所需的最少测试用例数目。请完成表3-1中的(1)?(3)填空。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

问题:3 为了测试此软件功能,测试人员设计了表3-2所示的测试用例,请填写该表中的空(1)?(9)。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

查看答案开始考试

正确答案:

本题解析:

问题1:(1)软件源代码(2)黑盒

问题2:(1)1(2)2(3)3

问题3:(1)BR (2)BL (3)BR(4)BL(5)BL (6)BL(7)BR (8)故障 (9)特级故障

问答题

某智能农业基地需要实时监控各个蔬菜大棚的温湿度,李工开发了一款温湿度监测仪,硬件系统设计部分如图2-1所示。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

李工采用STM32作为主控处理器,利用TS-FTM01传感器进行温度和湿度采集,采用GSM/GPRS/GPS三合一模块来实现温湿度采集数据的上报。TF-FTM01传感器和主处理器之间采用RS485总线进行通信。

在系统设计中,使用STM32处理器实现对多个TF-FTM01传感器的数据读取。GSM/GPRS/GPS三合一模块可以实现自我定位,并把采集到的温湿度数据进行上报,该模块和STM32处理器之间采用RS232进行数据通信。TS-FTM01传感器使用RS485通信机制,每个传感器的RS485通信地址可以通过如图2-2所示的拨码开关进行配置。

拨码开关一共有6位,实现对TS-FTM01传感器地址的编码。STM32处理器具有通用同步异步收发器(USART),USART利用分数波特率发生器提供宽范围的波特率选择。STM32处理器的波特比率寄存器USART桞RR的定义如图2-3和表2-1所示。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

问题:1 RS232和RS485都属于串行通信总线,以下关于串行通信、RS232、RS485的叙述中,正确的是(1)、(2)、(3)、(4)。A.RS232支持全双工通信,只允许一对一通信B.RS232采用差分传输方式进行数据信号的传输C.RS232传输距离远,传输距离最远可达上千米D.RS485—般采用两线制进行半双工通信,允许一对多通信E.RS485采用差分传输方式,抗干扰能力强,传输距离远F.在进行嵌入式开发时,常采用RS485作为调试串口使用G.RS232典型的连接器包括DB9和DB25,仅使用三线也可进行基本逍信

问题:2 STM32处理器具有通用同步异步收发器(USART),USART利用分数波特率发生器提供宽范围的波特率选择。波特率的计算公式为:

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

其中,fck为给外设的时钟,USARTDIV是一个无符号数,其值设置在USART_BRR寄存器中。假设给外设提供的时钟频率fck=72MHz,GSM/GPRS/GPS三合一模块所需的波特率为115200,则USARTDIV的值应为(1),USART_BRR寄存器的十木进制值应为⑵。请完成其中的填空。

问题:3 RS485总线使用特制的RS485芯片,最大支持节点数可达128个以上。该系统的RS485总线上最多可以支持(1)个TS-FTM01传感器?请完成其中的填空。

问题:4 基于图2-1所示的硬件设计,需要实现某地点的温湿度数据的定时上报功能。该功能要求以T为周期读取RS485总线上16个TS-FTM01传感器(地址编码为0?15)的温湿度数据,通过GPS获取当前的位置信息,然后通过GSM网络把温湿度数据和定位信息发送到固定的手机号码上。需要特别指出的是,在图2-1所示的硬件设计中未使用专用的RS485芯片,STM32端的RS485总线是通过GPIO45和GPIO46两根G310口线模拟出的,即通过两根GPIO口线的高低电平变化来模拟RS485数据传输协议”基于上述硬件和软件设计,请从以下选项中选择正确的操作,把图2-4所示的软件流程补充完整。A.设置GPIO45为输入模式,设置GPIO46为输出模式B.设置GPIO45和GPIO46为输入模式C.设置GPIO45为输出模式,设置GPIO46为输入模式D.设置GPIO45和GPIO46为输出模式E.addr>16F.addr>=16本方案利用低速串行总线遍历读取16个传感器的温湿度数据及GPS的定位信息,并通过GSM实现数据上报。

该执行过程需要消耗一定的时间,导致现有的算法流程并不能精确实现以T为周期进行温湿度数据的采集和上报。为了修正该问题,需要把图2-4所示流程中的步骤(4)调整到步骤(5)后执行。请完成其中的填空。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

查看答案开始考试

正确答案:

本题解析:

问题1:(1)-(4):AD E G

问题2:(1)39.0625 (2)0x271

问题3:(1)64

问题4:(1)D(2)B(3)F(4)(m)(5)(c)

问题1:RS232和RS485特点RS232支持全双工通信,但只支持一对一的单站通信,典型的连接器包括DB9和DB25,仅使用三线也可以进行基本通信。

RS485支持一点对多点的双向通信,有二线与四线两种方式,采用二线制可实现真正的一对多半双工通信,采用差分传输方式,抗干扰能力强。

问题2:根据波特率公式

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

已知外设提供的时钟频率fck=72MHZ,GSM/GPRS/GPS三合一模块所需的波特率为115200,代入公式可得115200=72MHZ/16*USARTDIV,可得USARTDIV=39.0625,注意MHZ单位换算。

根据图2-3和表2-1对寄存器USART_BRR的功能描述,寄存器的4-15位对应USARTDIV的整数部分,0-3位对应USARTDIV的小数部分,由上面求出的值,可知本题中,USARTDIV整数部分为39,对应USART_BRR的4-15位十六进制就是0x27;USARTDIV的小数部分为0.0625,则寄存器USART_BRR的0-3位十六进制为0x1,组合可知为0x271.

问题3:根据图2-2所示,TS-FTM01传感器地址采用6位拨码开关进行编码,意味着该传感器的地址编码范围为0-63(最大2^6=64个)。在RS485通信机制中采用地址编码来区分不同的RS485设备。因此,该系统中可以支持的TS-FTM01传感器数目为64.

问题4:RS485采用二线制进行半双工通信,本题要求用两根GPIO口线来模拟二线制的RS485总线,通过两根GPIO口线上的信号的高低来模拟RS485的差分信号,本题并未考察RS485时序,只对半双工通信概念进行考察。因此,在利用模拟的RS485总线进行数据发送时,总线处于写状态,要把这两根GPIO口线配置成输出模式;当处理器通过RS485总线实现了数据发送后,要立即把RS485总线的状态从写状态切换到读状态,以便接收传感器的应答信息,实现半双工通信,因此此时应该把这两根GPIO口线配置为输入模式。

根据题目要求,要实现16个TS-FTM01传感器(地址编码为0-15)的温湿度数据读取,采用循环方式依次读取,根据软件流程图,addr地址从0开始处理,因此循环结束条件应为addr>=16.

需要周期性的进行温湿度数据的采集和上报,周期T由硬件定时器来实现,为了实现精确定时,需要在一次定时时刻到后立即触发下一个周期的定时开始,但图2-4所示的软件流程是一次定时时刻到后,先进行16个传感器的读取,然后再触发下一个周期的定时开始,导致实际的采集间隔为预设的周期T加上读取16个传感器温湿度数据所需的时间。为了修正这个问题,需要在定时时间到后立即触发下一个定时周期,然后再进行温湿度数据的读取和上报。因此要把步骤m中的重置定时器操作提到步骤c定时超时后立即执行。

问答题

某舰载综合处理系统由若干数据处理模块、10处理模块、信号处理模块、图形处理模块、大容量处理模块和电源模块组成,各处理模块通过CAN总线连接,如图1-1所示。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

为了提高综合处理系统的处理速度,主要处理模块都设计为多个处理器。其中,数据处理模块有

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

串行RapidlO协议即SRIO通信协议,构建了3层的协议体系。如图1-3所示,分别是物理层、传输层、逻辑层。物理层定义了硬件接口的电器特性,并包括链路控制、初级流量控制和低级错误管理等功能;传输层负责进行寻址和路由信息管理;逻辑层定义了服务类型和包交换的格式。逻辑层定义了数据包的格式,同时支持两种操作方式,分别是直接IO/DMA方式和消息传递方式。

直接IO/DMA是一种常用的数据传输方式,发送端需要知道被访问设备的存储空间地址映射,被访问端的操作基本由硬件实现。直接I0/DMA下,发起一次传输操作,需要有效数据、目标器件ID、数据长度、数据在被访问设备存储空间的地址以及包优先级等;同时,所有构成的包的长度为32bit的整数倍;若包长度不能满足要求,则添加附加位进行弥补。消息传递方式不要求发送节点知道目的节点的地址空间映射,当数据到达目的节点时,会根据邮箱号确定消息存储位置。在消息传递模式下进行数据传输时,除了有效载荷外还需要提供目的节点的ID、数据长度、包优先级和邮箱号等。

问题:1 可执行程序有严格的格式,一般分为text段、data段和bss段,请解释各段存放的内容。陈工程师写了一段图形图像相关的程序,在程序中他定义了一个大数组,如下所示:char arrMap[1024*1024];void main(void){...}请问此数组位于内存哪个位置(即在那个段中)?

问题:2 RapidlO逻辑层中直接IO/DMA和消息传递这两种传输方式的主要差异如表1-1所示。请完成表中的内容。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

问题:3 在IO处理模块等多个模块上,都采用中断方式处理输入输出。在中断处过程包括关中断、保存断点、识别中断源等一系列步骤,如图1-4所示,请完成其中的填空。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

查看答案开始考试

正确答案:

本题解析:

问题1:(1)text段:存放程序代码;(2)data段:存放有初值的全局变量和常量(3)bss段:存放未被初始化的全局变量(4)该数组是未初始化的全局变量,因此存放在bss段中。

问题2:(1)可以(2)不需要(3)通过邮箱号间接寻址(4)读/写(5)无

问题3:(1)识别中断源(2)设置新的屏蔽字(3)执行中断服务程序主体(4)关中断

问题1:各段含义见答案。

问题2:补充RapidIO接口原理:为了满足灵活性和可扩展性的要求,RapidIO协议分为三层:逻辑层、传输层和物理层。逻辑层定义了操作协议;传输层定义了包交换、路由和寻址机制;物理层定义了电气特性、链路控制和纠错重传等。RapidIO支持的逻辑层业务主要是:直接IO/DMA (Direct IO/Direct Memory Access)和消息传递(Message Passing)。

直接IO/DMA模式是最简单实用的传输方式,其前提是主设备知道被访问端的存储器映射。在这种模式下,主设备可以直接读写从设备的存储器。直接IO/DMA在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。

从功能上讲,这一特点和德州仪器DSP的传统的主机接口(HPI, Host Port Interface)类似。但和HPI口相比,SRIO(Serial RapidIO)带宽大,管脚少,传输方式更灵活。

对上层应用来说,发起直接IO/DMA传输主要需提供以下参数:目地器件ID、数据长度、数据在目地器件存储器中的地址。直接IO/DMA模式又可进一步分为以下几种传输格式:NWRITE: 写操作,不要求接收端响应。NWRITE_R: 带响应的NWRITE(NWRITE with Response),要求接收端响应。

SWRITE:流写(Stream Write),数据长度必须是8字节的整数倍,不要求接收端响应。

NREAD: 读操作。SWRITE是最高效的传输格式;带响应的写操作或读操作效率则较低,一般只能达到不带响应的传输的效率的一半。

消息传递(Message Passing)模式则类似于以太网的传输方式,它不要求主设备知道被访问设备的存储器状况。数据在被访问设备中的位置则由邮箱号(类似于以太网协议中的端口号)确定。

从设备根据接收到的包的邮箱号把数据保存到对应的缓冲区,这一过程往往无法完全由硬件实现,而需要软件协助,所以会带来一些软件负担。对上层应用来说,发起消息传递主要需提供以下参数:目地器件ID、数据长度、邮箱号。

下表比较了直接IO/DMA和消息传递模式。

中级嵌入式系统设计师,历年真题,2017年嵌入式系统设计师下午真题卷

问答题

某直升机的显示控制计算机是其座舱显控系统的核心部件,将来自飞行员的参数和控制命令与载机的飞行参数信息进行融合处理后,在显示器上显示。该显示控制计算机由一个显示控制单元和一个输入输出单元组成,它们之间通过双口RAM进行数据交换,如图4-1所示。

中级嵌入式系统设计师,章节练习,案例分析

显示控制单元采用Freescale公司的PowerPC8270高性能、低功耗32位处理器,并设计有系统FLASH存储器、用户FLASH存储器、SDRAM存储器。CPU内部宾成存储器控制器,提供地址译码、数据处理周期访问时序、SDRAM时钟等功能。输入输出单元采用Ti公司的DSP F2812高性能、低功耗16位处理器,采用AF.INC429总线用于接收导航计算机、大气数据计算机等外部设备的数据。

ARINC429解算程序严格遵循ARINC429规范,其通用字格式如表4-1所示,字长32Bit,不用的数据位填“0”。当接收到ARINC429数据后,首先判断状态位,只有在状态和标号正确的情况下,才进一步根据分辨率等进行解算数据的含义。

中级嵌入式系统设计师,章节练习,案例分析

问题:1 系统FLASH存储器的存储容量是8MB,用于存储CPU模块引导程序、BIT测试程序,FLASH在板编程程序,网口操作系统,用户程序。系统FLASH地址分配在存储空间的高端,地址空间为(1)~OxFFFFFFFF。用户FLASH存储器的存储容量是为(2),用于记录数据的存储。FLASH地址分配在存储空间的高端,地址空间为0x78000000?0x7BFFFFFF。SDRAM的存储容量是256MB,用于运行操作系统和应用软件,地址空间位于存储器的低端0x00000000~3)。请完成(1)~(3)填空。

问题:2 根据ARINC429数据的标号(D8-D1)可知该数据为高度表数据。根据系统定义,高度表数据的分辨率为0.1米,即D9为1表示0.1米,D10为1表示0.2米,D11为1表示0.4米,依此类推。若接收数据帧中D28-D9位是0000.0000.0111.1101.0000,则当前的高度是(1)米。若当前的高度是100米,则数据帧中D28-D9位应为(2)。请完成(1)和(2)填空。

问题:3 显示控制单元和输入输出单元通过双口交换信息,两个处理器上的软件采用相同定义的结构体来定义双口单元,方便交换信息。以下是双口结构体定义:typedef struct{char ctrlWord; /*通道工作方式控制字*/char head; /*F1FO 控制头指针*/char tail; /*FIFO 控制尾指针*/short fifo[32] ; /*FIFO 缓冲区*/}SPM_CHAN_RX429; /*ARINC429 接收通道定义*/为了避免由于不同的编译环境对上述数据结构产生不同的编译结果,建议对上述数据结构通过设置紧缩属性(packed属性),强迫编译器采用字节对齐方式,在该模式下,SPM_CHAN_RX429结构体占用(1)字节的存储空间。ARINC429接收通道设计为由一个首尾相连的FIFO数组形成的环形队列。输入输出单元根据头指针向环形队列写入数据,头指针始终指向下一个要写入的位置,并且限制写入数据最多为31个,即队尾与队首之间至少保留一个元素的空间。显示控制单元根据尾指针从环形队列读取数据,尾指针始终指向下一个要读取的位置。初始化环形队列的C语言为:typedef struct{char ctrlWord; /*通道工作方式控制字*/char head; /*F1FO 控制头指针*/char tail; /*FIFO 控制尾指针*/short fifo[32] ; /*FIFO 缓冲区*/}SPM_CHAN_RX429; /*ARINC429 接收通道定义*/SPM_CHAN_RX429 *pBuf;pBuf= (SPM_CHAN_RX429 *) ADDR_3RAM_PPC; /*双口地址的宏定义*/ pBuf->ctrlWord=0;pBuf->head=O; pBuf->tail=O;判断队列为空的C语言为(2)。判断队列为满的C语言为(3)。;请完成(1)~(3)填空。

查看答案开始考试

正确答案:

本题解析:

问题1:(1)0xFF800000 (2)64MB(3)0x0FFFFFFF

问题2:(1)200(2)0000.0000.0011.1110.1000

问题3:(1)67 (2)pBuf->head == pBuf->tail (3)pBuf->tail == (pBuf->head + 1)%32

问题1:计算机的内存出处容量的计量单位是字节,系统FLASH存储器的存储容量是8MB,二进制表示为0x800000,地址分配在存储空间的高端,地址空间为0Xff800000-0xFFFFFFFF。用户FLASH的地址空间为0x78000000-0x7BFFFFFF,存储容量是0x40000000,也即64MB。SDRAM的存储容量是256MB,二进制表示为0x10000000,地址分配在存储空间的低端,地址空间为0x00000000-0x0FFFFFFF。

问题2:基本的二进制和十进制的换算。

问题3:本题中由于是采取强制编译器按照字节对齐方式,因此该模式下,char正好字节对齐,short占用两个字节,共1+1+1+32*2=67B。环形队列是一个首位相连的FIFO数据结构,为了判断空和满,长度为n的环形队列会只存n-1个数据,空出一个不存(题中也是只存31个),其头指针指向第一个节点,尾指针指向最后一个节点的下一个节点,因此队列为空的时候头指针和尾指针相等。队列满的时候尾指针+1=头指针,实际使用时,考虑循环队列会转回0,要进行取模操作。

其他考生还关注了更多 +