本文目录
编辑中
题目来源于: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)的内容填在答题纸上相应的位置中。
【问题1】解答:
这就和初中语文题一样,甚至不如初中语文题的难度;
根据:[紧急状态感知:包括碰撞检测、跌落检测和离地检测等功能] ,得(1)紧急状态感知 (2)跌落检测
根据:[姿态感知:包括运动里程计数和航向测量等功能],得(3) 航向测量
根据:[视觉感知:包括单目视觉避障系统和单目视觉定位系统等],得(4)单目视觉避障系统
根据:[(5)扫地及吸尘单元],得(5)扫地及吸尘单元
【问题2】(6分)
为了实现服务型智能扫地机器人的功能,就需要多种传感器来感知工作环境信息。
王工在对传感器进行选型时,选择了如下类型的传感器:
1.USB摄像头;
2.开关式传感器;
3.槽型光耦模块;
4.数字式防跌落传感器;
5.红外测距传感器;
6.GGPM01A单轴角度陀螺仪(传感器);
7.霍尔码盘传感器。
请根据传感器的功能完成表1-1,请将(1)~(6)的内容填在答题纸上相应的位置中。
【问题2】解答:
这道题也简单,大概我就是做扫地机器人得所以我应该都知道,其实也可以先填自己会的,然后再填不会的
(1)5.红外测距传感器 (毕竟是19年的题,红外确实可以,而且在22年以前基本都是以红外为主的避障,其实也可以看参数判断出来是输出模拟电压量)
(2)4.数字式防跌落传感器 (提示的很明显了,就是防跌落,实际上一般用的不是这么叫得,其实就是用红外,一般一个机器上会有至少三个向下得红外传感器,如果遇到悬崖的话返回的数值就和普通地面不同,但是容易受光线影响,可能在黑色地毯上误识别,所以会多安装一个超声波地毯传感器;在实际中一般不叫跌落传感器,叫悬崖传感器)
(3)2.开关式传感器(其实这个选项我犹豫了,但是别的都选完了就剩这个了,车身离地现在大多用的是悬崖传感器,也就是上一问的答案,但是在19年的时候,成本还没有降下来,机器人上喜欢堆零件,于是在车轮上增加了一个车身离地检测,是开关类型的,当拿起扫地机的时候,车轮弹簧会弹出这时候会触碰到所谓的开关传感器;现在基本取消这个了,之前应该是科沃斯的机器有这个)
(4)3.槽型光耦模块(这个就是扫地机的前撞碰撞后导致突起部分向后移动,挡住槽型光耦中间,使其信号量改变,从而判断是否碰撞,目前大部分机器都还用着,一般是左右两个)
(5)6.GGPM01A单轴角度陀螺仪(传感器) (这个型号的传感器我没听过,可能是某国产吧,航向角由陀螺仪和加速度计共同计算得出,不过一般统称为陀螺仪,在整个开发中这个东西虽然比较小但也是比较头疼的一部分)
(6)7.霍尔码盘传感器(这个没什么问题,做过智能小车的都知道,测速用的是码盘,至于是霍尔还是光栅,现在扫地机大多是霍尔,因为便宜)
【问题3】(4分)
由于该服务型智能扫地机器人的硬件采用双处理器架构,即ARM+STM32双核架构模式,选用串口方式在处理器之间传递数据,如图1-2所示。假设在本串行传输中的数据格式为:8位数据位、1位起始位、1位停止位,无校验位。
(1)当波特率为9600b/s时,每秒钟传送的有效数据是多少字节?
(2)为保证数据收发正确(每个字节数据传输中的累计误差不大于1/4bit),试分析发送方和接收方时钟允许的误差范围,并以百分比形式给出最大误差。请将答案填写在答题纸的对应栏中。
【问题3】解答
(1)比较常规的问波特率的问题,波特率是每秒检测的电平变化个数,9600也就是一秒检测9600次变化,而8位数据位、1位起始位、1位停止位,无校验位说明,如果想传输一个字节(8位)的数据,那就需要在总线上电平变化10次;那么1s9600次变化,也就是960个字节的数据;
(2)一组数据需要10位,累计误差不大于0.25位,也就是10x< 0.25,得x=0.025 也就是2.5%;
第一题结束,15分拿到手没什么问题
第 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?
【问题1】解答
一般这种启动相关的芯片手册或者用户手册都有给,所以看题干就好,根据表2-1,如果是主Flash启动,那么boot0为0,boot1为x;那么无脑将boot1接地就好,也就是管脚1和管脚2连接(这里解释可能有问题,后续我查找一下)
【问题2】(2分)
当红外测距仪数据模拟电压Vin为2.4V时,ADC的输出值是多少?(用十进制数表示)
【问题2】解答
根据ADC采集公式
ADC = Vin(2^12-1)/Vref
带入数据:
ADC = 2.4(2^12-1)/3.3 = 2.4*4095/3.3 = 2978
【问题3】(3分)
假设扫地机器人的车轮距中心半径R=30cm,左右轮的半径r=5cm。当左轮PWM脉冲计数数目为2256时,左轮从脉冲计数开始到现在,移动的距离是多少厘米?(π取3.14)
【问题2】解答
和上一题一样,带入公式就好
Dis = 2pirnx/n0
Dis = 23.1452256/564 = 125.6cm
【问题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写入数据
【问题4】解答
C iic初始化前要进行gpio初始化,复位为输出,信号线为输入
G 对陀螺仪复位
I 查询信号线的有效性
M 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.信息存入软件
【问题1】解答
D
B
C
【问题2】(4分)
软件的结构覆盖率是度量测试完整性的一种手段,也是度量测试有效性的一种手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率和分支覆盖率作为度量指标。
在实现题目说明的反馈信息接收功能时,设计人员采用了下列算法:
请完成表3-1中的(1)和(2)空白,指出对上述算法达到100%语句覆盖和100%分支覆盖所需的最少测试用例数目。请将答案填写在答题纸的对应栏中。
【问题2】解答
语句:所有语句都来一次,也就3次
分支:总共就3个分支,所以3个测试用例就好
(不是哥们,你这个题出的我是真的不想看,你但凡多加一个判断语句也行啊)
【问题3】(5分)
为了测试软件功能,测试人员设计了表3-2所示的测试用例,请填写该表中的空白(1)~(5)。请将答案填写在答题纸的对应栏中。
【问题3】解答
(1)报告信息类型不正确
(2)报告信息内容不正确
(3)正确
(4)不正确
(5)典型类型3
(不是哥们,你跟我玩阅读理解呢,24年的题但凡考的这么简单我也不用准备25年呀)
| 截至目前拿到45分,已经及格了
第 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) ,请将答案填写在答题纸的对应栏中。
【问题1】解答
左上和右下确定后,中心点坐标为(511,383)
因为是按下,所以state应该是down也就是0x70
511 转 2进制为 111111111 也就是0x1ff,从格式上看应该是10位数据,0-7位存储在byte1,8-9位存储在byte2,所以byte1为0xff,byte2为0x1
383 转 2进制为 101111111 也就是0x17f,从格式上看应该是10位数据,0-7位存储在byte3,8-9位存储在byte4,所以byte3为0x7f,byte4为0x1
所以最终答案应该为:
0x70
0xff
0x1
0x7f
0x1
【问题2】(5分)
该机器人系统内部集成众多传感器,通过现场总线互联起来,构成了底层的网络, 选用的CAN控制器内含二个接收缓冲器、三个发送缓冲器,具有灵活的中断管理能力。
李工设计了一种采用中断方式的数据接收程序,每当接收寄存器接收到数据时,中断寄存器的接收中断使能,并产生中断信号通知CPU,中断处理程序在读取数据后,清空中断标识位,等待下一次中断。由于两个接收器共享一个中断号,在调试过程中发现, 当短时间(毫秒级)接收大量数据时,丢包现象比较严重。李工对上述流程进行了改进, 当产生一次中断时,依次查询两路接收器的状态,这样大大提高了数据接收处理能力,减少了系统开销,其处理流程如图4-2所示。
请将上述改进后的双通道数据接收流程图补充完整,将答案填写在答题纸的对应栏中。
【问题2】解答
(1)中断初始化
(2)接收器0有数据
(3)接收器1有数据
(4)接收器0有数据
(5)清空中断标识位
(这道题主要是(1)这里可能不太好想,其余四个空比较简单,假设(1)空没填出来,也能拿4分)
【问题3】(5分)
该机器人系统按照图4-2的方式接收传感器采集数据,并由上层应用程序对数据进行处理。当应用访问操作速度和底层硬件输入的速度存在较大差异时,采用环形缓冲机制,可以起到良好的缓冲作用,减少丢包率。李工设计的环形缓冲是基于先进先出(FIFO) 的原则,并设计了环形缓冲的数据结构,读写指针各自独立,读任务和写任务可以同时访问环形缓冲,无需互斥信号量的介入。但是,在运行多任务时,如果存在多个读任务 和多个写任务同时操作环形缓冲,则需要应用互斥操作机制。
1.请简述互斥操作的作用。
2.为了在多任务环境中能正确使用环形缓冲,不发生读写冲突,增加了读写锁进行保护。应用任务读取环形缓冲的伪代码如下,请完善其中空(1)~(3)处的内容,将答案写入答题纸对应栏内。
【问题3】解答
1.互斥操作避免在同一时刻不同的程序对文件内容的读写造成程序混乱,保证共享数据操作的完整性;互斥锁保证数据在一个时刻只能有一个应用对其操作;
2.
(1)bReadLock == True
(2)if(bReadLock == True)
(3)if(bReadLock == False)
(从题干来看读写操作互不影响,这里只是读的函数,那么只需要考虑读的锁,可以先看(3)空,返回数据长度,那说明这个时候锁是开着的,也就是if(bReadLock == False),对应的上面两个空都是关锁状态)
| 截至目前拿到59-60分
第 5 题 阅读以下关于C语言的基本概念和编程方面的叙述,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
服务型智能扫地机器人的信息处理中心,用于接收各种传感器信息和视觉信息,通过分析处理进行扫地机器人的运动控制,且负责和后台监控中心通信。信息处理中心基于嵌入式计算机实现。
【问题1】(4分)
在信息处理中心的计算机系统中,系统总是要用户对变量或寄存器进行位操作,下面程序1代码中对给定整型变量a,实现了两个函数,其中:set_bit3函数用于设置a的bit 3(第3位),clear_bit3函数用于清除a的bit3(第3位)。请补全程序1代码的(1)和(2),将正确代码写在答题纸的相应位置。
【问题1】解答
(1)a|=BIT3
(2)a&=~BIT3
(题干表述的不明确,它应该说是设置第三位为1,以及清除第三位为0,设置的话就或1就好,清除的话就且0,其余位相反)
【问题2】(6分)
信息处理计算机采用中断方式快速响应外部事件。中断是嵌入式系统中重要的组成部分,这使得很多编译器开发商提供了标准C支持中断的扩展(使用关键字_interrupt)。下面程序2是王工设计的中断处理程序代码,请对这段程序进行同行评审,找出你认为不合适的3个方面,将解答写入答题纸相应的位置。
【程序2】
(1)中断一般不传参
(2)中断一般没返回值
(3)中断中不建议使用printf操作,printf是阻塞性调用
(4)中断中不建议使用浮点运算
(5)没有清除中断标志位
【问题3】(5分)
王工设计了信息处理中的软件算法,利用单向链表来存储信息。其中如下给定的程序3中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。函数fun的功能是:把参数x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。该程序的实现如程序3所示。
【程序3】
根据题意分析程序,完成程序3的空(1)~(5),将解答写入答题纸相应的位置。
【问题3】解答
(1) x
(2) s
(3) q->next
(4) s
(5) q
假设代码题你无法拿满分,不小心扣了一两分,那么此时,你的分数是70-75分
完美过关!
还是那句话,这但凡是24年考题,我也不至于准备25年考试