中级嵌入式系统设计师-案例分析_第1页
中级嵌入式系统设计师-案例分析_第2页
中级嵌入式系统设计师-案例分析_第3页
中级嵌入式系统设计师-案例分析_第4页
中级嵌入式系统设计师-案例分析_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中级嵌入式系统设计师-案例分析问答题(共25题,共25分)(1.)ATM自动取款机系统是一个由终端机、ATM系统、数据库组成的应用系统,具有提取现金、查询账户余额、修改密码及转账等(江南博哥)功能。ATM自动取款机系统用例图如图1所示。ATM自动取款机系统功能组成如图2所示。1、根据ATM自动取款机系统功能和系统用例图,完成图3所示的ATM自动取款机系统的系统状态图,将系统状态图中的(1)~(6)补充完整。2、ATM自动取款机系统取款用例描述用户取款的过程。其事件流如下:(1)基本流a.用户输入取款金额;b.系统验证输入金额是否符合输入要求;c.系统验证用户账户余额;d.系统显示用户账户余额;e.用户确认取款金额;f.系统要求点钞机出钞;g.系统更新并保存账户信息。(2)备选流a.如果输入金额不符合输入数字格式要求,给出提示,退出;b.如果输入金额超出最大取款金额,给出提示,退出;c.如果用户没有确认,给出提示,退出。根据上述ATM:自动取款机系统取款用例描述,请完成取款功能的流程图。3、ATM自动取款机系统是与银行服务器联网的网络系统,由于系统涉及个人和企事业单位的财产安全,要求网络通信安全可靠,因此通信过程要采取消息加解密、身份认证、消息鉴别和访问控制等信息安全措施。(1)请简要解释下列术语的基本概念。a.对称密钥b.公开密钥c.访问控制d.消息鉴别(2)以下几种常见的加密算法哪些属于对称加密算法?哪些属于非对称加密算法?a.DESb.RSAc.AESd.IDEAe.PGPf.DSAg.椭圆曲线DSA正确答案:参考解析:1、(1)取款(2)选择修改密码(3)选择继续服务(4)选择转账(5)转账(6)输入密码本题考查软件设计中的状态图、流程图以及信息安全方面概念和基本知识。本题要求考生认真阅读题目的描述,根据ATM自动取款机系统用例图和ATM自动取款机系统功能图了解ATM自动取款机系统工作过程,结合软件设计中的状态图和流程图的绘制要求,完成相关问题。由ATM自动取款机系统用例图和ATM自动取款机系统功能图可知,其工作过程如下:当客户将银行卡插入ATM机后,ATM机会要求输入密码,如果密码不正确,则需要重新输入;如果密码正确,则进入主菜单,选择不同的服务类型。服务类型有取款、修改密码、查询余额、转账等功能。2、完整的ATM自动取款机系统的系统状态图如图4所示。该问题的描述部分已经给出了ATM自动取款机系统的取款过程的事件,流程图只需要根据实际取款的工作次序排序即可。正确的流程如下:a)用户输入取款金额;b)系统验证输入金额是否符合输入要求;c)判断格式要求,如果满足要求,则继续;否则,转结束;d)系统验证用户账户余额;e)系统显示用户账户余额;f)判断实际取款金额是否超出最大取款金额,若不大于,则继续;否则,给出超出最大金额提示后,转结束;g)用户确认取款金额;h)如果用户没有确认,时间超时,则给出超时提示,转结束:i)系统要求点钞机出钞;j)系统更新并保存账户信息;k)结束。3、(1)a.对称密钥:对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必须使用相同的密钥对明文进行加密和解密运算。b.公开密钥:公开密钥也称为非对称密钥,每个人都有一对唯一对应的密钥:公开密钥(简称公钥)和私人密钥(私钥),公钥对外公开,私钥由个人秘密保存;用其中一把密钥加密,就只能用另一把密钥解密。c.访问控制:按用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用的一种技术。d.消息鉴别:利用鉴别函数产生一个鉴别符,接收者通过鉴别符能够检验和证实消息的合法性、真实性和完整性。这是一个证实收到的消息来自可信的原点且未被篡改的过程。(2)对称加密算法:DES、AES、IDEA非对称加密算法:RSA、PGP、DSA、椭圆曲线DSA(2.)在嵌入式系统设计中,李工使用某嵌入式处理器和对应的以太网芯进行带有网络功能的单板实现,该电路中还包含DDR、Flash等存储芯片和相应的外围控制芯片。图1为所选用嵌入式处理器的存储模块存储地址总线变换示意图,图2为以太网芯片外围设计的相关原理示意图,图3为用户在该嵌入式单板系统上实现内部嵌入式Web服务器的流程示意图。在该嵌入式处理器的存储系统设计中,嵌入式处理器内部包含SA[25:0](从高到低)共26根系统地址总线,外部使用22根数据线和外部存储设备进行连接。嵌入式处理器和以太网芯片之间的交互接口为:MII(MediaIndependentInterface)接口,包含数据线和控制线。数据线分为收发两个方向:其中RXD[3:0]为并行数据接收线,RXCLK为对应的时钟线;TXD[3:0]为并行数据发送线,TXCLK为对应的时钟线。MDIO和MDC为控制线,通过其进行以太网芯片的配置。以太网芯片的最大通信频率由其外围的晶振频率和收发数据线的并行数目决定。在嵌入式系统设计中,嵌入式处理器和以太网芯片之间可以设计为一对多的方式,每个以太网控制器都有一个PHYID,该PHYID依赖于以太网芯片周边的电路设计。在图2的设计中,该以太网芯片的PHYID由图中的PHYID[4:0]五个管脚来定。对于该以太网芯片而言,PHYID[4:0]在启动时是作为。PHYID选择控制使用,在启动后是作为其他指示功能使用。PHYID的最大值是31(五位),最小是0,由PHYID[4:0]从高位到低位决定,对应管脚为高电平时对应的值为1,低电平时对应的值为0。1、如图1所示,用户可以通过寄存器将存储总线变换方式配置为字节模式(8位模式),半字模式(16位模式)或者字模式(32位模式)中的任何一种,不同模式下,所使用到的地址线不同。在图2中的,①、②、和③分别对应的地址线连接应该依次是______。ASA2-SA23,SA1-SA22,SA0-SA21BSA0-SA21,SA2-SA23,SA1-SA22CSA1-SA22,SA2-SA23,SA0-SA21DSA0-SA21,SA1-SA22,SA2-SA23根据图2的网络部分相关电路设计,可以知道该嵌入式处理器的网络通信中,最大通信频率是______Mbps。A.10000B.1000C.100D.10如果该网络芯片工作在100Mbps,那么在图2的设计中,RXCLK的工作频率应该是______Mbps.根据图2的电路和题目说明,在该电路中,以太网芯片的PHYID应该是______。2、在图3中,为了实现嵌入式Web服务器和对应的请求流程,李工设计了该流程示意图,根据网络通信的过程,从下面选项中选择合适的处理过程,填充图3中的空(1)~(4)。空(1)~(4)备选答案:A.创建TCPsocket套接字B.关闭socket套接字C.accept尝试建立TCP连接D.HTTP服务E.数据发送处理F.数据接收处理G.bind绑定套接字H.本地其他服务处理I.listen侦听客户套接字J.创建UDPsocket套接字正确答案:参考解析:1、DC251或者0x012、GICD(3.)某嵌入式刹车控制软件,应用于汽车刹车控制器,该软件需求如下:1.模式选择:采集模式控制离散量信号In_D1并通过模式识别信号灯显示软件当前工作模式。在信号In_D1为低电平时进入正常工作模式(模式识别信号灯为绿色),为高电平时进入维护模式(模式识别信号灯为红色)。软件在正常工作模式下仅进行刹车控制和记录刹车次数,在维护模式下仅进行中央控制器指令响应;2.刹车控制:采用定时中断机制,以5ms为周期采集来自驻车器发出的模拟量信号In_A1以及来自刹车踏板发出的模拟量信号In_A2,并向刹车执行组件发送模拟量信号Out_A1进行刹车控制;3.记录刹车次数:在Out_A1大于4V时,读出非易失存储器NVRAM中保存的刹车次数记录进行加1操作,然后保存至非易失存储器NVRAM中;4.响应中央控制器指令:接收来自中央控制器的串行口指令字In_S1,回送串行口响应字Out_S1。当接收的指令字错误时,软件直接丢弃该命令字,不进行任何响应。指令字及响应字说明如表1所示。表1指令字和响应字1、请简述本软件串行输入接口测试的测试策略及测试内容。针对表1中“读取刹车次数指令”进行鲁棒性测试时应考虑哪些情况?2、某测试人员设计了表2所示的操作步骤对模式选择功能进行测试(表中END表示用例到此结束)。为进一步提高刹车控制软件的安全性,在需求中增加了设计约束:软件在单次运行过程中,若进入正常工作模式,则不得再进入维护模式。请参照表2的测试用例完成表3,用于测试该设计约束。3、本项目在开发过程中通过测试发现了17个错误,后期独立测试发现了31个软件错误,在实际使用中用户反馈了2个错误。请计算缺陷探测率(DDP)。正确答案:参考解析:1、测试策略包括测试正常和异常指令的响应。测试内容包括读取刹车次数和清除刹车次数两种指令。对“读取刹车次数指令”鲁棒性测试时应考虑输入接口帧头错误、指令码错误、帧长错误、帧尾错误以及整个指令长度超过4字节的情况。2、3、DDP=(17+31)/(17+31+2)=96%1、本题考查软件测试的一些基本概念及依据需求进行测试用例设计的能力。此题目要求考生认真阅读题目所给的说明,了解刹车控制软件的工作流程,结合软件测试的一些基本概念,在刹车控制软件中进行实际应用。本问题主要考查测试的基本概念,对所有的测试而言,都必须进行正常测试和异常测试,在本题中对测试对象实例化为串行输入接口。串行输入接口在本题的需求描述中,根据表1内容,负责接收读取刹车次数和清除刹车次数两种指令,故测试内容为此两种指令。对“读取刹车次数指令”进行鲁棒性测试时应考虑的情况,其实也是接口鲁棒性测试概念的一个实例化,对接口的数据包而言,至少应该包括帧头错误、数据长度错误、数据错误、校验和错误、校验码错误以、帧尾错误以及其他防止指令错误手段的错误等。对本题的实例化而言,具体包括帧头错误、指令码错误、帧长错误、帧尾错误以及整个指令长度超过4字节的情况。2、如果不考虑约束,软件工作状态从组合的角度来说,表2的测试顺序完全符合要求。但是许多软件在实际使用中,由于真实情况的限制,不能从理论的情况进行组合,对一些条件必须要进行约束。比如本题中,在单次进入正常工作模式后,就不能进入维护模式,因为维护模式是一种检修模式,不能在正常工作中进行检修,所以必须保证在正常工作模式下,对维护模式命令不响应。所以此题的前提条件应该为“上电前置In_D1为高电平,给测试环境上电,模式识别信号灯为红色”,即在上电后首先让工作模式为维护模式;然后再发送进入正常工作模式命令,灯变绿,进入工作模式;最后在正常工作模式下,发送进入维护模式命令,此时软件应该不响应,灯继续为绿色,表示在工作模式,完成带约束条件的状态转换测试。如果继续表2的测试前提条件,不管发送什么命令,灯一直不会变化,就无法判断是软件问题还是测试设备问题,无法完成测试。3、此题是一个简单的测试概念,缺陷探测率(DDP)=测试发现的软件问题/软件总的发现问题,对本题而言,缺陷探测率(DDP)=(17+31)/(17+31+2)=96%。(4.)某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、FC网络交换模块和智能电源模块组成,系统组成如图1所示。数据处理模块处理系统的应用任务;系统管理模块除了处理系统的应用任务外,还负责管理整个嵌入式系统;FC网络交换模块采用消息机制,支持广播和组播,主要负责系统的数据交换;智能电源模块负责给其他模块供电,该模块根据系统命令可以给其他模块供电或停止供电。1、该系统的软件大部分是用C语言编程的,编程人员经常会使用运算符,请按优先级由高到低的次序,重新排序下面的运算符:%,=,image.png=,&&。2、该系统的开发要求按软件能力成熟度模型CMM3级开发,请回答下列问题:(1)CMM3级包含多少个关键过程域?(2)请写出CMM3级的关键过程域。(3)CMM2级包含多少个关键过程域?(4)在对该开发软件单位进行CMM3级达标评级时,只需检查3级的关键过程域还是3级和2级的关键过程域都需要检查?3、(1)在本系统中,FC网络采用何种拓扑结构?请从如下4项中选择最为合适的。A.总线B.树型C.星形D.点对点(2)FC网络除了用于交换的光纤基础架构,还必须有高性能的I/O通道结构支持,I/O通道在FC网络中的优势是什么?4、智能电源模块首先进行系统初始化,初始化后各设备就可使用,再根据系统初始配置表对嵌入式系统的其他模块供电。智能电源模块通常完成两件事情:一、周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策;二、进入中断处理程序,处理系统管理模块的各种命令,如果系统管理模块命令关机下电,则智能电源模块对所有模块(也包括自己)进行下电处理图2是智能电源模块上的管理软件处理流程图,请完成该流程图,给(1)~(5)处填空。正确答案:参考解析:1、按优先级由高到低的次序,运算符排序为:%,<=,&&,=2、(1)CMM3级(已定义级)包括7个关键过程区域(2)同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点(3)CMM2级(可重复级)包括6个关键过程区域(4)3级和2级的关键过程域都需要检查3、(1)C(2)简单、廉价、高速4、(1)按初始配置表给各模块供电(2)电源模块温度检测(3)向其他模块供电的各路电流检测(4)屏蔽中断(5)处理系统控制模块发来命令1、本题考查嵌入式系统设计中的基本C语言编程、软件工程化、FC网络以及智能电源管理设计等知识及应用。本问题考查C语言的基础知识。在C语言中,对各种运算符的优先级是有规定的,必须掌握。优先级最高者其实并不是真正意义上的运算符,包括:数组下标、函数调用操作符、各结构成员选择操作符。它们都是自左向右结合。单目运算符的优先级仅次于上述运算符,在所有的真正意义的运算符中,它们的优先级最高。双目运算符的优先级低于单目运算符的优先级。在双目运算符中,算术运算符的优先级最高,移位运算符次之,关系运算符再次之,接着就是逻辑运算符,赋值运算符,最后是条件运算符。总结以下两点:(1)任何一个逻辑运算符的优先级低于任何一个关系运算符;(2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高。下表是C语言运算符优先级表(由上至下,优先级依次递减)。综上所述,本题中运算符优先级由高到低的次序为:%,image.png=,&&,=2、CMM即软件能力成熟度模型,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。CMM是美国卡内基-梅隆大学软件工程研究所与企业、政府合作的基础上开发的模型,主要用于评价软件企业的质量保证能力。目前,国内外的很多大型企业采用这一模型,如国内的鼎新、浪潮通软、用友、金蝶、创智、亚信、华为等公司都启动了CMM软件过程改进计划。国军标GJB500-2003<<军用软件能力成熟度模型>>就是以CMM为参考蓝本而制定的。CMM模型将软件能力成熟度自低到高依次划分,1级为初始级、2级为可重复级、3级为已定义级、4级为已管理级、5级为优化级。除等级1外,每个成熟度等级被分解成几个关键过程域,指明为了改进其软件过程组织应关注的区域,关键过程域识别出为了达到各成熟度等级所必须着手解决的问题。CMM共有18个关键过程域,其中初始级无关键过程域。CMM2级(可重复级)包括6个关键过程域,为软件配置管理、软件质量保证、软件子合同管理、软件项目跟踪与监督、软件项目策划、软件需求管理;CMM3级(已定义级)包括7个关键过程域,为同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义、组织过程集点;CMM4级(已管理级)包括2个关键过程域,为软件质量管理和定量过程管理;CMM5级(优化级)包括3个关键过程域,为过程更改管理、技术改革管理和缺陷预防。在CMM某一级达标时,必须是该级别的所有关键过程域满足要求,同时低级别的所有关键过程域也必须达标。因此,某单位进行CMM3级达标评级时,对3级和2级的关键过程域都需要检查。3、数据通信网络常见的拓扑结构由简单到复杂依次为:点对点、总线、树型、星形。点到点型指网络中一个信息源节点连接到一个或多个目的节点,是专用的链路,具有通信效率高,延迟小的优点,但是建立多点全互联的网络具有连线多、成本高、资源利用率低等缺点。总线型指网络中一个信息源节点连接到一个或多个目的节点,采用集中控制、令牌访问、CSMA/CD等方式,具有连线少、成本较低、资源利用率高等优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。树型指网络中所有节点挂接到一个树形结构上,可以采用集中控制、令牌访问等方式,具有连线简单、成本较低的优点,但存在通信吞吐量低、延迟大的缺点,尤其在网络负载重的情况下。星形指网络中所有节点连接到中心交换机,节点之间的通信经过交换机路由转发,具有通信吞吐量高、延迟小、连线较简单的优点,但存在成本高、交换机单点故障风险的缺点。本题为了满足嵌入式系统对高带宽、低延迟的通信要求,通过分析以上网络的拓扑结构特点,FC网络应选择星形结构。星形结构是最佳的方案。SAN通常有FCSAN和IPSAN两种实现技术。FCSAN采用I/O结合光线通道,IPSAN采用iSCSI实现异地间数据交换,具有简单、廉价、高速等优势。4、智能电源模块首先进行系统初始化,再根据系统初始配置表对嵌入式系统的其他模块供电。按照智能电源模块的工作过程,判断有无中断,如有中断,则进入中断处理程序。如没有中断,则周期性地查询本模块温度、各路电流(给各模块供电的)以及电源模块的供电是否异常,如果异常,则进行异常处理,并报系统管理模块,由系统管理模块进行决策。在中断处理程序中,首先屏蔽中断,喂看门狗,统计中断次数,接收系统控制模块的各种命令,处理系统控制模块发来的这些命令,打开中断。如果系统控制模块命令关机下电,则智能电源模块对所有模块(也包括自己)进行下电处理。智能电源模块上的管理软件处理流程图如图3所示。(5.)阅读以下关于C语言编程方面的说明和程序,回答下列问题。[说明]在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:程序1是关于文件操作的一段程序。程序2是某信息管理系统的系统登录和密码验证程序,规定密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中的密码信息与用户输入的密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。[程序1]#includeimage.pngstdio.h>#includeimage.pngstdlib.h>Voidmain15{FILE*fp;charc,fname[20];printf("输入文件名:");Scanf("%S",fname);if((fp=fopen(fname,"r"))==______){printf("不能打开文件:%sin",fname);exit16;}while(______)/*检测文件是否结束*/{c=fgetc(fp);if(______)/*检测文件是否出错*/{printf("文件读错误\n");break;}putchar(c);}}[程序2]voidpassword15{intsign=0;sign=checkcode15;if(______){printf("\a\n\n\n\n\n\n\n\n\n\t\t密码错误,请重新登录!");getch19;system("cls");exit20;}system("cls");printf("\a\n\n\n\n\n\n\n\n\n\t\t");printf("欢迎登录信息管理系统!\n");getch19;return;}intcheckcode15{FILE*fp;charch,syspwd[21]="\0";charusrpwd[21]="\0";inti;/*身份验证*/if((fp=fopen("sys_code","r"))==NULL){system("cls");printf("pleasesetyouridentify\n");printf("password(image.png=20):");for(i=0;iimage.png20;i++){ch=getchar19;if(ch=='\r'||ch=='\n')break;______=ch;}fp=fopen("sys_code","w");fputs(syspwd,fp);fclose(fp);return0;else{system("cls");fgets(syspwd,21,fp);fclose(fp);printf("pleaseenteryourpassword:");for(i=0;iimage.png20;i++){ch=getehar19;if(ch=='\r'||ch=='\n')break;usrpwd[i]=ch;}if(strcmp(______)!=0)return1;}return0;}}1、变量存储类型是指数据在内存中存储的方法,即确定所定义的变量在内存中的存储位置,也确定了变量的作用域和生存期,内部变量有3种存储类型。假设有一个内部整型变量aa,请按不同存储类型给出相应的变量声明。2、王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数feof()和ferror(),完成[程序1]中的空。3、王工根据系统的需求编写了[程序2],请填写其中的空。正确答案:参考解析:1、自动内部变量:intaa;或autointaa;寄存器内部变量:registerintaa;或registeraa;静态内部变量:staticintaa;2、(1)NULL或者0(2)!feof(fp)(3)ferror(fp)3、(1)sign==1或sign或sign!=0或等价表示形式(2)syspwd[i]或*(syspwd+i)或等价表示形式(3)usrpwd,syspwd或syspwd,usrpwd或等价表示形式1、本题考查C语言的基本概念和编程方面的基本知识。变量存储类型是指数据在内存中存储的方法,即确定所定义的变量在内存中的存储位置,也确定了变量的作用域和生存期,内部变量存储类型有3种,分别是:自动内部变量、寄存器内部变量、静态内部变量。自动(auto)存储型变量又称自动变量,它是最常用的一种变量的存储类型,在函数内部或复合语句内部定义的局部变量(或称为内部变量)。只要存储类型是缺省的,均为自动变量。它的特点是其生命期域定义它的函数或复合语句的执行期同长,且有效范围仅在定义它的函数或复合语句内。寄存器(register)存储型变量一般存储在计算机CPU的通用寄存器中,因而定义的这种类型变量存取速度快,适合于频繁使用的变量,可加快程序的运行速度,由于CPU中通用寄存器的数目有限,且每次可供C语言使用的通用寄存器数更有限,因而在程序中不宜大量使用这种存储类型的变量,以二三个为宜,当然超过可用的寄存器数,也不会出错,编译程序将会将超过可用寄存器数的寄存器型变量当作auto变量处理。一般将最频繁使用的变量定义成寄存器型变量。静态(static)存储型变量是分配在存储器中C程序占据的数据段内,对运行的C程序而言,这是一个程序所用的固定内存区域,因而静态变量的存储地址在整个程序的运行执行期间均保留,不会被别的变量占据。静态变量可以定义成全局变量或局部变量,当定义成全局变量时,它在定义它的整个程序执行期间均存在,其原来的存储位置不会变化。当定义成局部变量时,虽然在定义它的函数内或复合语句中有效,但在执行完该函数或复合语句后,静态变量最后取得的值仍然保存,不会消失,因为它所占的存储地址不会被别的变量占用,这样,当程序再次调用该函数或执行该复合语句时,该静态变量当前值就是再次进入该函数或执行该复合语句的初始值。假设有一个内部整型变量aa,按不同存储类型的变量声明如下:a)自动内部变量:intaa;或autointaa;b)寄存器内部变量:registerintaa;或registeraa;c)静态内部变量:staticintaa;2、王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数feof()和ferror(),完成[程序1]中的空。feof()函数用于检测文件当前读写位置是否处于文件尾部。只有当当前位置不在文件尾部时,才能从文件读数据。函数定义:intfeof(FILE*fp)返回值:0或非0如果fp所指的文件的位置处于文件尾部,返回非0;否则返回0。在对文件进行读操作前,应用这个函数测试当前位置是否在文件尾部。文件操作的每个函数在执行中都有可能出错,C语言提供了相应的标准函数ferror用于检测文件操作是否出现错误。函数定义:intferror(FILE*fp)返回值:0或非0Ferror函数检查上次对文件fp所进行的操作是否成功,如果成功则返回0;否则返回非0。因此,应该及时调用ferror函数检测操作执行的情况,以免丢失信息。[程序1]首先输入文件名,打开这个文件,如果不能打开,则输出“不能打开文件:XX”,程序退出。如果能正常打开该文件,则循环读这个文件,一次读一个字节,读取后,及时检测读操作是否出错,如果出错,报“文件读错误”,退出循环;否则输出该字符。在循环语句的判断冬件中,检测文件是否结束,如果结束,则退出循环。[程序1]需要填空的三条完整语句为:(1)if((fp=fopen(fname,"r'))===NULL)(2)while(!feof(fp))/*检测文件是否结束*/(3)if(ferror(fp))/*检测文件是否出错*/3、[程序2]是某信息管理系统的系统登录和密码验证的一个简易程序示例,其密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中的密码信息与用户输入的密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。[程序2]需要填空的3条完整语句为:(1)if(sign)(2)syspwd[i]=ch;(3)if(strcmp(usrpwd,syspwd)!=0)(6.)【程序1】是关于条件编译的一段程序示例;【程序2】是一段switch语句应用示例。C语言要求switch之后圆括弧内的“表达式”类型必须是整型或字符型。该程序代码中a与x的对应关系如表5-1所示。表5-1a与x对应关系表【程序3】是冒泡排序算法的实现。假设有N个数据存放在数组aa中,用冒泡排序将这N个数从小到大排序。首先,在aa[0]到aa[N..1]的范围内,依次比较两个相邻元素的值,若aa[j]>aa[j+1],则交换aa[j]与aa[j+1],j的值取0,1,2,…,N-2;经过这样一趟冒泡,就把这N个数中最大的数放到aa[N-1]中。接下来对aa[0]到aa[N-2]中的数再进行一趟冒泡,这样就将该范围内的最大值换到aa[N-2]中。依次进行下去,最多只要进行N-1趟冒泡,就可完成排序。如果在某趟冒泡过程中没有交换相邻的值,则说明排序已完成,可以提前结束处理。【C程序代码1】【C程序代码2】【C程序代码3】问题:5.1(1)什么是c语言的条件编译?(2)请解释#ifndef的作用。(3)分析【C程序代码1】,写出该段执行后的输出结果。问题:5.2完成【C程序代码2】中的(1)?(3)空,将答案写到相应的位置。问题:5.3完成【C程序代码3】中的(4)?(6)空,将答案写到相应的位置。正确答案:参考解析:问题5.1、(1)条件编译:C语言中提供控制编译器流程的语句。或C源程序中希望对其中一部分内容只是在满足一定条件时才进行编译,形成目标代码,这种对一部分内容指定编译的条件称为条件编译。(2)#ifndef的作用:如果Wifndef后面的“宏名”未定义,则编译其体内的程序段;否则编译#else部分的程序段,如果没有#else部分,则当“宏名”己定义时直接跳过#endif。(3)x=2问题5.2、(1)x=3(2)x=1(3)x=2问题5.3、(4)&aa[i](5)N-i-1(6)!swap或swap==0问题5.1、本题考查C语言编程方面的基本知识。考查条件编译的概念。C语言中提供控制编译器流程的语句为条件编译语句,在一般情况下,C源程序中所有的行都参加编译过程,但有时出于对程序代码优化的考虑,希望对其中一部分内容只是在满足一定条件时才进行编译,形成目标代码,这种对一部分内容指定编译的条件称为条件编译。下面是关于#ifdef语句的使用规则:#ifdef宏名程序段1;#else程序段2;#endif或者#ifdef宏名程序段;#endif该语句的作用是,如果#ifdef后面的“宏名”在此前已用#define语句定义,则编译“程序段1”或“程序段”;否则编译“程序段2”。如果没有#else部分,则当“宏名”未定义时直接跳过#endif。下面是关于#ifndef语句的使用规则:#ifndef宏名程序段1;#else程序段2;#endif或者#ifndef宏名程序段;#endif#ifndef语句的功能与#ifdef语句的功能正好相反,如果#ifndef后面的“宏名”未定义,则编译“程序段1”或“程序段”;否则编译“程序段2”。如果没有#else部分,则当“宏名”已定义时直接跳过#endif。在【C程序代码1】中,由于在执行条件编译语句时,x已定义,所以,执行x=2;语句。最终程序执行结果为:x=2。问题5.2、在C语言中,选择结构的作用是根据所给的条件是否满足,决定从给定的两个或多个分支中,选择其中的一个分支来执行。c语言中有两种选择结构语句,if语句和swkch语句。使用if语句的嵌套结构实现多分支选择功能时,程序的结构显得不够清晰。因此,C语言专门提供了switch语句。switch语句的一般形式如下:switch(表达式){Case常量表达式1;语句1;break;Case常量表达式2;语句2;break;……Case常量表达式n;语句n;break;Default:语句n+1;break;}在使用switch语句时有以下要求:1、switch语句后面圆括号内的“表达式”的值和case后面的“常量表达式”的值,都必须是整型或字符型的,不允许是实数。2、在case后的各常量表达式的值不能相同,否则会出现错误。在本题中变量a是实数,所以在switch语句要进行转换:Switch((int)a)。根据题意,a取整后的值为0、1、2时,0<a(7.)某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有32路模拟量输入、96路开关量、16路脉冲量输入和水位落差量输入,产生显示信息、报警信号、监测报表和水位传感器控制信号等输出。该水电站安全监测系统具有以下几个特点:对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块。监视的对象比较固定,系统硬件的规模相对固定不变。尽可能允许把所有软件都固化在EPROM中。人机交互作用的内容固定,即由操作人员通过键盘去调用此系统中所存入的相应应用程序,不会去修改应用程序。基于以上安全监测系统的特点,该水电站技术研发部门准备选用现有的工业控制机系统及现成的各种模板等硬件,由本部门的开发人员自行开发软件。所开发的软件主要包括:应用程序,即按各类输入/输出量的采集、处理、显示、报警和制表等功能分别作为若干任务块,由这些任务组成应用程序。多任务嵌入式实时操作系统,用来协调各任务的资源分配与管理,管理任务之间的联系与多任务操作。[问题1]根据以上安全监测系统的特点,技术研发人员郭工程师提出了一个自行编制简化“多任务嵌入式实时操作系统”的方案,以适应于协调管理硬件资源和监测对象的实际需求,其中只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等。请在200字以内简要说明郭工程师提出的简化的“多任务嵌入式实时操作系统”可能具有哪些优点。[问题2]设计简化的多任务嵌入式实时操作系统时,由于多个任务均可能要求占用CPU这个关键资源,因此CPU的任务管理是一个非常重要的设计内容。在该嵌入式实时操作系统中,作为占用资源的基本单位,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。在任何时候,一个任务只会处于其中的某一个状态。请根据图6-8中已给出的信息将(1)~(5)空缺处填写完整。[问题3]在该水电站安全监测系统中,数据采集任务(Collect_task)把所采集的数据送入一单缓冲区,计算任务(Calculate_task)从该单缓冲区中取出数据进行计算。以下是利用信号量机制实现两个任务共享单缓冲区的C语言形式化描述程序。请将程序代码中(6)~(9)空缺处以及(10)空缺处的内容填写完整。intsr=0'int(6):main(){cobeginCollect_task();Calculate_task();coend}Collect_task(){While(采集工作未完成){采集一个数据,P(se),将数据送入缓冲区中:(7),}}Calculate_task(){While(计算工作未完成){(8),从缓冲区中取出数据:(9)进行数据计算送入缓冲区中,}}如果以上程序中“intsf=0;”语句不小心被改写成“ints{=-1;”,那么系统运行时将会进入(10)状态。正确答案:参考解析:问题1:①可加快该操作系统的开发周期,并使其更易于维护,②减少操作系统占有内存的容量,便于固化,③减少操作系统的运行开销(例如CPU占用时间),④可提高系统的实时性能和快速响应能力;⑤可提高系统的资源利用率和性价比等这是一道要求读者根据实际应用环境分析多任务嵌入式实时操作系统的特点的综合理解题。本题的解答思路如下:(1)嵌入式实时系统(RTOS)是指能够在指定的时间内完成系统功能和对内部或外部、同步或异步时间做出响应的系统,它还具有在事先定义的时间范围内识别和处理离散事件的能力,系统能够处理和存储控制系统所需要的大量数据。实时操作系统的主要功能是多任务、可抢占的任务调度、中断管理、存储管理、时钟管理、外部设备管理以及文件系统等。(2)由试题中关键信息“只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等”可直接理解简化的多任务嵌入式实时操作系统中“简化”一词的涵义。“简化”可加快该操作系统的开发周期,并使其更易于维护。(3)由题干关键信息“对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块”可知,系统中有着相对较多的简单输入量,另外由于“监视的对象比较固定,系统硬件的规模相对固定不变”,因此,采用简化多任务实时操作系统是可行的。(4)采用简化的实时操作系统比标准多用户实时操作系统(MROS)所需占用的主存空间容量小,更符合题干中“尽可能允许把所有软件都固化在EPROM中”的要求。(5)另外,采用简化的实时操作系统具有可提高系统的实时性能和快速响应能力,可减少操作系统的运行开销(例如CPU可更快运行任务,更快响应中断),提高系统的资源利用率和性价比等。问题2:(1)等待状态(2)就绪状态(3)休眠状态(4)延时等待(5)运行状态这是一道要求读者根据实际应用环境分析嵌入式实时操作系统任务状态转换的综合理解题。本题的分析思路如下:①任务是相应任务块程序关于某数据集合的可并发的一次运行活动,即任务通常作为占有资源的最基本单位。在本案例的实时操作系统中,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。而且试题中已给定“在任何时候,一个任务只会处于其中的某一个状态”。②其中,休眠状态指任务还没有初始化,或任务的执行已经结束,实际上对操作系统来说,该任务是不存在的。就绪状态是指任务已经具备了运行的条件,但是由于CPU正忙,正在运行其他的任务,因此暂时不能运行的状态。③运行状态表示此任务正在占有CPU,并在CPU上运行。处于就绪状态的任务只要把CPU控制权分配给它(任务调度),它就能够立刻执行。等待状态是指任务因为正在等待某种事件的发生而暂时不能运行。例如,它正在等待某个I/O操作的完成,或者它同某个任务之间存在着同步关系,正在等待该任务给它发信号。此时,即使CPU已经空闲了下来,它也还是不能运行。处于等待状态的任务可以被某些系统调用或事件激发而转到就绪状态。当一个任务运行过程中需要等待某个事件或更高优先级的任务占用CPU时,将由运行状态转移到等待状态。由此可判断(1)空缺处填写的内容是“等待状态”,(2)空缺处填写的内容是“就绪状态”,(5)空缺处填写的内容是“运行状态”。④处于运行状态的任务如暂时不需要占用CPU资源,则可直接进入休眠状态;而当操作系统唤醒某一处于休眠状态的任务时,该任务将进入就绪状态,因此(3)空缺处可填入“休眠状态”等内容。⑤由图6-8中“延时时间到”以及(2)空缺处填写的内容是“就绪状态”、(5)空缺处填写的内容是“运行状态”可推理出,(4)空缺处可填人“延时等待”这一状态。⑥图6-14给出了一个完整的简化实时操作系统的任务状态转换图。问题3:se=1(7)V(sf)(8)P(sf)(9)V(se)(10)死锁这是一道要求读者掌握信号量操作机制的程序分析题。本题的解答思路如下:①在本试题中,数据采集任务(Collect_task)和计算任务(Calculate_task)共用一个单缓冲区。数据采集任务(Collect_task)采集到一个数据后,只有当缓冲区为空时,才能将数据送入该单缓冲区存放,否则应等待单缓冲区腾空。当单缓冲区中有数据时,计算任务(Calculatetask)才能从缓冲区中取出数据进行计算,否则也应等待。②本试题信号量操作机制的实质是一个典型的生产者——消费者操作问题,即需要使用两个任务间同步算法解决问题。③本试题中应设置两个信号量,其中一个信号量来表示缓冲区中是否有可供计算的数据,其初值为0。程序代码中“intsf=0;”语句正是对该信号量的定义。④实现两个任务间同步算法时,还需定义另一个信号量来表示单缓冲区中有无空位置存放新的数据,其初值为1。数据采集任务(Collect_task)程序代码中已给出“P(se),”语句,间接说明另一个信号量的标识是“se”。因此(6)空缺处所填写的内容是“se=1”。⑤当数据采集任务(Collect_task)将数据送入单缓冲区中时,应使用“V(sf),”语句唤醒原处于等待状态的计算任务(Calculate_task)。因此(7)空缺处所填写的内容是“V(sf);”语句。⑥由于计算任务(Calculate_task)需要等待单缓冲区中有数据时,才能从缓冲区中取出数据进行计算,也就是说,单缓冲区中没有数据时,计算任务(Calculate_task)应处于等待状态。因此(8)空缺处实现此功能语句的语句是“P(sf);”。⑦当计算任务(Calculate_task)从缓冲区中取出数据时,单缓冲区的空间被腾空,此时允许将新数据存人该单缓冲区,即单缓冲区的使用权限将交付给数据采集任务(Collect_task因此(9)空缺处需填入语句“V(se);”实现此功能。⑧当信号量sf的初始值为-1时,假设计算任务(Calculate_task)先被调度执行,它执行P(sf)操作时,使sf的值变为-2,计算任务(Calculate_task)进入阻塞状态。假设此时发生了一次时钟中断,数据采集任务(Collect_task)被调度执行,它顺利通过了P(se)操作,并使se的值变为o,接着在执行V(sf)操作,并使sf的值变为-1,假设满足“While(采集工作未完成)”判断条件,P(se)操作将再次执行,并使se的值变为-1,数据采集任务(Collect_task)也进入阻塞状态。这样一来,两个任务都在等待对方释放信号量,就成为了一种死锁状态。(8.)使用在汽车、飞机中的嵌入式软件,由于直接影响人的生命及财产安全,测试要求更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。以下是一段C语言代码,请仔细阅读,并回答相关问题:intlogicTest(intx,inty){intmagic=0;if(x>0&&y>0){magic=x+y+10;}else{magic=x+y-10;}if(magicimage.png0){magic=0;}returnmagic;}问题1:请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。问题2:画出以上代码的流程图。问题3:请根据[说明]中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取值范围正确答案:参考解析:问题1:问题2:问题3:用例数量:3个;条件取值范围:(x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)本问题考查MC/DC覆盖率判定的综合运用。MC/DC与代码中的逻辑运算有关。本题代码中的逻辑运算为x>0&&y>0。根据MC/DC的定义,MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有覆盖且每个条件都能独立影响判定结果。对于a&&b这样的逻辑运算,真值表如下。对测试用例1和测试用例2,条件a不变,因为条件b的不同而导致结果的不同,因此条件b独立影响判定的结果。对测试用例2和测试用例3,因为条件b不变,条件a的不同而导致结果的不同,因此条件a独立影响判定的结果。综合以上,对逻辑运算a&&b应产生三个测试用例,包括:(True,False)、(True,True)、(False,True)。所以本题用例数量:3个;条件取值范围:(x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)。(9.)在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中:[程序1]是李工编写的一个数据交换子程序。[程序2]是赵工编写的一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。[程序1]#includeimage.pngstdio.h>swap(intx,inty){intt;t=x;x=y;y=t;}main17{inta,b;a=3;b=4;swap(a,b);printf("%d,%d\n",a,b);}[程序2]typedefstructItem{intitemid;union{chardata;structItem*link;}un;structItem*nextItem;}ItemNode;intEqualItem(ItemNode*x,ItemNode*y){intres;ifx==y)return1;if(12){if(13){if(x->itemid==0){res=14;}else{res=15}if(res){return16}}}return0;}问题1:执行[程序1]后,打印出来的a=3,b=4;并没有完成数据交换,请指出李工的问题?并改正程序错误。问题2:仔细阅读并分析[程序2]中的C语言代码,完成其中(1)~(5)空白填空。问题3:李工编写某嵌入式软件时,遇到了一些问题,请帮助李工解答下面2个问题。(1)李工在编译时,程序没有通过编译,经检查程序后将文件头的#includeimage.pngfilename.h>改为#include"filename.h"后编译通过,请问#includeimage.pngfilename.h>和#include"filename.h"的区别是什么?(2)李工在编写一段c++程序时,需要调用一段已编译的C语言函数,为什么要加extern"C"?正确答案:参考解析:问题1:李工的问题:形参不能作为函数的输出参数使用。对应的swap函数修改如下:swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}调用时修改为swap(&a,&b)本题考查嵌入式C/C++编程知识与应用。函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参,所以执行[程序1]后,打印出来的a=3,b=4;并没有完成数据交换。将值传递改成指针传递就可以了。对应的swap函数应修改如下:swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}调用时应修改为swap(&a,&b)问题2:(1)x!=NULL&&y!=NULL(2)x->itemid==y->itemid(3)x->un.data==y->un.data(4)EqualItem(x->un.link,y->un.link);(5)EqualItem(x->nextItem,y->nextItem);该段C语言程序是一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。该程序具体如下:如果x==y,则返回1,表示断定两个数据实际指向是同一地方,当然相等;如果x和y都不为空则继续,否则返回0;如果x->itemid==y->itemid,则继续,否则返回0;如果x->itemid==0,则若x->un.data==y->un.data,res=1,否则res=0;如果x->itemid不等于0,联合体un中的link项有效,递归调用EqualItem(x->un.link,y->un.link),继续判断;如果res=1,也就是x->un.data=y->un.data,则递归调用EqualItem(x->nextItem,y->nextItem),判断下一级链表;如果res=0,也就是x->un.data不等与y->un.data,则即可断定两个数据不相等,返回为0。问题3:(1)对于#include<filename.h>,编译器从工程指定路径搜索filename.h;对于#include"filename.h",编译器从当前路径和工程指定路径搜索filename.h;(2)C++语言支持函数重载,C语言不支持函数重载,函数被C++编译后在库中的名字与C语言不同。C++提供了C连接交换指定符号extern"C"来解决名字匹配问题。本题考查考生对预处理指令include的正确理解。对于#include<filename.h>来说,编译器会从工程指定路径搜索filename.hwen件;对于#include"filename.h"来说,编译器会从当前路径和工程指定路径搜索filename.hwen件。C++语言支持函数重载,C语言不支持函数重载,函数被C++编译后在库中的名字与C语言不同。为了C++程序中能够调用C程序,就需要C++提供C连接交换指定符号extern"C"来解决名字匹配问题。(10.)某公司承接了一个控制系统的项目,由王工负责系统的方案设计。王工的设计方案如图1所示。该方案是基于VME总线的多机并行处理系统,由主控制模块作为VME总线的主设备,即总线控制器,负责整个系统的控制与管理;3个数据处理模块作为从设备,负责数据处理与计算;1个I/O模块也作为从设备,负责系统与外部接口之间的高速数据通信。同时,为了简化设计,该系统5个模块均采用同一款VME协议芯片,实现内总线和VME总线的连接。该系统中每个模块的相关信息见表1所示。1、王工设计采用共享存储器方式,进行多机之间的通信。VME共享存储器的地址空间映射,分为输出窗口和输入窗口两部分。输出窗口实现处理器本地地址空间到VME总线地址空间的映射,输入窗口实现VME总线地址空间到处理器本地地址空间的映射。输出窗口空间设置说明:为了每个模块能访问到其他4个模块,在每个模块的处理器本地地址空间中开辟5M空间,映射到VME总线上的5M地址空间。映射关系见表2。输入窗口空间设置说明:每个模块分配1M的VME地址空间,并将这1M空间映射到处理器本地RAM区域中,专门用于VME通信数据缓冲区。映射关系见表3。VME总线驱动中,按照上述方式对寄存器进行设置,实现了VME总线共享存储器工作方式,将对其他模块的操作转化为对处理器本地地址空间访问操作相似的读写操作,并且都采用总线远程写,总线本地读的方式。数据处理模块1发送消息到数据处理模块2,它们之间采用1M数据缓冲区的第一个32位作为握手标志。则数据处理模块1访问标志区的总线地址为______,数据处理模块2访问标志区的总线地址为______。I/O模块向主控制模块发送控制命令,它们之间采用1M数据缓冲区偏移0x100处作为命令缓冲区。则I/O模块访问命令区的总线地址为______,主控制模块访问命令区的总线地址为______。2、如表1所示,该系统中采用的处理器有大端和小端两种工作模式。王工设计VME总线上传输的数据全部采用小端方式,那么当处理器通过VME总线发送数据时,需要根据自己的工作模式,对数据进行必要的转换,以符合协议要求。当I/O模块向主控制模块发送控制命令0xAABBCCDD,那么它写入V=ME总线的实际数据是______,当主控制模块向数据处理模块3和I/O模块发送控制命令0x12345678,那么它写入VME总线的实际数据是______和______。3、为了提高数据通信的性能,在进行大数据量通信时,王工设计采用DMA的方式。DMA通信方式能够满足高速VME设备的需求,也有利于发挥CPU效率。该VME协议芯片有两种DMA工作方式:一种是直接方式(Directmode),一种是链方式(Linkedlistmode)。在直接方式下,在每次数据传输前,需要驱动程序对DMA控制寄存器进行设置,然后进行DMA传输,并等待传输完成,或者异常错误。直接方式是一种软件和硬件同步工作方式。在链方式下,驱动程序只需要设置命令包。在通信过程中,硬件根据命令包的内容完成传输,并根据链中的下一个命令包,继续传输,直到所有命令包完成或者异常错误。链方式是一种软件和硬件异步工作的方式。图2是DMA直接方式的流程图,请补全流程图。正确答案:参考解析:1、0xD020'00000x00F0'00000xD000'01000x00F0'01002、0xAABBCCDD0x785634120x785634123、(1)设置DMA目的地址或(2)(2)设置传输长度或(1)(3)设置DMA传输启动位DMA是否正常终止1、本题考查嵌入式系统中计算机总线、存储、DMA等相关知识及应用。该系统是基于VME总线的多机并行处理系统,采用共享存储器方式进行多机之间的通信,定义了5MB的VME空间,用于主控制模块等5个模块之间的VME通信。VME总线的共享存储器方式,通过地址空间映射来实现,分为输出窗口和输入窗口两部分。输出窗口实现处理器本地地址空间到VME总线地址空间的映射,本系统中每个模块配置了相同的5MB的处理器输出窗口地址空间(0xD000'0000~0xD04F'FFFF),用于映射到VME总线上的5MB地址空间(0x0000'0000~0x004F'FFFF)。输入窗口实现VME总线地址空间到处理器本地地址空间的映射。本系统中按照模块顺序,每个模块将1M的VME地址空间,映射到处理器本地RAM区域中(0x00F0'0000~0x00FF'FFFF),专门用于VME通信数据缓冲区。整个系统的映射关系图3所示。由于所有驱动都采用总线远程写方式,数据处理模块1要访问数据处理模块2的通信缓冲区,访问的基地址就是数据处理模块2内存缓存区对应的VME总线地址,即VME总线0x0020'0000,该地址对应数据处理模块1的本地地址,则为0xD020'0000。由于所有驱动都采用总线本地读的方式,所以数据处理模块2访问的基地址为本地存储器地址,即0x00F0'0000。具体的地址空间再由基地址加上指定的偏移即可。同理,I/O模块要访问主控制模块的通信缓存区,访问的基地址就是主控制模块内存缓存区对应的VME总线地址,即VME总线0x0000'0000,该地址对应I/O模块的本地地址,则为0xD000'0000。主控制模块访问的基地址为本地存储器地址,即0x00F0'0000。具体的地址空间再由基地址加上指定的偏移即可。2、数据在计算机中表示时,有大端和小端两种格式。大端模式是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理,地址由小向大增加,而数据从高位往低位放。小端模式是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,与用户的逻辑方法一致。例如,数字0x12345678在内存中的表示形式为:1.大端模式:低地址------>高地址0x12|0x34|0x56|0x782.小端模式:低地址------>高地址0x78|0x56|0x34|0x12从软件处理的角度上,不同端模式的处理器进行数据传递时必须要考虑端模式的不同。如进行网络数据传递时,必须要考虑端模式的转换。其中互联网使用的网络字节顺序采用大端模式进行编址,而主机字节顺序则根据处理器的不同而不同,如PowerPC处理器使用大端模式,而Pentium处理器使用小端模式。大端模式处理器的字节序到网络字节序不需要转换;而小端模式处理器的字节序到网络字节必须要进行转换。在该系统中,VME总线上传输的数据全部采用小端方式,但主控制模块、数据处理模块1、数据处理模块2、数据处理模块3均采用大端方式处理器,因此发送到VME总线上的数据要进行大端到小端模式的转换,而从VME总线上接收的数据,要进行小端到大端模式的转换,但I/O模块由于采用的是小端模式的处理器,则不需要进行转换。3、DMA(DirectMemoryAccess,直接内存存取)是所有计算机的重要特色,它允许不同速度的硬件装置来传输数据,而不需要依赖于CPU的大量负载。DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输过程则由DMA控制器来实行和完成,如图4所示。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。这样的操作并没有让处理器工作拖延,反而可以被重新安排去处理其他的工作。DMA传输对于高效能嵌入式系统是很重要的。在实现DMA传输时,由DMA控制器直接掌控总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。(1)DMA请求CPU对DMA控制器初始化,并提供要传送的数据的起始位置、目的地址和数据长度。并向I/O设备发出启动操作命令,I/O设备提出DMA请求。(2)DMA响应DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O设备开始DMA传输。(3)DMA传输DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O设备进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。(4)DMA结束当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O设备发出结束信号。当I/O设备收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后带着本次操作结果及状态继续执行原来的程序。由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。(11.)在某四轴飞行器系统设计中,利用惯性测量单元(IMU)、PID电机控制、2.4G无线遥控通信和高速空心直流电机驱动等技术来实现一个简易的嵌入式四轴飞行器方案。整个系统的设计包括飞控板和遥控板两部分,两者之间采用2.4G无线模块进行数据传输。飞控板采用高速单片机STM32作为处理器,采用含有三轴陀螺仪、三轴加速度计的运动传感器MPU16050作为惯性测量单元,通过2.4G无线模块和遥控板进行通信,最终根据PID控制算法以PWM方式驱动空心电机来控制目标。图1为李工设计的系统总体框图。飞控板和遥控板的核心处理器都采用STM32F103。飞控系统的惯性测量单元采用MPU6050测量传感器,MPU6050使用IIC接口,时钟引脚SCL、数据引脚SDA和数据中断引脚分别接到STM32的对应管脚,图2为该部分原理图。遥控板采用STM32单片机进行设计,使用AD对摇杆模拟数据进行采集,采用NRF2401无线模块进行通信,图3为该部分原理图。李工所设计的系统软件同样包含飞控板和遥控板两部分,飞控板软件的设计主要包括无线数据的接收、自身姿态的实时计算、电机PID增量的计算和PWM的电机驱动。遥控板主控制器软件通过ADC外设对摇杆数据进行采集,把采集到的数据通过2.4G无线通信模块发送至飞控板。图4为飞控系统的软件流程示意图。1、由图1系统总体框图设计可知,飞控板和遥控板之间是用2.4G无线通信进行数据传输,各自主处理器和无线通信模块之间是SPI接口。同时,在飞控板上,处理器和惯性测量单元是通过IIC进行数据交互。以下关于SPI接口和IIC接口的描述中,正确的是:______、______、______、______。A.SPI和IIC都是主从式通信方式B.SPI的数据收发线是各自独立的,IIC也是同样C.SPI和IIC的传输都不需要片选控制D.IIC总线是一个多主机的总线,可以连接多于一个能控制总线的器件到总线E.IIC总线包括标准模式,快速模式和高速模式,相互之间的传输速度差异并不大F.在原理设计中,到底采用SPI和IIC哪种方式,需要依据外设芯片的接口而定G.SPI是一种环形总线结构H.在IIC总线上,可以有多个从设备具有相同的IIC地址2、(1)图2飞控板部分原理图中,R4的作用是什么?(2)图3遥控板部分原理图中,C11、C12、C13、C14的作用是什么?3、在STM32处理器的PWM使用过程中,最为关键的就是PWM的频率和占空比。PWM的频率依赖于PWM模块的参考时钟频率,自动装载寄存器ARR的值加1之后再乘以参考时钟频率即可得到PWM的频率。PWM的占空比是用捕获比较寄存器CCR和自动装载寄存器ARR获得的,PWM占空比=CCR/(ARR+1)。假设当前主控板的STM32处理器PWM模块的参考时钟频率为1kHz,要将PWM模块的频率设置为100kHz,则ARR寄存器的值应设置为多少?如果此时占空比希望设置为20%,那么CCR寄存器的值应该设置为多少?4、5毫秒进行一次定时器的触发,每次中断都会检查一次无线模块数据的接收,以确保飞控系统控制信息的实时性。每2次中断(即1毫秒)读取一次。MPU16050单元的数据,并进行算法处理。每4次中断(即2毫秒)通过计算当前飞控板系统的姿态,结合遥控端的目标姿态,根据两者的差值通过PID控制算法对各个电机进行调速控制。每200次中断(即100毫秒)采集一次电池电压,然后通过无线模块把电池电压发送给遥控板,以告知操作人员当前电压的大小。图4为飞控系统软件实现的简要流程图,根据以上描述,请补全图4中的空(1)~(6)处的内容。正确答案:参考解析:1、(顺序不限)(1)~(4):A、D、F、G2、(1)增强驱动能力(2)滤波,保持信号的稳定性3、ARR寄存器的值:99CCR寄存器的值:204、(1)检查一次无线模块数据的接收(2)count%2=0(3)读取MPU16050单元的数据,并进行算法处理(4)计算当前飞控板系统的姿态,对各个电机进行调速控制(5)count%200=0(6)采集电池电压,通过无线模块把电池电压发送给遥控板1、本题考查嵌入式软硬件系统协同设计过程中的知识及应用。此类题目要求考生认真阅读题目中的题干描述,仔细理解设计的原理框图,详细观察提供的硬件原理图和所描述的软件实现流程示意图。前后结合进行题目分析。由图1系统总体框图可知,飞控板和遥控板之间是用2.4G无线通信进行数据传输,各自主处理器和无线通信模块之间是SPI接口。同时,在飞控板上,处理器和惯性测量单元是通过IIC进行数据交互。IIC(Inter-IntegratedCircuit)和SPI(SerialPeripheralInterface)这两种通信协议非常适合近距离低速芯片间进行通信。Philips(forIIC)和Motorola(forSPI)出于不同背景和市场需求制定了这两种标准通信协议。IIC开发于1982年,SPI总线首次推出是在1979年。SPI包含4根信号线,分别是:(1)SCLK:SerialClock(outputfrommaster)(2)MOSI,SIMO:MasterOutput,SlaveInput(outputfrommaster)(3)MISO,SOMI:MasterInput,SlaveOutput(outputfromslave)(4)SS:SlaveSelect(activelow,outputfrommaster)SPI是单主设备(single-master)通信协议,这意味着总线中只有一支中心设备能发起通信。当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。SPI有4种操作模式——模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。与SPI的单主设备不同,IIC是多主设备的总线,IIC没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线——‘serialdata’(SDA)和‘serialclock’(SCL)。IIC数据传输速率有标准模式(100kbps)、快速模式(400bps)和高速模式(3.4Mbps),另外一些变种实现了低速模式(10kbps)和快速+模式(1Mbps)。物理实现上,IIC总线由两根信号线和一根地线组成。IIC通信过程大概如下。首先,主设备发一个START信号,这个信号就像对所有其他设备喊:请大家注意!然后其他设备开始监听总线以准备接收数据。接着,主设备发送一个7位设备地址加一位的读写操作的数据帧。当所有设备接收数据后,比对地址以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论