交叉开发环境
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
然而,在进行嵌入式系统的开发时,运行程序的目标平 台通常具有有限的存储空间和运算能力等,例如常见的 ARM平台,其一般的静态存储空间大概是16~32 MB,而 CPU的主频大概在100~500 MHz之间。这种情况下,在
第4章 交叉开发环境
ARM平台上进行本机编译就不太可能了。这是因为一般的 编译工具链(compilation tool chain)需要很大的存储空间,并 需要很强的CPU运算能力。为了解决这个问题,交叉编译工 具就应运而生了。通过交叉编译工具,我们就可以在CPU能 力很强、存储空间足够的主机平台上(比如PC上)编译出针对 其他目标平台的可执行程序,再下载到目标平台上的特定位 置上运行。
开发工具一般是IDE(集成开发环境),它集成了编译器 (用于编译目标CPU识别的机器代码)、编辑器、仿真调试器 等诸多工具,如果用C语言编写程序,可能还包括相应的标 准C库。
第4章 交叉开发环境
宿主机/目标机开发模式就是在一个CPU上运行一个程 序,另一个CPU编译和调试程序。和它对应的是宿主机开发 模式,就是在自己的CPU上编译和运行自己的程序,比如在 PC机上用VC编译程序直接运行。因此,宿主机/目标机开发 模式并不是一个新名词。
第4章 交叉开发环境
第4章 交叉开发环境
4.1 交叉编译 4.2 交叉开发环境 4.3 交叉开发工具组成 4.4 宿主机与目标机之间的通信方式 4.5 交叉开发环境建立 4.6 基于UP-NETARM2410-S开发平台交叉开发环境建立 4.7 交叉编译和交叉调试实例 本章小结
第4章 交叉开发环境
第4章 交叉开发环境
2. 交叉调试器和系统仿真器 嵌入式软件经过编译和链接后即进入调试阶段,嵌入式 软件开发过程中的交叉调试与通用软件开发过程中的调试方 式有所差别。 在通用软件开发中,调试器与被调试的程序往往运行在 同一台计算机上,调试器是一个单独运行着的进程,它通过 操作系统提供的调试接口来控制被调试的进程。 在嵌入式软件开发中,调试时采用的是在宿主机和目标 机之间进行的交叉调试,调试器仍然运行在宿主机的通用操 作系统之上,但被调试的进程却是运行在基于特定硬件平台 的嵌入式操作系统中,调试器和被调试进程通过串口或者
图4-1 交叉开发环境模式
第4章 交叉开发环境
宿主机(Host)是一台通用计算机(如PC机或者工作站), 功能较强,各种Linux 发行版本可以直接在PC机上安装,功 能十分强大。它不仅能够支持各种处理器和外围设备接口, 而且提供了图形化的用户交互界面和丰富的开发环境,更重 要的是Linux 系统性能稳定。它为开发者提供了以下功能:
① 非常稳定的多任务操作系统; ② 丰富的设备驱动程序支持和网络工具; ③ 强大的Shell; ④ 本地编译器; ⑤ 编辑器; ⑥ 图形化的用户界面。
第4章 交叉开发环境
4.3 交叉开发工具组成
1. 交叉编译器和交叉链接器 在完成嵌入式软件的编码之后,需要进行编译和链接, 以生成可执行代码。由于开发过程大多是在使用Intel公司 x86系列CPU的通用计算机上进行的,而目标环境的处理器 芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列 的微处理器,这就要求在建立好的交叉开发环境中进行交叉 编译和链接。 交叉编译器和交叉链接器是能够在宿主机上运行,并且 能够生成在目标机上直接运行的二进制代码的编译器和链接 器。例如在基于ARM体系结构的交叉开发环境中,armlinux-gcc是交叉编译器,arm-linux-ld是交叉链接器。
交叉编译环境说明的问题和上面的一样,只是针对编译 环境而言,这里的环境包括目标CPU的编译器和库文件等, 至于为什么叫交叉编译,同样是因为运行编译程序的CPU不 是在为自己工作,而是在编译另一个CPU的程序。这样说来, 以上例子中的编译环境同样属于一个交叉编译环境(在PC机 上编译单片机程序),只不过都被IDE集成好了。
可见,以这种方式开发嵌入式系统软件的过程需要相应 的开发环境。于是就有了交叉开发环境的模式,即宿主机/ 目标机模式。
第4章 交叉开发环境
4.2 交叉开发环境
在开发单片机系统时,需要使用一台主机外加操作系统, 如Windows 2000,再装上单片机厂商提供的开发软件,即 开发环境,在开发环境里面编译程序,用鼠标单击“build” 快捷键,即生成的可执行程序配合仿真器还可以进行单步调 试、观察寄存器等。
第4章 交叉开发环境 综上所述,编译、链接和调试嵌入式应用软件的环境, 它与运行嵌入式应用软件的环境有所不同,这样的环境称为 交叉开发环境(Cross Development Environment)。 需要交叉开发环境的支持是嵌入式软件开发时的一个显 著特点。交叉开发环境模式一般如图4-1所示。
一般而言,远程调试过程的结构如图4-2所示。
第4章 交叉开发环境 图4-2 远程调试结构图
第4章 交叉开发环境
由上可知交叉调试典型特点如下: (1) 调试器和被调试进程运行在不同的机器上,调试器 运行在PC或者工作站上(宿主机),而被调试的进程则运行在 各种专业调试板上(目标机)。 (2) 调试器通过某种通信方式与被调试进程建立联系, 如串口、并口、网络、DBM、JTAG或者专用的通信方式。 (3) 在目标机上一般会具备某种形式的调试代理,它负 责与调试器共同配合完成对目标机上运行着的进程的调试。 这种调试代理可能是某些支持调试功能的硬件设备(如DBI 2000),也可能是某些专门的调试软件(如gdbserver)。
4.1 交 叉 编 译
交叉编译这个概念的出现和流行是和嵌入式系统的广泛 发展同步的。常用的计算机软件都需要通过编译的方式,把 使用高级计算机语言编写的代码(比如C代码)编译成计算机 可以识别和执行的二进制代码。比如在 Windows平台上, 可使用Visual C++ 开发环境编写程序并编译成可执行程序。 这种方式下,我们使用PC平台上的Windows工具开发针对 Windows本身的可执行程序,这种编译过程称为本机编译。
第4章 交叉开发环境
网络进行通信,调试器可以控制、访问被调试进程,读取被 调试进程的当前状态,并能够改变被调试进程的运行状态。
交叉调试(Cross Debug)又常常被称为远程调试(Remote DBiblioteka Baidubug),是一种允许调试器以某种方式控制目标机上被调试 进程的运行方式,并具有查看和修改目标机上内存单元、寄 存器以及被调试进程中变量值等各种调试功能的调试方式。
第4章 交叉开发环境
ARM平台上进行本机编译就不太可能了。这是因为一般的 编译工具链(compilation tool chain)需要很大的存储空间,并 需要很强的CPU运算能力。为了解决这个问题,交叉编译工 具就应运而生了。通过交叉编译工具,我们就可以在CPU能 力很强、存储空间足够的主机平台上(比如PC上)编译出针对 其他目标平台的可执行程序,再下载到目标平台上的特定位 置上运行。
开发工具一般是IDE(集成开发环境),它集成了编译器 (用于编译目标CPU识别的机器代码)、编辑器、仿真调试器 等诸多工具,如果用C语言编写程序,可能还包括相应的标 准C库。
第4章 交叉开发环境
宿主机/目标机开发模式就是在一个CPU上运行一个程 序,另一个CPU编译和调试程序。和它对应的是宿主机开发 模式,就是在自己的CPU上编译和运行自己的程序,比如在 PC机上用VC编译程序直接运行。因此,宿主机/目标机开发 模式并不是一个新名词。
第4章 交叉开发环境
第4章 交叉开发环境
4.1 交叉编译 4.2 交叉开发环境 4.3 交叉开发工具组成 4.4 宿主机与目标机之间的通信方式 4.5 交叉开发环境建立 4.6 基于UP-NETARM2410-S开发平台交叉开发环境建立 4.7 交叉编译和交叉调试实例 本章小结
第4章 交叉开发环境
第4章 交叉开发环境
2. 交叉调试器和系统仿真器 嵌入式软件经过编译和链接后即进入调试阶段,嵌入式 软件开发过程中的交叉调试与通用软件开发过程中的调试方 式有所差别。 在通用软件开发中,调试器与被调试的程序往往运行在 同一台计算机上,调试器是一个单独运行着的进程,它通过 操作系统提供的调试接口来控制被调试的进程。 在嵌入式软件开发中,调试时采用的是在宿主机和目标 机之间进行的交叉调试,调试器仍然运行在宿主机的通用操 作系统之上,但被调试的进程却是运行在基于特定硬件平台 的嵌入式操作系统中,调试器和被调试进程通过串口或者
图4-1 交叉开发环境模式
第4章 交叉开发环境
宿主机(Host)是一台通用计算机(如PC机或者工作站), 功能较强,各种Linux 发行版本可以直接在PC机上安装,功 能十分强大。它不仅能够支持各种处理器和外围设备接口, 而且提供了图形化的用户交互界面和丰富的开发环境,更重 要的是Linux 系统性能稳定。它为开发者提供了以下功能:
① 非常稳定的多任务操作系统; ② 丰富的设备驱动程序支持和网络工具; ③ 强大的Shell; ④ 本地编译器; ⑤ 编辑器; ⑥ 图形化的用户界面。
第4章 交叉开发环境
4.3 交叉开发工具组成
1. 交叉编译器和交叉链接器 在完成嵌入式软件的编码之后,需要进行编译和链接, 以生成可执行代码。由于开发过程大多是在使用Intel公司 x86系列CPU的通用计算机上进行的,而目标环境的处理器 芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列 的微处理器,这就要求在建立好的交叉开发环境中进行交叉 编译和链接。 交叉编译器和交叉链接器是能够在宿主机上运行,并且 能够生成在目标机上直接运行的二进制代码的编译器和链接 器。例如在基于ARM体系结构的交叉开发环境中,armlinux-gcc是交叉编译器,arm-linux-ld是交叉链接器。
交叉编译环境说明的问题和上面的一样,只是针对编译 环境而言,这里的环境包括目标CPU的编译器和库文件等, 至于为什么叫交叉编译,同样是因为运行编译程序的CPU不 是在为自己工作,而是在编译另一个CPU的程序。这样说来, 以上例子中的编译环境同样属于一个交叉编译环境(在PC机 上编译单片机程序),只不过都被IDE集成好了。
可见,以这种方式开发嵌入式系统软件的过程需要相应 的开发环境。于是就有了交叉开发环境的模式,即宿主机/ 目标机模式。
第4章 交叉开发环境
4.2 交叉开发环境
在开发单片机系统时,需要使用一台主机外加操作系统, 如Windows 2000,再装上单片机厂商提供的开发软件,即 开发环境,在开发环境里面编译程序,用鼠标单击“build” 快捷键,即生成的可执行程序配合仿真器还可以进行单步调 试、观察寄存器等。
第4章 交叉开发环境 综上所述,编译、链接和调试嵌入式应用软件的环境, 它与运行嵌入式应用软件的环境有所不同,这样的环境称为 交叉开发环境(Cross Development Environment)。 需要交叉开发环境的支持是嵌入式软件开发时的一个显 著特点。交叉开发环境模式一般如图4-1所示。
一般而言,远程调试过程的结构如图4-2所示。
第4章 交叉开发环境 图4-2 远程调试结构图
第4章 交叉开发环境
由上可知交叉调试典型特点如下: (1) 调试器和被调试进程运行在不同的机器上,调试器 运行在PC或者工作站上(宿主机),而被调试的进程则运行在 各种专业调试板上(目标机)。 (2) 调试器通过某种通信方式与被调试进程建立联系, 如串口、并口、网络、DBM、JTAG或者专用的通信方式。 (3) 在目标机上一般会具备某种形式的调试代理,它负 责与调试器共同配合完成对目标机上运行着的进程的调试。 这种调试代理可能是某些支持调试功能的硬件设备(如DBI 2000),也可能是某些专门的调试软件(如gdbserver)。
4.1 交 叉 编 译
交叉编译这个概念的出现和流行是和嵌入式系统的广泛 发展同步的。常用的计算机软件都需要通过编译的方式,把 使用高级计算机语言编写的代码(比如C代码)编译成计算机 可以识别和执行的二进制代码。比如在 Windows平台上, 可使用Visual C++ 开发环境编写程序并编译成可执行程序。 这种方式下,我们使用PC平台上的Windows工具开发针对 Windows本身的可执行程序,这种编译过程称为本机编译。
第4章 交叉开发环境
网络进行通信,调试器可以控制、访问被调试进程,读取被 调试进程的当前状态,并能够改变被调试进程的运行状态。
交叉调试(Cross Debug)又常常被称为远程调试(Remote DBiblioteka Baidubug),是一种允许调试器以某种方式控制目标机上被调试 进程的运行方式,并具有查看和修改目标机上内存单元、寄 存器以及被调试进程中变量值等各种调试功能的调试方式。