LV02-03-网络环境-02-TFTP环境搭建

本文主要网络环境的搭建——TFTP环境的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本(一开始使用的是16.04版本,后来进行了升级)
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
点击查看本文参考资料
分类 网址 说明
官方网站 https://www.arm.com/ ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.nxp.com.cn/ NXP官方网站
https://www.nxpic.org.cn/NXP 官方社区
https://u-boot.readthedocs.io/en/latest/u-boot官网
https://www.kernel.org/linux内核官网
点击查看相关文件下载
分类 网址 说明
NXP https://github.com/nxp-imx NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库
https://elixir.bootlin.com/linux/latest/source 在线阅读linux kernel源码
nxp-imx/linux-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP linux内核仓库tags中的rel_imx_4.1.15_2.1.0_ga
nxp-imx/uboot-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP u-boot仓库tags中的rel_imx_4.1.15_2.1.0_ga
I.MX6ULL i.MX 6ULL Applications Processors for Industrial Products I.MX6ULL 芯片手册(datasheet,可以在线查看)
i.MX 6ULL Applications ProcessorReference Manual I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网)

前边我们已经可以实现开发板、windows和linux开发板互相ping通了,接下来我们了解一下在ubuntu搭建TFTP环境。

一、 TFTP 环境搭建

其实这一部分在之前已经写过笔记了(01/嵌入式开发01HQ课程体系/LV09-uboot与linux/LV09-01-环境搭建-01-TFTP与NFS),这里就当复习回顾吧。

1.  TFTP 简介

TFTP ( Trivial File Transfer Protocol ,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,它的端口号为 69 。我们可以使用 TFTP 来加载内核镜像、设备树和其他较小的文件到开发板 DDR 上,从而实现网络挂载。

TFTP 文件在服务器中,客户端将文件下载到本地,然后本地和服务器端都会有相同的这样一个文件。

2.  TFTP 环境搭建

2.1 查看是否已安装

在终端执行以下命令检查 tftp 相关服务是否安装:

1
dpkg -s tftpd-hpa 

2.2 安装和配置 xinetd

2.2.1 安装xinetd

在终端执行以下命令安装 xinetd :

1
sudo apt-get install xinetd

2.2.2 配置xinetd.conf

这里我们直接用下边的命令打开 xinetd.conf 配置文件(不检查是否存在了,直接打开,没有的话就是空文件,配置完后边直接保存就可以了):

1
sudo vi /etc/xinetd.conf 

打开后将文件修改为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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.3  TFTP 服务器目录创建

接下来创建一个目录用作 TFTP 服务器的站点,在终端执行以下命令:

1
2
mkdir -p /home/sumu/3tftp 
sudo chmod 777 /home/sumu/3tftp/

2.4 安装TFTP相关服务

2.4.1 安装 tftp-hpa 和 tftpd-hpa

在终端执行以下命令:

1
sudo apt-get install tftp-hpa tftpd-hpa

2.4.2  ftpd-hpa 配置文件修改

1
sudo vi /etc/default/tftpd-hpa # 打开配置文件

修改为以下内容:

1
2
3
4
5
6
7
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/sumu/3tftp"
TFTP_ADDRESS=":69"
# TFTP_OPTIONS="--secure"
TFTP_OPTIONS="-c -s -l"

只是修改了 TFTP_DIRECTORY 的值,后边改为我们自己创建的 TFTP 服务目录,后边客户端要下载的文件需要放到该目录下。

2.4.3  tftp 配置文件修改

在终端执行以下命令打开相关配置文件,若没有 xinetd.d 这个目录,我们可以自己手动创建):

1
sudo vi /etc/xinetd.d/tftp

打开后,一般应该是新文件,我们添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /home/sumu/3tftp -c
#log_on_success += PID HOST DURATION
#log_on_failure += HOST
per_source = 11
cps =100 2
flags =IPv4
}

【注意】 server_args = -s 后面要添加自己的 tftp 工作目录。

2.5 重启相关服务

在终端执行以下命令:

1
2
sudo service tftpd-hpa restart # 重启 tftpd-hpa
sudo service xinetd restart # 重启 xinetd

【注意】看到有个资料上说,每次重新打开 ubuntu 若要使用 tftp 都需要重启,这里先记下,后边出现问题的话可以重启再试一下。

二、TFTP功能测试

1. ubuntu本地测试

  • 在服务器目录创建一个新文件
1
2
cd /home/sumu/3tftp # 进入到服务器工作目录
sudo touch test.c # 创建一个新文件

文件内容如下:

1
2
3
4
5
#include <stdio.h>
int main(int argc, const char* argv[])
{
return 0;
}
  • 本机登录tftp服务器
1
2
cd ~              # 回到家目录
tftp localhost # 使用 tftp 命令登录本机

当我们本地登录成功后,命令提示符会变成如下形式:

1
tftp> 
  • 下载服务器中文件
1
tftp> get test.c
  • 退出 tftp
1
tftp> quit

退出 tftp 服务后,我们就会回到刚所在的目录里,我们下载的文件也将会被保存到这里

  • 查看是否下载成功
1
ls

若显示有 test.c文件,那么表示我们的 TFTP 服务安装配置成功。

image-20240828232549228

2. linux开发板测试

开发板中是正点原子出厂系统,肯定是有tftp功能的,但是其实我们经常会再uboot中使用tftp下载linux内核镜像,然后启动内核,一般来说官方的uboot和linux都应该是支持的。

2.1 开发板ip配置

按照上一节《LV02-03-网络环境-01-网络开发环境搭建》配置好uboot、开发板、windows的IP,使其三者可以互相ping通。三者的IP如下:

1
2
3
开发板 IP   : 192.168.10.103
虚拟机 IP : 192.168.10.101
电脑网口的 IP: 192.168.10.100

2.2 传输文件到开发板

我们搭建 TFTP 环境就是为了能将文件从 Ubuntu 传输到我们的 linux 开发板,当我们配置好 Linux 开发板和 ubuntu 的网络环境,两者之间互相可以 ping 通的时候,我们可以这样来实现文件的传输,在开发板的终端(我一般使用MobaXterm )中执行:

1
tftp -g -r <file_name> <Ubuntu_IP>

这样便会将 Ubuntu 中 TFTP 服务器目录下的文件下载到开发板的当前目录下。例如,

1
tftp -g -r test.c 192.168.10.101

若是能下载成功,那么就会在当前目录生成下载的文件:

image-20240917093627155