[计算机硬件及网络]第六章 嵌入式软件系统设计.doc
《[计算机硬件及网络]第六章 嵌入式软件系统设计.doc》由会员分享,可在线阅读,更多相关《[计算机硬件及网络]第六章 嵌入式软件系统设计.doc(55页珍藏版)》请在三一办公上搜索。
1、第六章 嵌入式软件系统设计嵌入式系统开发包括软件开发和硬件开发,在嵌入式系统总体方案设计之后,嵌入式系统软件开发与硬件开发可以并行实施。嵌入式软件设计1 结构与方法2 设计范型与编程3 嵌入式操作系统4 异常与中断l 嵌入式软件开发过程l ARM软件开发工具ADS IDE简介l ARM软件设计与代码分析6.1 嵌入式系统软件开发概述 嵌入式系统软件的开发与传统软件开发有许多共同点,它继承了许多传统软件开发的习惯,由于嵌入式软件运行于特定的目标应用环境,因此嵌入式软件的开发亦有其特殊的要求,即需要有交叉的开发环境,程序需要固化,同时开发的嵌入式软件对实时性、稳定性、可靠性有苛刻的要求。1、嵌入式
2、系统软件开发流程q 需求分析阶段:确定设计任务和目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准;确定嵌入式软件开发工具、嵌入式软件运行环境。q 设计阶段:包括概要设计和详细设计。概要设计描述系统如何实现所述的需求,包括数据流分析、功能模块的划分、系统的软件开发工具选择以及关键问题的论证等。q详细设计是描述各个模块的实现方法与过程,确定任务的结构及给出任务模块间接口定义等问题,给出每个任务模块的程序流程图,以作为编码人员的编码准则。q编码实现阶段:包括代码编程、交叉编译和交叉链接/定位、交叉调试。代码编程是依据详细设计形成的流程图、接口参数传递规则,分层次、分模块编制相应的源程序代码
3、。交叉编译和交叉链接是指在编码完成后,要进行编译和链接一生成可执行代码的工作,所谓交叉编译就是指在一个平台上生成另一个平台上的可执行代码,即在宿主机(PC)上生成目标机(嵌入式系统)上的可执行代码。交叉调试是指编码编译完成后进行调试阶段。嵌入式软件开发需要交叉开发环境,调试采用的是包括目标机和宿主机的调试方法。调试器运行在宿主机的通用操作系统上,而被调试程序则运行在基于特定硬件平台的嵌入式系统上,调试器与被调试程序间可以进行通信,调试器可以控制、访问被调试程序,读取其当前状态和改变其运行状态。软件调试分为单元调试和集成调试。单元调试是指编码完成后,对各个模块进行单元调试(单独调试),以保证单模
4、块正常工作。 集成调试是指将各分离的模块按照功能层次逐级连接调试。其关键在于解决个功能模块的互连和互操作性问题。软件固化与测试:在上述的交叉调试过程中,被调试程序的运行是在目标机的RAM中被执行的。嵌入式软件大多是要驻留在目标环境的非易失性存储器中或在其中运行,因此目标程序要烧写到目标机的Flash中固化,保证每次运行后下一次运行无误。嵌入式应用软件调试完成后,编译器要对源代码重新编译一次,以产生固化到目标机的可执行代码,再烧写到目标机的Flash中。固化的可执行代码与用于调试的可执行代码有些不同,固化的代码在目标文件中把调试的信息都屏蔽掉了。测试是指在可执行代码烧写到目标机中固化后,还要进行
5、运行的测试,以保证程序的运行正确无误。一般是对开发的软件进行系统的功能测试和性能测试。通过功能测试来发现软件存在功能上的不足,给出完善的解决办法;通过性能测试(负载测试和压力测试)来检验软件在稳定性和健壮性等性能指标上是否达到要求,发现问题并给出解决方案。2、ARM主流开发工具嵌入式系统开发涉及多种软/硬件开发工具。选择合适的开发工具可以加快开发进度,降低开发成本。从软件开发角度来讲,一套含有交叉编译器、汇编器、连接器、调试器和工程管理工具的开发套件是必不可少的,当然开发者也可以根据实际情况和开发需要来选用嵌入式操作系统(移植、定制)、函数库、评估板、JTAG仿真器、在线仿真器等工具。这样的开
6、发套件运行在宿主机(PC)上,在Windows环境下,有ARM公司的软件开发工具包(SDT)、ADS和RVDS。在Linux环境下,主要有GNU开发工具。ARM RealView Developer Suite 2.2(RVDS)ARM_RVDS(RealView Developer Suite)是ARM公司推出的新一代开发工具包,它由RealView编译器(RVCT)、汇编器(armasm)、连接器(armlinker)、调试器(RVDebugger)组成。它含有先进的代码生成工具并根据Cortex-A8处理器的特性进行了增进,从而能够提供杰出的性能和无以伦比的代码密度。ARM RealVi
7、ew开发工具包是一套完整的、高性价比开发调试工具,用于半导体通用32位微控制器(MCU)产品。RVDS 4.0标准版适用于所有的ARM7、ARM9、ARM10、ARM11、MP-Core、SCx00、Cortex-M3、Cortex-M1、Cortex-R4F和Cortex-A8处理器,08年10月新推出的RVDS 4.0专业版除了延伸支持到Cortex-A9以外,还具有独特的运行时优化功能、ARM向量化NEON编译器、ARM Profiler和ARM超快速模块(ARM926EJ-S、ARM1136J(F)-S、ARM1176JZ(F)-S、Cortex-R4、Cortex-A8和单核Cort
8、ex-A9)。RVDS 4.0专业版的演示版从2008年10月15日开始就已经可以从亿道电子公司的网站上免费下载。厂商、ARM针对采用Intel XScale(技术的网络基础设施、无线和存储设备,推出ARM Real View开发工具组。该工具组提供最佳编码生成功能,同时可降低开发成本。作为唯一支持所有顺应ARM结构的Intel Xscale处理器的工具组,RealView能帮助开发人员增强应用功能。ARM Developer Suite(ADS) ADS全称为ARM Developer Suite,是ARM公司提供的专门用于ARM相关应用开发和综合调试的综合性软件。ADS由命令行开发工具、A
9、RM运行时库、GUI开发工具(Code Warrior和AXD)、实用程序和支持软件组成。它支持所有ARM系列处理器,除了可以安装在 Windows NT4, Windows2000操作系统下,还支持 Windows XP 操作系统和RedHat Linux。在Windows操作系统环境下,通常选用ARM_RVDS、ARM ADS/SDT + 调试器来开发嵌入式软件。在Linux操作系统环境下,主要使用GNU(GNUs Not Unix)开发工具,因为这些工具相互兼容、前后贯穿、彼此配合,因此又称为GNU/Linux ARM 工具链或GNU/Linux ARM 交叉工具链. 3、常用调试方法开
10、发ARM应用程序时,程序编辑、编译、汇编、链接等都可以在宿主机上完成,但是调试工作则需要其它的硬件模块或工具配合。目前常用的调试方法和工具有指令集模拟器、驻留监控软件、JTAG仿真器和在线仿真器等。软件仿真(指令模拟器):指令模拟器是完全基于PC宿主机的软件仿真,可以模拟目标中的处理器的功能和指令。指令模拟器一般与编译器集成在同一环境中,可以方便用户在宿主机上调试应用程序和代码,但因指令模拟器与实际的硬件环境有一定差异,所以只能用于进行初步的调试。ARMulator就是一个指令模拟器,在Windows和Linux系统都有实现。驻留监控调试:驻留监控软件是一段运行在目标板上的可执行程序,它主要负
11、责监控目标机上的被调试程序的运行情况,与宿主机端的调试器一起完成对应用程序的调试。PC宿主机上的调试器通过网口、并行端口、串行端口或USB口等通信端口与驻留监控软件交互。调试器发送命令给驻留监控软件,由驻留监控软件控制程序执行、读写寄存器和存储器、设置断点等,从而实现调试。这种方法对硬件要求高,一般在硬件稳定之后进行,需要占用目标板上的一部分资源,不能对程序的全速运行进行完全仿真。ARM公司的Angel就是一种常驻在目标机Flash中的驻留监控软件,只需通过RS_232C串口与PC宿主机相连,就可以在PC宿主机对使用ARM处理器的目标机进行开发与调试。被调试程序通过监控程序下载到目标机上后,就
12、可开始进行调试。Angel的主要功能:具有Debug调试功能。支持Angel调试协议(ADP),能够实现PC宿主机与目标机的串行或并行通信。具有多任务调度和处理器模式管理功能。支持中断功能q JTAG仿真器:JTAG仿真器又称为JTAG调试器,通过ARM芯片的内嵌JTAG边界扫描接口和CPU核通信,进行调试。开发套件配合JTAG仿真器是目前使用最多的调试方式。在线仿真器(ICE)使用仿真头完全取代目标板上的CPU,从而完全仿真ARM芯片的行为,提供更深入的调试能力。这种完全非插入式调试,不使用片上资源,无需目标存储器,不占用目标系统的任何端口,仿真效果更加接近于目标硬件,但成本高。q 4、AR
13、M映像文件格式映像文件(image)是计算机上的一个可执行文件,在执行之前被加载到计算机存储器中,通常一个映像文件中包含多个线程。ARM集成开发环境中的各种源文件(汇编程序、C程序以及C+)经过ARM编译器编译之后,生成ELF格式的目标文件。这些目标文件和相应的C/C+运行时库经过ARM连接器连接后,生成.axf映像文件。.axf映像文件也是ELF格式,只是包含特定格式的调试信息,可以在开发板上调试运行。映像文件调试结束后,可以使用fromelf工具将映像文件中的调试信息和注释过滤掉,生成二进制的可加载映像文件(通常带后缀.bin)。可加载映像文件可以烧写到目标机的Flash中,在加电启动过程
14、中被执行。ELF文件格式:ELF(Executable and Linking Format)格式是可执行连接文件格式,是UNIX系统实验室(USL)作为一种应用程序二进制文件接口而开发和发布的。工具接口委员会选择了正在发展中的ELF标准作为工作在32位Intel体系结构上不同操作系统之间可移植的二进制文件格式。ELF文件是x86 Linux下的一种常用目标文件格式,也是ARM处理器的常用目标文件格式。ELF文件主要有3种类型:l 适用于连接的可重定位文件:可与其它目标文件一起创建可执行文件和共享目标文件。l 适用于执行的可执行文件:规定了如何创建一个程序的进程映像,加载到内存执行。l 共享目
15、标文件:连接器可以把它与其它可重定位文件和目标文件连接成其它的目标文件。ELF文件有双重特性(可重定位,可执行),ARM连接器把ELF文件当作由节头部表(section header table)描述的一组逻辑节,而系统加载器则把ELF文件当作由程序头部表(Program header table)描述的一组代码段,一个代码段通常由几个节组成。由于ELF文件既可以是可重定位的目标文件,又可以是可执行文件。因此可以用下面两个视图来观察ELF文件的主体结构。ELF文件格式的两种视图ARM映像文件的组成:ARM处理器的映射文件是.axf文件或者.bin文件。 .axf文件和.bin文件的区别是前者包
16、含了调试信息和注释信息,后者没有。编译器输出的ARM映像文件以.axf文件为主,通过fromelf工具,可以把.axf文件转换成.bin文件。实际下载到目标系统板的映像文件多数是.bin文件格式。1. ARM的ELF文件的内部结构(表):ELF头信息程序头部表代码段数据段未初始化全局变量“.symtabl”节“.strtab”节“.shstrtab”节调试节节头部表 表中只有ELF头部信息是国定的,其余部分实际顺序可能有所不同。ELF文件其余部分的位置由ELF头部信息、程序头部表和节头部表定义。 2.ARM的ELF文件的段结构:有3个段ARM的ELF文件有三种段结构。Text段包含可执行的代码
17、。Data段包含经过初始化的可读可写的数据。Bss(Block Started by Symbol)段用来存放程序中未初始化的全局变量的一块内存区域。Bss段属于静态内存分配,存放未初始化的全局C变量。 3.ARM的ELF文件的节结构: 在ELF文件规范中,一个可执行目标文件能够包含一个节头表,由节头表对文件中的节进行定义。在ARM的ELF文件中,所有的可执行代码至少具有两个节,除非激活连接器附带了“nodebug”参数。 这两个节分别是:符号表节(Symbol table section)字符串表节(string table section)节名称字符串表(section name stri
18、ng table),它保存了所有节的文字名称。调试节:ARM的ELF文件支持三种类型的调试信息,这三种调试信息都存放在调试节里。可执行ELF文件的连接器通过检查该目标代码的节表就能够分辨出这三种调试信息。4.目标文件和映像文件的内部结构块:ARM映像文件的内部组织有层次结构的性质,映像文件含有3种成分:域(region),输出段(output section),输入段(input section)。各输入段包含了目标文件中的代码和数据。连接器读入并处理若干个由程序员指定的输入段,而后输出一个映像文件。一个映像文件由一个或多个域组成,每个域包含13个输出段,每个输出段包含了一个或多个输入段。图示
19、给出了映像文件的生成过程。输入段的属性有:段属性:RO,RW,ZI(Zero-Initialized)ARM映像文件生成:目标文件_输入段ARM Link输出段_映像文件图示:ARM映像文件生成P1875.映像文件的加载视图和执行视图:映像文件域在加载时被映射存放到系统存储区。在执行映像时,往往需要移动一些域到执行地址并产生ZI输出段。譬如,初始化的RW数据也许要被迫从ROM区的加载地址拷贝到RAM区的执行地址。加载视图:根据映像文件装载到存储器时的地址描述每一个域和段,该视图是映像文件开始执行前,它的域和段的位置视图。执行视图:该视图是根据映像文件在执行时每一个域和段的地址描述,映像的各个组
20、成部分。图示:1P188a)加载时的地址映像 b)执行时的地址映像6.使用配置文件定义映像文件的的地址映像: 分组信息 定位信息图示:2P189ADT for ARM集成开发系统 6.2 ARM_ADS集成开发环境介绍ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期ARM SDT。它支持所有ARM系列处理器,除了可以安装在 Windows NT4, Windows2000操作系统下,还支持 Windows XP 操作系统和RedHat Linux。ADS由命令行开发工具、ARM运行时库、GUI开发工具(C
21、ode Warrior和AXD)、实用程序和ARM支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的应用开发程序了。6.2.1 ARM_ ADS GUI开发工具 ARM_ ADS GUI 开发工具主要包括两个独立的工具:ARM Code Warrior IDE(代码斗士集成开发环境)和AXD((ARM eXtended Debugger ARM扩展调试器)1ARM Code Warrior IDEARM Code Warrior IDE集成了ADS的命令工具(包括编辑器,ARM汇编器,ARM和Thumb 的C/C+编译器,链接器,符号调试器,运行库等),用户可以
22、在Code Warrior IDE(Integrated Development Environment )为ARM配置各种命令工具,实现对工程代码的编辑、编译、汇编和链接。ARM Code Warrior IDE为管理和开发项目提供了简单多样化的图形用户界面,可以加快并简化嵌入式系统开发过程的每个环节,缩短了用户开发项目代码的周期。可以使用ADS的Code Warrior IDE为ARM和Thumb处理器开发用C、C+或ARM汇编语言的程序代码,为开发者提供全面的项目管理功能和子函数的代码导航能力,使得用户迅速找到程序中的子函数。Code Warrior IDE能够让用户将源代码文件、库文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件及网络 计算机硬件及网络第六章 嵌入式软件系统设计 计算机硬件 网络 第六 嵌入式 软件 系统 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4561420.html