Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 69。

在 U-Boot 中也支持 TFTP 协议,可以通过 tftp 命令从服务端下载文件。服务端可以是 Linux,也可以是 Windows,只要支持 TFTP 服务就可以。

本文介绍如何在 Linux(虚拟机 Ubuntu 18.04) 下搭建 TFTP 服务,并实现在 U-Boot 中使用 tftp 命令下载 Linux 内核镜像文件到开发板 RAM 中。

搭建 TFTP 服务

  • 打开终端,执行命令安装 tftp-hpa 和 tftpd-hpa:
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
  • 在用户目录下新建 TFTP 工作目录,并赋予权限:
mkdir /home/alpha/tftpboot
chmod 777 /home/alpha/tftpboot

  • 新建文件 /etc/xinetd.d/tftp,填入以下内容:
server tftp
{
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /home/alpha/tftpboot/
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
}

  • 启动 tftp 服务:
sudo service tftpd-hpa start
  • 修改 /etc/default/tftpd-hpa 文件:
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/alpha/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s --secure"

  • 重启 tftp 服务:
sudo service tftpd-hpa restart

文件下载

  • 将 Linux 内核镜像文件拷贝到 TFTP 工作目录,并赋予权限:

  • 配置 U-Boot 网络相关的环境变量,注意服务端 IP 要设置正确,且开发板 IP 和服务端 IP 要在同一网段下:
setenv ipaddr 192.168.0.232      # U-Boor IP 地址
setenv ethaddr 00:aa:bb:cc:dd:ef # MAC 地址
setenv gatewayip 192.168.0.1     # 网关地址
setenv netmask 255.255.255.0     # 子网掩码
setenv serverip 192.168.0.120    # 服务器 IP 地址
saveenv                        # 保存环境变量

  • 保证开发板能够 ping 通服务端 IP:

  • 使用 tftp 命令下载文件,80800000 为 zImage 在 RAM 中的存放地址:
tftp 80800000 zImage
  • 通过终端打印的日志可以看到下载进度、传输速率等相关信息:

更多内容

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 14:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 14:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 14:50:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 14:50:02       20 阅读

热门阅读

  1. 产品面试题2

    2024-01-25 14:50:02       29 阅读
  2. [go] 中介者模式

    2024-01-25 14:50:02       36 阅读
  3. git reset -hard 后,想撤回reset并恢复到reset前的版本

    2024-01-25 14:50:02       35 阅读
  4. git tag的用法详解

    2024-01-25 14:50:02       32 阅读
  5. 数据结构—基础知识(12):二叉树算法补充

    2024-01-25 14:50:02       35 阅读
  6. 阿里云 微消息队列 MQTT使用与部分常见问题处理

    2024-01-25 14:50:02       31 阅读
  7. Mysql 文件导入与导出

    2024-01-25 14:50:02       36 阅读
  8. 再学微信小程序

    2024-01-25 14:50:02       31 阅读
  9. Shell编程

    2024-01-25 14:50:02       36 阅读