Skip to content

故障恢复与配置保全 ​

本文按2026-10-04开发代码及已有日志复核;OTA自检22项、禁用生命周期,以及RTC/SD/UART恢复相关代码已有局部Host通过记录。r7 Host整组仍失败,定向r11通过也不能代替统一候选或现场验收,未据此部署。现场行为以实际部署版本为准。当前软件没有适用于所有启动故障的独立救援模式。配置备份、网络热点、OTA回滚解决的是不同问题。

先判断发生了什么 ​

现象当前可以期待的行为不能据此认定
一个配置文件缺失或无法解析正常存储加载可尝试上一代备份所有字段、引用和接线都正确;主文件已经修复
存储挂载失败正常启动路径停止,不自动格式化一定还能打开Web页面
配置迁移显示待重启已准备的受管配置将在下次启动时核验并应用已经生效、外设已正常工作
迁移冲突/无效/恢复受阻拒绝相应候选;保留状态和恢复材料可以直接删除暂存目录或重复导入
STA暂时离线按配置与运行状态重试;允许时可能回退AP所有故障都会出现热点,或原IP一定不变
内存不足可以暂停部分可选功能并尝试恢复管理页面始终可访问、所有资源都已释放
SD或总线故障返回错误和诊断;部分设备支持明确的恢复操作状态查询会自动修复硬件,或恢复按钮没有副作用
OTA失败可能终止上传会话;是否能回滚取决于实际固件、bootloader、分区和旧镜像升级失败必然自动切回旧版本

反复重启会改变现场状态,也可能触发配置回退或清理。先保留首次故障证据,再决定具体恢复动作;不要把格式化、全擦或恢复出厂作为默认第一步。

维护前需要保留什么 ​

  1. 核对设备MAC/芯片、板卡修订、当前端口或IP、固件与Web版本。设备名称或旧IP不能单独证明找对了设备。
  2. 保存原始网络、认证/用户、MQTT与平台绑定、外设、规则、屏幕布局及相关文件;记录本次备份覆盖范围和摘要。无法取得的部分明确标为缺失。
  3. 把包含凭据的原始备份私下保存。公开问题报告只放脱敏信息和摘要;“导出可复用方案”会过滤部分信息,不能替代原始恢复备份。
  4. 核对接线、供电及负载。重启、重新启用外设或导入启用规则都可能使输出变化;泵阀、电机和其它负载应由现场人员确认安全条件。
  5. 明确本次允许的操作:只读排查、配置修改、总线恢复、重启或部署。没有确认的动作先保留未执行,不用一次排查授权代替所有后续写入授权。

配置错误与掉电 ​

主配置无法解析时,程序可能加载上一代.bak并尝试恢复主文件。备份能加载只说明该代数据可读,不说明所有业务配置有效,也不保证主槽恢复成功。应保存相关日志,并在授权修复后核对文件、运行状态及下一次启动。

主文件和备份都不可用时,各模块的处理方式不同。网络还会尝试部分NVS备份,仍无可用配置时可能使用默认设置;不存在“任意配置都会自动回到上次完整可用状态”的保证。

临时文件与备份提交能降低写入中断的风险,但不能保证任何掉电都无损。部分非关键配置可能先进入延迟写入缓存;存储硬件故障、空间不足、未完成写入和多个文件之间的不一致仍需排查。“页面保存成功”“已提交磁盘”“已应用”应分别核实。

普通逐文件导入与受管跨文件迁移是不同入口。前者后续文件失败时,前面的文件可能已经保存;后者使用已审阅的会话和候选摘要,在启动时应用有限的一组配置。两者都不是整个Flash或固件的自动回滚。

受管迁移怎样确认恢复 ​

使用设备配置中的迁移状态和确认流程。准备成功后仍须核对重启后的状态、目标身份及实际配置;请求超时或最后响应丢失时,先查询,不能直接重放整包。

若界面明确提供可清理或可隔离的暂存,应先核对该会话/修订及保全材料,再执行对应确认。隔离只适用于程序识别的暂存形态,不代表任意坏配置都能安全隔离。应用中或恢复受阻的事务不可用普通清理代替恢复;启动已被阻止时,Web可能无法提供该操作,需要具体离线维护方案。

此迁移入口保留设备身份和账号绑定;网络、协议是只读依赖,用户与认证文件不在可写范围中。普通导入和直接文件写入不自动具有相同保证。

网络恢复的特殊边界 ​

有STA凭据且配置不允许自动回退时,设备的相关重试路径会继续STA恢复,不一定创建热点。热点名称、地址及是否可用应按实际配置和现场证据确认,不能只根据旧文档猜测。

源码另有最后保障AP路径:只有该AP也启动失败时才累加网络初始化失败计数;达到阈值后会尝试清理网络专用NVS备份并重启。这不删除LittleFS中的网络主文件和.bak,也不是全设备恢复出厂。NVS写入失败时,实际持久计数可能与日志意图不同。有效JSON仍可能在下一次启动优先加载,因此不能认为该计数一定修复坏网络配置。

修改网络前保留原始网络配置与可恢复的管理入口;掉线后先确认当前MAC/IP及路由状态,不以重复改SSID、清配置或频繁重启试错。

OTA与启动失败 ​

上传型OTA有停滞会话清理:相关检查入口发现60秒没有新块后记录失败并清理会话状态。升级分区可能已经写入部分字节,这不是“从未写入”的证明,也不能代替当前启动镜像核验。

开发候选已接入NEW/PENDING_VERIFY两种待确认状态,保留90秒应用运行窗口;重复启动检查不会刷新窗口。到期确认最多3次、间隔5秒,SDK失败耗尽仍保留未确认状态,不自动重启。关键初始化失败时先保存诊断,再尝试标记新版本无效;SDK失败不自动重启,成功后才明确重启。这22个场景已在r7 Host日志局部通过,但Host整组仍失败,不能视为设备已部署或已具备经过验收的回滚行为。

90秒只是应用运行窗口,不是全硬件自检。实际回滚还依赖bootloader、可用升级分区和有效旧镜像;4MB单应用等布局不能据其它板型经验推定支持。不要只改一个配置项或照抄旧镜像就认定具备救援能力。

正常启动若在存储或迁移恢复阶段失败,网络和Web可能尚未建立。遇到这种情况,应保留证据并制定与该设备、分区及配置备份一致的维护方案。任何重新刷写都须明确目标和保留范围,不能先全擦后补做备份。

SD与总线恢复 ​

SD状态查询不自动重挂载。明确恢复操作可能卸载、释放并重新取得SPI资源,且会实际访问介质;确认卡、供电、所属外设和共享总线后再操作。失败后保留原错误与计数,不连续点击恢复来制造新的干扰。

I2C重新初始化只覆盖软件总线入口,不保证解除电气拉低或修复所有共用设备。busy、未知或待清理表示尚未确认完成;不能据配置已禁用就断言输出已停止或资源已释放。其它总线和输出按各自设备文档核验。

RTC、UART与诊断采样 ​

RTC访问及35启停、36日历读取、37显式复制系统本地时间已有实现;日历、系统来源质量和断电保持是不同证据。时间来源失效后需要新的有效同步记录,不能靠刷新状态恢复旧记录;复制动作不主动请求NTP,写后失败也可能已改变RTC。实际校时与断电保持仍为 NOT_RUN,见DS1302 RTC。

通用UART已有控制器租约与接收代际,每次真实重新初始化会建立新接收流;停用、重建或来源无法确认时,相关规则停止余项,已发出的数据不撤回。本地初始化/发送成功不是对端成功或故障已恢复。真实收发、硬件溢出和长期恢复仍为 NOT_RUN,见UART示例。

系统信息/诊断包已有分池内存快照,资源状态可显示busy、retiring等未完成状态;开发者单次任务栈快照也已有受限入口。这些接口不会自动做功能启停或故障恢复实验,重叠内存池不能相加,缺失数值不是零;任务栈采样可能影响调度。六组功能状态、资源释放/恢复及峰值仍须实机测量,当前为 NOT_RUN,具体接口与权限见系统健康监控。

什么才算恢复完成 ​

2026-10-04开发候选另外修复关闭OTA的C6配置链接缺少管理器析构的问题:禁用配置仍不创建OTA服务,启用时的资源退出顺序保持。真实禁用翻译单元链接回归已在r7 Host局部通过,目标构建与实际启动仍须按同候选证据确认;此项不是设备回滚/救援能力已验收或现场固件已更新。

配置恢复应核对保存内容、目标身份、管理网络、认证、MQTT、布局和相关文件,随后验证业务行为。部署必须有本次制品的写入及独立校验证据,不能复用旧报告。API读回、物理动作、故障恢复和长时间稳定性分别记录。

保留最初的失败和恢复过程。恢复后的短时正常不能抹去之前的中断,也不能当作24小时或7天稳定性通过。本文涉及的实际设备、故障注入、物理恢复、内存测量及长稳项目仍为 NOT_RUN。

相关说明:系统健康监控、网络配置、当前改进验收状态。

蜂信物联 | fastbee.cn