配置主机交叉开发环境

分享到:
           

    1.配置控制台程序

    要查看目标板的输出,可以使用控制台程序。在各种操作系统上一般都有现成的控制台程序可以使用,例如,Windows操作系统中有超级终端(HyperTerminal)工具;Linux/UNIX操作系统有minicom(使用“minicom”命令启动该软件)等工具。无论什么操作系统和通信工具,都可以作为串口控制台。如果在Windows平台上运行Linux虚拟机,这个串口通信软件可以任选一种。配置一个超级终端,如图1.1所示,配置minicom(使用“minicom –s”命令进入配置界面),如图1.2所示,配置参数包括串口号、通信速率、数据位数、停止位数、奇偶校验、数据流控制等设置。一次配置成功后可以将结果保存,供以后使用。

  
图1.1 配置串口控制台                   图1.2 minicom配置

    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
    service tftp
    {
        socket_type = dgram
        protocol = udp
        wait = yes
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -s /tftpboot
        disable = no
        per_source = 11
        cps = 100 2
        flags = IPv4
    }

    在这里,主要是要将“disable=yes”改为“disable=no”。另外,通过“server_args”可以看出,tftp服务器端的默认根目录为“/tftpboot”,用户可以根据需要更改为其他目录。

    接下来,重启xinetd服务,使刚才的更改生效,如下所示:

    $ /etc/init.d/xinetd restart

    然后,使用命令“netstat -au”以确认tftp服务是否已经开启,如下所示:

    $ netstat –au | grep tftp
    Proto Recv-Q Send-Q  Local Address     Foreign Address           State
    udp          0       0                  *:tftp                  *:*

    这时,用户就可以把所需的传输文件放到“/tftpboot”目录下,这样,主机上的tftp服务就建立起来。用网络交叉线把目标板和宿主机连起来,并且将其配置成一个网段的地址,再在目标板上启动tftp客户端程序(注意:不同的Bootloader所使用的命令会有所不同,读者可以查看帮助来获得确切的命令名及格式,本书以U-Boot为例讲解),如下所示:

    # tftp 0x30008000 zImage
    TFTP from server 192.168.1.112; our IP address is 192.168.1.120
    Filename 'zImage'.
    Load address: 0x33000000
    Loading:###########################################################
    ###########################################################
    ###########################################################
    done
    Bytes transferred = 881988 (d7544 hex)

    可以看到,此处目标板使用的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服务进行文件传输。

  
图1.3 Tftpd32软件              图1.4 Tftpd32的配置界面

    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配置文件的常见参数

选 项 参 数 含 义
rw 可读写的权限
ro 只读的权限
no_root_squash NFS客户端分享目录使用者的权限,即如果客户端使用的是root用户,那么对于这个共享的目录而言,该客户端就具有root的权限
sync 资料同步写入内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘

    下面是配置文件“/etc/exports”的一个示例:

    $ cat /etc/exports
    /home/david/project *(rw,sync,no_root_squash)

    在设定完配置文件之后,需要启动nfs服务和portmap服务,这里的portmap服务允许NFS客户端查看NFS服务所用的端口,在它被激活之后,就会出现一个端口号为111的sun RPC(远端过程调用)的服务,这是NFS服务中必须实现的一项,因此,也必须把它开启,如下所示:

    $ /etc/init.d/portmap restart
    启动 portmap:        [确定]
    $ /etc/init.d/nfs restart(在Ubuntu中应为/etc/init.d/nfs-kernel-server)
    启动 NFS 服务:       [确定]
    关掉 NFS 配额:       [确定]
    启动 NFS 守护进程:   [确定]
    启动 NFS mountd:     [确定]

    可以看到,系统在启动NFS服务时就已经启动了mountd进程,它是NFS挂载服务,用于处理NFSD递交过来的客户端请求。另外还会激活至少两个以上的系统守护进程,然后开始监听客户端的请求,用dmesg命令(或者cat /var/log/messages)可以看到操作是否成功。另外,与NFS相关的还有两个命令,可以方便NFS的使用。

    其一是exportfs,它可以重新扫描“/etc/exports”,使用户在修改“/etc/exports”配置文件时不需要每次重启NFS服务,其格式为:

    exportfs [选项]

   表1.2所示为exportfs的常见选项。

表1.2 exportfs的常见选项

选 项 参 数 含 义
-a 全部挂载(或卸载)/etc/exports中的设定文件目录
-r 重新挂载/etc/exports中的设定文件目录
-u 卸载某一目录
-v 在export时,将共享的目录显示到屏幕上

    另一个是showmount,它可以显示nfs服务器的挂载信息,其格式为:

    showmount [选项]

    表1.3所示为showmount的常见选项。

表1.3 showmount的常见选项

选 项 参 数 含 义
-a 列出客户端主机名或IP地址,和挂载在主机的目录
-e 显示nfs服务器的导出列表

    用户若希望NFS服务在每次系统引导时自动开启,可使用以下命令:

    # /sbin/chkconfig nfs on
    (在Ubuntu中应该输入 /sbin/chkconfig nfs-kernel-server on)

    本文选自华清远见嵌入式培训教材《从实践中学嵌入式Linux应用程序开发》

   热点链接:

   1、搭建嵌入式交叉编译环境
   2、构建嵌入式Linux交叉开发环境
   3、嵌入式培训资料:搭建交叉编译环境
   4、嵌入式交叉编译过程详解
   5、嵌入式linux入门六步走

更多新闻>>