在嵌入式系统开发中,经常需要从主机上传送映像、文件等到目标机上。实现的方法有很多。如tftp,scp等。
tftp是用来下载远程文件的最简单的网络协议,它基于UDP协议而实现。
IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作。
下载地址:IIS7服务器管理工具

1、连接本机
连接本机有三种方法,一是输入真实的IP地址,可以用ifconfig查得;二是用localhost来代表本机;三是使用地址127.0.0.1,这个IP地址始终代表本机的IP。
先在TFTP目录下新建一个文件a,在里面随便写一些内容,然后修改其权限为777。接着,输入以下指令的任意一条,进入TFTP命令行。
tftp 192.168.1.201 (自己设定的IP)
tftp localhost
tftp127.0.0.1
TFTP命令行的基本指令:
put:将文件上传到TFTP目录
get:取得TFTP目录上的文件
quit/q:退出TFTP
因为TFTP服务将某一设定的目录视为根目录,因此不需要打出完整的路径。既然该目录下已经有一个文件a,我们就下面输入指令:
tftp>get a
tftp>put a
如果没有任何提示,则说明传输成功。
下面看看当配置参数和文件权限改变时,会出现什么现象。我列举了一些常见问题:
tftp>get a
Transfer timed out.
原因:tftpd服务没有启动。
需要注意的是,必须使TFTP的用户名和当前的系统的用户名一致,否则就无法成功启动tftpd服务。
tftp>get a
permission denied
原因:操作者权限不够,比如当前的目录是/etc,不能随便get文件下来。需要提升权限。切换到root账户,或者直接执行sudo tftp。
tftp>put t1
tftp: t1: No such file or directory
原因:当前目录下没有t1文件
tftp>get d
Error code 1: File not found
原因:TFTP根目录下没有该文件
Error code 2: Only absolute filenamesallowed
原因:TFTP启动配置参数没有-s,或者在DIRECTORY中没有填写目录
tftp>put b
Error code 1: File not found
原因:启动配置参数无-c,根目录下无同名文件
(注意和前面情况的区别,不是当前目录下没有b文件,而是TFTP目录下找不到同名文件b)
tftp>put b
Error code 2: File must have global writepermissions
原因:根目录下有同名文件,该文件无写权限(启动配置参数有无-c都这样)
经测试,在tftp-hpa方法下,下列情况可以put成功:
l 启动配置参数无-c,根目录下有同名文件,有写权限
l 启动配置参数有-c,根目录下无同名文件
l 启动配置参数有-c,根目录下有同名文件,有写权限
2、连接实验箱(未完成)
实验箱操作系统中的TFTP服务已经装好,是在BusyBox v1.12.0中的。它的用法与本机的略有区别,但原理是一样的。基本参数:
-g: get,获取文件
-p: put,长传文件
-l FILE:本地的文件,名为FILE
-r FILE:远程的文件,名为FILE
实验箱的IP地址为192.168.1.200,我主机的IP地址为192.168.1.201。两者的IP应该在一个网段内,才能顺利通信。
使用举例:
sudo minicom
进入了实验箱的Linux操作系统。
#cd /home
#tftp -g 192.168.1.201 -r./hello -l./hello
将主机TFTP目录下的文件hello下载到实验箱的当前目录(/home)。
#tftp -p 192.168.1.201 -r./led -l./led
将实验箱的当前目录(/home)的文件led上传到主机
本文介绍了TFTP协议在嵌入式系统开发中的应用,包括如何使用TFTP进行文件的上传和下载,以及在不同场景下可能遇到的问题及其解决办法。
4366

被折叠的 条评论
为什么被折叠?



