OTA 固件升级使用指南
about
使用指南
在固件中启用 OTA 升级
推荐的启用 OTA 功能的 API 是调用如下单一接口:
esp_rmaker_ota_enable_default();
该接口内部映射为“通过主题进行 OTA”,使用 ESP x509 证书包进行服务器认证,并设置默认的 OTA 回调。
信息
如需了解更多 OTA C API 详情,请点击这里。
配置 OTA 升级镜像
编译 OTA 升级固件镜像时,操作与常规固件编译一致,但需确保:
- 项目名称应与已烧录到节点上的固件一致。
- 固件版本应与节点当前固件不同(可在示例的
CMakeLists.txt文件中检查set(PROJECT_VER "1.0"))。
disclaimer
如未满足上述任一条件,OTA 升级将失败。
绕过版本和项目名称检查(不推荐)
可通过如下配置选项实现。
再次强调,不推荐这样做。
CONFIG_ESP_RMAKER_SKIP_VERSION_CHECK=y
CONFIG_ESP_RMAKER_SKIP_PROJECT_NAME_CHECK=y
自动拉取配置
- 大多数情况下,建议分批将 OTA 升级推送到节点,以避免服务器同时收到过多镜像下载请求。
- 此外,节点可能在云端推送
node/<node_id>/otaurl时处于离线状态,因此需要其他方式重新获取升级信息。 - 当设置
CONFIG_ESP_RMAKER_OTA_AUTOFETCH=y时,节点会根据CONFIG_ESP_RMAKER_OTA_AUTOFETCH_PERIOD指定的间隔周期性地尝试拉取 OTA 升级。具体做法是向node/<node_id>/otafetch发布如下数据:
{
“node_id": “<node_id>",
“fw_version": “<fw_version>"
}
tip
-
如果云服务检测到该节点有待处理的 OTA 任务,将如上所述发布到
node/<node_id>/otaurl,并启动升级任务。 -
CONFIG_ESP_RMAKER_OTA_AUTOFETCH_PERIOD默认值为 0,表示仅在节点首次启动并连接云端时发送一次请求。
取值范围为 0 到 168(小时)。
服务器验证
- OTA 框架使用 ESP x509 证书包进行服务器验证。
- 这使其能够从多种不同服务器获取 OTA 镜像,包括 RainMaker 后端(默认)。
- OTA 配置可选地接受服务器证书(
server_cert),如需使用特定服务器证书,可将相应的server.crt文件复制到示例的main/目录,并在main/CMakeLists.txt中添加如下行嵌入到二进制文件:
target_add_binary_data(${COMPONENT_TARGET} "server.crt" TEXT)
可通过如下方式在代码中访问:
extern const uint8_t ota_server_cert[] asm("_binary_server_crt_start");
{
...
esp_rmaker_ota_config_t ota_config = {
.server_cert = (char *)ota_server_cert,
};
esp_rmaker_ota_enable(&ota_config, OTA_USING_PARAMS);
...
跳过服务器认证(不推荐)
如需跳过服务器认证,或使用 HTTP 服务器而非 HTTPS(不推荐),请在 sdkconfig 中设置 CONFIG_OTA_ALLOW_HTTP=y。
管理面板 OTA 操作
关于如何在管理面板 ( 上传、启动或监控) OTA 升级,请点击这里。