第4章嵌入式交叉开发环境

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章交叉开发环境本章内容包括嵌入式交叉开发环境的概念和配置,以及应用程序交叉开发和调试的方法。交叉开发环境是嵌入式Linux开发的基础,后续的开发过程几乎都是基于交叉开发环境的。因此,理解和掌握本章内容会大大方便嵌入式Linux开发。本章目标交叉开发环境介绍建立交叉开发环境交叉调试应用程序4.1交叉开发环境介绍4.1.1交叉开发概念模型、内核映像根文件系统内核映像HOSTTARGET下载内核映像各种连接方式挂接NFS文件系统TARGET就是目标板,HOST是开发主机。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序、内核和文件系统,然后在目标板上运行。通常这种在主机环境下开发,在目标板上运行的开发模式叫作交叉开发。4.1.2目标板与主机之间的连接目标板和主机之间通常可以使用串口、以太网接口、USB接口以及JTAG接口等连接方式。(1)串行通讯接口(2)以太网接口(3)USB接口(4)JTAG等接口4.1.3文件传输(1)串口传输方式主机端通过kermit、minicom或者windows超级终端等工具都可以通过串口发送文件。(2)网络传输方式网络传输方式一般采用TFTP(TrivialFileTransportProtocol)协议。(3)USB接口传输方式通常分主从设备端,主机端为主设备端,目标板端为从设备端。(4)JTAG接口传输方式JTAG仿真器跟主机之间的连接通常是串口、并口、以太网接口或者USB接口。(5)移动存储设备如果目标板上有软盘、CDROM、USB盘等移动存储介质,就可以制作启动盘或者复制到目标板上,从而引导启动。4.1.4网络文件系统NFS文件系统的优点如下。(1)本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。(2)用户可以通过网络访问共享目录,而不必在计算机上为每个用户都创建工作目录。(3)软驱、CDROM等存储设备可以在网络上面共享使用。这可以减少整个网络上的移动介质设备的数量。(4)NFS至少有一台服务器和一台(或者更多)客户机两个主要部分。客户机远程访问存放在服务器上的数据。需要配置启动NFS等相关服务。4.2安装交叉编译工具基于上述硬件环境配置的需求,接下来一步步构建这个交叉开发环境。首先要安装交叉编译工具链。4.2.1获取交叉开发工具链这里介绍几个ARMLinux的免费站点。(1)(2)(3)(4)的格式,可以通过rpm命令把软件包安装到主机上。对于tar包,可以使用tar命令解压的。以ARMLinux站点提供的cross-3.3.2.tar.bz2包为例说明。解压cross-3.3.2.tar.bz2后,查看GCC版本号,可以得到一些信息。4.3主机开发环境配置4.3.1主机环境配置主机端安装Linux操作系统的时候,只要磁盘有足够空间,最好是完全安装。接下来就是主机Linux环境配置。然后把交叉开发工具链的路径添加到环境变量PATH中,这样可以方便地在Bash或者Makefile中使用这些工具。/etc/profile是系统启动过程执行的一个脚本,对所有用户都生效。~/.bash_profile是用户的脚本,在用户登录时生效。~/.bashrc也是用户的脚本,在~/.bash_profile中调用生效。把环境变量配置的命令添加到其中一个文件中即可。4.3.2串口控制台工具串行通讯接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。Windows操作系统有超级终端(Hyperterminal)工具;Linux/UNIX操作系统有minicom等工具。超级终端是Windows系统的串口通讯工具Linux系统通常使用minicom串口通讯工具。Minicom的配置界面是菜单方式。在Shell下执行“minicom–s”命令,出现配置菜单。4.3.3DHCP服务目标板的Bootloader或者内核都需要分配IP地址。这可以通过动态主机配置协议(DHCPDynamicHostConfigurationProtocol)或者BOOTP协议实现。BOOTP协议可以给计算机分配IP地址并且通过网络获取映像文件的路径;DHCP则是向后兼容BOOTP的协议拓展。Linux操作系统的主机一般包含dhcpd的软件包,可以配置DHCP服务。配置服务的操作需要root用户的权限。4.3.4TFTP服务TFTP协议是简单的文件传输协议,所以实现简单,使用方便,正好适合目标板Bootloader使用。但是文件传输是基于UDP的,文件传输(特别是大文件)是不可靠的。TFTP服务在Linux系统上有客户端和服务器2个软件包。配置TFTP服务,必须先安装好。TFTP服务也可以通过图形化的配置窗口来启动。当然操作过程需要root权限。缺省的情况下,把/tftpboot目录作为输出文件的根目录。4.3.5NFS服务NFS服务的主要任务是把本地的一个目录通过网络输出,其他计算机可以远程地挂接这个目录并且访问文件。NFS服务有自己的协议和端口号,但是在文件传输或者其他相关信息传递的时候,NFS则使用远程过程调用(RPC,RemoteProcedureCall)协议。4.4启动目标板4.4.1系统引导过程第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。第三阶段是执行用户空间的init程序,完成系统初始化、启动相关服务和管理用户登录等工作。4.4.2内核解压启动目标板处理器上电或者复位后,首先执行引导程序(Bootloader),初始化内存等硬件,然后把压缩的内核映像加载到内存中,最后跳转到内核映像入口执行。这样就把控制权完全交给内核映像了。接下来内核映像继续执行,完成自解压或者重定位,然后跳转到解压后的内核代码入口。这部分主要是Linux内核的自引导程序,又叫作Linuxbootloader,包含在内核源代码中。这部分引导代码相对简单,不可能替代目标板上的Bootloader。4.4.3挂接根文件系统Linux内核要挂接NFS根文件系统,必须具备以下条件。(1)以太网接口驱动正常(2)配置内核启动命令行参数(3)配置内核挂接NFS根文件系统4.5应用程序的远程交叉调试4.5.1交叉调试的模型HOSTTARGET以太网连接NFSgdbgdbserver应用程序和源码应用程序4.5.2交叉调试程序实例1.交叉编译(1)在主机上编辑hello.c程序(2)交叉编译(3)把可执行程序复制到NFS输出的目录下面(4)这时在目标板端也可以访问到同样的程序,执行程序2.交叉调试(1)编译程序的时候,需要添加-g编译选项(2)在目标板上,启动gdbserver,控制程序执行(3)在主机端,启动DDD和gdb调试程序(4)在DDD下窗口的GDB控制台下,建立连接(5)设置断点,执行到断点

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功