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

本文详细介绍了如何利用TFTP协议实现iTOP-4412开发板与Ubuntu虚拟机之间的在线调试过程,包括服务器端配置及开发板客户端的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台:iTOP-4412开发板

本文讲解如何通过 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 这种方式可以提高我们调试程序的效率。

### 配置TFTP服务器以支持开发板文件传输 #### 创建TFTP服务器工作目录并设置权限 为了确保TFTP服务能够正常运行,首先需要创建一个用于存放文件的工作目录,并设置适当的权限。这可以通过执行以下命令来完成: ```bash mkdir -p /home/book/tftpboot # 创建路径 sudo chmod 777 /home/book/tftpboot # 改变权限 ``` 这些命令创建了一个名为`tftpboot`的目录,并赋予所有用户读、写、执行的权限,以便于不同用户都能够访问该目录中的文件[^1]。 #### 修改TFTP服务配置文件 接下来,需要编辑TFTP服务的配置文件,指定工作目录以及一些选项参数。具体操作如下: ```bash sudo vim /etc/default/tftpd-hpa # 编辑tftp配置,将 TFTP_DIRECTORY="/home/book/tftpboot" 和 TFTP_OPTIONS="-l -c -s" 加入此文件,分两行写 ``` 这里,`TFTP_DIRECTORY`指定了TFTP服务的工作目录,而`TFTP_OPTIONS`则定义了服务启动时使用的选项,其中`-l`允许大文件传输,`-c`允许创建新文件,`-s`启用安全模式[^2]。 #### 重启TFTP服务 每当修改了配置文件后,都需要重启TFTP服务以使更改生效。这可以通过以下命令实现: ```bash sudo service tftpd-hpa restart ``` 此外,如果使用了xinetd作为超级守护进程,则还需要重新加载并重启xinetd服务: ```bash sudo /etc/init.d/xinetd reload sudo /etc/init.d/xinetd restart ``` #### 测试TFTP服务 为了验证TFTP服务是否配置正确,可以在TFTP工作目录中放置一个测试文件,然后尝试从开发板上下载或上传该文件。例如,在Ubuntu虚拟机上的`/home/forlinx/linux/tftpboot`目录下放置一个名为`abc`的文件,然后在开发板上执行以下命令来下载文件: ```bash tftp 192.168.1.181 # 替换为你的IP地址 get abc ``` 同样地,也可以通过执行`put`命令将文件从开发板上传至TFTP服务器[^2]。 ### Windows环境下配置TFTP服务 #### 设置共享目录 在Windows端,需要将要发送给开发板的文件放置在一个特定的共享目录中。这个目录应该与TFTP服务配置中的工作目录相对应。 #### 使用命令行工具进行文件传输 对于Windows环境下的文件传输,可以使用命令行工具执行具体的传输任务。以下是两种常见的场景及其对应的命令: **从Windows端发送文件到开发板** ```bash tftp -l /Path/FileName1 -r /FileName2 -g 192.168.xx.xx ``` 这里的`-l`参数指定了本地文件的路径和名称,`-r`指定了远程主机上的文件名,`-g`表示以GET模式执行TFTP操作,即从服务器下载文件,最后的IP地址是TFTP服务器的实际地址[^3]。 **从开发板发送文件到Windows端** ```bash tftp -l /Path/FileName1 -r /FileName2 -p 192.168.xx.xx ``` 在此情况下,`-p`参数表示以PUT模式执行TFTP操作,即向服务器上传文件。 ### 开发板端的TFTP文件传输 #### 使用Tftpd32.exe进行配置 对于希望在Windows环境下通过图形界面管理TFTP服务的用户,可以使用Tftpd32.exe程序。启动该程序后,可以通过点击“浏览”按钮选择要传输文件的目录,并从下拉菜单中选择正确的网络接口(即已配置的IP地址)[^4]。 #### 在开发板上执行TFTP命令 一旦TFTP服务已经正确配置并且文件也放置在了正确的位置,就可以通过开发板上的超级终端执行相应的TFTP命令来进行文件传输了。例如,要从TFTP服务器下载一个名为`2.bmp`的文件,可以使用如下命令: ```bash tftp -g 192.168.0.249 -r 2.bmp ``` 如果遇到连接问题,建议检查网络连接状态,包括物理连接是否稳固、IP地址是否正确以及防火墙设置等[^4]。 ### 参数说明 - `-l FILE`:指定本地文件的路径和名称。 - `-r FILE`:指定远程主机上的文件名。 - `-g`:以GET模式执行TFTP操作,即从服务器下载文件。 - `-p`:以PUT模式执行TFTP操作,即向服务器上传文件。 - `-b SIZE`:指定传输的数据块大小,单位为字节[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值