使用TFTP实现开发板与虚拟机文件传输
一、背景
编译的测试程序,ko等需要加载到zynq 7000的开发板上运行。
组网:一台Windows笔记本(也叫主机),一个Ubuntu 16.04的虚拟机(简称虚拟机),一台zynq 7000的开发板。笔记本和开发板均接在路由器下,保证在同一网段,虚拟机和笔记本网络设置为桥接模式。使用时可能需要关闭Windows主机、Ubuntu虚拟机的防火墙功能。
二、搭建TFTP服务器
TFTP服务端运行在Ubuntu虚拟机上。
1、启动服务
在Ubuntu虚拟机上通过如下命令安装TFTP服务器
sudo apt-get install tftpd-hpa
一般安装之后服务会启动。可以通过命令
netstat -a | grep tftp
查看是否有在监听端口,若有,则说明服务已启动。若没有启动,可以通过
service tftpd-hpa start // 或者 service tftpd-hpa restart
启动。
2、配置
默认情况下, TFTP服务器的配置文件位于/etc/default/tftpd-hpa
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure"
修改TFTP默认服务器的路径 /var/lib/tftpboot 权限为777
sudo chmod 777 /var/lib/tftpboot
则可以在开发板上通过TFTP客户端访问该路径。
三、客户端访问
zynq 7000从SD卡启动官网镜像:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842330/2017.4+Release
通过ifconfig查看网络信息,保证和Ubuntu虚拟机在同一网段,且可以相互ping通。
root@xilinx-zc702-2017_4:~# tftp -h tftp: invalid option -- 'h' BusyBox v1.24.1 (2017-12-14 10:33:52 MST) multi-call binary. Usage: tftp [OPTIONS] HOST [PORT] Transfer a file from/to tftp server -l FILE Local FILE -r FILE Remote FILE -g Get file -p Put file
通过tftp命令访问服务器上的内容,例如
tftp -g -r test.log 192.168.1.102
其中192.168.1.102是Ubuntu虚拟机的IP,注意不是主机windows系统的IP,因为TFTP服务是运行在Ubuntu虚拟机上的。test.log是 /var/lib/tftpboot 目录下的文件,需要先创建好。路径 /var/lib/tftpboot 也可以修改,修改后需要重启TFTP服务。