当前位置: 首页 > news >正文

FOTA升级进阶指南:文件系统直接升级+串口分段升级

FOTA(Firmware Over-The-Air)是固件远程升级的简称,用于设备固件的远程更新和维护。

主要优势包括:

  • 远程维护:
    无需现场操作即可完成设备固件更新;

  • 故障修复:
    快速修复已部署设备的软件缺陷;

  • 功能升级:
    为设备增加新功能,提升产品价值;

  • 成本节约:
    大幅降低设备维护和升级成本;

  • 安全保障:
    支持完整性校验,确保升级过程安全可靠。

本文将以合宙低功耗模组Air780EPM系列开发板为例,分享FOTA应用示例要点。

一、升级包制作

LuatOS开发模式下,固件分为两部分:

  • core:底层固件;

  • script:用户脚本;

远程升级时可以仅升级script,也可以同时升级core+script,这为产品迭代和维护提供了极大的便利。

关于全量升级和差分升级说明如下:

  • 仅script脚本升级时:
    对于Air780EXX系列、Air8000系列、Air8101系列是全量升级。

  • core+script都升级时:
    对于Air780EXX系列、Air8000系列是差分升级;
    对于Air8101系列是全量升级。

▼ 全量升级包 ▼

仅script升级时,升级包制作说明如下:

如果用户只是新增一些自己的脚本逻辑,没有更新底层,可以选择仅脚本升级;

更新完自己脚本后,修改版本号,点击生成量产文件,生成的量产文件中以.bin结尾的就是仅脚本升级的升级包。

▼ 差分升级包 ▼

core+script都升级时,升级包制作说明如下:

每一次core的升级都会带来一些网络上的优化(例如信号差时的网络稳定性)以及一些bug修复,所以在发布新版本以后,用户可以先测试下core对自己脚本有无明显影响或性能提升,然后进行远程FOTA。

对于含core升级的话需要制作差分包,原始版本生成一次量产文件,新版本生成一次量产文件。

针对这两个量产文件,制作一个差分文件:
点击到Luatools的主界面,依次点击下方图中蓝框所示意的地方。

特别注意:必须使用luatools_3.0.9及其以上版本,要不差分包升级的时候可能会出问题。

按下图所示选择旧版本以及新版本的固件,然后点击开始执行即可;如果不想输出的差分包在Luatools根目录下,可以自行选择一个输出路径;在你选择的目录下看,新生成的.bin文件就是升级差分包。

二、FOTA升级示例demo

本demo演示的核心功能为,基于Air780EPM的两种FOTA升级方式:

  • 文件系统直接升级:
    通过模组文件系统中的文件直接升级,代码演示通过Luatools的烧录文件系统功能将升级包文件直接烧录到文件系统然后升级。

  • 分段升级:
    通过串口将升级包文件分多个片段发送,每个片段接收并写入,代码演示使用USB虚拟串口分段写入升级包升级。

    适用场景:
    非标准数据传输 -> 串口、TCP、MQTT等自定义通道升级;
    流程精细控制 -> 需要自定义升级前后处理逻辑。

两种FOTA升级测试要点如下:

▼ 文件系统直接升级 ▼

1)核心代码实现

fota_file.lua核心测试代码如下,完整demo详见源码仓库最新文件。

2)文件系统升级操作步骤
  • 参考实操教程搭建好演示硬件环境;

  • 修改配置:
    在main.lua中取消require("fota_file") 的注释,注释掉require("fota_uart");

  • 制作升级包:
    按照第一章节,使用Luatools制作升级包;

  • 烧录文件:

    使用Luatools烧录内核固件和脚本代码,通过"烧录文件系统"功能将升级包文件烧录到设备中;

  • 自动升级:
    设备启动后会自动检测并执行升级流程。

注意:"烧录文件系统"功能使用

将制作好的升级包修改名字为update.bin,然后放到一个空文件夹中,在Luatools的"烧录文件系统"功能栏中选中这个文件夹,点击下载即可;烧录成功后,update.bin会在文件系统根目录下,路径为"/update.bin"。

3)查看运行日志
  • 开始升级,读取文件系统目录下的升级包文件/update.bin;

  • FOTA初始化 → 底层就绪 → 文件写入 → MD5校验通过;

  • 升级完成,版本验证成功;

  • 设备自动重启;

  • 新版本1.0.1正常运行,新增日志确认升级成功。

如下图示:
文件系统FOTA升级完全成功,版本从1.0.0升级到1.0.1。

▼ 串口分段升级 ▼

1)核心代码实现

fota_uart.lua核心测试代码如下,完整demo详见源码仓库最新文件。

2)串口升级操作步骤
  • 参考实操教程搭建好演示硬件环境;

  • 修改demo脚本代码:
    确保main.lua中已注释 require("fota_file"),取消require("fota_uart") 的注释;

  • 制作升级包:
    按照第一章节,使用Luatools制作升级包;将制作好的升级包放在main.py同级目录下;

  • 烧录文件:
    Luatools烧录内核固件和修改前的demo脚本代码,烧录成功后,自动开机运行;

  • 通过串口升级:
    确认设备连接到电脑的串口(虚拟USB串口);按一下板上的Powerkey键,然后运行Python脚本发送升级包;脚本会自动寻找设备虚拟串口,发送升级命令并传输fota_uart.bin文件;设备接收并验证升级包,升级成功后会自动重启。

3)查看运行日志
  • USB虚拟串口连接,收到#FOTA起始指令;

  • 开始分段接收升级包,每次256字节,累计5751字节;

  • 所有数据包写入成功,MD5校验通过;

  • 升级完成,重启;

  • 重启后新版本1.0.2运行,新增日志确认升级成功。

如下图示:
串口FOTA升级完全成功,版本从1.0.0升级到1.0.2。

http://www.rkmt.cn/news/111738.html

相关文章:

  • 必看!2026年TOP8 EOR名义雇主人力资源解决方案推荐榜单,如何选择EOR名义雇主?
  • FastMCP之Resources
  • kanass全面介绍(13) - 如何做好测试管理
  • 分支语句和循环语句
  • Solidity入门(8)-库合约Library
  • Java计算机毕设之基于JavaWeb的智慧养老院管理系统的设计与实现基于Java的养老服务智慧管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • Cordova与OpenHarmony施肥记录管理
  • 单目实时3D识别
  • 通俗易懂的理解 LLM 知识入门浅析:核心原理、LLM是怎么学习的、LLM的局限性、Transformer 架构、注意力机制、如何训练一个 LLM
  • 基于改进A*算法融合DWA算法的机器人路径规划MATLAB仿真程序(含注释) 包含传统A*算法...
  • 基于AI数字人系统源码的低成本开发方案与实践经验
  • 实战笔记】台达PLC与温控器联机全流程(附源码)
  • “comsol煤矿模型仿真合集:瓦斯抽采、采空区耦合性、采场倾斜煤层、注氮灭火与岩石压裂损伤模...
  • 黄金票据(Golden Ticket)和白银票据(Silver Ticket)
  • 0x3f第六天 递归思想
  • 云原生安全实战:一次72小时的DDoS攻击,我们是怎么活下来的?
  • 高效缺陷管理的艺术与科学
  • GA-BP多变量时序预测:基于遗传算法优化BP神经网络的Excel格式数据集预测程序
  • 全新升级!洗车服务行业专属小程序源码,致力于为各类洗车服务商提供最得力的线上助手
  • 基于CNN多变量时间序列预测的MATLAB程序(含清晰注释与测试数据集)
  • Flutter 国际化(i18n)全指南:一键切换中/英/日多语言
  • 永磁同步电机谐波注入与5/7次谐波抑制——基于MATLAB Simulink仿真模型操作教程
  • 艾默生EV2000变频器源代码:算法特色显著
  • 数字人平台选型指南:四大维度全面解析
  • 快速上线的二手车小程序源码系统,助力车商降本增效
  • ESP32模组买四博智联的
  • GEO战略解码:AI搜索时代,如何重构品牌认知的底层逻辑
  • A860-0360-T101编码器
  • [Java EE] 多线程编程初阶 - 教程
  • 辽宁省企业如何做信创产品认证?信创认证流程与费用详解