一、整体流程
tftpboot是Linux开发中的非常重要的软件,通过它可以实现服务器与开发板之间收发数据,常用于在开发板下载服务器端交叉编译后的可执行文件
。
使用tftpboot的步骤如下:
1.确保服务器(电脑)和开发板各连一条网线,确保都有各自的ip地址。【同一网段】
2.连接USB转串口线,因为要用到SecureCRT,方便电脑给开发板写指令。
setenv serverip 192.168.2.2
setenv ipaddress 192.168.2.10
3.启动开发板,在uboot可以查看开发板的ip。若发现开发板没有分配ip地址,可以查看help,如何配置serverip ,开发板的ip地址。
这里以某芯片的命令为例:
crb106s> ping 192.168.2.2
Waiting for RPM0 LMAC3 link status... SGMII [1G]
Using rvu_pf#3 device
host 192.168.2.2 is alive
4.输入“ping 开发板的ip“,完成开发板向服务器端的网络连接。
5.电脑端(tftp服务器)输入“ping 开发板的ip“,完成服务器向开发板的网络连接。
注意:tftp服务器需要在配置文件中指定tftp根目录,并且在linux中创建对应的目录,并赋予读写权限。
6.确保文件上传/下载的路径正确。
topo结构图
二、服务器安装tftp服务器
【步骤】:
1.安装tftp服务
以ubuntu服务器为例:
sudo apt-get update
sudo apt-get install tftpd-hpa
2.tftp服务配置
安装完成后,我们需要对tftp服务器进行配置。打开终端并执行以下命令:
# 修改配置文件权限
sudo chmod 777 /etc/default/tftpd-hpa
#修改tftp配置文件
sudo vi /etc/default/tftpd-hpa
在配置文件中,找到以下行:
#TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/var/lib/tftpboot"
#TFTP_ADDRESS=":69"
#TFTP_OPTIONS="--secure"
将这些行的注释符号(#)去掉,并根据需要进行修改。例如,你可以设置TFTP的用户名、目录和地址。配置完成后,保存并关闭文件。
4.创建tftp目录
打开终端,使用以下命令:
cd /var/lib/
sudo mkdir tftpboot
5.创建完成后,我们需要更改该目录的权限:
sudo chmod 777 /var/lib/tftpboot:/var/lib/tftpboot
$cd /var/lib/tftpboot
# 将需要供别人下载的文件都放在这里
/var/lib/tftpboot$ ls
Image-SDK12.23.10-ramdisk
6.重新启动系统
以确保所做的更改生效。可以使用以下命令重启系统:
reboot
#注意重启之后,可能与开发板连接的tftp服务器的网口ip会丢失,
# 由于之前是ip address add 配置的,所以需要再次配置tftp的IP地址。
# 并检查iptable,执行iptable -F 关闭防火墙
7.重启服务器之后,重启tftp服务。
sudo service tftpd-hpa restart
# 查看tftp服务状态
sudo service tftpd-hpa status
zheng@:/var/lib$ sudo service tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server
Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
Active: active (running) since Mon 2024-01-08 17:44:54 CST; 17s ago
Docs: man:systemd-sysv-generator(8)
Process: 4897 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 18982)
Memory: 396.0K
CPU: 12ms
CGroup: /system.slice/tftpd-hpa.service
└─4905 /usr/sbin/in.tftpd --listen --user tftp --address :69 /var/lib/tftpboot
# 或者
$ netstat -a | grep tftp
udp 0 0 0.0.0.0:tftp 0.0.0.0:*
udp6 0 0 [::]:tftp [::]:*
$ netstat -tuln | grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:*
udp6 0 0 :::69 :::*
三、开发板使用tftpboot下载文件
从tftp服务器下载文件,注意使用绝对路径启动开发板,进入Uboot目录
crb106s> tftpboot $loadaddr /var/lib/tftpboot/Image-SDK12.23.10-ramdisk
Waiting for RPM0 LMAC3 link status... SGMII [1G]
Using rvu_pf#3 device
TFTP from server 192.168.2.2; our IP address is 192.168.2.10
Filename '/var/lib/tftpboot/Image-SDK12.23.10-ramdisk'.
Load address: 0x40080000
Loading: ################################################## 904.8 MiB
26.4 MiB/s
done
Bytes transferred = 948787712 (388d5a00 hex)
四、boot启动镜像
直接在内存启动Image和Kenel
crb106s> booti $loadaddr - $fdtaddr