嵌入式Linux开发环境的搭建之:嵌入式开发环境的搭建
小知识 | 通过串口打印信息是一个很常见的手段,很多其他情况如路由器等也是通过配置串口的波特率这些参数来显示对应信息的。 |
5.1.3下载映像到开发板
正如第4章中所述,嵌入式开发的运行环境是目标板,而开发环境是宿主机。因此,需要把宿主机中经过编译之后的可执行文件下载到目标板上。要注意的是,这里所说的下载是下载到目标机中的SDRAM。然后,用户可以选择直接从SDRAM中运行或写入到Flash中再运行。运行常见的下载方式有网络下载(如tftp、ftp等方式)、串口下载、USB下载等,本书主要讲解网络下载中的tftp方式和串口下载方式。
1.tftp
tftp是简单文件传输协议,它可以看作是一个FTP协议的简化版本,与FTP协议相比,它的最大区别在于没有用户管理的功能。它的传输速度快,可以通过防火墙,使用方便快捷,因此在嵌入式的文件传输中广泛使用。
同FTP一样,tftp分为客户端和服务器端两种。通常,首先在宿主机上开启tftp服务器端服务,设置好tftp的根目录内容(也就是供客户端访问的根目录),接着,在目标板上开启tftp的客户端程序(现在很多Bootloader几乎都提供该服务)。这样,把目标板和宿主机用直连线相连之后,就可以通过tftp协议传输可执行文件了。
下面分别讲述在Linux下和Windows下的配置方法。
(1)Linux下tftp服务配置。
Linux下tftp的服务器服务是由xinetd所设定的,默认情况下是处于关闭状态。
首先,要修改tftp的配置文件,开启tftp服务,如下所示:
[root@localhosttftpboot]#vim/etc/xinetd.d/tftp
#default:off
#description:Thetftpserverservesfilesusingthetrivialfiletransfer
#protocol.Thetftpprotocolisoftenusedtobootdiskless
#workstations,downloadconfigurationfilestonetwork-awareprinters,
#andtostarttheinstallationprocessforsomeoperatingsystems.
servicetftp
{
socket_type=dgram/*使用数据报套接字*/
protocol=udp/*使用UDP协议*/
wait=yes/*允许等待*/
user=root/*用户*/
server=/usr/sbin/in.tftpd/*服务程序*/
server_args=-s/tftpboot/*服务器端的根目录*/
disable=no/*使能*/
per_source=11
cps=1002
flags=IPv4
}
在这里,主要要将“disable=yes”改为“no”,另外,从“server_args”可以看出,tftp服务器端的默认根目录为“/tftpboot”,用户如果需要则可以更改为其他目录。
接下来,重启xinetd服务,使刚才的更改生效,如下所示:
[root@localhosttftpboot]#servicexinetdrestart
(或者使用/etc/init.d/xinetdrestart,而且因发行版的不同具体路径会有所不同)
关闭xinetd:[确定]
启动xinetd:[确定]
接着,使用命令“netstat-au”以确认tftp服务是否已经开启,如下所示:
[root@localhosttftpboot]#netstat–au|greptftp
ActiveInternetconnections(serversandestablished)
ProtoRecv-QSend-QLocalAddressForeignAddressState
udp00*:tftp*:*
这时,用户就可以把所需要的传输文件放到“/tftpboot”目录下,这样,主机上的tftp服务就可以建立起来了(注意:需要在服务端关闭防火墙)。
接下来,用直连线把目标板和宿主机连起来,并且将其配置成一个网段的地址(例如两个IP都可以设置为192.168.1.XXX格式),再在目标板上启动tftp客户端程序(注意:不同的Bootloader所使用的命令可能会不同,例如:在RedBoot中使用load命令下载文件是基于tftp协议的。读者可以查看帮助来获得确切的命令名及格式),如下所示:
=>tftpboot0x30200000zImage
TFTPfromserver192.168.1.1;ourIPaddressis192.168.1.100
Filename'zImage'.
Loadaddress:0x30200000
Loading:#################################################################
###############################################################
#############################################
done
Bytestransferred=881988(d7544hex)
可以看到,此处目标板使用的IP为“192.168.1.100”,宿主机使用的IP为“192.168.1.1”,下载到目标板的地址为0x30200000,文件名为“zImage”。
(2)Windows下tftp服务配置。
在Windows下配置tftp服务器端需要下载tftp服务器软件,常见的为tftpd32。
首先,单击tftpd32下方的设置按钮,进入设置界面,如图5.14所示,在这里,主要配置tftp服务器端地址,也就是宿主机的地址。
接下来,重新启动tftpd32软件使刚才的配置生效,这样服务器端的配置就完成了,这时,就可以用直连线连接目标机和宿主机,且在目标机上开启tftp服务进行文件传输,这时,tftp服务器端如图5.15和图5.16所示。
图5.14tftp文件传输图5.15tftpd32配置界面图5.16tftp服务器端显示情况
小知识 | tftp是一个很好的文件传输协议,它的简单易用吸引了广大用户。但它同时也存在着较大的安全隐患。由于tftp不需要用户的身份认证,因此给了黑客的可乘之机。2003年8月12日爆发的全球冲击波(Worm.Blaster)病毒就是模拟一个tftp服务器,并启动一个攻击传播线程,不断地随机生成攻击地址进行入侵。因此在使用tftp时一定要设置一个单独的目录作为tftp服务的根目录,如上文所述的“/tftpboot”等。 |
linux相关文章:linux教程
评论