背景:
tuya6 存在较强的校验逻辑,正常情况下只能升级符合校验条件的才能进行升级。为什么写这个升级方法呢:可能会存在升级为定频的固件或者校验信息存在差异导致不能够直接升级的情况,所以我写了这个升级方法,方便大家自己手动升级。也可以学习到相关的专业知识。有疑问或者不符合升级方法情况可以直接找下开发问问。
一、停止程序应用
1.1 比如tuya6 直接执行stop_app.sh 就可以了
二、准备资源文件
2.1.准备好目标的升级文件放到TF卡里,例如这个av130的定频升级文件: fixedFrequency_v1.1.3_ak3918av130_20260601.bin
2.2.把卡插入到设备里
2.3.挂卡:mount /dev/mmcblk0p1 /mnt/sdc/
2.4.查看挂卡情况
2.4.1 查看是否挂卡成功命令:mount,如图:

2.4.2 查看卡内容命令:ls /mnt/sdc/,如图:

三、升级需要了解的知识
3.1 av130N 固件分区图

- mtd0
- 分区名:UBOOT
- 分区路径:/dev/mtd0
- 分区简要说明:U‑Boot 引导程序
- mtd1
- 分区名:ENV
- 分区路径:/dev/mtd1
- 分区简要说明:U‑Boot 环境变量
- mtd2
- 分区名:ENVBK
- 分区路径:/dev/mtd2
- 分区简要说明:环境变量备份分区
- mtd3
- 分区名:DTB
- 分区路径:/dev/mtd3
- 分区简要说明:设备树
- mtd4
- 分区名:KERNEL
- 分区路径:/dev/mtd4
- 分区简要说明:Linux 内核
- mtd5
- 分区名:ROOTFS
- 分区路径:/dev/mtd5
- 分区简要说明:根文件系统
- mtd6
- 分区名:CONFIG
- 分区路径:/dev/mtd6
- 分区简要说明:配置参数分区
- mtd7
- 分区名:USR
- 分区路径:/dev/mtd7
- 分区简要说明:用户应用分区
- mtd8
- 分区名:F64
- 分区路径:/dev/mtd8
- 分区简要说明:烧录的固件文件大小->flash64->8M文件
四、升级
4.1 升级前需要确认升级文件和目标设备是否适配,比如这次给av130N升级定频固件使用fixedFrequency_v1.1.3_ak3918av130_20260601.bin
4.2 解压目标文件到/tmp路径下,命令:tar -xvf /mnt/sdc/<目标文件.bin> -C /tmp/ ,例如:tar -xvf /tmp/fixedFrequency_v1.1.3_ak3918av130_20260601.bin -C /tmp/
4.3 查看解压后的文件内容,命令:ls /tmp/,如图:

4.4 升级命令格式:flashcp <升级文件路径> <升级分区路径> -v
4.5 升级用户应用分区,也就是一般的逻辑内容,升级USR分区,升级的分区路径:/dev/mtd7
4.5.1 升级用户分区使用的升级目标文件为:usr.sqsh4
4.5.2 用户分区升级命令:flashcp /tmp/usr.sqsh4 /dev/mtd7 -v
4.5.3 升级完成结果,如图:

4.6 升级完成后先拔卡,然后重启设备就可以正常运行了
4.7 定频设备需要取消密码,tuya6密码存放在根文件系统分区,需要升级根文件系统分区
4.7.1 升级根文件系统分区使用的升级目标文件为:root.sqsh4
4.7.2 用户分区升级命令:flashcp /tmp/root.sqsh4 /dev/mtd5 -v