2019年下半年嵌入式系统设计师考考试下午真题(专业解析+参考答案)
第 1 题
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
服务型智能扫地机器人因其低廉的价格和高效的工作能力,越来越受到消费者的认可,目前已逐渐进入家庭生活代替人们的清洁工作,具有广阔的市场。
服务型智能扫地机器人需要具有自主运动规划和导航功能,在其工作过程中,需要通过对环境信息的融合感知进行行为决策。扫地机器人一般具备的主要功能包括:
(1)紧急状态感知:包括碰撞检测、跌落检测和离地检测等功能,防止与障碍物碰撞、前方台阶跌落危险以及扫地机器人离地等,实现扫地机器人运动中的自我保护。
(2)姿态感知:包括运动里程计数和航向测量等功能,需要获取扫地机器人的运动速度、行走距离、航向角度等信息。
(3)视觉感知:包括单目视觉避障系统和单目视觉定位系统等,需要通过视觉信息探测障碍物,视觉信息来自两个单目摄像头系统。在某些设计中,也可结合红外测距传感器进行障碍物探测。
(4)自动充电:在工作过程中,需要实时监控扫地机器人的电量,且在电量少于一定阈值时自动返回电源处进行充电。
(5)扫地及吸尘单元:使用电机控制刷子实现清扫,使用抽灰电机实现吸尘。
(6)运动执行:对机器人的运动进行控制。
(7)监控系统:通过无线网络传递扫地机器人的状态数据及视频图像等信息到远程客户端,客户端参与到扫地机器人的运动监视及控制中,实现信息交互,监控扫地机器人的实时状态。客户端包括PC客户端和手机客户端两种。
(8)信息处理中心:用于接收各种传感器信息和视觉信息,通过分析处理进行扫地机器人的运动控制,且负责和后台监控中心通信。
服务型智能扫地机器人选用ARM+STM32双核架构模式,分别处理数据量较大的图像信息和短促型的非图像信息。STM32选用STM32F103VET6芯片,用于实现非图像以外的众多传感器的驱动以及数据采集,并控制车轮电机的运动;ARM选用S5PV210处理器实现摄像头图片的采集、在监控系统中接入无线网络、对STM32串口传过来的传感器数据以及图像定位和避障信息做综合处理,生成运动决策,发送给STM32,执行扫地机的前进、后退、转弯等。
【问题1】(5分)
图1-1是本题的服务型智能扫地机器人典型的功能结构图,请根据说明的描述,填写(1)~(5)空白处,完成该功能结构图。请将(1)~ (5)的内容填在答题纸上相应的位置中。
【问题2】(6分)
为了实现服务型智能扫地机器人的功能,就需要多种传感器来感知工作环境信息。
王工在对传感器进行选型时,选择了如下类型的传感器:
1.USB摄像头;
2.开关式传感器;
3.槽型光耦模块;
4.数字式防跌落传感器;
5.红外测距传感器;
6.GGPM01A单轴角度陀螺仪(传感器);
7.霍尔码盘传感器。
请根据传感器的功能完成表1-1,请将(1)~(6)的内容填在答题纸上相应的位置中。
【问题3】(4分)
由于该服务型智能扫地机器人的硬件采用双处理器架构,即ARM+STM32双核架构模式,选用串口方式在处理器之间传递数据,如图1-2所示。假设在本串行传输中的数据格式为:8位数据位、1位起始位、1位停止位,无校验位。
(1)当波特率为9600b/s时,每秒钟传送的有效数据是多少字节?
(2)为保证数据收发正确(每个字节数据传输中的累计误差不大于1/4bit),试分析发送方和接收方时钟允许的误差范围,并以百分比形式给出最大误差。请将答案填写在答题纸的对应栏中。
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统开发与维护知识>其它
- 试题答案:
【问题1】5分
(1)紧急状态感知
(2)跌落检测
(3)航向测量
(4)单目视觉避障系统
(5)扫地及吸尘单元
【问题2】6分
(1)红外测距传感器
(2)数字式防跌落传感器
(3)开关式传感器
(4)槽型光耦模块
(5)GGPM01A单轴角度陀螺仪
(6)霍尔码盘传感器
或给出编号:
(1)5
(2)4
(3)2
(4)3
(5)6
(6)7
【问题3】4分
(1)960字节。
(2)数据位8位、起始位1位、停止位1位,无校验位,累积的最大误差为(8+1+1)∆, 该值应小于1/4位,即(8+1+1)∆≤1/4,所以最大误差为2.5%。 - 试题解析:
本题考查嵌入式系统设计的相关知识。
根据题干中的功能需求的描述,可以获得相关信息。
服务型智能扫地机器人需要具有自主运动规划和导航功能,在其工作过程中,需要通过对环境信息的融合感知进行行为决策。扫地机器人一般具备的主要功能包括:
(1)紧急状态感知
(2)姿态感知
(3)视觉感知
(4)自动充电
(5)扫地及吸尘单元
(6)运动执行
(7)监控系统
(8)信息处理中心等。
每秒钟传送的有效数据:9600/(1+8+1)=960字节。
假设最大误差为x,可以得到公式:(8+1+1)*x=1/4,可以求得最大误差为2.5%。
第 2 题
阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
在服务型智能扫地机器人的系统设计中,李工设计的扫地机器人硬件系统接口如图2-1所示,其中STM32单片机负责进行各个传感器的数据采集,包括利用GPIO进行各种传感器数据的获取、利用ADC进行红外测距仪数据的获取、利用IIC进行陀螺仪(角度)传感器数据的获取,通过串口将数据发送给主处理器S5PV210,并利用脉冲计数进行扫地机器人运动速度、距离等信息的获取。主处理器S5PV210通过USB接口采集实时视频,利用PWM进行云台控制,同时利用USB接口通过WIFI和后台主机实现信息交互。
STM32单片机有BOOT1和BOOT0两个启动方式选择管脚,包括三种不同的启动方式,如表2-1所示。
李工在STM32单片机的启动电路设计时,采用跳线帽形式进行启动方式选择,对应电路如图2-2所示。
李工在利用ADC进行红外测距仪数据的采集设计中,采用STM32内置的12bit逐次比较型ADC,参考电压Vref为3.3V,ADC的采集数字输出为:
为获取扫地机器人在移动过程中的距离、速度等信息,李工将霍尔传感器模块分别安装在左右车轮驱动电机的轴上,通过两个计数器采集左右驱动电机轴上的霍尔传感器脉冲数,以此来计算获取扫地机器人的移动距离、旋转角度等信息。图2-3为扫地机器人的圆形机身和左右两轮的示意图。
已知左右车轮转动一圈时,霍尔传感器输出564个脉冲(表示为n0),那么计数器采集到的脉冲数和左右轮的移动距离关系可以表示为(R为车轮距中心半径,r为左右轮的半径,nx为当前计数器从开始到现在采集到的脉冲数):
【问题1】(2分)
如果STM32的选择从主Flash启动,那么图2-2中的跳线帽应该连接管脚1和管脚2还是管脚2和管脚3?
【问题2】(2分)
当红外测距仪数据模拟电压Vin为2.4V时,ADC的输出值是多少?(用十进制数表示)
【问题3】(3分)
假设扫地机器人的车轮距中心半径R=30cm,左右轮的半径r=5cm。当左轮PWM脉冲计数数目为2256时,左轮从脉冲计数开始到现在,移动的距离是多少厘米?(π取3.14)
【问题4】(8分)
李工在扫地机器人设计中加入了陀螺仪模块,通过陀螺仪可以获取不同时刻之间的偏转角,进而与霍尔传感器相融合,使得运动控制器能够直接快速得到系统当前的偏转角。陀螺仪和STM32之间通过IIC接口进行数据通信,陀螺仪和STM32之间还有一个信号线(STM32的GPIO9)和陀螺仪芯片复位线(STM32的GPIO8,低电平为复位,高电平为非复位)。
在STM32通过IIC接口获取陀螺仪数据前,需要先对陀螺仪复位并查询信号线的有效性(GPIO9高为有效,低为无效),有效时再通过IIC接口读取陀螺仪的数据。李工设计了通过IIC接口获取陀螺仪数据的流程图(图2-4),请选择合适的项进行补全。
图2-4中(1)~(4)备选答案:
A.GPIO9和GPIO8都设置为输入
B.GPIO9和GPIO8都设置为输出
C.GPIO9设置为输入,GPIO8设置为输出
D.GPIO9设置为输出,GPIO8设置为输入
E.GPIO9设置为高,持续一段时间,GPIO9设置为低
F.GPIO9设置为低,持续一段时间,GPIO9设置为高
G.GPIO8设置为低,持续一段时间,GPIO8设置为高
H.GPIO8设置为高,持续一段时间,GPIO8设置为低
I.GPIO9为高电平?
J.GPIO9为低电平?
K.GPIO8为高电平?
L.GPIO8为低电平?
M.通过IIC读取数据
N.通过IIC写入数据
答案与解析
- 试题难度:一般
- 知识点:嵌入式硬件设计>其它
- 试题答案:
【问题1】
管脚1和管脚2
【问题2】
2978
【问题3】
125.6厘米
【问题4】
(1)C
(2)G
(3)I
(4)M - 试题解析:
此题考查嵌入式系统硬件设计的相关知识。
【问题1】如果STM32的选择从主Flash启动,从表2-1可以看出,BOOT0为0,BOOT1任意值,所以,图2-2中的跳线帽应该连接管脚1和管脚2。
【问题2】当红外测距仪数据模拟电压Vin为2.4V时,代入公式可以计算得到DC的输出值是2978。注意要转化为十进制。【问题3】根据公式,r=5cm,no=564,nx=2256,将这些值代入公式就可以得到需要的距离数值。
【问题4】需要注意的是,流程已经在题干中说明了:
1.陀螺仪和STM32之间通过IIC接口进行数据通信,陀螺仪和STM32之间还有一个信号线(STM32的GPIO9)和陀螺仪芯片复位线(STM32的GPIO8,低电平为复位,高电平为非复位)。
2.在STM32通过IIC接口获取陀螺仪数据前,需要先对陀螺仪复位并查询信号线的有效性(GPIO9高为有效,低为无效),有效时再通过IIC接口读取陀螺仪的数据。
第 3 题
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
在服务型智能扫地机器人的软件设计中,为了更好地记录机器人的个体信息和工作信息,设计了信息数据库。数据库主要完成收集服务型智能扫地机器人反馈信息的作用,记录机器人的所有工作记录,方便了使用者对机器人的管理及对机器人状态的掌握,并且在机器人发生运行故障时,可以根据数据库存储的信息分析产生故障的原因。数据库收集服务型智能扫地机器人反馈信息的流程如下:
服务端接收反馈信息:
1.第一次解析判断反馈信息类型是否正确。如果正确继续执行2,否则执行3。
2.第二次解析判断反馈信息内容是否正确。如果正确执行4,否则执行3。
3.调用错误信息处理函数后执行4。
4.将反馈信息存入数据库。
【问题1】(6分)
在本软件测试过程中,测试人员为了设计测试用例,根据题目中的说明,画出了机器人反馈信息收集软件的流程图,如图3-1所示。
请在下列选项中,为图3-1中的(1)~(3)选择正确的描述内容,将答案填写在答题纸的对应栏中。
空(1)备选答案:
A.反馈格式是否正确
B.反馈长度是否正确
C.反馈类型是否正确
D.反馈内容是否正确
空(2)备选答案:
A.标记错误信息
B.错误信息处理
C.错误信息纠正
D.错误信息报告
空(3)备选答案:
A.信息存入内存
B.信息存入文件
C.信息存入数据库
D.信息存入软件
【问题2】(4分)
软件的结构覆盖率是度量测试完整性的一种手段,也是度量测试有效性的一种手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率和分支覆盖率作为度量指标。
在实现题目说明的反馈信息接收功能时,设计人员采用了下列算法:
请完成表3-1中的(1)和(2)空白,指出对上述算法达到100%语句覆盖和100%分支覆盖所需的最少测试用例数目。请将答案填写在答题纸的对应栏中。
【问题3】(5分)
为了测试软件功能,测试人员设计了表3-2所示的测试用例,请填写该表中的空白(1)~(5)。请将答案填写在答题纸的对应栏中。
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统实施知识>软件测试
- 试题答案:
【问题1】
(1)D
(2)B
(3)C
【问题2】
(1)3
(2)3
【问题3】
(1)报告信息类型不正确/错误
(2)报告信息内容不正确/错误
(3)正确
(4)不正确/错误
(5)典型类型3 - 试题解析:
本题主要考查软件测试的一些基本概念和方法在测试实践中的应用。
【问题1】
根据题干中的需求:
1.第一次解析判断反馈信息类型是否正确。如果正确继续执行2,否则执行3。
2.第二次解析判断反馈信息内容是否正确。如果正确执行4,否则执行3。
3.调用错误信息处理函数后执行4。
4.将反馈信息存入数据库。
空(1)的内容应该在第2条描述中,空(2)的内容应该在第3条描述中。空(3)的内容在第4条内容描述。第4条描述内容为“4.将反馈信息存入数据库。”从第4条内容可知,空(3)的内容应该为信息存入数据库。
【问题2】
语句覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每一条语句至少被运行一遍,语句覆盖在测试中主要发现错误语句。
分支覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每个真值分支和假值分支至少执行一次,分支覆盖也称判定覆盖。
if ((信息有效==TRUE))&&(信息类型正确==TRUE)
{ 解包信息内容;
if ((信息内容正确==TRUE))
{信息存入数据库;} ------------语句块1
else
{错误信息处理;信息存入数据库;}------语句块2
}
else
{ 错误信息处理;信息存入数据库;}-------语句块3
语句覆盖的测试用例设计如下表所示:故为了使问题2中的三个语句块各执行一次,最少需要3个测试用例来覆盖。
分支覆盖的测试用例设计如下表所示:故问题2最少需要3个测试用例来满足分支覆盖要求。
【问题3】
此题考查测试用例的设计能力,主要包括输入数据的设计,及输入数据所对应的预期输出的确定,特别需要考虑测试用例的充分性。
需要结合其他空的填写,来进行输入和输出数据的设计。比如第1空,输入反馈类型不正确,那输出什么呢?可以根据序号2中,当输入为反馈类型和内容均不正确,其对应输出为报告信息类型和内容均不正确,错误信息存入数据库。根据这条信息可以得到第1空应该是报告信息类型不正确/错误。
第 4 题
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
服务型智能扫地机器人涉及了众多传感器,通过对环境信息的融合感知进行行为决策。同时也设计了丰富的多媒体人机交互系统,实现输入输出功能。
【问题1】(5分)
服务型智能扫地机器人的输入输出终端采用触摸屏技术,李工设计了一款具有触摸功能的显示单元,该显示单元的主板采用X86架构的处理器,触摸控制板的核心是控制芯片,当触摸笔点击触摸面板时,将通过输入端点上传数据报文,格式如图4-1所示。数据报文按照小端字节顺序发送,第一个Byte表示触摸笔的状态,0x70表示 Down,0x30表示Up,后四个Byte包含触摸笔点击位置的坐标值,Byte1和Byte2表示X轴坐标,Byte3和Byte4表示Y轴坐标。触摸板左上角坐标值为(0,0),右下角坐标值为(1022,766)。
当触摸笔在触摸板中心位置按下时,触摸屏发送的数据报文内容是_(1)_、_(2),(3)_、_(4)_、_(5)_,请将答案填写在答题纸的对应栏中。
【问题2】(5分)
该机器人系统内部集成众多传感器,通过现场总线互联起来,构成了底层的网络, 选用的CAN控制器内含二个接收缓冲器、三个发送缓冲器,具有灵活的中断管理能力。
李工设计了一种采用中断方式的数据接收程序,每当接收寄存器接收到数据时,中断寄存器的接收中断使能,并产生中断信号通知CPU,中断处理程序在读取数据后,清空中断标识位,等待下一次中断。由于两个接收器共享一个中断号,在调试过程中发现, 当短时间(毫秒级)接收大量数据时,丢包现象比较严重。李工对上述流程进行了改进, 当产生一次中断时,依次查询两路接收器的状态,这样大大提高了数据接收处理能力,减少了系统开销,其处理流程如图4-2所示。
请将上述改进后的双通道数据接收流程图补充完整,将答案填写在答题纸的对应栏中。
【问题3】(5分)
该机器人系统按照图4-2的方式接收传感器采集数据,并由上层应用程序对数据进行处理。当应用访问操作速度和底层硬件输入的速度存在较大差异时,采用环形缓冲机制,可以起到良好的缓冲作用,减少丢包率。李工设计的环形缓冲是基于先进先出(FIFO) 的原则,并设计了环形缓冲的数据结构,读写指针各自独立,读任务和写任务可以同时访问环形缓冲,无需互斥信号量的介入。但是,在运行多任务时,如果存在多个读任务 和多个写任务同时操作环形缓冲,则需要应用互斥操作机制。
1.请简述互斥操作的作用。
2.为了在多任务环境中能正确使用环形缓冲,不发生读写冲突,增加了读写锁进行保护。应用任务读取环形缓冲的伪代码如下,请完善其中空(1)~(3)处的内容,将答案写入答题纸对应栏内。
答案与解析
- 试题难度:一般
- 知识点:操作系统概述>其它
- 试题答案:
【问题1】
(1)0x70
(2)0xFF
(3)0x1或者1
(4)0x7F
(5)0x1或者1
【问题2】
(1)设备中断使能
(2)接收器0有数据
(3)接收器1有数据
(4)接收器0有数据
(5)清除中断标识
【问题3】
1.互斥操作用来保证共享数据操作的完整性。通过互斥锁保证任一时刻只能有一个应用访问共享对象。
2.
(1)bReadLock为真或bReadLock== TRUE
(2)bReadLock=TRUE或等效形式
(3)bReadLock=FALSE或等效形式 - 试题解析:
本题考查嵌入式计算机的相关知识。
【问题1】
根据题干可以得到当前的位置为:(1022/2,766/2)=((511,388)),分别可以求得X轴的坐标就是0x1FF,Y轴的坐标是0x17F。由于是按照小端格式进行存放(低字节存放在低地址)。X轴的低字节就是0xFF,X轴的高字节就是0x1;;Y轴的低字节就是0x7F,Y轴的高字节就是0x1。
【问题2】
该题考查中断方面的相关知识,根据流程图填写相关内容。
【问题3】
该题考查操作系统中并发任务互斥操作的相关知识。互斥操作用来保证共享数据操作的完整性。通过互斥锁保证任一时刻只能有一个应用访问共享对象。
第 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语言中链表的相关操作,比如链表的插入、删除等操作。包括了单链表、双链表。该题考查的就是对单链表的操作。单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。