便携式航空发动机内窥检测系统开发环境的建立_第1页
便携式航空发动机内窥检测系统开发环境的建立_第2页
便携式航空发动机内窥检测系统开发环境的建立_第3页
免费预览已结束,剩余3页可下载查看

下载本文档

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

文档简介

1、便携式航空发动机内窥检测系统开发环境的建立由于嵌入式系统是专用的计算机系统,其硕件资源不如PC丰富,所以无法在嵌入式设备上建立i套开发系统.在开发嵌入式系统时,通常都采用交叉开发(CrossDevelopping)的模式:开发系统是建立在硬件资源丰富的PC机(或者工作站)上,通常称其为宿主机(Host),应用程序的编辑,编译,链接等过程都是在主机上完成的;而应用程序的最终运行在嵌入式设备上进行,通常称其为冃标机(Target);调试在二者间联机交互进行.基于上述交叉开发模式的开发系统被称为嵌入式交叉开发系统,它主要包括:交叉编译工具和交叉调试工具。而留卞.机和冃标机之间通常可以使用串口、以太网

2、接口、USB接口和JTAG接口等方式连接.4.2构建ARMLinux交叉编译工具链交叉编译即是在宿主机上生成目标机匕的可执行代码,这个过程必须要用交叉编译工具链來完成。在裁减和定制Linux内核用于嵌入式系统之前,由于嵌入式开发系统存储大小有限,通常都婆在性能优越的PC机上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC机上编译目标机上要运行的程序.交叉编译工具锥是一个由编译器、连接器和解释器组成的综合开发坏境,主要由binutils(创建、管理和维护二进制目标文件的工具程序人gee和glibc(C链接库三部分组成。一般来说,建立交叉工具链主要有以下三种方法:.分步编译和安装交叉编

3、译工具犍所需要的库和源代码,最终生成交叉编译工具链。通过Crosstool脚本工具来实现一次编译生成交叉编译工具縫。直接从网上下载已经制作好的交叉编译工具链。直接从网上下载是个简单快捷的办法.源码包町以从自由软件基金会(FreeSoftwareFoundation,FSF)的FTP网站或其镜像网站下载得到。离要注意的是,各个源码包必须配套使用才能顺利地完成交叉编译工作,另外!工具链的建立还会需要glibc的附加包:glibc-linuxtlireads,该包的版本号应与相应的glibc样.本系统的主机的普通PC机,目标机是SamsungS3C2410A,Linuxrt核为I.inux2.6.3

4、0,因此鼓终使用的软件源码包如表41所示:表4-1交义编译工貝链源码包Linux内核源代码binutilsgccgccglibcglibc-21.1glibc-linuxthreadsglibcinuxthrcads21.tar.gz交叉编译工具链建立好以后,就可以肓接在PC平台上编写、编译和链接棊于ARM的源代码,最终生成可在目标平台上运行的代码。4.3在主机平台上进行交叉编译和交叉调试交叉编译GCC(GNUCompilerCollection)是GNU推出的功能强大、性能优越的多平台编译器,它是Linux最垂要的软件开发工具.能将C/C+语言程序、汇编语言程序和目标程序编译、连接成可执行文

5、件。随着自身的发展,如今的GCC除了可以编译C语言夕卜,还能编译Ada、ObjectCJAVA、FortranPASCAL等多种高级语言,成为开发众多16位和32位嵌入式处理器的精选工具,GCC可以在多种硬件平台上编译岀可执行程序,其执行效率与一般的编译器相比平均要高20%30%叫GCC编译C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而且还要经历四个相互关联的步骤卩钟:预处理(也称预编译,Preprocessing)编译(Compilation)、汇编(Assembly)和链接(Linking).如图41所示:处理头文件和预编译语句(.C.CC)汇编代码目标代码可执行代码(.0)g

6、ut)图4-1GCC编译过程预处理(Preprocessing):GCC首先调用cpp(c.cc)进行预处理,在预处理过程中,对源代码文件中头文件(include).预编译语句(如宏定义define等)进行分析。把头文件复制到源文件中,并将输岀的内容送到系统的标准输出(如终端)。编译(Compilation):首先检査代码的语法错误,在检査无误后将预编译后的文件转换成汇编语言,生成.s文件。汇编(Assembly):在此阶段诡用汇编器(As)将汇编语吉代码变成目标代码(机器代码),生成.0文件。汇编阶段只是把汇编语言代码转换为目标代码(可重定向的目标文件),但不进行连接,目标代码不能在CPU上

7、运行。链接(Linking):当所有的目标文件都生成之后,GCC就调用连接器(Ld)将目标文件转换为可执行文件。在链接阶段,所有的目标文件被放在可执行文件中恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。GCC是以命令行的方式完成编译工作的,格式如下:gcc(-option*!-option2filenames在使用GCC编译器的时候,必须指定若干必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数很少用到,这里只介绍其中最常用的参数及其含义:只激活预处理,编译和汇编,编译器只是由输入的.c等源代码文件生成.0为后缀的目标文件。-g:产生

8、符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,就必须加入这个选项。-0;制定目标名称,缺省的时候,gcc编译出来的文件是a.outo-S:只激活预处理和编译,就是指把文件编译成为汇编代码。E:只激活预处理,不生成文件,需要把它重定向到一个输出文件里面。-llibrary:制定编译的时候使用的库。-undef:取消对任何非标准宏的定义。-pipe:使用管道代替编译中临时文件。-Idimame:将dimame所指岀的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。-ansi:关闭gnuc中与ansic不兼容的特性,激活ansic的专有特性(包括禁止一些asmin

9、linetypeof键字,以及UNIX,VAX等预处理宏)-linscrosrile:将file文件的宏,扩展到gcc/g+的输入文件,宏定义本身并不出现在输入文件中。fno-asm:此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。fcond-mismatch:允许条件衷达式的第二和第三参数类型不匹配,表达式的值将为void类型-xlanguagefilename:设定文件所使用的语言,使后缀名无效。-xnonefilename:关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型。-00-01-02-03:编译器的优化选项的4个级别,00

10、表示没有优化,01为缺省值,-03优化级别最高。对于一个完整的嵌入式软件开发过程来说,仅有GCC是不够的,还会用到其他一些编译工具,这将在下一节提到.交叉调试在开发嵌入式应用软件时,交叉调试(CrossDebugging)是嵌入式系统开发过程中必不可少的重要坏节,用于调试程序的工具就是调试器(Debugger)。交叉调试,又称为远程调试(RemoteDebug).是指调试程序和被调试程序运行在不同机器上的调试。调试器通过某种方式能控制目标机上被调试程序的运行方式,并且通过调试器査看和修改目标机上的内存、寄存器以及被调试程序中的变量。交叉调试具有以下一些特点均:调试器和被调试程序(Debugge

11、e)运行在不同的计算机上。调试器运行在主机上(普通PC机),而被调试程序则是运行在目标板上(实际的嵌入式设备)调试器通过某种通信方式与目标机建立联系。通信方式可以是串口、并口、网络、或者专用的通信方式。一般在目标机上有调试代理模块(Agent),它负责与交叉调试器共同配合以完成对目标机上运行着的进程的调试。交叉调试器和调试代理统称为嵌入式系统调试器。图4-2本系统开发中的交叉开发环境在本系统的交叉开发系统中,调试器是运行在宿主机PC机上,而被调试的程序则是运行在冃标机ARM:S3C2410A上,宿主机和目标机之间通过串口、网线方式连接。宿主机PC的调试器gdb通过目标机的通信模块STUB建立起逻辑连接。目标机程序代码先经宿主机上的编辑器编辑完成后,递交给编译器gc

温馨提示

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

评论

0/150

提交评论