国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ESP32 OTA升級(jí)之https ota詳解

這篇具有很好參考價(jià)值的文章主要介紹了ESP32 OTA升級(jí)之https ota詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ESP32 OTA升級(jí)之 https ota詳解

1. 前言

本文以 ESP32 官方demo例程 native_ota_example 為例,詳細(xì)闡述如何采用https實(shí)現(xiàn)esp32的ota升級(jí)。

  • 第一章節(jié),為本文的前言部分,對(duì)文章內(nèi)容進(jìn)行大體概述;
  • 第二章節(jié),主要描述了如何在本地將demo例程跑起來,并附帶了關(guān)于使用demo例程中遇到的相關(guān)報(bào)錯(cuò)的具體解決措施;
  • 第三章節(jié),主要描述了ESP32的 flash 扇區(qū)布局;
  • 第四章節(jié),主要描述了OTA下載的鏡像文件的頭部數(shù)據(jù)結(jié)構(gòu),并對(duì)其進(jìn)行詳細(xì)分析,鏡像文件的頭部與OTA息息相關(guān);
  • 第五、六章節(jié),詳細(xì)描述了OTA升級(jí)過程中應(yīng)用程序的狀態(tài)切換邏輯以及相關(guān)軟件版本的使用;

接下來,讓我們一起研究ESP32的 OTA 升級(jí)是如何實(shí)現(xiàn)的吧!相信你一定有所收獲!

2. 例程體驗(yàn)

例程目錄:esp-idf/examples/system/ota/native_ota_example/
工程地址:https://github.com/espressif/esp-idf/tree/release/v5.1/examples/system/ota/native_ota_example
IDF版本: v5.1

2.1 采用直接跳過ca根證書驗(yàn)證方案

  1. 進(jìn)入 native_ota_example 工程

  2. 運(yùn)行 idf.py menuconfig 配置wifi及服務(wù)器地址

  3. 配置 wifi
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  4. 配置https服務(wù)器地址
    如果沒有https服務(wù)器,填寫http服務(wù)器地址也可以,http服務(wù)器搭建參考:ESP32 OTA升級(jí)之HTTP OTA
    https服務(wù)器,大家可以嘗試把升級(jí)文件往github、gitee上發(fā)布也可以啦,免費(fèi)的https測試服務(wù)器對(duì)吧
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTAesp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  5. 運(yùn)行 idf.py build 編譯工程

  6. 運(yùn)行 idf.py flash monitor 下載工程并開啟監(jiān)控

  7. 網(wǎng)絡(luò)連接成功之后https下載時(shí)會(huì)報(bào)錯(cuò),提示 mbdtls ssl 握手失敗,錯(cuò)誤碼 -0x2700

    I (5888) native_ota_example: Starting OTA example task
    I (5888) native_ota_example: Running partition type 0 subtype 0 (offset 0x00010000)
    E (6808) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x2700
    I (6808) esp-tls-mbedtls: Failed to verify peer certificate!
    E (6808) esp-tls: Failed to open new connection
    E (6818) transport_base: Failed to open a new connection
    E (6828) HTTP_CLIENT: Connection failed, sock < 0
    E (6828) native_ota_example: Failed to open HTTP connection: ESP_ERR_HTTP_CONNECT
    E (6838) native_ota_example: Exiting task due to fatal error...
    

    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  8. 打開 native_ota_example.c 文件,屏蔽 .cert_pem 配置
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  9. 運(yùn)行 idf.py build 編譯工程,之后運(yùn)行 idf.py flash monitor 開啟監(jiān)控

  10. 網(wǎng)絡(luò)連接成功之后https下載時(shí)會(huì)報(bào)錯(cuò),提示 mbdtls 服務(wù)器驗(yàn)證選項(xiàng) esp_tls_cfg_t 結(jié)構(gòu)體配置失敗

    I (5888) native_ota_example: Starting OTA example task
    I (5888) native_ota_example: Running partition type 0 subtype 0 (offset 0x00010000)
    E (6368) esp-tls-mbedtls: No server verification option set in esp_tls_cfg_t structure. Check esp_tls API reference
    E (6368) esp-tls-mbedtls: Failed to set client configurations, returned [0x8017] (ESP_ERR_MBEDTLS_SSL_SETUP_FAILED)
    E (6378) esp-tls: create_ssl_handle failed
    E (6388) esp-tls: Failed to open new connection
    E (6388) transport_base: Failed to open a new connection
    E (6398) HTTP_CLIENT: Connection failed, sock < 0
    E (6398) native_ota_example: Failed to open HTTP connection: ESP_ERR_HTTP_CONNECT
    E (6408) native_ota_example: Exiting task due to fatal error...
    

    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  11. 修改 menuconfig ,跳過服務(wù)器證書驗(yàn)證
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  12. 運(yùn)行 idf.py build 編譯工程,之后運(yùn)行 idf.py flash monitor 開啟監(jiān)控

  13. 網(wǎng)絡(luò)連接成功之后https下載成功
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

2.2 采用mbedtls內(nèi)自帶的ca根證書方案

  1. 修改 native_ota_example.c 文件中.cert_pem 配置
   esp_http_client_config_t config = {
       .url = CONFIG_EXAMPLE_FIRMWARE_UPG_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,
   };

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

2.3 采用對(duì)應(yīng)服務(wù)器的根證書文件

此方案,首先需要下載對(duì)應(yīng)服務(wù)器的證書文件才可以,下載服務(wù)器的證書可以采用以下方案:

首先使用瀏覽器打開對(duì)應(yīng)的服務(wù)器,之后瀏覽器的地址欄旁邊有一個(gè)??,點(diǎn)擊它
esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
按照上述方式,導(dǎo)出對(duì)應(yīng)服務(wù)器的證書文件 .pem,之后替換掉工程目錄下 server_certs 目錄下的ca_cert.pem 文件里面的內(nèi)容即可

采用此方案有一個(gè)需要特別注意的地方是:通過此方案下載的證書為此網(wǎng)站的證書,通常有效期為1年,過了一年之后就無效了!?。?/p>

這個(gè)時(shí)間在我們下載證書的時(shí)候其實(shí)就可以看到:esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
因此使用此方案時(shí),需要注意特別處理,推薦兩種解決方案:

1)采用升級(jí)的手段,定期更新設(shè)備端證書文件;

2)使用發(fā)證機(jī)構(gòu)(注意選擇大品牌的)的根證書文件,通常此類證書的有效期會(huì)比較長,我們上一小節(jié)中 mbedtls里面的證書其實(shí)就是存的一部分發(fā)證機(jī)構(gòu)的ca跟證書

參考文檔:ESP32空中升級(jí) OTA

3. ESP32 flash分區(qū)結(jié)構(gòu)

OTA是基于 Flash 進(jìn)行的,想要弄清楚 ESP32 的 OTA,首先肯定得了解 ESP32 的 flash 布局結(jié)構(gòu),關(guān)于此部分內(nèi)容我整理在了另外一篇博客,請(qǐng)查閱:ESP32 分區(qū)表(點(diǎn)擊跳轉(zhuǎn)),對(duì) ESP32 的 flash 分區(qū)布局有所了解的可以直接跳過。

4. 應(yīng)用程序鏡像段結(jié)構(gòu)

應(yīng)用程序鏡像段結(jié)構(gòu)如下,運(yùn)行命令 esptool.py --chip esp32 image_info build/app.bin

esptool.py v2.3.1
Image version: 1
Entry point: 40080ea4
13 segments

Segment 1: len 0x13ce0 load 0x3f400020 file_offs 0x00000018 SOC_DROM
Segment 2: len 0x00000 load 0x3ff80000 file_offs 0x00013d00 SOC_RTC_DRAM
Segment 3: len 0x00000 load 0x3ff80000 file_offs 0x00013d08 SOC_RTC_DRAM
Segment 4: len 0x028e0 load 0x3ffb0000 file_offs 0x00013d10 DRAM
Segment 5: len 0x00000 load 0x3ffb28e0 file_offs 0x000165f8 DRAM
Segment 6: len 0x00400 load 0x40080000 file_offs 0x00016600 SOC_IRAM
Segment 7: len 0x09600 load 0x40080400 file_offs 0x00016a08 SOC_IRAM
Segment 8: len 0x62e4c load 0x400d0018 file_offs 0x00020010 SOC_IROM
Segment 9: len 0x06cec load 0x40089a00 file_offs 0x00082e64 SOC_IROM
Segment 10: len 0x00000 load 0x400c0000 file_offs 0x00089b58 SOC_RTC_IRAM
Segment 11: len 0x00004 load 0x50000000 file_offs 0x00089b60 SOC_RTC_DATA
Segment 12: len 0x00000 load 0x50000004 file_offs 0x00089b6c SOC_RTC_DATA
Segment 13: len 0x00000 load 0x50000004 file_offs 0x00089b74 SOC_RTC_DATA
Checksum: e8 (valid)
Validation Hash: 407089ca0eae2bbf83b4120979d3354b1c938a49cb7a0c997f240474ef2ec76b (valid)

4.1 鏡像文件頭格式

  1. 鏡像在最后一段之后有一個(gè)校驗(yàn)和字節(jié)(如上述中的 Checksum: e8 (valid) )。此字節(jié)寫入十六字節(jié)填充邊界,因此應(yīng)用程序鏡像可能需要填充。
  2. 如果esp_image_header_t 結(jié)構(gòu)體(見下圖)的hash_appended字段被設(shè)置,則將附加 SHA256 校驗(yàn)和。SHA256 哈希的值是在從第一個(gè)字節(jié)到該字段的范圍內(nèi)計(jì)算的,該字段的長度為 32 個(gè)字節(jié)。

應(yīng)用程序映像由以下結(jié)構(gòu)組成:

  1. 首先是 鏡像頭 esp_image_header_t 結(jié)構(gòu)數(shù)據(jù),描述了 SPI 閃存的模式和內(nèi)存段的數(shù)量。
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  2. 之后是 數(shù)據(jù)段頭 esp_image_segment_header_t 結(jié)構(gòu)數(shù)據(jù),此結(jié)構(gòu)數(shù)據(jù)描述了每個(gè)段、其長度及其在 ESP32 內(nèi)存中的位置,后跟長度為data_len,圖像中每個(gè)片段的數(shù)據(jù)偏移量按以下方式計(jì)算:

    • 第 0 段的偏移量 = sizeof( esp_image_header_t) + sizeof( esp_image_segment_header_t))。
    • 第 1 Segment 的偏移量 = 0 Segment 的偏移量 + 0 Segment 的長度 + sizeof( esp_image_segment_header_t)。
    • 第 2 Segment 的偏移量 = 1 Segment 的偏移量 + 1 Segment 的長度 + sizeof( esp_image_segment_header_t)。
      esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA
  3. 之后是 應(yīng)用頭 esp_app_desc_t 結(jié)構(gòu)數(shù)據(jù):
    esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

    • 此數(shù)據(jù)結(jié)構(gòu)位于DORM 段起始位置
    • 當(dāng)前應(yīng)用程序可以通過調(diào)用esp_app_get_description() 獲取應(yīng)用頭結(jié)構(gòu)
    • 其他應(yīng)用程序可通過調(diào)用esp_ota_get_partition_description() 獲取其他OTA分區(qū)應(yīng)用頭結(jié)構(gòu)
    • 此結(jié)構(gòu)的偏移地址計(jì)算為:offset = sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t)
  4. 再往后是 用戶自定義的應(yīng)用結(jié)構(gòu)頭,如有需要可自行查閱 Adding a Custom Structure to an Application


綜上,一個(gè)應(yīng)用程序鏡像的頭部結(jié)構(gòu)為:

  • 首先是 esp_image_header_t
  • 其次是 esp_image_segment_header_t
  • 之后是 esp_app_desc_t
  • 如果有用戶自定義的結(jié)構(gòu)custom_app_desc 則之后是用戶自定義結(jié)構(gòu) custom_app_desc
  • 之后就是實(shí)際的程序了

參考文檔:App Image Format

5. 應(yīng)用程序狀態(tài)切換

應(yīng)用程序通過一個(gè)OTA狀態(tài)對(duì)齊進(jìn)行維護(hù),通過此狀態(tài)決定應(yīng)用程序是否運(yùn)行。

應(yīng)用程序可通過調(diào)用 esp_err_t esp_ota_get_state_partition(const esp_partition_t *partition, esp_ota_img_states_t *ota_state) 獲取對(duì)應(yīng)扇區(qū)應(yīng)用的狀態(tài)。

應(yīng)用程序的狀態(tài)有以下幾大類:

狀態(tài) 引導(dǎo)加載程序選取啟動(dòng)應(yīng)用程序的限制
ESP_OTA_IMG_VALID 沒有限制,可以選取。
ESP_OTA_IMG_UNDEFINED 沒有限制,可以選取。
ESP_OTA_IMG_INVALID 不會(huì)選取。
ESP_OTA_IMG_ABORTED 不會(huì)選取。
ESP_OTA_IMG_NEW 如使能 CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE, 則僅會(huì)選取一次。在引導(dǎo)加載程序中,狀態(tài)立即變?yōu)?ESP_OTA_IMG_PENDING_VERIFY。
ESP_OTA_IMG_PENDING_VERIFY 如使能 CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE, 則不會(huì)選取,狀態(tài)變?yōu)?code>ESP_OTA_IMG_ABORTED。

關(guān)于狀態(tài)的使用,需要注意一個(gè)配置項(xiàng): CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE

  • 當(dāng) CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 未使能時(shí),應(yīng)用程序狀態(tài)通常只會(huì)使用 ESP_OTA_IMG_UNDEFINED 這一個(gè)狀態(tài)
    • (官方IDF文檔只是說ESP_OTA_IMG_NEWESP_OTA_IMG_PENDING_VERIFY 不會(huì)使用,但實(shí)測發(fā)現(xiàn)基本只會(huì)使用 ESP_OTA_IMG_UNDEFINED
  • 當(dāng) CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 使能時(shí),應(yīng)用程序狀態(tài)通常會(huì)使用除 ESP_OTA_IMG_UNDEFINED 狀態(tài)之外的其他所有狀態(tài)

CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 配置項(xiàng)可通過 menuconfig 配置:

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

當(dāng) CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 未使能時(shí):

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

當(dāng)CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 使能時(shí):

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

Pass: 程序分析小技巧,可以通過python在工程目錄下搭建本地http服務(wù)器,配置升級(jí)地址為服務(wù)器地址,這樣可以循環(huán)升級(jí),并在例程中添加我們需要的打印信息,即可快速分析ota程序!

參考文檔:Over The Air Updates (OTA)

6. 應(yīng)用程序版本修改

應(yīng)用程序版本存儲(chǔ)在 esp_app_desc_t 結(jié)構(gòu)體中。該結(jié)構(gòu)體位于 DROM 扇區(qū),有一個(gè)從二進(jìn)制文件頭部計(jì)算的固定偏移值。該結(jié)構(gòu)體位于 esp_image_header_t esp_image_segment_header_t 結(jié)構(gòu)體之后。字段 Version 類型為字符串,最大長度為 32 字節(jié)。

關(guān)于應(yīng)用程序的版本設(shè)置,總共有以下幾種方案:

  1. menuconfig 中設(shè)置對(duì)應(yīng)配置項(xiàng)(Application manager選項(xiàng)內(nèi))

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  1. CMakeLists.txt 文件中設(shè)置 PROJECT_VER 變量,注意需要在 包含project.cmake 之前添加,格式如 set(PROJECT_VER "0.1.0.1")

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  1. 在工程目錄下新建 version.txt 文檔,在此文檔中輸入對(duì)應(yīng)版本信息

esp32 native_ota_example,物聯(lián)網(wǎng) ESP32,https,ESP32,ESP-IDF,網(wǎng)絡(luò)協(xié)議,OTA

  1. 使用 git describe 檢索(實(shí)測命令無效)

  2. 若以上均未有設(shè)置,則會(huì)將版本變量 PROJECT_VER 默認(rèn)設(shè)置為 1

7. 總結(jié)

以上就是關(guān)于 ESP32 使用 https 進(jìn)行 OTA 升級(jí)的全部內(nèi)容了,歡迎大家一同探討關(guān)于ESP32的更多知識(shí)!


創(chuàng)作不易,轉(zhuǎn)載請(qǐng)注明出處!

關(guān)注、點(diǎn)贊+收藏,可快速查收博主有關(guān)分享!


8. 補(bǔ)充學(xué)習(xí)

??
強(qiáng)烈推薦:文章來源地址http://www.zghlxwxcb.cn/news/detail-632828.html

  • 1) ESP32 OTA升級(jí)之HTTP OTA(點(diǎn)擊跳轉(zhuǎn)?。。。?
  • 2) ESP32 bin文件生成及多個(gè)bin文件合并指南 (點(diǎn)擊跳轉(zhuǎn)?。。。?
  • 3) ESP32 分區(qū)表(點(diǎn)擊跳轉(zhuǎn)!?。。?
  • 4) ESP32 專欄(點(diǎn)擊跳轉(zhuǎn)?。。。?

到了這里,關(guān)于ESP32 OTA升級(jí)之https ota詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ESP8266 OTA(無線遠(yuǎn)程升級(jí))熱更新

    ESP8266 OTA(無線遠(yuǎn)程升級(jí))熱更新

    ESP8266或者ESP32 有一個(gè)問題,就是在上傳程序在開發(fā)板中里面的程序聯(lián)網(wǎng)IP是固定; 1、如果你的MQTT服務(wù)器換 ip、端口、域名等情況那么開發(fā)板將無法連接MQTT服務(wù)。 2、如果業(yè)務(wù)需求有變更需要在開發(fā)板原有的基礎(chǔ)增加一些功能,而這些開發(fā)板已經(jīng)上線部署在各的自動(dòng)售賣機(jī),

    2024年02月13日
    瀏覽(23)
  • 【ESP8266 快速入門】示例5:Arduino環(huán)境實(shí)現(xiàn)OTA無線升級(jí)固件功能WebServer網(wǎng)頁服務(wù)器方式

    【ESP8266 快速入門】示例5:Arduino環(huán)境實(shí)現(xiàn)OTA無線升級(jí)固件功能WebServer網(wǎng)頁服務(wù)器方式

    使用【ESP8266】Arduino環(huán)境實(shí)現(xiàn)OTA無線升級(jí)固件功能,由LED閃爍程序通過OTA升級(jí)為PWM呼吸燈程序。 OTA聽起來挺牛的一個(gè)功能,其全稱為(Over-The-Air),直譯為空中傳送。就是通過無線方式實(shí)現(xiàn)固件升級(jí)。 對(duì)于實(shí)際封裝好的項(xiàng)目,ESP8266已經(jīng)包裝好了,不方便使用數(shù)據(jù)線來下載程

    2024年02月03日
    瀏覽(26)
  • ESP32-Web-Server編程綜合項(xiàng)目1-結(jié)合 Web Server 實(shí)現(xiàn) WiFi 配網(wǎng)和網(wǎng)頁 OTA 更新

    前述的內(nèi)容多是一個(gè)個(gè)小功能的演示,本章節(jié)講述一些實(shí)際項(xiàng)目中使用到的綜合項(xiàng)目。 首先要講述的案例是通過ESP32 上的 Web Server 實(shí)現(xiàn)對(duì) ESP32 的 WiFi 配網(wǎng)和網(wǎng)頁 OTA 更新功能。 項(xiàng)目的主要功能有: 通過菜單控制多網(wǎng)頁的切換 在多網(wǎng)頁中分別實(shí)現(xiàn) WiFi 配網(wǎng)、控制設(shè)備重啟、通

    2024年01月22日
    瀏覽(24)
  • STM32 OTA遠(yuǎn)程升級(jí)

    STM32 OTA遠(yuǎn)程升級(jí)

    前言:OTA全稱是over the air,主要應(yīng)用于物聯(lián)網(wǎng)設(shè)備作為更新代碼使用,其原理在不同芯片上相通,應(yīng)用較為廣泛。 一、OTA硬件組成 ? 對(duì)于OTA硬件來講,常用的硬件組成是無線芯片+MCU,常用的無線模塊有WIFI、4G、LORA甚至是藍(lán)牙等具有無線傳輸功能的設(shè)備,MCU則是例如51,STM3

    2024年02月11日
    瀏覽(24)
  • 使用stm32進(jìn)行ota升級(jí)

    使用stm32進(jìn)行ota升級(jí)

    主要方案: 1、硬件方案:只使用mcu內(nèi)部flash,沒有外置flash。 2、數(shù)據(jù)傳輸協(xié)議:ymodem,如果不了解ymodem值得去了解下。 3、bootloader和app存放方案:將mcu內(nèi)部flash分為兩塊內(nèi)存,分別存放bootloader和app。 4、ota流程:使用uart進(jìn)行數(shù)據(jù)更新,并運(yùn)行新的程序。 實(shí)施: 1、下載“S

    2024年02月13日
    瀏覽(17)
  • 調(diào)試筆記-stm32的OTA/IAP 通過485升級(jí)固件

    調(diào)試筆記-stm32的OTA/IAP 通過485升級(jí)固件

    背景:最近需要在stm32上實(shí)現(xiàn)通過rs485升級(jí)固件功能。經(jīng)過幾天搜索和調(diào)試,實(shí)現(xiàn)了功能。 目標(biāo):使用cubeIDE實(shí)現(xiàn)stm32F407VGT6,通過RS485升級(jí)固件 調(diào)試記錄: 步驟1. 在keil環(huán)境下的rs485升級(jí)固件(含源碼):STM32 OTA應(yīng)用開發(fā)——通過串口/RS485實(shí)現(xiàn)OTA升級(jí)(方式2)_stm32串口升級(jí)_柒壹漆

    2024年02月11日
    瀏覽(21)
  • STM32F103 USB OTA升級(jí)BootLoader (一)

    STM32F103 USB OTA升級(jí)BootLoader (一)

    ?1.配置外部高速晶振 ?2.勾選USB功能 ?3.將USB模式配置Virtual Port Com ?4.將系統(tǒng)主頻配置為72M,USB頻率配置為48M. ?5.配置好項(xiàng)目名稱,開發(fā)環(huán)境,最后獲取代碼。 6.修改Flash大小和勾選Use Micro LIB ? 7.修改main.c代碼 ?Update.c代碼 Update.h代碼 ?源碼鏈接: 跳轉(zhuǎn)鏈接 上位機(jī)升級(jí)工具:

    2024年02月11日
    瀏覽(28)
  • STM32_通過Ymodem協(xié)議進(jìn)行藍(lán)牙OTA升級(jí)固件教程

    STM32_通過Ymodem協(xié)議進(jìn)行藍(lán)牙OTA升級(jí)固件教程

    作為單片機(jī)進(jìn)階能力,IAP升級(jí)固件的學(xué)習(xí)是非常重要的。 想直接看如何操作的從第三條開始看。 藍(lán)牙OTA(Over-The-Air)升級(jí)是指通過藍(lán)牙無線技術(shù),對(duì)設(shè)備中的固件或軟件進(jìn)行遠(yuǎn)程升級(jí)和更新的過程。藍(lán)牙OTA升級(jí)在現(xiàn)代物聯(lián)網(wǎng)和智能設(shè)備領(lǐng)域有著重要的應(yīng)用和意義。 重要性:

    2024年02月04日
    瀏覽(21)
  • STM32-OTA升級(jí)-基于STM32CubeMX+STM32F103(二)代碼實(shí)現(xiàn)

    STM32-OTA升級(jí)-基于STM32CubeMX+STM32F103(二)代碼實(shí)現(xiàn)

    0 引言 在上一篇文章中,我們已經(jīng)講述了STM32的啟動(dòng)流程、IAP的原理和OTA的原理(最后這部分直接分享了一些博客,因?yàn)榍拜厒円呀?jīng)寫的非常好了),下面這篇主要用來記錄STM32-OTA的實(shí)驗(yàn)步驟。 源碼我大家自行下載即可。 鏈接:https://pan.baidu.com/s/1uemqEqDNI3-IjulZ4oNFlw?pwd=of3g 提取

    2024年02月04日
    瀏覽(40)
  • STM32-OTA升級(jí)-基于STM32CubeMX+STM32F103(一)基礎(chǔ)知識(shí)

    STM32-OTA升級(jí)-基于STM32CubeMX+STM32F103(一)基礎(chǔ)知識(shí)

    0 引言 對(duì)于一個(gè)項(xiàng)目而言,往往將遠(yuǎn)程升級(jí)作為程序的最后一步(基本所有功能都開發(fā)完成之后再考慮)。但是在我看來,我們在寫單片機(jī)的程序之前,就要規(guī)劃好FLASH的使用情況,因?yàn)閏ode、全局變量等重要信息都是放在FLASH(常說的閃存)中的,SRAM是程序運(yùn)行時(shí)的存放位置

    2024年02月04日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包