8.6. 刷机包类型转换工具与tftp刷机方法

说明:刷机包类型转换工具用于sdcard刷机包与tftp刷机包的相互转换;tftp刷机方法见本页末尾;

适用对象:该工具适用于官方刷机包,socbak工具制作的刷机包与bsp工具制作的刷机包;

执行环境:该工具的执行需要在Linux x86系统下,本文以Ubuntu 20.04 x86系统为例;

8.6.1. 刷机包类型转换工具的获取

使用浏览器打开并下载:https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/11/16/15/sd2tftp.tar

文件下载完成后会得到一个压缩包,将压缩包解压后得到sd2tftp.sh脚本文件。

注解

首次使用需要安装mkimage工具,可使用如下指令进行安装:

sudo apt install u-boot-tools

8.6.2. 刷机包类型转换工具使用指引

  1. 将sd2tftp.sh文件置入sdcard刷机包文件或tftp刷机包文件同路径下;

  2. 执行指令

./sd2tftp.sh [Mode Choose]
参数[Mode Choose]为./sd2tftp.sh的输入参数,其值为0或1;
当参数[Mode Choose]为0时,运行S2T模式,S2T模式为将sdcard刷机包转换为tftp刷机包;
当参数[Mode Choose]为1时,运行T2S模式,T2S模式为将tftp刷机包转换为sdcard刷机包;
  1. 执行成功后的刷机包会生成在output文件夹下。

8.6.3. tftp刷机方法

SE5 的 u-boot 也支持通过以太网和tftp协议刷机。刷机步骤如下:

注意

  1. tftp 使用的刷机包与 SD 卡刷机使用的刷机包是不同的;

  2. tftp刷机方法仅支持从SDKv22.09.02升级到以上版本。

  1. 获取tftp刷机包:可以参照上文自行制作,也可以从 https://developer.sophgo.com/site/index/material/all/all.html 下载。其中v22.09.02之后版本的SOPHONSDK sophon-img_<date>_<hash> 文件夹中提供了 tftp.tgz 文件。

  2. 在PC上安装tftp server,并指定tftp刷机包路径:

    • Ubuntu系统:运行: apt-get install tftpd-hpa tftp-hpa ,下载tftp工具;然后查看 /etc/default/tftpd-hpa 文件中的 TFTP DIRECTORY 路径,将刷机包拷贝进去(您也可以修改这个路径配置, sudo service tftpd-hpa restart 后即可生效);

    • windows系统: 点击链接下载 https://pjo2.github.io/tftpd64/ ,随后打开下载好的 tftpd64.exe 图形界面,并将 Current Directory 设置指向tftp刷机包解压后的文件夹。

注意

  1. 使用的 PC 推荐尽可能使用 Ubuntu 系统,Windows 下的 tftpd64 对环境比较挑剔,在传输大文件时有时会不稳定,造成升级失败。

  2. tftp server 搭建好后,您可以用另一台 PC 先测试一下,避免网络、防火墙等配置问题。

  1. 搭建基础网络环境:将需要升级的设备和 PC 机放在同一个路由器下(也可以通过设备LAN口直连PC)。

  2. 执行刷机步骤:

    1. 将需要升级的设备接上串口终端,启动盒子,快速按回车,进入uboot指令模式;

    2. 输入如下指令:

    setenv serverip 192.168.150.2
    setenv ipaddr 192.168.150.1
    setenv gatewayip 192.168.150.2
    setenv update_all 0
    setenv reset_after 1
    tftp 0x310000000 boot.scr
    source 0x310000000
    set netretry yes
    

    注意

    注:指令中的serverip为tftp服务器地址,ipaddr为盒子的ip地址,gatewayip为网关地址,需要根据实际情况进行调整; 在window使用场景下,通常是使用盒子的lan口和PC端进行连接,此时serverip和gatewayip是相同的; 用户可以在执行tftp指令之前先ping一下serverip,确认一下连接状态。

    1. 随后开始刷机,您会看到#号表示的进度。

    2. 由于通过指令配置了环境变量 reset_after 1 ,在刷机完成后系统将会重新启动。同时,指令 set netretry yes 将传输超时后进行重试,而非直接重新启动设备。需要注意的是,如果刷机失败,系统同样会自动重启。请根据执行结束后的提示来判断刷机是否成功完成。