《基于ARM9的嵌入式Linux系统开发原理与实践》课件第4章_第1页
《基于ARM9的嵌入式Linux系统开发原理与实践》课件第4章_第2页
《基于ARM9的嵌入式Linux系统开发原理与实践》课件第4章_第3页
《基于ARM9的嵌入式Linux系统开发原理与实践》课件第4章_第4页
《基于ARM9的嵌入式Linux系统开发原理与实践》课件第4章_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第4章交叉开发环境4.1交叉编译4.2交叉开发环境4.3交叉开发工具组成4.4宿主机与目标机之间的通信方式4.5交叉开发环境建立4.6基于UP-NETARM2410-S开发平台交叉开发环境建立4.7交叉编译和交叉调试实例本章小结

4.1交叉编译

交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。常用的计算机软件都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译成计算机可以识别和执行的二进制代码。

4.2交叉开发环境

在开发单片机系统时,需要使用一台主机外加操作系统,如Windows2000,再装上单片机厂商提供的开发软件,即开发环境,在开发环境里面编译程序,用鼠标单击“build”快捷键,即生成的可执行程序配合仿真器还可以进行单步调试、观察寄存器等。图4-1交叉开发环境模式

4.3交叉开发工具组成

交叉开发工具一般包括交叉编译器、交叉链接器、交叉调试器和系统仿真器。其中,交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。

1.交叉编译器和交叉链接器

在完成嵌入式软件的编码之后,需要进行编译和链接,以生成可执行代码。由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。

2.交叉调试器和系统仿真器

嵌入式软件经过编译和链接后即进入调试阶段,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有所差别。图4-2远程调试结构图

4.4宿主机与目标机之间的通信方式

4.4.1互联通信方式

1.串口

通过串口可以作为控制台,向目标机发送命令,显示信息;也可以通过串口传送文件;还可以通过串口调试内核及程序。串口的设备驱动实现也比较简单。

2.以太网口

以太网以其高度灵活,相对简单,易于实现的特点,成为当今最重要的一种局域网建网技术,以太网IEEE802.3通常使用专门的网络接口卡或通过系统主电路板上的电路实现。

3. JTAG口

JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路测试接口(TAP,TestAccessPort),通过JTAG测试工具对芯片的核进行测试。它是联合测试行动小组(JTAG,JointTestActionGroup)定义的一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。4.4.2可拔插通信方式

在这种模式下,在宿主机和目标机之间没有实际的物理连接,而是主机写存储设备,如软盘、CDROM、USB盘等移动存储介质,然后再传给目标机,最后目标机启动它。

4.5交叉开发环境建立

4.5.1创建交叉开发工具链

交叉开发工具链包括交叉编译器、交叉连接器和交叉调试器,这些交叉开发工具链是嵌入式系统开发的必备工具,它是要安装在宿主机(PC)上的。对于它的创建有三种途径:第一种是下载别人已做好的工具链,当然这是最省事的方法;第二种是到官方网站上下载crosstool;第三种是自己一步一步制作自己的交叉开发工具链,这是最有趣的,也是最能体现自己能力的方式,本书的第6章将重点介绍第三种方法创建交叉开发工具链,好让读者体会一下自己动手的乐趣。4.5.2宿主机开发环境配置

1.宿主机安装发行版Linux操作系统

宿主机安装发行版Linux操作系统有以下三个方案:

(1)基于PC机Windows操作系统下的CYGWIN。

(2)在Windows下安装虚拟机后,再在虚拟机中安装Linux操作系统。

(3)直接安装Linux操作系统。

2.开发工具链的安装

开发工具链的第一种来源,安装较简单,一般运行安装光盘的可执行文件 ./install即可,这相当于在Windows运行可执行文件setup,具体安装过程可见4.6节内容。开发工具链的第二种来源,下载的工具链有不同的包装格式,RPM的格式就很常用,也有把工具链直接压缩成tar包的。

3.网络配置

宿主机Linux环境配置,首先要确认宿主机的网络接口驱动成功,并且配置网络接口的IP地址。可以通过ifconfig命令查看其网络接口,还可以通过ifconfig配置网口的IP地址。

查看本机IP地址:

#ifconfig-a

修改本机IP地址:

$ifconfigeth0图4-3网络设备配置的图形窗口

4.串口配置

串行通信接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。Windows操作系统有超级终端(Hyperterminal)工具;Linux/UNIX操作系统有minicom等工具。无论什么操作系统还是通信工具,都可以作为串口控制台。如果在Windows平台上运行Linux虚拟机,这个串口通信软件可以任选一种。图4-4Windows系统下的超级终端图4-5minicom配置主界面

5. NFS服务

网络文件系统(NetworkFileSystem,NFS)是一种允许透明文件共享的技术,具体可参看第9章文件系统相关内容,这种共享出现在通过局域网(也就是LAN)连接的Unix和Linux系统之间。NFS已出现了很长时间,它在Linux和Unix世界里广为人知而且被广泛使用。图4-6NFS服务图形设置界面

6. DHCP服务

目标板的引导程序(Bootloader)或者内核都需要分配IP地址。这可以通过动态主机配置协议(DHCP,DynamicHostConfigurationProtocol)或者BOOTP协议实现。图4-7DHCP服务配置窗口

7. TFTP服务

TFTP协议是简单的文件传输协议,适合目标机引导程序使用。但是文件传输是基于UDP的,文件传输(特别是大文件)是不可靠的。

4.6基于UP-NETARM2410-S开发

平台交叉开发环境建立

4.6.1安装PC机RedHatLinux虚拟机

详见教材2.1节。4.6.2开发工具软件的安装

本节中所讲的开发工具的安装与4.5.1节中所讲的创建交叉开发工具链的第一种方法相似,即博创公司目标机的开发工具光盘,插入CDROM,然后执行以下命令:

#cd/mnt/cdrom/2410-s06.03.03/linux-V5.1

#./install.sh图4-8开发工具安装界面4.6.3宿主机网络配置

NFS的本质就是将宿主机和目标机组建成一个小的局域网,因此对宿主机的网络配置包括:IP地址的设置、安全级别的设置和NFS服务的配置。

(1) IP地址的设置。

(2)安全级别的设置。

(3) NFS服务的配置。图4-9宿主机安全级别设置4.6.4宿主机串口配置

目标机是资源受限的系统,没有像宿主机那样的显示器,如果想看程序在目标板的运行结果等,可利用串口通信将目标机的一些信息传送到宿主机的minicom控制台中,minicom控制台即相当于目标机的显示器。其宿主机的串口配置方法可参看4.5.2节中串口配置内容。4.6.5基于UP-NETARM2410-S开发平台交叉开发环境建立

的总结

交叉开发环境的建立,就是充分利用宿主机(PC)强大的功能,建立能够编写、编译、下载和调试运行在目标机(UP-NETARM2410-S)上的二进制程序,包括:RedHatLinux虚拟机的安装、交叉开发工具链的制作和安装、串口的配置、网络的配置及JTAG口的连接等,它们各自的作用总结如下:

(1) RedHatLinux虚拟机的安装:利用它的强大的功能,开发一个能够运行在目标机的Linux操作系统。

(2)交叉开发工具链的制作和安装:编译能够运行在目标机上的二进制代码。

(3)串口的配置:相互通信,可将minicom或超级终端作为目标机显示器。

(4)网络的配置:宿主机和目标机之间局域网的建立,利用NFS进行文件系统的挂载,方便程序的调试。

(5) JTAG口:可在目标机没有任何通信之前将引导程序烧写到目标机,在引导程序中可建立如串口等接口的初始化等。图4-10宿主机和目标机之间的配置及通信线路图

4.7交叉编译和交叉调试实例

(1)建立工作目录。

在上面的交叉开发环境建立的共享目录(arm2410s)中建立工作目录:

#mkdirpthread

#cdpthread

(2)编写源代码。

在此工作目录下用vi编写程序源代码:

用vi编写pthread.c

#vipthread.c源代码如下:

#include“stdio.h”

#include“math.h”

intmain(void)

{

floatpi=3.1415926;

floatR;

floatS=0;

printf(“PleaseinputyourRidus:\n”);

scanf(“%f”,&R);

if(R>=0)

{

S=pi*R*R;

printf(“ThevalueofSis:%f\n”,S);

}

else

printf(“Sorry,Wronginput!!\n”);

return0;

}

(3)编写makefile。

CC=armv4l-unknown-linux-gcc

EXEC=pthread

OBJS=pthread.o

CFLAGS+=-g-o

EXTRA_LIBS+=-lpthread

all:$(EXEC)

$(EXEC):$(OBJS)

$(CC)$(CFLAGS)$(EXTRA_LIBS)$@$(OBJS)

clean:

rm-f$(EXEC)*.elf*.gdb*.o

(4)编译应用程序。

在pthread目录下运行make,如果进行了修改,重新编译则运行:

#makeclean

#make

(5)远程调试。

在进行远程调试之前,先要明白远程调试环境的一些关键知识。

远程调试环境由宿主GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用程序的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。

就目前而言,嵌入式Linux系统中主要有三种远程调试方法,分别适用于不同场合的调试工作:

(1) ROMMonitor调试目标机程序。

(2) KGDB调试系统内核。

(3) gdbserver调试用户空间程序。具体远程调试过程如下。

在minicom下操作:

#cd

mnt/gdb

#./gdbserver0:2345/mnt/pthread/pthread

0为宿主机IP,在目标机系统的2345端口开启了一个调试进程,pthread为要调试的程序。会出现提示:

温馨提示

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

评论

0/150

提交评论