OTA (空中升级) 最佳实 践
在嵌入式设备的全生命周期管理中,OTA(Over-The-Air)空中升级是保障设备稳定性、修复漏洞和发布新功能的关键机制。
本文档将详细介绍 DejaOS 的 OTA 设计哲学、实现策略以及如何处理升级过程中的异常情况。
核心设计哲学:应用驱动
DejaOS 的设计初衷是将系统资源最大化地让渡给业务应用。由于嵌入式设备的 CPU 和内存资源相对有限,DejaOS 并未内置 一个消耗资源的系统级后台 OTA 服务。
所有的 OTA 逻辑——包括更新检查、下载、校验、安装和失败处理——都由开发者的业务应用本身负责。
这种设计模式带来了极高的灵活性:
- 您可以根据业务需求定制更新策略(如:仅在空闲时段更新)。
- 您可以完全控制 UI 交互(如:显示自定义的进度条或提示)。
- 您可以集成任意的后台协议(HTTP, MQTT, WebSocket 等)。
为了简化开发,DejaOS 提供了封装好的 dxOTA 组件,您可以直接使用或作为参考实现。
标准更新流程
无论是计划性更新还是按需更新,一个健壮的 OTA 流程通常包含以下四个步骤:
+----------+ +------------+ +----------+
| 设备应用 | | 后台服务器 | | 文件系统 |
+----------+ +------------+ +----------+
| | |
| 1. 检查更新 (上报版本) | |
|------------------------------>| |
| | |
| 2. 返回新版本信息 (URL, MD5) | |
|<------------------------------| |
| | |
| (判断需要更新) | |
| | |
| 3. 下载固件包 (.zip) | |
|------------------------------>| |
| | |
| 4. 返回文件流 | |
|<------------------------------| |
| | |
| 5. 保存临时文件 | |
|-------------------------------------------------------------->|
| | |
| 6. 校验 MD5 | |
| | |
| [校验通过] | |
| | | |
| +-------------------------------------------------->| 7a. 移动到安装目录
| | | |
| +------------------>| 8a. 重启设备 (触发系统安装) |
| | |
| [校验失败] | |
| | | |
| +-------------------------------------------------->| 7b. 删除临时文件
| | | |
| +------------------>| 8b. 上报校验失败 |
| | |