配置主机交叉开发环境 |
||||||||||||||||||||||||||||
1.配置控制台程序 要查看目标板的输出,可以使用控制台程序。在各种操作系统上一般都有现成的控制台程序可以使用,例如,Windows操作系统中有超级终端(HyperTerminal)工具;Linux/UNIX操作系统有minicom(使用“minicom”命令启动该软件)等工具。无论什么操作系统和通信工具,都可以作为串口控制台。如果在Windows平台上运行Linux虚拟机,这个串口通信软件可以任选一种。配置一个超级终端,如图1.1所示,配置minicom(使用“minicom –s”命令进入配置界面),如图1.2所示,配置参数包括串口号、通信速率、数据位数、停止位数、奇偶校验、数据流控制等设置。一次配置成功后可以将结果保存,供以后使用。 2.配置tftp服务 tftp是一个传输文件的简单协议,它基于UDP协议实现。此协议设计时是进行小文件传输的,因此它不具备通常的FTP的许多功能,只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,只能传输8位数据。 tftp服务分为客户端服务和服务器端服务两种。通常,首先在宿主机上开启tftp服务器端服务,设置好tftp的根目录内容(也就是供客户端下载的文件),然后,在目标板上开启tftp的客户端程序(tftp客户端主要在Bootloader交互环境下运行,几乎所有Bootloader都提供该服务,用于下载操作系统内核和文件系统)。这样,把目标板和宿主机用直连线相连之后,就可以通过tftp协议传输可执行文件。下面分别讲述在Linux下和Windows下的配置方法。 1)Linux下的tftp服务配置 Linux下tftp的服务是由xinetd(还有openbsd-inetd等其他服务)所设定的,默认情况下是处于关闭状态。 首先,要修改tftp的配置文件,开启tftp服务,如下所示: $ vim /etc/xinetd.d/tftp 在这里,主要是要将“disable=yes”改为“disable=no”。另外,通过“server_args”可以看出,tftp服务器端的默认根目录为“/tftpboot”,用户可以根据需要更改为其他目录。 接下来,重启xinetd服务,使刚才的更改生效,如下所示: $ /etc/init.d/xinetd restart 然后,使用命令“netstat -au”以确认tftp服务是否已经开启,如下所示: $ netstat –au | grep tftp 这时,用户就可以把所需的传输文件放到“/tftpboot”目录下,这样,主机上的tftp服务就建立起来。用网络交叉线把目标板和宿主机连起来,并且将其配置成一个网段的地址,再在目标板上启动tftp客户端程序(注意:不同的Bootloader所使用的命令会有所不同,读者可以查看帮助来获得确切的命令名及格式,本书以U-Boot为例讲解),如下所示: # tftp 0x30008000 zImage 可以看到,此处目标板使用的IP为“192.168.1.120”,宿主机使用的IP为“192.168.1.112”,下载到目标板的地址为0x33000000,文件名为“zImage”。 2)Windows 在Windows下配置tftp服务需要使用tftp服务器软件,常见的有Tftpd32,读者可以自行从网上下载。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端。打开该软件,如图1.3所示。 接下来,用户可以在Settings中配置服务器端的各个选项,如IP地址等,如图1.4所示。 另外,还需要在Browse中选择tftp的服务器端根目录。这时,tftpd会提示用户重启该软件,使修改的参数生效。至此,tftp的服务就配置完毕。此时可以用直连线连接目标机和宿主机,且在目标机上开启tftp服务进行文件传输。 3.NFS文件系统 NFS为Network File System的简称,早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。 NFS可以让不同的主机通过网络将远端的NFS服务器共享出来的文件安装到自己的系统中,从客户端看来,使用NFS的远端文件就像是使用本地文件一样。在嵌入式系统中使用NFS会使应用程序的开发变得十分方便,并且不用反复地烧写镜像文件。 NFS的使用分为服务器端和客户端,其中服务器端提供要共享的文件,而客户端则通过挂载“mount”这一动作来实现对共享文件的访问操作。在嵌入式开发中,通常NFS服务端在宿主机上运行,而客户端在目标板上运行。 NFS服务器端是通过读入它的配置文件“/etc/ exports”来决定所共享的文件目录的,在这个配置文件中,每一行都代表一项要共享的文件目录,以及所指定的客户端对其的操作权限。客户端可以根据相应的权限,对该目录下的所有目录文件进行访问。 配置文件中每一行的格式如下: [共享的目录] [客户端主机名称或IP]([参数1,参数2…]) 在这里,主机名或IP是可供共享的客户端主机名或IP,若对所有的IP都可以访问,则可用“*”表示。这里的参数有很多种组合方式,表1.1列出了常见的参数。 表1.1 NFS配置文件的常见参数
下面是配置文件“/etc/exports”的一个示例: $ cat /etc/exports 在设定完配置文件之后,需要启动nfs服务和portmap服务,这里的portmap服务允许NFS客户端查看NFS服务所用的端口,在它被激活之后,就会出现一个端口号为111的sun RPC(远端过程调用)的服务,这是NFS服务中必须实现的一项,因此,也必须把它开启,如下所示: $ /etc/init.d/portmap restart 可以看到,系统在启动NFS服务时就已经启动了mountd进程,它是NFS挂载服务,用于处理NFSD递交过来的客户端请求。另外还会激活至少两个以上的系统守护进程,然后开始监听客户端的请求,用dmesg命令(或者cat /var/log/messages)可以看到操作是否成功。另外,与NFS相关的还有两个命令,可以方便NFS的使用。 其一是exportfs,它可以重新扫描“/etc/exports”,使用户在修改“/etc/exports”配置文件时不需要每次重启NFS服务,其格式为: exportfs [选项] 表1.2所示为exportfs的常见选项。 表1.2 exportfs的常见选项
另一个是showmount,它可以显示nfs服务器的挂载信息,其格式为: showmount [选项] 表1.3所示为showmount的常见选项。 表1.3 showmount的常见选项
用户若希望NFS服务在每次系统引导时自动开启,可使用以下命令: # /sbin/chkconfig nfs on 本文选自华清远见嵌入式培训教材《从实践中学嵌入式Linux应用程序开发》 热点链接:
1、搭建嵌入式交叉编译环境 |