ESP32_IDF_OTA_HTTP升級固件

ESP32_IDF_OTA_HTTP升級固件

前言:一個項目的主控使用的是ESP32,因為封裝外殼的原因,所以需要采用OTA的方式進行升級,因為之前有對WIFI的OTA有所了解,所以在此基礎上,使用官方提供的native_ota_example例程實現OTA的功能

一,準備待升級程序

1、我這邊測試使用官方的hello程序(一字不改)
在這里插入圖片描述
2、程序正常打印信息可以運行
在這里插入圖片描述
3、修改一個版本號(OTA程序升級需要對比版本號,不一樣才行
在這里插入圖片描述
4、查看待升級固件(build->ota_test.bin)
在這里插入圖片描述

二、準備native_ota_example例程

1、新建官方例程的工程
在這里插入圖片描述
2、直接編譯運行(一字不改)
在這里插入圖片描述
3、設置連接的WIFI
在這里插入圖片描述
4、利用第三方工具建立一個http服務器
在這里插入圖片描述

5、設置http的服務器地址
在這里插入圖片描述
6、下載運行驗證(連接wifi->去http服務器請求文件->重啟運行->新程序執行)
在這里插入圖片描述

三、將這個native_ota_example移植到自己工程里面

1、將整個文件復制到自己的文件夾ota.c里面
在這里插入圖片描述
2、修改工程配置(將native_ota_example例程工程配置搬過來)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
3、配置分區表(保證不能超過總內存)
在這里插入圖片描述
4、為方便調試打開分區表打印日志信息
在這里插入圖片描述
5、測試功能,我這邊是收到藍牙的升級指令(mySystem.mySystem_device_ota = 1)就開始升級
在這里插入圖片描述

四、踩坑點

1、使用默認分區表,編譯的固件體積過大,導致編譯都過不了(選擇自定義分區表,指定分區表位置)
在這里插入圖片描述
2、分區表詳解(尤其關注后三項0x140000是指的是固件大小)

# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,16K,
otadata,data,ota,0xd000,8K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,,0x140000,
ota_0,app,ota_0,,0x140000,
ota_1,app,ota_1,,0x140000,

3、OTA升級需要校驗當前版本號和新升級的版本號,如果版本號一樣會升級失敗
4、OTA升級邏輯,串口直接燒錄的默認就是factory區,第一次OTA到ota_0區,第二次OTA到ota_1區,第三次OTA到ota_0區,循環下去

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79798.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL表結構化:數據類型與表生命周期詳解

引言 各位數據庫學習者大家好!今天我們將深入探討MySQL中最核心的對象——表(Table)的各類操作 🎯。表是存儲數據的基石,就像Excel中的工作表一樣,但功能要強大得多!無論是電商網站的用戶信息&…

React中的狀態管理Dva總結

在 React 開發中,隨著應用的復雜度增加,如何高效地管理應用狀態成為了一個非常重要的問題。為了解決這一問題,很多開發者選擇了 Redux,然而 Redux 的學習曲線較陡,且需要配置較多的樣板代碼。為此,Ant Desi…

數據結構中的高級排序算法

希爾排序 你可以將希爾排序理解成——先通過幾次分組的、較小的組間插入排序將原數組變得有序&#xff0c;最后再進行一次序列基本有序的完整插入排序。 #include <stdio.h>#define ARR_LEN(arr) (sizeof(arr) / sizeof(arr[0]))void print_arr(int arr[], int len) {for…

計算機視覺最不卷的方向:三維重建學習路線梳理

提到計算機視覺&#xff08;CV&#xff09;&#xff0c;大多數人腦海中會立馬浮現出一個字&#xff1a;“卷”。卷到什么程度呢&#xff1f;2022年秋招CV工程師崗位數下降了16%&#xff0c;但求職人數增加了23%&#xff0c;求職人數與招聘崗位的比例達到了恐怖的15:1&#xff0…

【Docker】Docker環境下快速部署Ollama與Open-WebUI:詳細指南

Docker環境下快速部署Ollama與Open-WebUI&#xff1a;詳細指南 在本篇文章中&#xff0c;我們將深入探討如何在Docker中高效部署 Ollama 和 Open-WebUI&#xff0c;并解決在實際使用中常見的問題&#xff0c;確保你的模型服務穩定高效地運行。 一、Ollama 和 Open-WebUI 快速部…

Vue3學習(組合式API——Watch偵聽器詳解)

目錄 一、Watch偵聽器。 &#xff08;1&#xff09;偵聽單個數據。 &#xff08;2&#xff09;偵聽多個數據。&#xff08;數組寫法&#xff1f;&#xff01;&#xff09; &#xff08;3&#xff09;immediate參數。(立即執行回調) &#xff08;3&#xff09;deep參數。(深層監…

SARIMA-LSTM融合模型對太陽黑子數量預測分析|附智能體數據代碼

全文智能體鏈接&#xff1a;https://tecdat.cn/?p41969 分析師&#xff1a;Peng Fan 本研究以太陽黑子活動數據為研究對象&#xff0c;旨在幫助客戶探索其未來走勢并提供預測分析。首先&#xff0c;通過對數據的清洗和處理&#xff0c;包括離群值的識別與處理以及時間序列的建…

簡單易懂的JavaScript中的this指針

文章目錄 默認綁定 / 隱式綁定如何調整this1.用變量固定this2.箭頭函數2.bind3.call/apply&#xff08;一次性&#xff09; 默認綁定 / 隱式綁定 要找this指針指向誰&#xff0c;我們首先要做的是&#xff1a;找到一個明確的對象&#xff0c;這個對象調用了含有this指針的函數…

Spring MVC數據綁定和響應 你了解多少?

數據綁定的概念 在程序運行時&#xff0c;Spring MVC接收到客戶端的請求后&#xff0c;會根據客戶端請求的參數和請求頭等數據信息&#xff0c;將參數以特定的方式轉換并綁定到處理器的形參中。Spring MVC中將請求消息數據與處理器的形參建立連接的過程就是Spring MVC的數據綁…

BMS工具箱用來執行貝葉斯模型平均(BMA)計算模塊

貝葉斯模型平均&#xff08;Bayesian Model Averaging&#xff0c;BMA&#xff09;是一種用于處理模型不確定性的統計方法&#xff0c;通過結合多個模型的預測結果來提高預測的準確性和魯棒性。在 MATLAB 中&#xff0c;可以使用專門的工具箱&#xff08;如 BMS 工具箱&#xf…

Java內存馬的檢測與發現

【網絡安全】Java內存馬的檢測與發現 一、Java內存馬的現象二、檢測思路三、重點關注類四、檢測方法1. 檢查方法&#xff08;FindShell&#xff09;2. 檢查方法&#xff08;sa-jdi&#xff09;3. 檢查方法&#xff08;arthas-boot&#xff09;4. 檢查方法&#xff08;cop.jar&a…

ISP有感自發

一、黑電平 由于傳感器&#xff0c;即便在無光的情況下&#xff0c;依然會產生微小的暗電流&#xff0c;這些暗電流可能是噪點會影響后期的調試。因此&#xff0c;我們便將這些電流處理為0&#xff0c;成為純黑的顏色。可以在源頭消除這些誤差。 如何矯正黑電平&#xff1a; …

數字信號處理-大實驗1.1

MATLAB仿真實驗目錄 驗證實驗&#xff1a;常見離散信號產生和實現驗證實驗&#xff1a;離散系統的時域分析應用實驗&#xff1a;語音信號的基音周期&#xff08;頻率&#xff09;測定 目錄 一、常見離散信號產生和實現 1.1 實驗目的 1.2 實驗要求與內容 1.3 實驗…

【SSL證書系列】https雙向認證中客戶端認證的原理

HTTPS雙向認證&#xff08;也稱為雙向SSL/TLS認證&#xff09;是一種增強安全性的機制&#xff0c;其中客戶端和服務器都需要驗證彼此的數字證書&#xff0c;以確保雙方身份的真實性。以下是其核心原理和步驟的詳細解析&#xff1a; 一、雙向認證的核心目標 雙向身份驗證&#…

Linux系統編程——fork函數的使用方法

在 Linux 系統編程 中&#xff0c;fork() 函數是創建新進程的關鍵系統調用。fork() 在當前進程&#xff08;父進程&#xff09;中創建一個幾乎完全相同的子進程。子進程和父進程從調用 fork() 的位置繼續執行&#xff0c;但它們是兩個獨立的進程&#xff0c;每個進程都有自己的…

LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻譯與解讀

LLMs之ChatGPT&#xff1a;《Connecting GitHub to ChatGPT deep research》翻譯與解讀 導讀&#xff1a;這篇OpenAI幫助文檔全面介紹了將GitHub連接到ChatGPT進行深度代碼研究的方法、優勢和注意事項。通過連接GitHub&#xff0c;用戶可以充分利用ChatGPT強大的代碼理解和生成…

flutter 視頻通話flutter_webrtc

flutter 比較熱門的庫 flutter_webrtc | Flutter package agora_rtc_engine | Flutter package 我使用的是flutter_webrtc 下面是官方推薦的demo庫 GitHub - flutter-webrtc/flutter-webrtc-demo: Demo for flutter-webrtc 其中 https://demo.cloudwebrtc.com:8086/ 已經停…

同設備訪問php的多個接口會有先后等待問題

同設備訪問php的多個接口會有先后等待問題 這個現象的核心原因通常與 PHP 的 Session 鎖機制 有關&#xff0c;即使兩個接口表面上無關聯&#xff0c;也可能因共享 Session 導致請求排隊。以下是詳細分析&#xff1a; 關鍵背景&#xff1a;PHP 的 Session 鎖機制 PHP 的 Sessi…

【免殺】C2免殺技術(三)shellcode加密

前言 shellcode加密是shellcode混淆的一種手段。shellcode混淆手段有多種&#xff1a;加密&#xff08;編碼&#xff09;、偏移量混淆、UUID混淆、IPv4混淆、MAC混淆等。 隨著殺毒軟件的不斷進化&#xff0c;其檢測方式早已超越傳統的靜態特征分析。現代殺軟往往會在受控的虛…

【論文閱讀】Dip-based Deep Embedded Clustering with k-Estimation

摘要 近年來,聚類與深度學習的結合受到了廣泛關注。無監督神經網絡,如自編碼器,能夠自主學習數據集中的關鍵結構。這一思想可以與聚類目標結合,實現對相關特征的自動學習。然而,這類方法通常基于 k-means 框架,因此繼承了諸如聚類呈球形分布等各種假設。另一項常見假設(…