上海交通大学计算机科学与工程系1嵌入式系统大作业1111、简述题(1111)实时系统的定义,分类及其区别。简单的说,实时系统可以定义为对外部事件及时响应的系统。[1]基本特征是功能正确并且时间正确(计算在预定周期内完成)。实时系统按速度(实时性强弱)可以分为强实时系统、一般实时系统和弱实时系统;按确定性分类可以分为硬实时系统和软实时系统。硬实时系统是指必须满足灵活性接近deadline要求的实时系统,否则将发生灾难。(比如武器防御系统、导弹导航系统等)软实时系统是指必须满足deadline要求,但具有一定灵活性,对于超过deadline具有一定的容忍度。(比如DVD播放系统)按软件结构分类可以分为单线程程序、事件驱动程序两种。[2]实时系统与一般的计算机应用相比,具有高速处理、配置专一、结构紧凑、坚固可靠等特点。具体要求就是[2]1实时性。对外部事务做出反应的时间要短。2有异步处理并发事件的能力。3快速启动、并有出错处理和自动复位功能。④嵌入式实时软件是应用程序和操作系统两种软件的一体化程序。⑤嵌入式实时软件的开发需要独立的开发平台。(2222)简述嵌入式系统设计过程。嵌入式系统开发的一般流程,主要包括:系统定义与需求分析、系统方案设计、软/硬件设计、系统集成、系统测试等[3]。1系统定义与需求分析:确定设计任务和设计目标,确定系统实现的可行性、系统开发所采取的策略,并提炼出设计规格说明书,作为正式设计指导验收的标准。系统的需求一般分为功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入/输出信号、操作方式等;非功能性需求包括系统性能、成本、功耗、体积、质量等因素。2系统方案设计:描述系统如何实现所述的功能性需求和非功能性需求,包括对硬件、软件、和执行装置的功能划分,以及系统的软件、硬件选型等。3软硬件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统设计的工作大部分都集中在软件设计上,面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。4系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改正单元设计过程的错误。5系统性能测试及可靠性测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求和各项指标。(3333)除了可靠性以外,请简述其他(至少四个)用于评价嵌入式系统性能的指标。功能性指标上海交通大学计算机科学与工程系21.时钟频率:时钟频率是提供给嵌入式系统的定时信号的一个源,这个源产生不同频率的基准信号,用来同步CPU的每一步操作,它是评定嵌入式性能的重要指标。虽然时钟频率仅是嵌入式系统性能表现的一个方面,并不代表系统的整体性能,但提高主频对于提高CPU运算速度却是至关重要的。2.IPS(InstructionsPerSecond):指处理器每秒执行的指令数量。是一个微处理器处理速度的测量标准,IPS与嵌入式系统硬件的体系结构(如寄存器的数量、机器字长)、有着密不可分的联系。指令系统可以提供的寻址方式和指令种类都直接影响着最终设计实现的嵌入式系统的功能特性。3.响应时间(实时性):实时性指系统对响应时间的严格要求,指能在确定的时间内执行其功能,能对外部的异步事件做出快速正确的响应。它分为硬实时和软实时两种如动态信号的采集系统、生产线的控制单元等,有严格的响应时间要求,属于硬实时;超市的秤重、计量、收银机只要求有尽快的响应时间,属于软实时;这些不同的嵌入式应用系统的不同响应要求,表现了嵌入对象响应要求的多样性。4.使用的操作系统:嵌入式系统的操作系统为终端应用提供访问嵌入式系统硬件子系统的接口。嵌入式系统的操作系统包含多种功能模块,它必须有进程管理和存储管理等基本系统内核,也可能包含文件系统,图形化的用户界面等其他应用软件。操作系统的功能在很大程度上决定了嵌入式系统的功能特性。非功能性指标1.NRE成本:设计该系统的一次性成本2.单位成本:排除NRE成本后,每生产一个嵌入式系统的消耗3.大小及重量:,嵌入式系统的体积越小越好,因为体积越小,在相同体积下可以容纳的设备越多,或者相同的设备占用的空间越小,可以应用的场合就越多,市场占有率就越大。嵌入式系统的重量也是越轻越好,因为重量轻意味着携带方便,易于嵌入其它应用系统4.灵活性:能够在不大幅度增加NRE成本的条件下,增加或改变嵌入式体统的部分功能5.TTM:从设计开始到产品可以销售所需的时间。平均TTM是8个月,TTM的推迟将导致产品利润下降,产品收入下降的原因是由于产品延期进入市场6.功耗:功耗越低,意味着在同等供电能力的情况下,嵌入式系统可以运行的时间就越长。由于嵌入式设备多是可以移动的,可能没有大功率的电源,故功耗是必须要参考的性能指标之一。2222、试述嵌入式系统BootBootBootBootLoaderLoaderLoaderLoader的组成与工作原理。Bootloader是在操作系统内核运行之前运行的一段小程序,这段小程序可以初始化硬件设备、建立内存空间的映射图、从而将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核、运行用户程序等准备好运行的环境。[4]基于ARM7TDMI内核的CPU在复位时通常都从地址0x00000000取它的第一条指令。在系统加电荷,CPU将首先执行Bootloader程序,大多数Bootloader都包含两种不同的操作模式:“启动加载”模式和“下载”模式。在启动加载(Bootloading)模式下,Bootloader从嵌入式系统的固态存储介质(如Flash)上将操作系统和用户程序加载到RAM中运行,整个过程并没有用户的介入。这种模式是Bootloader上海交通大学计算机科学与工程系3的正常工作模式。在下载(Downloading)模式下,Bootloader将通过串口、USB接口和网络连接等通信渠道从主机(如PC)下载可执行文件到嵌入式系统中,然后复位并执行。Bootloading的一般步骤为:设置中断向量表、初始化存储设备、初始化堆栈、初始化用户执行环境,然后调用main函数,执行用户的应用程序。从主机下载的文件通常首先被Bootloader保存目标机的RAM中然后被Bootloader写到目标机的Flash类固态存储设备中。3333、试述ARMARMARMARM处理器对异常中断的响应过程,如何从异常中断处理程序中返回?需要注意哪些问题?ARM处理器对异常的响应过程当一个异常出现以后,ARM微处理器会执行以下几步操作:1将下一条指令的地址存入相应的链接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。2将CPSR复制到响应的SPSR中3根据异常类型,强制设置CPSR的运行模式位4强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。异常处理完毕后,ARM微处理器将会执行一下几步操作从异常返回:1将链接寄存器LR的值减去相应的偏移量后送到PC2将SPSR复制会CPSR中3若在进行异常处理时设置了中断禁止位,要在此清除需注意的问题是:1异常响应处理过程中可以设置中断禁止位,来禁止中断发生。如果这么做的话,需要在返回程序中清除中断禁止位。2可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。4444、用汇编语言编写含有2222个分支的跳转表实现程序跳转。R2R2R2R2寄存器中存放的是跳转表的基地址。R1R1R1R1中用于选择不同的子程序,子程序可以任意命名。R1R1R1R1的不同值选择不同的子程序。请做简单注释。MOVLR,=RET_SUB;子程序返回的地址先存入连接寄存器LDRR2,=DISP_TAB;跳转表的首地址LDRPC,[R2,R1];根据R1的值查表,取出相应的偏移量,计算出入口地址后送入PC;跳转到R2指定的子程序入口DCDRET_SUB;子程序返回到此处...DISP_TABDCD0xC0,0xF9;跳转表(这里只要求实现两个分支,数字就是入口地址)上海交通大学计算机科学与工程系45555、一个嵌入式系统具有一对干湿球温度传感器,可以探测到干湿状态下的温度。传感器通过UART0UART0UART0UART0与ARMARMARMARM通信;嵌入式系统中软件要求每秒钟定时读取UART0UART0UART0UART0的4444字节的数据。(假设UART0UART0UART0UART0的FIFOFIFOFIFOFIFO不会溢出)这4444个字节中前2222个字节是干球温度,后两个是湿球温度。2222个字节中,前一个字节表示小数点之前的温度,后一个字节表示小数点之后的温度。通过干球温度和湿球温度可以在一个二维表格中查找到对应的湿度,表示当前空气对应的相对湿度值。二维表格的形式如下:干球温度\湿球温度8.29.310.230%35%12.340%45%当软件查询到相对湿度后,通过UART1UART1UART1UART1与上位机通信(发送),每秒将数据发送给上位机。请简要写出软件的设计方案,并编写此软件。请对程序作简单说明。软件设计-流程[5]:1、UART0,的初始化、UART1的初始化、定时器0的初始化2、连续接收4个字节,并将接收到的字节处理成表示温度的数据;3、查表获得相对湿度的数据;4、发送相对数据5、等待定时器到时(1s)回到2程序清单:#includeconfig.h#defineUART_BPS(115200)/*定义波特率*/#defineN(2)/*行数*/#defineM(2)/*列数*/staticuint16ROW[N]={0x1020,0x1230};/*干球温度行数据(这里仅写出两行,如10.2,12.3)*/staticuint16COLUMN[M]={0x0820,0x0930};/*湿球温度列数据(这里仅写出两列,如8.2,9.3)*/staticuint8TABLE[N][M]={{30,35},{40,45}};/*相对湿度表(这里仅写出2*2的表数据)*/上海交通大学计算机科学与工程系5/*********************************************************************************名称:UART0_Init()*功能:初始化串口0,设置8位数据位,1位停止位,无奇偶校验*入口参数:无*出口参数:无*********************************************************************************/voidUART0_Init(void){uint16Fdiv;U0LCR=0x83;Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/0x100;U0DLL=Fdiv%0x100;U0LCR=0x03;}/*********************************************************************************名称:UART1_Init()*功能:初始化串口0,设置8位数据位,1位停止位,无奇偶校验*入口参数:无*出口参数:无*********************************************************************************/voidUART1_Init(void){uint16Fdiv;U0LCR=0x83;Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/0x100;U0DLL=Fdiv%0x100;U0LCR=0x03;}/*********************************************************************************名称:UART0_RcvByte()*功能:从串口接收字节数据,使用查询方式*入口参数:无*出口参数:返回接收的