配置
跳转到“配置”-
window 端 window 端直接下载相关应用程序安装即可。
-
linux 端
常用于传输内核、设备树、根文件系统
1. 安装 TFTP 服务
跳转到“1. 安装 TFTP 服务”sudo apt install tftpd-hpa2. 配置 TFTP
跳转到“2. 配置 TFTP”sudo nano /etc/default/tftpd-hpa修改为:
TFTP_USERNAME="tftp"TFTP_DIRECTORY="/var/lib/tftpboot"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="--secure"3. 创建目录并设置权限
跳转到“3. 创建目录并设置权限”sudo mkdir -p /var/lib/tftpbootsudo chmod 777 /var/lib/tftpboot4. 启动服务
跳转到“4. 启动服务”sudo systemctl restart tftpd-hpasudo systemctl enable tftpd-hpa开发板端使用
跳转到“开发板端使用”命令行方式(开发板Linux环境)
跳转到“命令行方式(开发板Linux环境)”# 从 TFTP 服务器获取文件tftp -g -r filename 192.168.0.50
# 示例tftp -g -r uImage 192.168.0.50U-Boot 环境
跳转到“U-Boot 环境”# 在 U-Boot 命令行tftp 0x30000000 uImage快速传文件
跳转到“快速传文件”# Ubuntu 上复制文件到 TFTP 目录cp myfile.bin /var/lib/tftpboot/
# 开发板上获取tftp -g -r myfile.bin 192.168.0.50TFTP 使用指南
跳转到“TFTP 使用指南”📤 Ubuntu 端:放置文件
跳转到“📤 Ubuntu 端:放置文件”方法1:直接复制文件到 TFTP 目录
跳转到“方法1:直接复制文件到 TFTP 目录”# 复制任何文件到 TFTP 目录cp /path/to/your/file /home/forlinx/tftp/
# 例如:cp myapp /home/forlinx/tftp/cp kernel.img /home/forlinx/tftp/cp rootfs.tar.gz /home/forlinx/tftp/
# 查看 TFTP 目录内容ls -lh /home/forlinx/tftp/方法2:在 TFTP 目录下编译或生成文件
跳转到“方法2:在 TFTP 目录下编译或生成文件”# 直接在 TFTP 目录工作cd /home/forlinx/tftp/
# 编译程序gcc -o myapp myapp.c
# 或者直接编辑文件vim test.txt📥 开发板端:获取文件
跳转到“📥 开发板端:获取文件”基本命令格式
跳转到“基本命令格式”tftp -g -r <文件名> <服务器IP>参数说明:
-g: get,下载文件-r: remote,指定远程文件名-l: local,指定本地保存的文件名(可选)
💡 实际使用例子
跳转到“💡 实际使用例子”例子1:传输应用程序
跳转到“例子1:传输应用程序”Ubuntu 端:
# 编译你的程序gcc -o hello hello.c
# 复制到 TFTP 目录cp hello /home/forlinx/tftp/开发板端:
# 下载程序tftp -g -r hello 192.168.0.50
# 添加执行权限chmod +x hello
# 运行程序./hello例子2:传输内核镜像
跳转到“例子2:传输内核镜像”Ubuntu 端:
# 复制内核镜像cp /path/to/uImage /home/forlinx/tftp/开发板端(Linux 环境):
# 下载到 /tmp 目录cd /tmptftp -g -r uImage 192.168.0.50
# 查看文件ls -lh uImage开发板端(U-Boot 环境):
# 在 U-Boot 命令行tftp 0x30000000 uImage例子3:传输配置文件
跳转到“例子3:传输配置文件”Ubuntu 端:
# 创建配置文件echo "server_ip=192.168.0.50" > /home/forlinx/tftp/config.txtecho "port=8080" >> /home/forlinx/tftp/config.txt开发板端:
# 下载配置文件tftp -g -r config.txt 192.168.0.50
# 查看内容cat config.txt例子4:传输压缩包
跳转到“例子4:传输压缩包”Ubuntu 端:
# 打包文件tar -czf project.tar.gz /path/to/project/
# 复制到 TFTPcp project.tar.gz /home/forlinx/tftp/开发板端:
# 下载tftp -g -r project.tar.gz 192.168.0.50
# 解压tar -xzf project.tar.gz
# 查看ls -lh🎯 高级用法
跳转到“🎯 高级用法”1. 指定本地文件名
跳转到“1. 指定本地文件名”# 下载后保存为不同的名字tftp -g -l my_local_name -r remote_file 192.168.0.502. 下载到指定目录
跳转到“2. 下载到指定目录”# 先切换到目标目录cd /tmptftp -g -r filename 192.168.0.50
# 或使用绝对路径tftp -g -l /tmp/filename -r filename 192.168.0.503. 显示详细信息
跳转到“3. 显示详细信息”# 使用 -v 参数查看传输进度tftp -v -g -r filename 192.168.0.504. 批量下载
跳转到“4. 批量下载”创建脚本 download_all.sh:
#!/bin/bash
FILES="uImage dtb.dtb rootfs.tar.gz"
for file in $FILES; do echo "正在下载 $file ..." tftp -g -r $file 192.168.0.50 if [ $? -eq 0 ]; then echo "✓ $file 下载成功" else echo "✗ $file 下载失败" fidone运行:
chmod +x download_all.sh./download_all.sh🔧 交互式使用(不推荐,但有时候需要)
跳转到“🔧 交互式使用(不推荐,但有时候需要)”# 启动 TFTP 客户端tftp 192.168.0.50
# 进入交互模式tftp> get filename # 下载文件tftp> put filename # 上传文件(如果服务器允许)tftp> status # 查看状态tftp> quit # 退出⚡ 实战流程示例
跳转到“⚡ 实战流程示例”场景:开发 ARM 程序并部署到开发板
跳转到“场景:开发 ARM 程序并部署到开发板”第1步:在 Ubuntu 交叉编译
# 交叉编译(假设已安装交叉工具链)arm-linux-gnueabihf-gcc -o myapp myapp.c
# 查看编译结果file myapp# 应该显示:myapp: ELF 32-bit ... ARM ...第2步:放到 TFTP 目录
cp myapp /home/forlinx/tftp/第3步:开发板下载
# 在开发板上执行cd /tmptftp -g -r myapp 192.168.0.50chmod +x myapp./myapp第4步:修改代码后重复
# Ubuntu 上修改代码vim myapp.c
# 重新编译arm-linux-gnueabihf-gcc -o myapp myapp.c
# 覆盖旧文件cp myapp /home/forlinx/tftp/
# 开发板上重新下载(会覆盖)tftp -g -r myapp 192.168.0.50./myapp📊 查看传输状态
跳转到“📊 查看传输状态”Ubuntu 端监控
跳转到“Ubuntu 端监控”# 实时查看 TFTP 访问日志sudo tail -f /var/log/syslog | grep tftp
# 查看哪些文件被访问sudo journalctl -u tftpd-hpa -f检查文件是否存在
跳转到“检查文件是否存在”# 列出所有可下载的文件ls -lh /home/forlinx/tftp/❌ 常见错误及解决
跳转到“❌ 常见错误及解决”错误1:文件不存在
跳转到“错误1:文件不存在”Error code 1: File not found解决:
# 检查文件是否在 TFTP 目录ls /home/forlinx/tftp/filename
# 确认文件名大小写# TFTP 对文件名大小写敏感!错误2:权限被拒绝
跳转到“错误2:权限被拒绝”Error code 2: Access violation解决:
# 修改文件权限sudo chmod 644 /home/forlinx/tftp/filename
# 或修改整个目录sudo chmod -R 755 /home/forlinx/tftp/错误3:连接超时
跳转到“错误3:连接超时”Transfer timed out解决:
# 1. 检查网络连通性ping 192.168.0.50
# 2. 检查服务是否运行sudo systemctl status tftpd-hpa
# 3. 检查防火墙sudo ufw allow 69/udp🚀 快速测试命令
跳转到“🚀 快速测试命令”完整测试流程:
# === Ubuntu 端 ===# 创建测试文件echo "Hello from TFTP" > /home/forlinx/tftp/test.txt
# 查看文件cat /home/forlinx/tftp/test.txt
# === 开发板端 ===# 下载测试文件tftp -v -g -r test.txt 192.168.0.50
# 验证内容cat test.txt# 应该显示:Hello from TFTP📝 实用技巧
跳转到“📝 实用技巧”技巧1:创建软链接
跳转到“技巧1:创建软链接”# 不用每次都复制文件到 TFTP 目录ln -s /path/to/your/project /home/forlinx/tftp/project
# 开发板直接访问tftp -g -r project/myapp 192.168.0.50技巧2:设置别名
跳转到“技巧2:设置别名”在 ~/.bashrc 添加:
alias tftp-put='cp $1 /home/forlinx/tftp/'alias tftp-list='ls -lh /home/forlinx/tftp/'使用:
source ~/.bashrctftp-put myapp # 快速复制到 TFTPtftp-list # 快速查看技巧3:自动化脚本
跳转到“技巧3:自动化脚本”创建 deploy.sh:
#!/bin/bash# 编译并部署到 TFTP
echo "编译中..."arm-linux-gnueabihf-gcc -o myapp myapp.c
if [ $? -eq 0 ]; then echo "编译成功,部署到 TFTP..." cp myapp /home/forlinx/tftp/ echo "✓ 可以从开发板下载了: tftp -g -r myapp 192.168.0.50"else echo "✗ 编译失败"fi总结:标准工作流程
跳转到“总结:标准工作流程”# 1. Ubuntu:准备文件cp your_file /home/forlinx/tftp/
# 2. 开发板:下载文件tftp -g -r your_file 192.168.0.50
# 3. 开发板:使用文件chmod +x your_file # 如果是可执行文件./your_file # 运行就是这么简单!🎉
需要其他使用场景的示例吗?
来源:CSDN 原文,首次发布于 2025-12-27。