- 1、本文档共54页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
交叉开发环境.ppt
4.1 交 叉 编 译 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。常用的计算机软件都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译成计算机可以识别和执行的二进制代码。比如在 Windows平台上,可使用Visual C++?开发环境编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为本机编译。 然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力等,例如常见的ARM平台,其一般的静态存储空间大概是16~32?MB,而CPU的主频大概在100~500?MHz之间。这种情况下,在 ARM平台上进行本机编译就不太可能了。这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储空间足够的主机平台上(比如PC上)编译出针对其他目标平台的可执行程序,再下载到目标平台上的特定位置上运行。 可见,以这种方式开发嵌入式系统软件的过程需要相应的开发环境。于是就有了交叉开发环境的模式,即宿主机/目标机模式。 4.2 交叉开发环境 在开发单片机系统时,需要使用一台主机外加操作系统,如Windows 2000,再装上单片机厂商提供的开发软件,即开发环境,在开发环境里面编译程序,用鼠标单击“build”快捷键,即生成的可执行程序配合仿真器还可以进行单步调试、观察寄存器等。 开发工具一般是IDE(集成开发环境),它集成了编译器(用于编译目标CPU识别的机器代码)、编辑器、仿真调试器等诸多工具,如果用C语言编写程序,可能还包括相应的标准C库。 宿主机/目标机开发模式就是在一个CPU上运行一个程序,另一个CPU编译和调试程序。和它对应的是宿主机开发模式,就是在自己的CPU上编译和运行自己的程序,比如在PC机上用VC编译程序直接运行。因此,宿主机/目标机开发模式并不是一个新名词。 交叉编译环境说明的问题和上面的一样,只是针对编译环境而言,这里的环境包括目标CPU的编译器和库文件等,至于为什么叫交叉编译,同样是因为运行编译程序的CPU不是在为自己工作,而是在编译另一个CPU的程序。这样说来,以上例子中的编译环境同样属于一个交叉编译环境(在PC机上编译单片机程序),只不过都被IDE集成好了。 综上所述,编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,这样的环境称为交叉开发环境(Cross Development Environment)。 需要交叉开发环境的支持是嵌入式软件开发时的一个显著特点。交叉开发环境模式一般如图4-1所示。 图4-1 交叉开发环境模式 宿主机(Host)是一台通用计算机(如PC机或者工作站),功能较强,各种Linux 发行版本可以直接在PC机上安装,功能十分强大。它不仅能够支持各种处理器和外围设备接口,而且提供了图形化的用户交互界面和丰富的开发环境,更重要的是Linux 系统性能稳定。它为开发者提供了以下功能: ① 非常稳定的多任务操作系统; ② 丰富的设备驱动程序支持和网络工具; ③ 强大的Shell; ④ 本地编译器; ⑤ 编辑器; ⑥ 图形化的用户界面。 4.3 交叉开发工具组成 1. 交叉编译器和交叉链接器 在完成嵌入式软件的编码之后,需要进行编译和链接,以生成可执行代码。由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。 交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。 2. 交叉调试器和系统仿真器 嵌入式软件经过编译和链接后即进入调试阶段,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有所差别。 在通用软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。 在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串
文档评论(0)