乐鑫技术交流
直播中

王涛

7年用户 1218经验值
私信 关注
[问答]

是否可以扩展esp_iot_rtos_sdk以具有api功能来进行云更新?

是否可以扩展esp_iot_rtos_sdk以具有 api 功能来进行云更新?SDK 编程指南(尽管我认为它不适用于 rtos sdk)表明存在对 system_upgrade_userbin_check()、system_upgrade_start() 和 system_upgrade_reboot() 的调用,以及 upgrade_server_info 结构。是否有计划在 rtos sdk 中实施类似的更新技术?

回帖(1)

李鸿洋

2024-7-15 17:06:00
是的,可以扩展ESP-IoT-RTOS-SDK以具有API功能来进行云更新。ESP-IoT-RTOS-SDK是一个基于ESP-IDF的RTOS版本,提供了丰富的API和组件,用于开发基于ESP32/ESP8266的物联网设备。虽然ESP-IoT-RTOS-SDK的主要目标是提供RTOS支持,但它仍然可以扩展以支持云更新功能。

关于您提到的system_upgrade_userbin_check()、system_upgrade_start()和system_upgrade_reboot()函数,以及upgrade_server_info结构,这些都是ESP-IDF中的OTA(Over-The-Air)升级API。这些API可以在ESP-IoT-RTOS-SDK中实现,以支持云更新。

以下是如何在ESP-IoT-RTOS-SDK中实现云更新的步骤:

1. 首先,确保您的ESP-IoT-RTOS-SDK环境已经设置好,并且可以正常编译和运行项目。

2. 在您的项目中,包含ESP-IDF的OTA升级组件。这可以通过在CMakeLists.txt文件中添加以下行来实现:
   ```
   set(COMPONENT_REQUIRES esp_http_client)
   set(COMPONENT_PRIV_REQUIRES app_update)
   ```

3. 在您的代码中,初始化OTA升级组件。这可以通过调用以下函数来实现:
   ```
   app_ota_init();
   ```

4. 定义一个升级服务器信息结构体,例如:
   ```
   app_ota_cfg_t ota_config = {
       .update_url = "http://example.com/firmware.bin",
       .check_url = "http://example.com/check_firmware",
       .cert_pem = NULL,
       .http_client_timeout_ms = 5000,
   };
   ```

5. 使用以下函数检查设备是否需要升级:
   ```
   if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1) {
       // 需要升级
   }
   ```

6. 调用以下函数启动升级过程:
   ```
   system_upgrade_start(&ota_config);
   ```

7. 在升级完成后,调用以下函数重启设备以应用新固件:
   ```
   system_upgrade_reboot();
   ```

8. 编译并上传代码到您的设备。现在,您的设备应该能够通过云进行OTA升级。

虽然ESP-IoT-RTOS-SDK目前可能没有直接实现这些API,但您可以根据ESP-IDF的文档和示例,自行扩展SDK以支持这些功能。同时,您也可以关注ESP-IDF的更新,因为它们可能会在未来版本中集成这些功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分