一、概述
前面将交叉编译后的hello文件下载到开发板,使用了U盘拷贝的方式。这样比较繁琐,且需要时刻准备一个U盘。
这篇笔记就记录如何通过搭建TFTP服务器来实现文件传输。只需要一根网线就可以了。后续的学习中都采用这种方式。
搭建TFTP服务器,需要在电脑Ubuntu和开发板上分别进行设置。设置略显麻烦,但是一劳永逸。
二、Ubuntu
2.1 搭建
首先安装 xinetd,然后安装 tftp 和 tftpd
sudo apt-get install xinetd
sudo apt-get install tftp tftpd
新建 TFTP 的配置文件:
vi /etc/xinetd.d/tftp
文件内容如下:
其中server_args 设置的/var/tftpboot 目录是 tftp 服务器的目录。
我们在本地建立此目录,修改目录权限后,重启xinetd 服务:
mkdir /var/tftpboot
chmod 777 /var/tftpboot
sudo /etc/init.d/xinetd restart
2.2 测试
-
在tftp 服务器的目录下创建一个test文件用于测试,在test内写入简单信息,如:test
-
启动另外一个终端
tftp 127.0.0.1
这时就会变成tftp>开头,指示可以使用tftp指令
-
使用
get 文件名
指令获取文件此处就是:get test
可以看到文件长度和耗时。
获取完成后输入 q 即可退出 tftp。 -
查看获取结果。在当前目录下使用
ls
查看,可以发现多了一个 test 文件,使用cat
查看test内容,与我们创建的测试文件一致。
也可以修改下服务器目录下的test内容,重新get一下,可以获取到最新的文件。
2.3 疑问
创建的test文件内只有一个test。但是在上面的截图中可以看出,使用cat查看时,多输出一个空行,且通过tftp服务器获取时,文件长度是6。
三、开发板
通过网线实现TFTP传输,需要开发板、Ubuntu在同一网段。也就是IP地址和子网掩码进行位与,得到结果一致即可。
3.1 查看IP
-
首先查看开发板的IP地址:
IP=192.168.1.230
子网掩码=255.255.255.0 -
查看windows下的IP地址
IP=192.168.1.102
子网掩码=255.255.255.0 -
再查看下Ubuntu的IP地址
IP=192.168.1.72
子网掩码=255.255.255.0
3.2 测试网络
因为子网掩码为255.255.255.0,所以只要IP的前3段一样,那么位与结果就一样了。开发板已经与windows、Ubuntu在同一网段了,首先用开发板ping一下windows:
再用开发板ping一下Ubuntu:
3.3 从Ubuntu获取文件
现在使用命令tftp -g -l test -r test 192.168.1.72
来测试下:
命令的第一个test是获取到开发板后的名称,可以随意命名;第二个test是Ubuntu端要获取的文件名称,Ubuntu要确实有该文件才行,否则会获取超时;最后的IP地址是Ubuntu的IP地址。
查看下test内容,与Ubuntu一致: