您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第二章-嵌入式系统开发流程
1嵌入式系统信息电子工程学院单世铎2第二章嵌入式系统开发流程32.1嵌入式软件开发的特点嵌入式系统与通用计算机系统的差别:–人机交互界面–有限的功能–时间关键性和稳定性4嵌入式软件开发的特点:–需要交叉开发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网络连接与目标机通信。目标机(Target)可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。5嵌入式软件开发的特点:–引入任务设计方法–需要固化程序–软件开发难度大嵌入式应用软件对实时性、稳定性、可靠性、抗干扰性等性能的要求都比通用软件的要求更为严格和苛刻。62.2嵌入式系统开发的流程嵌入式软件的开发流程与通用软件的开发流程大同小异,但开发所使用的设计方法具有嵌入式开发的特点。整个开发流程可分为:需求分析阶段设计阶段生成代码阶段固化阶段7需求分析阶段嵌入式系统应用需求中最为突出的是注重应用的时效性,需求分析阶段的主要任务是:(1)对问题的识别和分析对用户提出的问题进行抽象识别用以产生以下的需求:功能需求、性能需求、环境需求、可靠性需求、安全需求、用户界面需求、资源使用需求、软件成本与开发进度需求。8需求分析阶段(2)制订规格说明文档经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确地描述。这些说明文档包括需求规格说明书和初级的用户手册等。9需求分析阶段(3)需求评审需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。需求评审的内容包括正确性、无歧义性、安全性、可验证性、一致性、可理解性、可修改性、可追踪性等多个方面。10设计阶段系统的设计阶段包括系统设计、任务设计和任务的详细设计。由于嵌入式系统中任务的并发性,嵌入式软件开发中引入了DARTS(DesignApproachforReal-TimeSystem)DARTS设计方法:是结构化分析/结构化设计的扩展。它给出划分任务的方法,并提供定义任务间接口的机制。DARTS设计方法的设计步骤如下:•(1)数据流分析•(2)划分任务•(3)定义任务间的接口11生成代码阶段生成代码阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。12代码编程生成代码阶段在嵌入式系统的开发过程中,一般采用的方法是先在通用PC上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二进制代码。13生成代码阶段交叉编译和链接嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发,而目标环境的处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的TornadoⅡ以及GNU套件等。交叉编译链接生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。14生成代码阶段交叉调试交叉调试,又叫远程调试,具有以下特点:调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上;调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式;15•在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件;•目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件,仿真一台目标机,使整个调试工作只在一台计算机上进行。嵌入式系统开发的测试与通用软件的测试相似,分为单元测试和系统集成测试。生成代码阶段测试16固化阶段嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期任务的计算机软件。嵌入式软件的特点如下:(1)软件要求固态化存储。(2)软件代码要求高质量、高可靠性。(3)系统软件的高实时性是基本要求。(4)多任务实时操作系统成为嵌入式应用软件的必需。17总结:嵌入式软件开发的要点嵌入式应用软件高度依赖目标应用的软硬件环境,软件的部分任务功能函数由汇编语言完成,具有高度的不可移植性。为了保证实时性能,使用效率高和速度快的汇编语言是不可避免的。尽可能提高嵌入式应用软件的可移植性方法:(1)尽量用高级语言开发,少用汇编语言(2)局域化不可移植部分(3)提高软件的可重用性182.3嵌入式系统的调试嵌入式系统的调试过程:192.3嵌入式系统的调试嵌入式系统的调试方法:1.源程序模拟器方式2.监控器方式3.仿真器方式20源程序模拟器方式源程序模拟器(Simulator)是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具。注意:模拟器的功能毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很有可能与实际处理器有相当大的差别。另外,它无法仿真嵌入式系统在应用系统中的实际执行情况。比如:ARM公司的ARMulator模拟器21监控器方式监控器(Monitor)调试方式需要目标机与宿主机协调。首先,在宿主机和目标机之间通过串口、以太口等建立物理连接,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序,从而建立宿主机与目标机的逻辑连接。宿主机通过调试器与目标机的监控器建立通信连接,它们相互间的通信遵循远程调试协议。比如ARM公司的Angel。22仿真器方式仿真器调试方式是在微处理器的内部嵌入额外的控制模块。当特定的触发条件满足时,系统将进入某种特殊状态。在这种状态下,被调试的程序暂时停止运行,宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器、存储器资源,并执行相应的调试指令。在宿主机的通信端口和目标板调试通信接口之间,通信接口的引脚信号可能存在差异,因此在这两者之间往往可以通过一块信号转换电路板连接。一般高档的微处理器都带JTAG(JointTestActionGroup,联合测试行动组)接口,它是一种边界扫描标准,只需5根引脚就可以实现在线仿真的功能。232.4板级支持包由于嵌入式系统中采用微处理器/微控制器的多样性,嵌入式操作系统的可移植性显得更加重要。所以有些嵌入式操作系统的内核明确分成两层,上层一般称为“内核”,而低层则称为“硬件抽象层”,底层的缩写是HAL,也有的厂商(如VxWorks的提供者WindRiver公司)把硬件抽象层称为BSP,即板级支持包(BoardSupportPackage)。板级支持包是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。板级支持包的主要功能包括两部分:在系统启动时,对硬件进行初始化为驱动程序提供访问硬件的手段24小结嵌入式系统开发的代码生成是在PC机上完成,但由于嵌入式目标平台的不同,就要求在开发机上的编译器能支持交叉编译(例如GCC)、链接,然后将程序的代码下载到目标机上指定位置,然后还要交叉调试。调试器还是运行在宿主机的操作系统上,被调试的程序是放在目标机上,通过串口或网络接口相连接。主要流程为:编写-交叉编译、链接-定位和下载-调试。嵌入式系统采用这种开发模式主要是自身的特点决定的。25第3章ARM体系结构(一)26主要内容3.1ARM体系结构简介3.2ARM微处理器的工作状态3.3ARM体系结构的存储器格式3.4指令长度及数据类型3.5处理器模式3.6寄存器组织3.7异常(Exceptions)273.1ARM体系结构简介ARM公司1990年成立于英国剑桥,是专门从事基于RISC技术芯片设计开发的公司,主要出售芯片设计技术的授权,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,使得ARM技术获得了更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场,更具有竞争力。283.1ARM体系结构简介采用RISC架构的ARM微处理器一般具有如下特点:●支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度;●指令执行采用3级流水线/5级流水线技术;●带有指令Cache和数据Cache,大量使用寄存器,指令执行速度更快。大多数数据操作都在寄存器中完成。寻址方式灵活简单,执行效率高。指令长度固定(在ARM状态下是32位,在Thumb状态下是16位);●支持大端格式和小端格式两种方法存储字数据;29●支持Byte(字节,8位)、Halfword(半字,16位)和Word(字,32位)三种数据类型。●支持用户、快中断、中断、管理、中止、系统和未定义等7种处理器模式,除了用户模式外,其余的均为特权模式;●处理器芯片上都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以避免使用昂贵的在线仿真器。●具有片上总线AMBA。1ARM体系结构简介30●采用存储器映像I/O的方式,即把I/O端口地址作为特殊的存储器地址;●体积小、低成本、高性能。ARM微处理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、以及Intel的StrongARM、XScale和其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。一个典型的ARM体系结构方框图如图所示,包含有32位ALU、31个32位通用寄存器及6位状态寄存器、32×8位乘法器32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器等。3.1ARM体系结构简介31图3.1.1ARM体系结构方框图321.ALUARM体系结构的ALU由两个操作数锁存器、法器、逻辑功能、结果及零检测逻辑构成。2.桶形移位寄存器ARM采用了32×32位桶形移位寄存器,左移/右移n位、环移n位和算术右移n位等都可以一次完成,可以有效的减少移位的延迟时间。3.高速乘法器ARM为了提高运算速度,采用两位乘法的方法,2位乘法可根据乘数的2位来实现“加-移位”运算。3.1ARM体系结构简介334.浮点部件在ARM体系结构中,浮点部件作为选件可根据需要选用5.控制器ARM的控制器采用硬接线的可编程逻辑阵列PLA,其输入端有14根、输出端有40根,分散控制Load/Store多路、乘法器、协处理器以及地址、寄存器ALU和移位器。6.寄存器ARM内含37个寄存器,包括31个通用32位寄存器和6个状态寄存器。3.1ARM体系结构简介343.1ARM体系结构简介ARM微处理器支持两种指令集:ARM指令集:ARM指令为32位的长度Thumb指令集:Thumb指令为16位长度Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。353.2ARM微处理器的工作状态ARM微处理器的工作状态有两种:ARM状态,此时处理器执行32位的、字对齐的ARM指令;Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。ARM微处理器在开始执行代码时,应该处于ARM状态,同时中断程序的入口代码也必须是ARM
本文标题:第二章-嵌入式系统开发流程
链接地址:https://www.777doc.com/doc-5840615 .html