<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > ESP32的啟動過程詳解

          ESP32的啟動過程詳解

          作者:時間:2023-12-13來源:自由坦蕩的湖泊AI收藏

           是一種基于 ARM Cortex-M 處理器的 32 位微控制器,集成了 2.4GHz Wi-Fi 和藍牙雙模功能。 的啟動過程可以分為以下三個階段:

          本文引用地址:http://www.ex-cimer.com/article/202312/453851.htm
          • 一級引導程序:當 上電或復位后,PRO CPU 會立即開始運行,執行復位向量代碼,而 APP CPU 仍然保持復位狀態。 復位向量代碼會檢查 GPIO_STRAP_REG 寄存器的值,確定 ESP32 的啟動模式,如 UART 下載模式、自定義啟動模式等。如果是正常啟動模式,程序會配置 SPI flash,然后嘗試從 flash 的 0x1000 偏移地址處加載二級引導程序的二進制鏡像。 程序會校驗鏡像的校驗和,如果正確,就會跳轉到鏡像的入口點運行。

          • 二級引導程序:二級引導程序的源碼可以在 ESP-IDF 的 components/bootloader 目錄下找到。 二級引導程序會從 flash 的 0x8000 偏移地址處讀取分區表,分區表包含了 flash 上不同分區的類型、偏移地址、大小等信息。 二級引導程序會尋找工廠分區和 OTA 應用程序分區,如果存在 OTA 應用程序分區,還會查詢 otadata 分區,以確定應該引導哪個分區。 對于選定的分區,二級引導程序會從 flash 中逐段讀取應用程序鏡像,對于需要加載到 RAM 中的段,會將數據從 flash 復制到它們的加載地址處,對于需要從 flash 中運行的段,會通過配置 flash MMU,提供正確的映射。 一旦處理完所有段,二級引導程序會驗證應用程序的完整性,如果使用了安全啟動或 flash 加密功能,還會進行相應的驗證和解密。最后,二級引導程序會跳轉到應用程序鏡像的入口點運行。

          • 應用程序啟動:應用程序啟動包含了從應用程序開始執行到 app_main 函數在主任務內部運行前的所有過程。 應用程序啟動可以分為三個子階段:端口初始化:這個階段會初始化基本的 C 運行環境,配置 CPU 異常,初始化內部存儲器,設置 CPU 時鐘,如果配置了 PSRAM,還會使能 PSRAM。如果應用程序被配置為在多個內核上運行,還會啟動另一個內核并等待其初始化。系統初始化:這個階段會初始化軟件服務和 FreeRTOS,包括堆棧、中斷、任務、定時器、事件組、隊列、信號量等。 還會初始化一些系統組件,如 NVS、SPI flash、日志、應用程序跟蹤等。主任務運行:這個階段會創建一個主任務,并在其中調用 app_main 函數,這是應用程序的入口函數,用戶可以在這里編寫自己的代碼,實現各種功能和服務。




          關鍵詞: ESP32 MCU 無線通信

          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();