您好,欢迎访问三七文档
华清远见——嵌入式培训专家系统开发班培训教材“黑色经典”系列之《嵌入式Linux系统开发技术详解——基于ARM》第4章交叉开发环境本章目标本章内容包括嵌入式交叉开发环境的概念和配置,以及应用程序交叉开发和调试的方法。交叉开发环境是嵌入式Linux开发的基础,后续的开发过程几乎都是基于交叉开发环境的。因此,理解和掌握本章内容会大大方便嵌入式Linux开发。交叉开发环境介绍建立交叉开发环境交叉调试应用程序华清远见——嵌入式培训专家交叉开发环境介绍本节将介绍交叉开发模型以及相关概念,为后面具体配置交叉开发环境做好概念上的准备。4.1.1交叉开发概念模型嵌入式系统是专用计算机系统,它对系统的功能、可靠性、成本、体积、功耗等某些方面有严格的要求。例如:PDA需要通过电池供电,需要尽可能降低功耗;网络交换机,不需要键盘显示等外围设备;还有大部分嵌入式设备没有磁盘等大容量存储设备。电信服务器也属于嵌入式系统范畴,尽管配置了显示器、键盘、鼠标等计算机外设,但是它更注重系统的可靠性,而不是用户界面的可操作性。由于嵌入式系统硬件上的特殊性,一般不能安装发行版的Linux系统。例如Flash存储空间很小,没有足够的空间安装;或者处理器很特殊,也没有发行版的Linux系统可用。所以需要专门为特定的目标板定制Linux操作系统,这必然需要相应的开发环境。于是人们想到了交叉开发模式。交叉开发模型如图4.1所示。图4.1所示中,TARGET就是目标板,HOST是开发主机。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序、内核和文件系统,然后在目标板上运行。通常这内核映像根文件系统内核映像HOSTTARGET下载内核映像各种连接方式挂接NFS文件系统图4.1交叉开发模型种在主机环境下开发,在目标板上运行的开发模式叫作交叉开发。在交叉开发环境下,开发主机也是工作站,可以给开发者提供开发工具;同时也是一台服务器,可以配置启动各种网络服务。在PC主机上,Linux已经成为优秀的计算机操作系统。各种Linux发行版本,可以直接在PC上安装,功能十分强大。它不仅能够支持各种处理器和外围设备接口,而且提供了图形化的用户交互界面和丰富的开发环境,更重要的是Linux系统性能稳定。它为开发者提供《嵌入式Linux系统开发技术详解——基于ARM》——第4章、交叉开发环境华清远见嵌入式Linux系统开发班培训教材了以下功能。•非常稳定的多任务操作系统•丰富的设备驱动程序支持和网络工具•强大的Shell•本地编译器•编辑器•图形化的用户界面RedhatLinux9版本对计算机要求的最低配置如下。•CPU主频400MHz以上•内存128MB•硬盘1.3GB推荐配置如下。•CPU主频1.0GHz以上•内存256MB•硬盘5GB采用目前主流的计算机配置,完全能够满足推荐配置。无论Linux图形界面响应,还是程序编译,速度都很快,操作起来就很流畅。这对于嵌入式Linux开发者来说,可以大大提高开发效率。对于交叉开发方式,一方面开发者可以在熟悉的主机环境下进行程序开发;另一方面又可以真实地在目标板系统上运行调试程序,可以避免受到目标板硬件的限制。这种开发方式贯穿嵌入式Linux系统开发的全过程。要建立交叉开发方式,需要主机与目标板之间建立连接,才能实现远程通讯、传输文件等功能。这依赖于不同连接方式。4.1.2目标板与主机之间的连接目标板和主机之间通常可以使用串口、以太网接口、USB接口以及JTAG接口等连接方式。下面分别介绍这些通讯接口的特点。(1)串行通讯接口串行通讯接口常用9针串口(DB9)和25针串口(DB25),通信距离较近时(12m),可以用电缆线直接连接标准RS232C端口;如果距离较远,就采用RS422或者RS485接口,需附加调制解调器(Modem)。其中最常用的是三线制接法,即地、接收数据和发送数据三脚相连,直接用RS232C相连,PC机上一般带有2个9针串口。串口常用信号引脚如图4.1所示。表4.1串口常用信号引脚引脚功能缩写DB9引脚号DB25引脚号数据载波检测DCD18接收数据RXD23发送数据TXD32华清远见——嵌入式培训专家通过串口可以作为控制台,向目标板发送命令,显示信息;也可以通过串口传送文件;还可以通过串口调试内核及程序。串口的设备驱动实现也比较简单。缺点是通讯速率慢,不适合大数据量传输。(2)以太网接口以太网以其高度灵活,相对简单,易于实现的特点,成为当今最重要的一种局域网建网技术。虽然其他网络技术也曾经被认为可以取代以太网的地位,但是绝大多数的网络管理人员仍然把以太网作为首选的网络解决方案。以太网IEEE802.3通常使用专门的网络接口卡或通过系统主电路板上的电路实现。以太网使用收发器与网络媒体进行连接。收发器可以完成多种物理层功能,其中包括对网络碰撞进行检测。收发器可以作为独立的设备通过电缆与终端站连接,也可以直接被集成到终端站的网卡当中。以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。通过查看包含在帧中的目标地址,确定是否进行接收或放弃。如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理。以太网采用CSMA/CD媒体访问机制,任何工作站都可以在任何时间访问网络。在发送数据之前,工作站首先需要侦听网络是否空闲,如果网络上没有任何数据传送,工作站就会把所要发送的信息投放到网络当中。否则,工作站只能等待网络下一次出现空闲的时候再进行数据的发送。作为一种基于竞争机制的网络环境,以太网允许任何一台网络设备在网络空闲时发送信息。因为没有任何集中式的管理措施,所以非常有可能出现多台工作站同时检测到网络处于空闲状态,进而同时向网络发送数据的情况。这时,发出的信息会相互碰撞而导致损坏。工作站必须等待一段时间之后,重新发送数据。补偿算法用来决定发生碰撞后,工作站应当在何时重新发送数据帧。网络接口一般采用RJ-45标准插头,PC机上一般都配置10M/100M以太网卡,实现局域网连接。通过以太网连接和网络协议,可以实现快速的数据通讯和文件传输。缺点是驱动程序实现比较麻烦,好在以太网接口的设备驱动也很多。(3)USB接口USB(UniversalSerialBus)接口支持热插拔,具有即插即用的优点,最多可连接127台外设,所以USB接口已经成为PC外设的标准接口。USB2有两个规范,即USB1.1和USB2.0。《嵌入式Linux系统开发技术详解——基于ARM》——第4章、交叉开发环境华清远见嵌入式Linux系统开发班培训教材USB1.1是较早的USB规范,其高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps。USB2.0规范则是最新的USB规范。它的传输速率达到了480Mbps,足以满足大多数外设的速率要求。USB2.0中的“增强主机控制器接口”(EHCI)定义了一个与USB1.1相兼容的架构。所有支持USB1.1的设备都可以直接在USB2.0的接口上使用而不必担心兼容性问题,而且像USB线、插头等附件也都可以直接使用。USB的设备支持热插拔,通讯速率也很快。缺点是USB设备区分主从端,两端分别要有不同的驱动程序支持。(4)JTAG等接口JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路测试接口(TAP,TestAccessPort),通过JTAG测试工具对芯片的核进行测试。它是联合测试行动小组(JTAG,JointTestActionGroup)定义的一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。JTAG接口的时钟一般在1MHz~16MHz之间,所以传输速率可以很快。但是实际的数据传输速度要取决于仿真器与主机端的通讯速度和传输软件。另外还有EJTAG(ExtendedJTAG)和BDM(BackgroundDebugMode)接口定义,分别在MIPS芯片和PowerPC5xx/8xx芯片上设计应用。这些接口的电气性能不同,但是功能大体上是相似的。4.1.3文件传输主机端编译的Linux内核影像必须有至少一种方式下载到目标板上执行。通常是目标板的引导程序负责把主机端的影像文件下载到内存中。根据不同的连接方式,可以有多种文件传输方式,每一种方式都需要相应的传输软件和协议。(1)串口传输方式主机端通过kermit、minicom或者windows超级终端等工具都可以通过串口发送文件。当然发送之前需要配置好数据传输率和传输协议,目标板端也要做好接收准备。通常波特率可以配置成115200bit/s,8位数据位,不带校验位。传输协议可以是Kermit、Xmodem、Ymodem、Zmodem等。(2)网络传输方式网络传输方式一般采用TFTP(TrivialFileTransportProtocol)协议。TFTP协议是一种简单的网络传输协议,是基于UDP传输的,没有传输控制,所以对于大文件的传输是不可靠的。不过正好适合目标板的引导程序,因为协议简单,功能容易实现。当然,使用TFTP传输之前,需要驱动目标板以太网接口并且配置IP地址。(3)USB接口传输方式通常分主从设备端,主机端为主设备端,目标板端为从设备端。主机端需要安装驱动程序,识别从设备后,可以传输数据。USB2.0标准的数据传输速率非常快。华清远见——嵌入式培训专家系统开发班培训教材(4)JTAG接口传输方式JTAG仿真器跟主机之间的连接通常是串口、并口、以太网接口或者USB接口。传输速率也受到主机连接方式的限制,这取决于仿真器硬件的接口配置。采用并口连接方式的仿真器最简单,也叫作JTAG电缆(CABLE),价格也最便宜。性能好的仿真器一般会采用以太网接口或者USB接口通信。(5)移动存储设备如果目标板上有软盘、CDROM、USB盘等移动存储介质,就可以制作启动盘或者复制到目标板上,从而引导启动。移动存储设备一般在X86平台上比较普遍。4.1.4网络文件系统网络文件系统(NFS,NetworkFileSystem)最早是SUN开发的一种文件系统。NFS允许一个系统在网络上共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这极大地简化了信息共享。Linux系统支持NFS,并且可以配置启动NFS网络服务。NFS文件系统的优点如下。(1)本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。(2)用户可以通过网络访问共享目录,而不必在计算机上为每个用户都创建工作目录。(3)软驱、CDROM等存储设备可以在网络上面共享使用。这可以减少整个网络上的移动介质设备的数量。(4)NFS至少有一台服务器和一台(或者更多)客户机两个主要部分。客户机远程访问存放在服务器上的数据。需要配置启动NFS等相关服务。网络文件系统的优点正好适合嵌入式Linux系统开发。目标板没有足够的存储空间,Linux内核挂接网络根文件系统可以避免使用本地存储介质,快速建立Linux系统。这样可以方便地运行和调试应用程序。4.2安装交叉编译工具基于上述硬件环境配置的需求,接下来一步步构建这个交叉开发环境。首先要安装交叉编译工具链。4.2.1获取交叉开发工具链Linux使用GNU的工具,社
本文标题:第4章交叉开发环境
链接地址:https://www.777doc.com/doc-921403 .html