嵌入式开发板iTOP-4412实现TFTP文件传输

歌之王子殿下 发布于 2016/03/15 17:52
阅读 521
收藏 1


本文转自迅为:http://www.topeetboard.com

 

本文讲解如何通过 TFTP 来实现在线调试应用程序。

TFTPTrivial File Transfer Protocol,简单文件传输协议) ,是一个基于 UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。

根据上面关于 TFTP 的介绍,实现 TFTP 我们需要搭建一个 TFTP 的服务器,iTOP-4412 开发板当做客户端。 使用我们的虚拟机 Ubuntu 来当做服务器,下面我们先讲解一下服务器端的配置。

在我们的虚拟机 Ubuntu 上打开终端,如下图:

 

首先输入命令:sudo apt-get install xinetd,安装 xinetd,如下图:

 

 

安装完 xinetd,如下图:

 

 

接下来输入命令安装 tftp 和 tftpdsudo apt-get install tftp tftpd,如下图:

 

 

安装完成后,如下图:

 

 

然后建立 TFTP 的配置文件,使用命令:vi /etc/xinetd.d/tftp 建立文件,如下图:

 

写入下面的内容:

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/tftpboot/

disable = no

 

per_source = 11

cps = 100 2

flags = IPv4

}

如下图:

 

 

退出并保存。其中 server_args 设置的/var/tftpboot 目录是 tftp 服务器的目录,TFTP 客户端就是从这个目

录里面获取服务器上的文件的。使用命令 mkdir /var/tftpboot 建立 tftp 服务器的目录,如下图:

 

 

然后设置/var/tftpboot 的访问权限为 777,如下图:

 

 

 

输入:sudo /etc/init.d/xinetd restart 命令重启 xinetd 服务,如下图:

 

 

本机测试:在/var/tftpboot 下面建立一个文件 test,在里面输入 hello world,然后保存该文件,如下图:

 

在启动另外一个终端,如下图:

 

 

 

然后输入:tftp 127.0.0.1,如下图:

 

输入 get test 获取 test 文件,如下图:

 

 

在上图我们看到获取到 test 的信息 13 字节,然后输入 退出 tftp,如下图:

 

 

然后我们输入 ls 查看当前目录下是否有 test 文件了,通过查看,发现当前目录下应经有 test 文件了,这就是

/var/tftpboot 目录下的那个 test 文件,如下图:

 

我们使用 cat 命令查看一下 test 文件的内容,如下图:

 

 

通过上面的截图,我们看到 test 文件里面的内容是 hello world,与/var/tftpboot 目录的 test 是一样的,至

此我们的 TFTP 服务器端的配置就完成了,下面我们来看下 iTOP-4412 开发板客户端的配置。

iTOP-4412 开发板我们制作的 linux 文件系统已经支持 TFTP 客户端命令了,编译 Busybox 时默认是支持该

命令的,linux 文件系统在启动的时候我们通过脚本设置了以太网的 IP 地址是 192.168.1.230,这个脚本是在

文件系统的 etc/eth0-setting 文件,我们打开这个文件,如下图:

 

 

如果我们想修改默认的 IP,子网掩码,网关,DNSMAC 就编辑这个文件对应的选项就可以了。

现在我们在 iTOP-4412 上获取 TFTP 服务器上的文件,首先我们先看一下 TFTP 服务器的 IP 地址,如下图:

 

 

通过上面的截图我们可以知道 TFTP 虚拟机的 IP 地址是 192.168.1.109,我们的开发板的默认 IP 

192.168.1.230,它们在同一个网段,如果不在同意个网段需要修改我们的开发板的 IP 地址,修改方法就是前

面介绍的 etc 目录下的 ethsetting 文件。

连接开发板的网口到路由器上,然后输入 pinging 令确认开发板和 TFTP 服务器是连通的,如下图:

 

 

如果返回上面的信息就表示开发板和 TFTP 服务器是连通的,现在我们获取 TFTP 上的文件,在开发板的串口

输入:tftp -g -l test -r test 192.168.1.109,如下图:

 

 

执行完上面的命令, 已经把 TFTP 上的 test 文件下载到开发板的当前目录下了, 使用 ls 看到当前目录下有 test

文件,如下图:

 

 

在开发板的串口输入 cat test 可以查看 test 的内容,如下图:

 

 

通过上面的截图,我们可以看到文件的内容和 TFTP 上的文件内容是一样的,至此我们的 TFTP 搭建完成了,

大家以后再调试程序的时候可以用 TFTP,这样就避免了每次都要生成镜像,烧写景象了。

下面我给大家演示一下调试应用程序的方法, 假设我在虚拟机的 Ubuntu 上编写了一个输出 hello world 的小

程序,然后我通过交叉编译器编译这个程序生成了可执行文件 hello,我通过 cp 命令把这个可执行程序 hello

拷贝到了/var/tftpboot 目录下面,接下来我要在开发板端把 hello 文件下载到开发板上,我需要在开发板的串口上执行:tftp -g -lhello -r hello 192.168.1.109,如下图:

 

 

 

然后我们输入 ls 命令查看一下当前目录,可以看到已经有 hello 这个文件了,如下图:

 

 

因为 hello 这个文件现在没有执行权限,所以我们需要输入 chmod 777 hello 命令来修改下 hello 的权限,

如下图:

 

现在我们可以运行 hello 这个程序了,运行结果如下图:

 

我们可以看到程序输出: “hello world”了。通过 TFTP 这种方式可以提高我们调试程序的效率。

加载中
返回顶部
顶部