mw cb9247cf62 add:添加8101的fota核心库升级demo以及蓝牙升级demo пре 3 месеци
..
ble_fota cb9247cf62 add:添加8101的fota核心库升级demo以及蓝牙升级demo пре 3 месеци
fota(使用fota核心库) cb9247cf62 add:添加8101的fota核心库升级demo以及蓝牙升级demo пре 3 месеци
fota2(使用libfota2扩展库) cb9247cf62 add:添加8101的fota核心库升级demo以及蓝牙升级demo пре 3 месеци
readme.md cb9247cf62 add:添加8101的fota核心库升级demo以及蓝牙升级demo пре 3 месеци

readme.md

FOTA 与 FOTA2 选择指南

核心区别总结

fota(底层核心库)

定位: 基础升级,提供最核心的固件写入能力

核心能力:

支持两种写入方式:fota.run() 分段写入 和 fota.file() 文件直接升级

支持内部存储和外部SPI Flash

提供完整的升级流程控制:init → wait → run/file → isDone → finish

代码特点:

-- 需要手动控制每个步骤
fota.init()
while not fota.wait() do sys.wait(100) end
fota.run(buf)  -- 或 fota.file("/update.bin")
-- 自行检查状态和重启

fota2(libfota2扩展库)

定位: 完整的远程升级解决方案,开箱即用

核心能力:

自动处理HTTP/HTTPS网络下载

支持合宙IoT平台和自建服务器

内置版本检查、下载、验证全流程

提供详细错误码和回调函数

代码特点:

-- 一行代码完成升级
local function fota_cb(ret)
    if ret == 0 then
        log.info("升级包下载成功,重启模块")
        rtos.reboot()
    end
end
libfota2.request(fota_cb, opts)

适用场景推荐

选择 fota 的情况:

需要自定义升级数据源

通过串口接收升级包

通过MQTT、TCP等自定义协议传输

从SD卡、U盘等外部存储读取

对升级流程有特殊控制需求

需要在升级前后执行特定操作

需要精细控制数据写入时机

需要自定义进度监控逻辑

资源极度受限环境

设备存储空间极小,内存紧张,无法加载额外库

开发测试阶段

需要调试升级过程的每个环节

需要验证自定义升级方案

选择 fota2 的情况:

标准的HTTP远程升级

从服务器下载升级包

使用合宙IoT平台服务

需要HTTPS安全下载

希望快速实现升级功能

不想处理网络下载细节

需要自动版本检查

希望简单的错误处理

生产环境部署

需要稳定的远程升级方案

需要详细的升级状态反馈

支持定时自动检查更新

实际选择建议

新手用户 → 直接选择 fota2

接口简单,学习成本低

内置完整错误处理

适合大多数物联网应用场景

高级用户 → 根据需求选择

标准网络升级 → fota2

自定义数据传输 → fota + 自定义逻辑

一句话总结:用 fota2 省心省力,用 fota 自由灵活