searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

算能SE5刷机方案

2023-09-27 09:26:09
42
0

1. tftp刷机

        SM5的内核启动方式是u-boot去加载/boot目录下的boot.scr.emmc脚本,解析里面的命令,找到内核去启动。所以我们可以通过把tftp升级用的命令替换进这个脚本,让SM5一开机就自动进入tftp升级。只有当tftp升级成功完成时,才会把这个脚本刷回正常的启动脚本;如果升级失败,重启SM5就可以再次进行tftp升级。

1.1  准备工作

  • 在build代码时,使用gradle tftp会产生 output/tftp.tgz 文件
  • 准备一台 tftp 服务器
  • windows下可以使用tftpd64
  • linux下参照相关文档搭建tftp服务
  • 路由器,保证升级的设备和tftp服务器在一个局域网内。并且设备通过WAN口连接网络。
  • 将 tftp.tgz解压至 tftp 根目录下

1.2  脚本执行

echo "set serverip 10.0.0.3; dhcp 0x310000000 \$serverip:boot.scr; set reset_after 1; source 0x310000000" > boot.txt

# 这里serverip要设置成tftp server的IP,SM5需要与这个server在同一个网关下

mkimage -A arm64 -O linux -T script -C none -a 0 -e 0 -n "Distro Boot Script" -d boot.txt boot.scr.emmc

sudo cp ./boot.scr.emmc /boot

sudo reboot

2.  /data刷机

注意:该方法要求刷机包的分区与盒子sd卡刷机的分区没有变化,且该刷机方法/data分区并不会被清除,里面的文件都会保存下来。

(1) 因为该方法不会自动清理/data,所以为了新刷环境比较干净,刷机前自行清空/data:rm -fr /data/*

(2) 把SD卡刷机包里的全部文件丢到SM5的/data目录下,效果如下:

/data
├── BOOT
├── boot.1-of-2.gz
├── boot.2-of-2.gz
├── boot.cmd
├── boot_emmc-boot.cmd
├── boot_emmc-boot.scr
├── boot_emmc.cmd
├── boot_emmc-data.cmd
├── boot_emmc-data.scr
├── 此处省略n行

(3) 记录刷机包文件,以便刷机后清理:进入/data目录执行ls > filelist.txt

为了能自动清理刷机包,在制作刷机包时应修改开机自动运行脚本/etc/rc.local,写入cd /data && rm -fr $(cat filelist.txt)

(4) 设置恢复模式

sudo -i

echo -e "boot-recovery\n/DATA/" > /dev/mmcblk0p3

#读取一下看是否符合预期

cat /dev/mmcblk0p3
#预期要能看到:
#boot-recovery
#/DATA/
#按ctrl+c结束

(5)重启系统,请注意不要直接拔电源,以免文件损坏:

sync
sudo reboot
0条评论
作者已关闭评论
张****强
6文章数
1粉丝数
张****强
6 文章 | 1 粉丝
原创

算能SE5刷机方案

2023-09-27 09:26:09
42
0

1. tftp刷机

        SM5的内核启动方式是u-boot去加载/boot目录下的boot.scr.emmc脚本,解析里面的命令,找到内核去启动。所以我们可以通过把tftp升级用的命令替换进这个脚本,让SM5一开机就自动进入tftp升级。只有当tftp升级成功完成时,才会把这个脚本刷回正常的启动脚本;如果升级失败,重启SM5就可以再次进行tftp升级。

1.1  准备工作

  • 在build代码时,使用gradle tftp会产生 output/tftp.tgz 文件
  • 准备一台 tftp 服务器
  • windows下可以使用tftpd64
  • linux下参照相关文档搭建tftp服务
  • 路由器,保证升级的设备和tftp服务器在一个局域网内。并且设备通过WAN口连接网络。
  • 将 tftp.tgz解压至 tftp 根目录下

1.2  脚本执行

echo "set serverip 10.0.0.3; dhcp 0x310000000 \$serverip:boot.scr; set reset_after 1; source 0x310000000" > boot.txt

# 这里serverip要设置成tftp server的IP,SM5需要与这个server在同一个网关下

mkimage -A arm64 -O linux -T script -C none -a 0 -e 0 -n "Distro Boot Script" -d boot.txt boot.scr.emmc

sudo cp ./boot.scr.emmc /boot

sudo reboot

2.  /data刷机

注意:该方法要求刷机包的分区与盒子sd卡刷机的分区没有变化,且该刷机方法/data分区并不会被清除,里面的文件都会保存下来。

(1) 因为该方法不会自动清理/data,所以为了新刷环境比较干净,刷机前自行清空/data:rm -fr /data/*

(2) 把SD卡刷机包里的全部文件丢到SM5的/data目录下,效果如下:

/data
├── BOOT
├── boot.1-of-2.gz
├── boot.2-of-2.gz
├── boot.cmd
├── boot_emmc-boot.cmd
├── boot_emmc-boot.scr
├── boot_emmc.cmd
├── boot_emmc-data.cmd
├── boot_emmc-data.scr
├── 此处省略n行

(3) 记录刷机包文件,以便刷机后清理:进入/data目录执行ls > filelist.txt

为了能自动清理刷机包,在制作刷机包时应修改开机自动运行脚本/etc/rc.local,写入cd /data && rm -fr $(cat filelist.txt)

(4) 设置恢复模式

sudo -i

echo -e "boot-recovery\n/DATA/" > /dev/mmcblk0p3

#读取一下看是否符合预期

cat /dev/mmcblk0p3
#预期要能看到:
#boot-recovery
#/DATA/
#按ctrl+c结束

(5)重启系统,请注意不要直接拔电源,以免文件损坏:

sync
sudo reboot
文章来自个人专栏
ctyun-zhangq
6 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0