0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FOTA升级进阶指南:文件系统直写与串口分段传输技术详解!

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2025-12-12 12:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式设备远程升级(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系列是全量升级。

升级包制作详见:https://docs.openluat.com/air780epm/luatos/app/ota/fota_core/

▼ 全量升级包 ▼

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

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

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

wKgZPGk6kYGAa0kRAAUJXcHtCE0484.pngwKgZPGk6kb2ANEjdAAKL4e8aK8I947.png

▼ 差分升级包 ▼

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

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

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

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

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

wKgZPGk6khuAKDlvAAHQSCiItpc691.png

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

wKgZPGk6klmAEmosAARE72SDPBM756.png

二、FOTA升级示例demo

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

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

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

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

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

▼ 文件系统直接升级 ▼

1)核心代码实现

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

wKgZPGk6kviARZmuAAJHr3TTO6Y705.pngwKgZO2k6kxKAGMEOAAJ9x_U0n3s394.png

2)文件系统升级操作步骤

参考实操教程搭建好演示硬件环境;

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

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

烧录文件:

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

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

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

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

wKgZPGk6k2OAYKYaAABWgkGOR-A540.png

3)查看运行日志

开始升级,读取文件系统目录下的升级包文件/update.bin;

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

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

设备自动重启;

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

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

wKgZPGk6k5yAG7LfAAhBl8L84Ew097.png

▼ 串口分段升级 ▼

1)核心代码实现

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

wKgZPGk6k-eAX3iRAAJONDdiHME514.pngwKgZPGk6lAuAWlmUAAImqg9qZZ4692.pngwKgZPGk6lCiAPt5qAAJb10Jd-Tc716.pngwKgZO2k6lEuATc_IAAKPRTmZgnc920.pngwKgZO2k6lHyAEMMyAAH2leLSf5A452.pngwKgZO2k6lJOAXrmlAACCy1sPV0o338.png

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。

wKgZO2k6lZKAEgWrAAwnXubJudQ666.pngwKgZPGk6lcWAT9NLAAy5si57-7M258.pngwKgZPGk6lfyAMbCwAAw-YvxqQgc315.png

今天的内容就分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FOTA
    +关注

    关注

    0

    文章

    26

    浏览量

    8130
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从小白到大牛:Linux嵌入式系统开发的完整指南

    编写简单的 Shell 脚本(如自动备份文件、批量编译程序)巩固技能。​ 二、能力进阶:攻克核心技术模块​ 入门后需聚焦嵌入式 Linux 的核心技术栈,分模块突破,形成
    发表于 12-16 10:42

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,一次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、
    的头像 发表于 11-11 11:53 411次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    【直播预告】下周三晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,一次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、
    的头像 发表于 11-06 18:05 1723次阅读
    【直播预告】下周三晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。睿擎平台提供了一套完整的文件系统解决方案,从开发阶段的API调用到调试阶段的
    的头像 发表于 11-05 18:13 7742次阅读
    睿擎派<b class='flag-5'>文件系统</b><b class='flag-5'>指南</b>:从开发到发布全流程实践 | <b class='flag-5'>技术</b>解析

    技术贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS文件系统格式

    基于RK3588设计的ELF2开发板在搭载Desktop22.04系统时,对TF卡的文件系统支持存在以下限制:不支持exFAT格式;支持NTFS格式,但需手动挂载;针对上述兼容性问题,本文将介绍
    的头像 发表于 08-27 17:21 3241次阅读
    <b class='flag-5'>技术</b>贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS<b class='flag-5'>文件系统</b>格式

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1106次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    , extfs,即Linux扩展文件系统,Ext2代表第二代扩展文件系统,Ext3/Ext4是Ext2的升级版,减少一致性检查的时间,增加了日志功能,一般将Ext2称为索引式文件系统
    发表于 06-19 17:22

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入一台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统
    的头像 发表于 06-10 12:03 575次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一个系统调用

    RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一个系统调用
    的头像 发表于 05-21 14:15 567次阅读
    RK3568驱动<b class='flag-5'>指南</b>|驱动基础<b class='flag-5'>进阶</b>篇-<b class='flag-5'>进阶</b>7 向<b class='flag-5'>系统</b>中添加一个<b class='flag-5'>系统</b>调用

    FOTA远程升级的10个关键点!技术小白必须收藏

    本文将针对FOTA升级过程中的十大常见问题提供专业解答,帮助您规避风险,实现安全高效的固件更新。 一、FOTA远程升级常见问题   01. 远程升级
    的头像 发表于 04-10 14:53 549次阅读
    <b class='flag-5'>FOTA</b>远程<b class='flag-5'>升级</b>的10个关键点!<b class='flag-5'>技术</b>小白必须收藏

    工业互联进阶之路:串口服务器与物联网技术的深度融合

    工业互联进阶之路:串口服务器与物联网技术的深度融合
    的头像 发表于 03-24 09:39 550次阅读
    工业互联<b class='flag-5'>进阶</b>之路:<b class='flag-5'>串口</b>服务器与物联网<b class='flag-5'>技术</b>的深度融合

    如何正确选择嵌入式文件系统

    Linux嵌入式系统中,文件系统和缓存机制常导致数据存储稳定性问题。本文通过案例分析原因,对比不同文件系统特性,为开发者提供优化建议,助力提升数据稳定性和系统可靠性。前言基于Linux
    的头像 发表于 03-17 11:35 881次阅读
    如何正确选择嵌入式<b class='flag-5'>文件系统</b>?

    NFS网络文件系统深度解析

    NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的
    的头像 发表于 03-01 14:15 1199次阅读

    防止根文件系统破坏,OverlayRootfs 让你的设备更安全

    OverlayRootfs介绍OverlayRootfs是指利用OverlayFS技术创建的根文件系统(rootfilesystem)。OverlayFS是一种联合文件系统(UnionFS),允许将
    的头像 发表于 01-08 16:33 2489次阅读
    防止根<b class='flag-5'>文件系统</b>破坏,OverlayRootfs 让你的设备更安全

    关于更新openharmony文件系统时遇到的问题

    用的固件,文件系统,内核是之前的,之前版本用起来没问题。但是 用下面三个的时候 固件可以正常烧录,也按照文档里面加载了环境变量,但是烧录内核和文件系统(都是U盘更新的)的时候出现了这样的问题
    发表于 12-30 11:55