使用tftp协议传输镜像文件到开发板上

一、整体流程

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.确保文件上传/下载的路径正确。

图片[1]-使用tftp协议传输镜像文件到开发板上-不念博客
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
© 版权声明
THE END