在嵌入式开发过程中,arm板和ubuntu之间的数据交互是必不可少的,常见的传输方式式nfs、tftp等,这里介绍的是tftp的环境搭建和简单使用。
1、tftp简介
TFTP全称是(Trivial File Transfer Protocol)简单文件传输协议,是 TCP/IP 协议族中用来在客户端与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。它是以UDP为基础的应用层协议。
2、tftp的环境搭建
2.1 安装和配置 xinetd
(1)通过执行以下指令sudo apt-get install xinetd来安装:
至于tftp为什么要安装xinetd,可以参考以下链接学习下。xinetd简单来说是用来管理多种轻量级Internet服务的(tftp包含在其中)。
Linux之Xinetd服务介绍_xinted_鹤啸九天-西木的博客-CSDN博客
(2)执行以下命令ls /etc/xinetd.conf ,查询xinetd的配置文件是否存在,若不存在则执行命令sudo vi /etc/xinetd.conf创建。
(3)新建出来的文件是空的,则填入以下内容:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
2.2 安装tftp-hpa 和 和 tftpd-hpa 服务程序
linux的tftp环境包括:linux服务器端的tftp-server和客户端的tftp-client。因为u-boot本身内置tftp-client,若arm板使用uboot启动内核,则arm板端就不用配置环境了。本文主要介绍ubuntu系统daunt(即主机linux)安装TFTP环境。
执行以下命令安装两个程序:
sudo apt-get install tftp-hpa tftpd-hpa
其中,tftp-hpa是客户端,作用是从TFTP服务器端上传/下载数据。
tftpd-hpa是服务端,作用是提供TFTP服务,供别人上传/下载数据。
2.3 创建tftp目录并配置服务器端参数
(1)在合适位置创建一个文件夹作为tftp目录,本文在如下图路径创建,并赋予该目录最高权限。
(2)配置服务器端参数
执行sudo vi /etc/default/tftpd-hpa 修改配置文件,内容如下:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/kly/linux/tftp" #修改成自己的tftp目录地址
TFTP_ADDRESS=":69" #端口号
TFTP_OPTIONS="-l -c -s" #“-c”是可以上传文件的参数;“-s”是指定的TFTP服务器的目录;“-l”是
#在独立运行服务器(听)模式,而不是从inetd运行
执行sudo vi /etc/xinetd.d/tftp修改配置文件,内容如下:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/kly/linux/tftp -c # -s 后跟你存放TFTP的文件目录; -c参数允许上传(>可以创建文件)
disable = no #yes表示TFTP服务器是关闭的;no表示启动TFTP服务器
per_source = 11
cps = 100 2
flags = IPv4
}
关于为什么需要配置两个tftp文件,这里提供一个参考链接,感兴趣的朋友可以看看
参考链接:ubuntu 搭建TFTP服务器之最佳方案分析-edaplayer-ChinaUnix博客
2.4重启 tftpd-hpa服务和 xinetd 服务
以此执行以下命令:
sudo service tftpd-hpa restart
sudo service xinetd restart
3、tftp使用测试
3.1 上传文件到指定服务器(arm板执行命令上传数据到ubuntu)
命令: tftp -p -l file_path serverIP(这里file_path是需要上传文件的完整路径)
实际测试效果:
(1)arm板执行命令tftp -p -l ./test_uploadfile.c 192.168.1.253,上传截图如下:
(2)ubuntu接收数据截图如下:
3.2 从指定服务器下载数据(arm板执行命令从ubuntu下载数据)
命令: tftp -g -r file_path serverIP(file_path是服务器上tftp默认目录里的文件,不需要完整路径)
实际测试效果:
(1)ubuntu系统的tftp服务器文件目录创建test_downloadfile.c文件,如下图所示:
(2)arm板执行命令tftp -g -r test_downloadfile.c 192.168.1.253,下载得到文件的截图如下:
4、小结
上述文章从tftp的简介、环境搭建、命令使用与实际测试等方面介绍了TFTP实现arm开发板与ubuntu之间数据传输的过程。