提示:tftp 命令在 uBoot 系统和 Linux 系统下的使用是不一样的
前言
在 Linux 移植过程或裸机开发中,经常要使用到 tftp 命令,本文围绕该命令相关的网络配置及使用做出记录,本文中,开发电脑命名为上位机,新移植硬件或开发板均称为开发板。
一、网络条件
本文网络条件限定:开发板与上位机处于同个路由器情况下,开发板与上位机均能正常连接路由器。
设备与路由器是否能正常连接,首先检查设备 ip 是否正常,然后可以使用 ping 命令进行测试,处于同一网段的主机才能 ping 通。
对于开发板仅有 uBoot 状态,需要手动设置 IP,如果是首次 Linux 启动成功,也需要手动设置 IP。
开发板与上位机可以 ping 通,并且上位机关闭了防火墙,才能使用 tftp 获取文件。
tftp 的使用需要手动关闭防火墙,不然无法获取文件
Ubuntu 下关闭防火墙的命令为:sudo ufw disable
windows 下关闭杀毒软件所带的防火墙即可
开发板 uBoot 命令行设置 IP 的相关命令为:
// 设置开发板 IP
setenv ipaddr 192.168.31.9
// 设置开发板网卡地址,uBoot 阶段随意设置,跟其他设备不冲突即可
setenv ethaddr 00:04:9f:04:d2:35
// 设置网关地址
setenv gatewayip 192.168.31.1
// 设置子网掩码
setenv netmask 255.255.255.0
// 设置上位机地址
setenv serverip 192.168.31.7
// 保存环境变量,只用一次的话不需要保存
saveenv
ping 192.168.31.7
uBoot 命令一般还还配置有 env set / env print / env save,可以替代 setenv
配置开发板网卡地址后,也可以用 dhcp 命令自动获取下服务器信息
开发板 Linux 系统下如果不能自动获取 IP,那么也需要手动设置 IP 并且重启网卡,相关命令为:
ifconfig eth0 up
udhcpc -i eth0
ifconfig
二、使用 tftp 上位机需要如何配置
使用 tftp 命令的上位机系统一般为 Linux 系统,本文以 uBuntu 为例。
1. 首先在 UBuntu 上安装 xinetd ,相关命令为:
sudo apt-get install xinetd
2. 完成安装后,更改 xinetd.conf 配置
完成安装后,查看 /etc/ 目录下是否存在 xinetd.conf 文件,没有的话需要自己生成。打开 xinetd.conf 文件后,编辑 xinetd.conf 文件如下:
# 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
3. 新建文件传输目录
在上位机新建 tftp 传输用目录,这里建立在/home/zona/linux目录下,目录名为tftp。将tftp目录赋予可读可写可执行权限,相关代码为:
mkdir -p /home/zona/linux/tftp
sudo chmod 777 /home/zona/linux/tftp/
cd /home/zona/linux/
ls
4. 开启 tftp-hpa 和 tftpd-hpa 服务程序
在 UBuntu 下开启 tftp-hpa 和 tftpd-hpa 服务程序,相关命令为:
sudo apt-get install tftp-hpa tftpd-hpa
5. 将 tftp 服务定位至文件目录
安装好 tftp-hpa 和 tftpd-hpa 服务程序后,打开 tftpd-hpa 配置文件,修改我们自己建立的文件目录为 tftp 服务器工作目录,修改配置文件的命令为:
sudo vi /etc/default/tftpd-hpa
修改(没有的话就新建)配置文件 /etc/xinetd.d/tftp
更改为:
server tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /home/zona/linux/tftp -c
#log_on_success += PID HOST DURATION
#log_on_failure += HOST per_source = 11 cps =100 2 flags =IPv4
}
记得更改服务路径为自己新建文件夹的路径
6. 保存后重启
保存配置文件后,重启 tftp 服务,相关命令为:
sudo service tftpd-hpa restart
sodu service xinetd restart
三、开发板上 tftp 的使用
1.uBoot 系统下
由于没有文件系统支持,所以 tftp 命令会将下载的文件放在内存上指定的位置处,相关命令如下:
tftp 0x48000000 shall.bin
2. Linux 系统下
Linux 系统下使用 tftp 服务,上位机中新建的 tftp 文件夹下的 文件将会被下载至开发板中当前目录下,Linux 系统默认新下载的文件将会被去除可执行权限,如果新下载的文件是需要运行的文件,那么下载后记得增加权限后才能使用。
tftp -g -r shall.bin 192.168.31.182
总结
在开发板挂接好 nfs 文件系统后,一般将不会再使用 tftp 命令来进行文件下载,本文将 tftp 使用方式记录下来,备忘。