【文档说明】第七章--嵌入式软件设计课件.ppt,共(114)页,6.725 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45327.html
以下为本文档部分文字说明:
1本章知识点嵌入式软件开发的特点嵌入式系统开发的流程需求分析设计阶段编码阶段固化阶段嵌入式系统的调试第七章嵌入式软件设计实例分析基于WindowsCE的嵌入式应用程序开发实例基于Wind
owsCE嵌入式应用程序开发环境基于WindowsCE嵌入式应用程序开发流程创建第一个WindowsCE工程文件配置工程并编译内核镜像文件23嵌入式系统与通用计算机系统的差别:–人机交互界面–有限的功能–时间关键性和稳定性4嵌入式软件开发的特点:–需要交叉开
发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网络连接与目标机通信。目标机(Ta
rget)可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。5–引入任务设计方法–需要固化程序–软件开发难度大嵌入式应用软件对实时性、稳定性、可靠性、抗干扰性等性能的要求都比通用软件的要求更为严格和苛刻。6嵌入式软件的开发流程与通用软件的开发流程大同小异,但开发所使用的设计方
法具有嵌入式开发的特点。整个开发流程可分为:需求分析阶段设计阶段生成代码阶段固化阶段7嵌入式系统应用需求中最为突出的是注重应用的时效性,需求分析阶段的主要任务是:(1)对问题的识别和分析对用户提出的问题进行抽象识别用以产生以下的需求:功能需求、性能需
求、环境需求、可靠性需求、安全需求、用户界面需求、资源使用需求、软件成本与开发进度需求。(2)制订规格说明文档经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确地描述。这些说明文档包括
需求规格说明书和初级的用户手册等。89(3)需求评审需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。需求评审的内容包括正确性、无歧义性、安全性、可验证性、一致性、可理解性、可
修改性、可追踪性等多个方面。10系统的设计阶段包括系统设计、任务设计和任务的详细设计。由于嵌入式系统中任务的并发性,嵌入式软件开发中引入了DARTS的设计方法。DARTS(DesignApproachforReal-TimeSystems)设计方法:是结构化分析/结构化设计的扩展。它给
出划分任务的方法,并提供定义任务间接口的机制。DARTS设计方法的设计步骤如下:数据流分析--从功能需求分析数据流图划分任务--在数据流图上把可并行的、相对独立功能抽象成一个系统任务定义任务间的接口--确定任务之间的通信和同步1112生成代码
阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。13在嵌入式系统的开发过程中,一般采用的方法是先在通用PC上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载
到目标平台上的特定位置,在目标板上启动运行这段二进制代码。14嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发,而目标环境的
处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的TornadoⅡ以及GNU套件等。交叉编译链接
生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。15交叉调试,又叫远程调试,具有以下特点:调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上;调试器通过某种通信方式与
目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式;在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件;目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件
,仿真一台目标机,使整个调试工作只在一台计算机上进行。1617嵌入式软件的测试过程正好与开发过程相反:单元测试集成测试(配置项测试)软硬件集成测试系统测试确认测试18软件单元测试的目的是检测程序模块是否符合《详细设计说明
书》的要求。通常会采用白盒测试技术,如基于路径覆盖原理等。所有单元级测试都可以在主机环境上进行,除非特别指定单元测试直接在目标环境进行。19集成测试的目的是检测程序是否符合《概要设计说明书》的要求。通常采用黑盒测试技术,但有时为了确保主要控制路
径的覆盖测试,也会采用一定的白盒测试技术。软件集成也可在主机环境上完成,在主机平台上模拟目标环境运行,当然在目标环境上重复测试是有必要的,在此级别上的确认测试将确定一些环境上的问题,比如内存定位和分配上的一些错误。目的:检测
系统划分软硬件功能后,在软件集成测试完成的基础上,测试模块软件在硬件平台上的运行情况,主要是对嵌入式软件的实时性、嵌入性及功能性能指标的测试。软硬件集成测试过程主要是在需求规格说明完成的情况下,结合通用的标准、规范以及接口控制
文件,与软件设计同步,编写软硬件集成测试的《测试计划》和《测试说明》,经过评审后,把被测试软件加载到目标机上运行,以检测嵌入式软件与硬件配合完成系统功能、性能的质量。2021系统测试关注所设计的系统,在模块与模块集成之后构成完整系统时所表现出
的质量指标,包括正确性、可扩性等。确认测试是针对确认标准的测试。确认标准由需求分析产生,所以实际上就是指规格化的需求,通常采用黑盒测试技术。所有的系统测试和确认测试必须在目标环境下执行。2223嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并
能完成用户预期任务的计算机软件嵌入式软件的特点如下:(1)软件要求固态化存储。(2)软件代码要求高质量、高可靠性。(3)系统软件的高实时性是基本要求。(4)多任务实时操作系统成为嵌入式应用软件的必需24嵌入式应用软件高度依赖目标应用的软硬件环境,软件的部分任务功能函数由汇编
语言完成,具有高度的不可移植性。为了保证实时性能,使用效率高和速度快的汇编语言是不可避免的尽可能提高嵌入式应用软件的可移植性方法:(1)尽量用高级语言开发,少用汇编语言(2)局域化不可移植部分(3)提高软件的可重用性25嵌入式系统的调试过程:26嵌入式系统的调试方法:1.源程序模拟器方式2
.监控器方式3.仿真器方式27源程序模拟器(Simulator)是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具。注:模拟器的功能毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方
面很有可能与实际处理器有相当大的差别。另外,它无法仿真嵌入式系统在应用系统中的实际执行情况比如:ARM公司的ARMulator模拟器28监控器(Monitor)调试方式需要目标机与宿主机协调。首先,在宿主机和目标机之间通过串口、以
太口等建立物理连接,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序,从而建立宿主机与目标机的逻辑连接。宿主机通过调试器与目标机的监控器建立通信连接,它们相互间的通信遵循远程调试协议。比如ARM公司的Angel。2930仿真器调试方式是在微处理器的内部嵌入额外
的控制模块。当特定的触发条件满足时,系统将进入某种特殊状态,被调试的程序暂时停止运行,宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器、存储器资源,并执行相应的调试指令一般高档的微处理器都带JTAG(JointTestActionGroup,联合测试行动组
)接口,它是一种边界扫描标准,只需5根引脚就可以实现在线仿真的功能。31•控制设备由内部控制器和外部控制面板组成•控制器控制六个转轴,并与数字I/O传感器交互作用•转轴和I/O由程序控制•该程序由控制面板操作启动执行32需求分析与说明
33控制执行过程•按下“上电”按钮,系统进入了上电状态。•上电成功后,系统进入了手动状态。此时,操作者可以通过程序选择开关选择程序•按下“运行”按钮,则选定的程序开始运行,系统转为运行态。•程序运行中如果按下“停止”键,程序被挂起。之后,操作者可以按下“运行”键,使程序恢复执行,也可
按下“结束”键,结束程序。•按下“结束”键后,系统进入终止态。当程序最终终止执行时,系统返回手动状态。34数据流图每个数据流图都包含:–加工(椭圆—对数据的操作变换–数据流(箭头)—变换间的数据流动–数据存储区(方框)—数据
的存储场所–文件(双线)—输入/输出文件–数据字典,定义了数据流和数据存储区所包含的数据项35机器人控制器数据流图36划分任务识别出并行性的功能--需要考虑系统内功能的异步性分析数据流图中的变换,确定哪些变换可以并行,哪些变换本质上是顺序的
一个任务可对应一个变换,也可对应多个变换。划分任务的规则–I/O依赖性–功能的时间关键性–计算需求–功能内聚–时间内聚–周期执行37I/O依赖性•变换依赖于I/O,性能受限I/O,可独立成任务•在系统中创建与I/O设备数目相当的I/O任务•在任
务中分离设备相关性•I/O任务只完成与设备相关的功能•I/O任务的执行只受限于I/O设备的性能,而不是处理器功能的时间关键性•将有时间关键性(deadline)的功能分离出来,组成独立运行的任务•赋予这些任务高的优先级,以满足对时间的需要3839计算需求•把计算功能
捆绑成任务,以消耗CPU的剩余时间•计算量大的功能占用CPU的时间多•赋予计算量大的任务较低优先级•能被高优先级的任务抢占•保持高优先级的任务是轻量级的•多个计算任务可安排成同优先级,按时间片循环轮转功能内聚•将紧密相关的功能变换组成一个任务
,减少通信的开销•把每个变换都作为同一任务中的一个独立模块,不仅保证了模块级的功能内聚,也保证了任务级的功能内聚4041时间内聚•将在同一时间内完成的各功能形成一个任务•即使这些功能是不相关的•功能组的各功能是由相同的外部事件驱动的,这样每次任务接收到一个事件,它们都
可以同时执行•减少了任务调度及切换的次数,减少了系统的开销周期执行•一个需要周期执行的变换可以作为一个独立的任务,按一定的时间间隔被激活•将在相同周期内执行的各功能组成一个任务频率高的任务赋予高优先级4243机器
人控制器的任务划分44•定义任务接口•任务间通信模块TCM(TaskCommunicationModule)•消息通信模块:通过管理消息队列和同步通信原语分别实现紧耦合通信和松耦合通信。•紧耦合通信:发送方发送消息后立即等待回答•松耦合通信
:通过消息队列缓冲消息•信息隐藏模块•实现数据结构和访问方法•系统由任务(主动对象)和信息隐藏模块(被动对象)构成•任务同步模块TSM(TaskSynchronizationModule)•采用互斥等待和信号
灯交叉激励的方式实现•管理“控制”(而不是“数据”)在任务间的传递4546DFG强调数据流动,不强调控制信号流动,因此有利于描述并发,但难于描述同步扩充DFG表示任务通信与同步和状态依赖DARTS设计
方法的设计步骤如下:数据流分析--从功能需求分析数据流图划分任务--在数据流图上把可并行的、相对独立功能抽象成一个系统任务定义任务间的接口--确定任务之间的通信和同步47需求分析与SPEC分析用户需求,定义系统功能需求和I/O接口数据流分析:采用DFG系统设计:DARTS
方法完成任务分解(并行进程),定义任务间接口关系划分任务:在DFG中确定并发任务定义任务接口DARTS使用RTSA时间规范将时间预算分配到每个任务上。48任务设计按模块方式设计每个任务,定义模块间接口模块构筑完成每个模
块的详细设计、编码和单元测试任务与系统集成对每个任务的模块进行集成和测试,然后依次对系统中的任务逐步进行集成和测试。系统测试49DARTS设计方法使用任务构架图来显示系统分解为并发任务的过程。505152详细说明系统中各任务的设计考虑和
执行流程,以利于程序员编制程序。–任务体系结构:详细定义任务包含的子模块和模块间的关系–任务执行流程:尽可能详细地描述任务的处理过程–任务内数据结构–任务内模块间接口535455进行每个模块的详细设计,直到每个具体的函数•函数设计:函数描述给出对
该函数的简要描述,说明设计目的、意义以及特点功能说明该函数应具有的功能,可采用IPO图(输入一处理一输出图)形式性能说明对该函数的性能要求,包括精度、灵活性和时间特性等输入定义每个输入项的特性,包括名称、标识、数据类型和格式、取值范围、输
入方式、数据来源、保密方式等输出定义每个输入项的特性,特征同输入56算法详细说明本函数所选用的算法,具体的计算公式和计算步骤流程用流程图辅以必要的说明来表示本函数的逻辑流程接口说明本函数与其他函数的调用关系
,包括说明参数赋值和调用方式以及相关数据结构(如数据库、文件)。存储分配说明本函数的存储分配限制条件说明本函数运行所受限制测试计划说明对本函数的测试计划,包括技术要求、输入数据、预期结果、人员安排等57模块逐个连接、测试以构成任务•任务被逐个连接和测试形成最终系统•可分两步集成–在宿
主机上模拟集成(软集成)–在目标机上集成基于WindowsCE嵌入式应用程序开发环境基于WindowsCE嵌入式应用程序开发流程创建第一个WindowsCE工程文件配置工程并编译内核镜像文件5859WindowsCE是专门为信息设备、移动应用、嵌入式应用等设
计的、具有强大通讯功能的、基于Win32API并与处理器无关的嵌入式操作系统。基本工具种类:(1)EmbeddedVisualC++(2)VisualStudio.NET(3)PlatformBuilder由于WindowsCE操作系
统是以Win32API为基础,所以它的应用程序开发环境与Windows98、WindowsNT和Windows2000类似。WindowseMbeddedVisualC++提供了WindowsCE应用程序的整合开发环境与工具,使软件开发人员在建立、编译与侦错应用程序时更加方便。(1)Em
beddedVisualC++60WindowseMbeddedVisualC++具有以下组件:○项目工作区(ProjectWorkspace):用来管理项目与项目的组件。○程序编辑器(TextEditor
):用于撰写程序代码。○资源编辑器(ResourceEditor):用于设计和修改资源,如对话框与菜单。○编译器(Compiler)。○WindowsCE设备仿真器(WindowsCESimulator):用于在桌上型计算机测试应用
程序。61○平台管理器(PlatformManager):用于在WindowCE设备上测试程序。○除错器(Debugger):用于控制程序的单步执行和断点执行。○应用程序精灵(AppWizard):协助程序设计师针对不同平台的各种应用程序建立工作框架。○程序代码浏览器:用于检查
和编辑程序中的函数与类别,并快速显示它们之间的关系。○类向导(ClassWizard):用于自动产生类别程序代码。○Windows诊断工具(Windowsdiagnostictools):如WindowsCERemoteSpy(Ces
py.exe)提供了额外的程序编辑和侦错的功能。○在线文件和辅助说明(Onlinedocumentationandhelp)。62(2)VisualStudio2005/VisualStudio2008VisualStudio是微软公司推出的开发环境。是目前最流行的Win
dows平台应用程序开发环境。2005年,微软发布了VisualStudio2005。.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机
的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。它包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的VisualStudioExpress版本。63(2)VisualStudio2005/VisualStudio
2008该工具的特征是:开发WindowsCEApp/Assemblyusing.NETcompactframework;可使用C#,VB.NET等语言;VS.NET具有完整的开发环境;目标平台上需要安装.NETcompactframework;易于调试和测试;6
4(3)PlatformBuilderPlatformBuilder是微软公司提供给WindowsCE开发人员进行基于WindowsCE平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试WindowsCE操作系统平台的工具。它运行在桌面Windows下,开发人员
可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。同时,开发人员还可以利用PlatformBuilder来进行驱动程序开发和应用程序项目的开发等等。65(3)PlatformBuilder
PlatformBuilder的强大功能,已使其成为WindowsCE平台下嵌入式操作系统开发和定制的必备工具。其SDK输出模板可以将特定系统的SDK导出,这可以是应用程序开发人员使用EVC就可以为特定的系统开发软件。EVC调试的是应用程序软件,而Pla
tformBuilder往往要编译整个内核再调试,两者的开发效率是不同的。66具体特性如下:①平台开发向导(PlatformWizard)、BSP(主板支持软件包)和开发向导(BSPWizard)。开发向导用来引导开发人员去创建一个简单的系统平台或BSP,然后再根据要求作进
一步的修改。提高了平台和BSP创建的效率。②基础配置。为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点。开发人员可以很容易地定制并编译出一个具备最基本功能的操作系统。然后再在其上做后续的修改。67③特性目录(Catalog)。操
作系统可选特性均在特性目录(Catalog)中列出,开发人员可以选择相应的特性来定制操作系统。④自动化的依靠性检查。特性(Feature)之间的依赖关系是系统自动维护的。开发人员在选择一个特性时,系统会自动将这一特性所依赖的特性加上;反之,当删除一个特性时,系统会自
动检测是否已经选择了依赖于它之上的其他特性,如果有,系统会给出提示,通知开发人员这一特性现在不能删除。68⑤系统为驱动程序开发提供了基本的测试工具集。WindowsCETestKit(测试工具包)⑥内核调试器。可以对自定义的操作系统映像进行调试,并且向用户提供有关映像性能的信
息。69⑦导出向导(ExportWizard)。可以向其他PlatformBuilder用户导出自定义的目录(Catalog)特性。⑧导出SDK向导(ExportSDKWizard)。使用户可以导出一个自
定义的软件开发工具包(SDK)。即可以将客户定制的SDK导出到特定的开发环境中(如EVC)去。这样开发人员就可以使用特定的SDK写出符合特定的操作系统平台要求的应用程序。70⑨远程工具。可以执行同基于WindowsCE的目
标设备有关的各种调试任务和信息收集任务。⑩仿真器(Emulator)。通过硬件仿真加速和简化了系统的开发,使用户可以在开发工作站上对平台和应用程序进行测试,大大简化了系统开发流程,缩短了开发时间71深刻理解Win
dowsCE的重要组件及系统提供的可选特性,并灵活运用PlatformBuilder的配置文件.REG、.BIB、.DAT、.DB是定制适合目标平台的WindowsCE操作系统的关键。PlatformBuilder是商用软件,因此要通过
正规途径获得。安装PlatformBuilder至少需要4GB的磁盘空间,建议使用512MB以上的内存,1.8GHz以上主频的处理器。72嵌入式系统的设计是使用一组物理硬件和软件来完成所需功能的过程,所以在一个嵌入式系统的设计过程中,软件设计和硬
件设计是紧密结合、相互协调的。在设计时,从系统功能的实现出发,要把软硬件同时考虑进去。一个基于WindowsCE的嵌入式系统开发的主要内容有:(1)设计系统硬件。(2)将WindowsCE操作系统移植到目标硬件平
台上。(3)建立交叉调试通道,编写和调试应用程序代码。73具体的开发流程74基于WindowsCE的软件开发模式比较统一,通常使用PlatformBuilder定制出针对特定硬件平台的操作系统映像文件NK.bin,使用Embedd
edVC++或VisualStidio.net开发上层的应用软件。嵌入式系统层软件开发过程对应于WindowsCE操作系统在目标硬件平台上的移植和定制过程,嵌入式应用层软件的实现即WindowsCE应用
程序的开发过程。75(1)运行开始>程序>MicrosoftWindowsCE5.0>PlatformBuilder5.076程序打开后进入初始画面,注意右侧Catalog窗口中的如下选项正常显示:77(2)选择File->NewPlatform:78(3)开始一个“New
PlatformWizard”:79(4)点击“Next”继续创建,在如下界面中填入工程名称:80(5)点击“Next”继续创建,在如下界面中选择BSP包:EMDOORSYSTEMXSBase270:ARMV4I:81(6)点击“Next”
继续创建,在如下界面中选择设计模板:InternetAppliance:82(7)点击“Next”继续创建,在如下界面中选择所需组件:83(8)点击“Next”继续创建,在如下Networking&Communications界面中点击“Next”:84(9)完成工程向导:85(1)在窗口右
侧的Catalog中添加UsbActivesync(FileSync)(Catalog->CoreOS->WindowsCEdevices->Applications-EndUser->ActiveSync->FileSync)到工程:8687(2)在窗
口右侧的Catalog中添加USBMassStorage(Catalog->CoreOS->WindowsCEdevices->CoreOSServices->USBHostSupport->USBStorag
eClassDriver)到工程中:8889(3)在窗口右侧的Catalog中添加中文字体(Catalog->CoreOS->WindowsCEdevices->International->Local
eSpecificSupport->Chinese[Simplified]->GB18030DataConverter到工程中:9091(4)在窗口右侧的Catalog中添加FatFileSystem
(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager->FATFileSystem)到工程中:9293(5)在窗口右侧的Ca
talog中添加DiskPartition(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager->PartitionDriver)到工程中:9495(6)在窗口右侧的Catal
og中添加StorageManagerinthecontrolpanel.(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager-
>StorageManagerControlPanelApplet)到工程中:9697(7)在窗口右侧的Catalog中添加软键盘(Catalog->CoreOS->WindowsCEdevices->ShellandUserInterface->UserInterface->SoftwareIn
putPanel->Software-basedInputPanel(SIP)(Choose1ormore)->SIPforLargeScreens)到工程中:9899(8)在窗口右侧的Catalog中添加USBClient驱动(Catalog-
>DeviceDrivers->USBFunction->USBFunctionClients->Serial)到工程中:100101(9)在窗口右侧的Catalog中添加传输层(Catalog->PlatformManager->PlatformManager)到
工程中:102(10)在窗口右侧的Catalog中添加UsbActivesync(USBFunction)(Catalog->ThirdParty->BSPs->EmdoorSystemsXSBase270:ARMV4I->DeviceDrivers->USBFunction->USBFunc
tionBusDrivers->PXA27xUSBFunction)到工程中:103104(11.a)在窗口右侧的Catalog中添加网卡驱动(Catalog->ThirdParty->BSPs->EmdoorSystemsXSBase270:ARMV4I->De
viceDrivers->Networking->LocalAreaNetworking(LAN)devices->lan91c111)到工程中:105(11.b)环境变量-Lan91C111网卡驱动不能和K
ITL一起使用,所以在OsDesignView中删除Lan91C111驱动(实际操作中,不删除也无异常):106(12)打开菜单Platform->Settings,进入PlatformSettings对话框,配置平台设置:10
7(13)BuildType项选择Release,在PlatformSettings对话框,将Locale选项卡作如下设置:108109(14)设置Release版本,在PlatformSettings对话框,将BuildOptions选项卡作如下设置:110111(15)选做步骤,在
BuildType项选择Debug,将BuildOptions选项卡作如下设置:112(16)运行BuildOS>Sysgen进行编译:113编译过程可能持续较长时间(约10-20分钟),直至输出信息栏提示出现编译完成信息:编译过程完成,新的镜像
文件成功生成。114