Linux论坛
直播中

Somnus_H

12年用户 425经验值
擅长:制造/封装 EDA/IC设计
私信 关注
[讨论]

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

本文转自迅为:http://www.topeetboard.com
本文讲解如何通过 TFTP 来实现在线调试应用程序。
TFTPTrivial File Transfer Protocol,简单文件传输协议) ,是一个基于 UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。
根据上面关于 TFTP 的介绍,实现 TFTP 我们需要搭建一个 TFTP 的服务器,iTOP-4412 开发板当做客户端。 使用我们的虚拟机 Ubuntu 来当做服务器,下面我们先讲解一下服务器端的配置。
在我们的虚拟机 Ubuntu 上打开终端,如下图:
图片1.jpg
首先输入命令:sudo apt-get install xinetd,安装 xinetd,如下图:
图片2.jpg
安装完 xinetd,如下图:
图片3.jpg
接下来输入命令安装 tftp tftpdsudo apt-get install tftp tftpd,如下图:
图片4.jpg
安装完成后,如下图:
图片5.jpg
然后建立 TFTP 的配置文件,使用命令:vi /etc/xinetd.d/tftp 建立文件,如下图:
图片6.jpg
写入下面的内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/***in/in.tftpd
server_args = -s /var/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
如下图:
图片7.jpg
退出并保存。其中 server_args 设置的/var/tftpboot 目录是 tftp 服务器的目录,TFTP 客户端就是从这个目
录里面获取服务器上的文件的。使用命令 mkdir /var/tftpboot 建立 tftp 服务器的目录,如下图:
图片8.jpg
然后设置/var/tftpboot 的访问权限为 777,如下图:
图片9.jpg
输入:sudo /etc/init.d/xinetd restart 命令重启 xinetd 服务,如下图:
图片10.jpg
本机测试:在/var/tftpboot 下面建立一个文件 test,在里面输入 hello world,然后保存该文件,如下图:
图片11.jpg
在启动另外一个终端,如下图:
图片12.jpg
然后输入:tftp 127.0.0.1,如下图:
图片13.jpg
输入 get test 获取 test 文件,如下图:
图片14.jpg
在上图我们看到获取到 test 的信息 13 字节,然后输入 q 退出 tftp,如下图:
图片15.jpg
然后我们输入 ls 查看当前目录下是否有 test 文件了,通过查看,发现当前目录下应经有 test 文件了,这就是
/var/tftpboot 目录下的那个 test 文件,如下图:
图片16.jpg
我们使用 cat 命令查看一下 test 文件的内容,如下图:
图片17.jpg
通过上面的截图,我们看到 test 文件里面的内容是 hello world,与/var/tftpboot 目录的 test 是一样的,至
此我们的 TFTP 服务器端的配置就完成了,下面我们来看下 iTOP-4412 开发板客户端的配置。
iTOP-4412 开发板我们制作的 linux 文件系统已经支持 TFTP 客户端命令了,编译 Busybox 时默认是支持该
命令的,linux 文件系统在启动的时候我们通过脚本设置了以太网的 IP 地址是 192.168.1.230,这个脚本是在
文件系统的 etc/eth0-setting 文件,我们打开这个文件,如下图:
图片18.jpg
如果我们想修改默认的 IP,子网掩码,网关,DNSMAC 就编辑这个文件对应的选项就可以了。
现在我们在 iTOP-4412 上获取 TFTP 服务器上的文件,首先我们先看一下 TFTP 服务器的 IP 地址,如下图:
图片19.jpg
通过上面的截图我们可以知道 TFTP 虚拟机的 IP 地址是 192.168.1.109,我们的开发板的默认 IP
192.168.1.230,它们在同一个网段,如果不在同意个网段需要修改我们的开发板的 IP 地址,修改方法就是前
面介绍的 etc 目录下的 ethsetting 文件。
连接开发板的网口到路由器上,然后输入 pinging 令确认开发板和 TFTP 服务器是连通的,如下图:
图片20.jpg
如果返回上面的信息就表示开发板和 TFTP 服务器是连通的,现在我们获取 TFTP 上的文件,在开发板的串口
输入:tftp -g -l test -r test 192.168.1.109,如下图:
图片21.jpg
执行完上面的命令, 已经把 TFTP 上的 test 文件下载到开发板的当前目录下了, 使用 ls 看到当前目录下有 test
文件,如下图:
图片22.jpg
在开发板的串口输入 cat test 可以查看 test 的内容,如下图:
图片23.jpg
通过上面的截图,我们可以看到文件的内容和 TFTP 上的文件内容是一样的,至此我们的 TFTP 搭建完成了,
大家以后再调试程序的时候可以用 TFTP,这样就避免了每次都要生成镜像,烧写景象了。
下面我给大家演示一下调试应用程序的方法, 假设我在虚拟机的 Ubuntu 上编写了一个输出 hello world 的小
程序,然后我通过交叉编译器编译这个程序生成了可执行文件 hello,我通过 cp 命令把这个可执行程序 hello
拷贝到了/var/tftpboot 目录下面,接下来我要在开发板端把 hello 文件下载到开发板上,我需要在开发板的串口上执行:tftp -g -lhello -r hello 192.168.1.109,如下图:
图片24.jpg
然后我们输入 ls 命令查看一下当前目录,可以看到已经有 hello 这个文件了,如下图:
图片25.jpg
因为 hello 这个文件现在没有执行权限,所以我们需要输入 chmod 777 hello 命令来修改下 hello 的权限,
如下图:
图片26.jpg
现在我们可以运行 hello 这个程序了,运行结果如下图:
图片27.jpg
我们可以看到程序输出: “hello world”了。通过 TFTP 这种方式可以提高我们调试程序的效率。

回帖(2)

柠檬守护

2016-3-15 17:20:13
其实这个的关键还是在于tftp服务器的搭建,已经网络连接的处理。 楼主分享的很实在的,感谢分享。
举报

naihaidexian

2016-3-18 12:05:00
不明觉厉,感觉很有用,MARK一下~
举报

更多回帖

发帖
×
20
完善资料,
赚取积分