接前一篇文章:
本回开始讲解乐鑫官网例程中OTA代码主要流程中的核心部分:esp_https_ota_perform函数。
先来再次回顾一下OTA代码的主要流程:
esp_https_ota_perform函数无疑是整个OTA流程的核心,从代码中就能看出来。以乐鑫官方例程advanced_https_ota工程源码为例,其完整流程为:
void advanced_ota_example_task(void *pvParameter)
{
ESP_LOGI(TAG, "Starting Advanced OTA example");
esp_err_t ota_finish_err = ESP_OK;
esp_http_client_config_t config = {
.url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,
//.cert_pem = (char *)server_cert_pem_start,
.crt_bundle_attach = esp_crt_bundle_attach,
.timeout_ms = CONFIG_EXAMPLE_OTA_RECV_TIMEOUT,
.keep_alive_enable = true,
};
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL_FROM_STDIN
char url_buf[OTA_URL_SIZE];
if (st