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

嵌入式FOTA进阶:文件系统直接升级+串口分段传输深度指南!

随着嵌入式设备对FOTA升级效率与稳定性的要求提升,文件系统直写与串口分段传输已成为核心进阶技术。前者通过精简数据写入路径,降低存储开销与升级耗时;后者利用串口的稳定通道,以分段方式保障升级包传输的可靠性。本文将系统拆解两种技术的实现逻辑、关键代码设计及典型场景适配方案,深度指南其在FOTA升级中的落地应用,助力突破传统升级瓶颈。

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

LuatOS提供了灵活的FOTA升级方案,支持通过文件系统直接升级和串口分段升级,可以满足不同场景下的固件更新需求;支持灵活的存储位置配置,可以使用内部存储或外部SPI Flash进行固件升级,同时提供了完整的升级流程控制和状态查询功能。

主要优势包括:

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

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

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

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

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

本文将以低功耗模组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.cnnetsun.cn/news/64635.html

相关文章:

  • AutoGPT提示词工程技巧:提升任务拆解准确性
  • Stable Diffusion AIGC 视觉设计实战教程之 07-图生图
  • 当毕业论文不再是“一个人的深夜战场”:一位研究生眼中的AI科研协作者如何重塑写作流程
  • 统计提交svn代码行数,文件以及文档
  • 解锁学术新次元:书匠策AI科研工具为毕业论文注入智慧动能
  • GPT-5.2全面解析:AI“打工能力“大提升,程序员职场必备技能
  • vue-springboot基于Java医院药品管理系统的设计与实现_8z88u88g
  • 深圳 CNC 加工哪家强?慧闻智造!精密零件加工的靠谱专家
  • Java中高级面试题详解(十五):彻底搞懂 Spring Boot 启动流程与扩展点,别再只会写 main 方法!
  • CTF 解题核心思维 + 新手入门全攻略
  • 2026PCB产业高端化浪潮与慕尼黑上海电子展的连接枢纽
  • 揭秘Web组件的隐形守护者:影子DOM如何彻底改变前端开发格局!
  • AI基于Springboot的图书馆在线占座系统_s58324g1
  • 从零构建Agent:大模型智能代理的六步落地指南!
  • 股票历史分时BOLL数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 25 岁转行不迷茫!网安工程师手把手带学,入门到精通
  • springboot个人任务管理系统-计算机毕业设计源码63521
  • 别瞎学了!2025 网安工程师入门全流程,零基础也能会,收藏即上岸
  • 把AI大模型想象成一个“超级猜词游戏”!非专业也能看懂的工作原理,原来这么简单!
  • 企业级智能体终极指南!从定义到落地,一篇彻底解决你的所有疑问!
  • AI大乱斗!当GPT-5.2遇上Claude-4.5-opus,谁会先“认怂”?史上最硬核模型PK赛!
  • 如何实现员工网站管控?这六款软件来帮您管理员工
  • 护网蓝队初级岗位薪资真相:从 0 学网安,小白参与护网也能日入 2000+
  • 【商城系统】
  • 商城系统的开发语言选择
  • 电脑配置路由,如何选择最适合的方案?
  • 哪些企业适合适用黄金专线宽带?
  • 计算机毕业设计springboot基于spring+vue的在线考试系统 基于 Spring Boot 和 Vue.js 的在线考试平台设计与实现 Spring Boot + Vue 技术栈构建的在线
  • Docker网络【20251215】003篇
  • 一张学术海报10分钟搞定:PPT手把手攻略+97套免抠素材随领