在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP32學習筆記:存儲分布和啟動過程

CHANBAEK ? 來源:跳動的字節 ? 作者:曉宇 ? 2023-07-14 15:10 ? 次閱讀

今天我們來說說ESP32 for Arduino存儲分布以及啟動過程。

ESP32 for Arduino存儲分布

ESP32有多個不同的存儲配置版本,本文以ESP32 4M FLASH為例進行分析。

ESP32的FLASH可以包含多個應用程序以及不同類型的數據,因此在FLASH默認偏移地址的0x8000處燒寫了一個分區表,長度為0xC00字節,分區表數據后還保存著該表的 MD5 校驗和,用于驗證分區表的完整性。此外,如果芯片使能了 安全啟動 功能,則該分區表后還會保存簽名信息

我們在ESP32 for Arduino的工具中,有一個選項,可以配置不同的分區表,這里已經做好了一些,一般我們都是使用默認的,如下圖所示:

圖片

分別代表什么意思呢?4M FLASH默認分區方案為1.2MB的應用程序空間,1.2MB為OTA保留,1.5MB為SPIFFS文件系統保留的,我們找到這個描述文件,在SDK下tools下的partitions,我們打開default.csv,對應默認的分區表:

圖片

表格描述的很清楚,各個分區名字,對應的偏移地址,以及占用大小,比如,nvs分區,從0x9000地址處開始,大小為0x5000,也就是20480字節的大小,具體每個分區的作用,我們下面細說。我們這里知道的就是,在0x9000處放了一個nvs表,決定我們整個存儲區域怎么劃分的,每個分區分別分配多大的存儲空間,系統就根據這個表來劃分,可以根據我們的程序大小等靈活配置。

分區表說明

網上找到一張ESP32的分區表,很有代表意義,這里以這一份給大家講一下。

圖片

  • 0-0x1000 保留
  • 0x1000-0x8000 Bootloader分區
  • 0x8000-0x9000 Partition Table分區,保存著分區表
  • 0x9000-0xD000 NVS分區,可以存儲一些PHY初始化數據,也可以存儲其他數據,一些斷電存儲的數據建議放在這里
  • 0xD000-0xF000 OTA data分區,系統從哪個app分區啟動由這里存儲的數據決定
  • 0xF000-0x10000 PHy_init分區,用于存儲的PHY初始化數據
  • 0x10000-0x3FFFFF Factory APP分區,保存出廠應用程序,分區表有工廠應用程序就會啟動這個分區的程序
  • Core dump分區,查找系統崩潰時的軟件錯誤,以便開發者分析原因
  • OTA0/OTA1分區,保存OTA下載固件,交替保存在這兩個分區,鏡像驗證無誤之后,會更新OTA data分區,分配好下一次應該從哪里啟動。
  • fctry分區,保存阿里云四元組,這個就是私有數據了,可以在存儲空間的最后分配一些空間用于保存一些APP的激活數據之類的,沒有用到就可以忽略。

到這里,大家應該都了解了吧,正常情況下我們用系統內置的一些默認的就可以,當然,我們也可以自定義分區表,總之就是根據自己的具體情況具體分配,這里不具體展開說,后面有需要再展開說。

程序燒錄

代碼燒錄就是把上面的每個分區的文件分別燒錄進FLASH芯片中,我們以一個默認的例子,看下Arduino是怎么燒錄的:

圖片

如上圖所示,根據每個分區的地址,將用到的各個分區的內容依次燒錄進FLASH中,關于存儲空間的分配我們就講到這里。

程序啟動過程

ESP32,是如何運行RTOS的?

參考文檔 general-notes.rst

1、 第一階段bootloader(ROM中)加載第二階段bootloader(位于FLASH 0X1000)

2、 第二階段的boot loader加載分區表和MAIN APP應用程序(其實就是freertos了)

main APP包含RAM段和Flash段

① 去0X8000加載分區表,配置兩個CPU(PRO CPU和APP CPU)的MMU,但只使能PRO cpu的flash,一旦被加載,就會跳到main APP的入口

3、執行main APP,此時,第二個CPU和RTOS調度器都會運行

入口調用 componments/esp32/cpu_start.c中的call_start_cpu0函數,

此函數會調用 call_start_cpu1.執行后PRO CPU執行start_cpu0,APP CPU執行start_cpu1

最終會調用app_main函數

我們打開ESP32 SDK中的core文件夾,里面有個main.cpp文件,打開我們就知道,app_main調用了loopTask函數,loopTask會先調用setup函數,再調用loop函數,loop函數會一直死循環,所以我們可以在setup里創建任務。

圖片

我們Arduino中的setup與loop函數就是上面的函數中調用的,這里我們也可以看出,ESP32在Arduino下不是裸奔的,是跑的FreeRTOS操作系統的!

感謝大家,關于ESP32的學習,希望大家Enjoy!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1637

    瀏覽量

    148135
  • 存儲
    +關注

    關注

    13

    文章

    4320

    瀏覽量

    85911
  • Arduino
    +關注

    關注

    188

    文章

    6471

    瀏覽量

    187238
  • 程序燒錄
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6853
  • ESP32
    +關注

    關注

    18

    文章

    971

    瀏覽量

    17326
收藏 人收藏

    評論

    相關推薦

    詳解STM32啟動過程

    本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復位執行第1條指令開始(匯編文件)到進入C程序main()函數入口之間的部分。
    發表于 11-14 11:24 ?1861次閱讀

    ESP32單片機學習筆記

    ESP32 單片機學習筆記 - 03 - MCPWM脈沖輸出/PCNT脈沖計數前言,繼續上一篇的內容。因為上一篇剛好實驗了iic和spi,形成一對。接下來講pwm另起一篇。一、電機PWM輸出
    發表于 08-23 08:47

    ESP32ESP-IDF學習筆記

    ESP32ESP-IDF 學習筆記(六)【I2C數據總線(I2C)】文章目錄ESP32ESP
    發表于 02-22 07:30

    系統啟動過程

    系統啟動過程系統啟動過程主要由一下幾步組成(以硬盤啟動為例):1. 開機2. BIOS 加電自檢 ( Power On Self Test -- POST ),內存地址為 0ffff:00003. 將硬盤第一個
    發表于 10-11 12:17 ?2266次閱讀

    IC啟動過程及Vcc電壓波形的認知

    IC啟動過程及Vcc電壓波形的認知IC啟動過程及Vcc電壓波形的認知IC啟動過程及Vcc電壓波形的認知IC啟動過程及Vcc電壓波形的認知
    發表于 12-22 14:46 ?10次下載

    淺析Zephyr在ESP32上的啟動流程

    理解Zephyr在一款soc上的啟動流程,有利于分析和調試開機過程卡死,驅動異常等的問題。因此在上手一款新的soc時掌握Zephyr在其上面的啟動流程非常必要。本文對Zephyr在ESP32
    的頭像 發表于 06-07 17:04 ?5319次閱讀

    ESP32 開發筆記(四)LVGL控件學習 Window 窗口控件 X

    ESP32 開發筆記(四)LVGL控件學習 Window 窗口控件 X
    發表于 11-14 09:06 ?6次下載
    <b class='flag-5'>ESP32</b> 開發<b class='flag-5'>筆記</b>(四)LVGL控件<b class='flag-5'>學習</b> Window 窗口控件 X

    [ESP32]學習筆記02

    [ESP32學習筆記02]使用ViusalStudio2017開發ESP32、按鍵輸入檢測前言一、安裝Visual Studio 2017二、配置開發環境1.安裝ViusalGDB2.
    發表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02

    stm32啟動過程

    一次性搞定stm32啟動模式與啟動過程一、stm32啟動模式二、從flash啟動過程2.1 數據在堆棧中存儲方式2.2 stm32的正常
    發表于 12-16 16:57 ?8次下載
    stm32<b class='flag-5'>啟動過程</b>

    [ESP32]學習筆記04

    Analog-to-Digital Converter(模數轉換器)的使用今天我們學習ESP32提供的ADC外設的使用,ESP32的每個ADC單元都支持兩種模式,單次讀取和連續讀取(DMA),本次
    發表于 12-22 19:02 ?9次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04

    SPI主線協議——ESP32學習筆記

    目錄SPI主線協議——ESP32學習筆記零、前言一、什么是SPI?二、通信過程?三、極性和相位四、總結SPI主線協議——ESP32
    發表于 12-22 19:23 ?18次下載
    SPI主線協議——<b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    STM32啟動過程分析

    之后,非常有助于我們理解 STM32 啟動過程中還做了哪些隱藏的工作。關于詳細的程序和數據存儲分布信息,我們可以從Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的
    發表于 12-23 19:55 ?12次下載
    STM32<b class='flag-5'>啟動過程</b>分析

    ESP32學習筆記:雙核

    今天我們來說說ESP32 for Arduino 的雙核。
    的頭像 發表于 07-15 16:16 ?5068次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:雙核

    ESP32學習筆記:WiFi

    今天我們來說說ESP32 的WiFi。
    的頭像 發表于 07-15 16:20 ?4033次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:WiFi

    RL78啟動過程詳解

    RL78啟動過程詳解
    的頭像 發表于 09-28 16:39 ?1475次閱讀
    RL78<b class='flag-5'>啟動過程</b>詳解
    主站蜘蛛池模板: 在线观看精品国产入口| 天天色天天爽| 欧美第一色| 精品视频一区在线观看| 天天摸天天躁天天添天天爽 | 国产精品成人aaaaa网站| 色吧色吧色吧网| 国语对白老女人8av| 国产视频一区二| 男人都懂得网址| 日韩在线三级| 五月婷婷丁香在线观看| 日本一区二区在线不卡| 美女扒开尿口给男人桶视频免费| 88影视在线观看污污| 1024你懂的日韩| 一级片一级片一级片| 手机看片福利在线| 在线观看免费视频| h视频在线免费| 国产黄大片在线观看| 全免费午夜一级毛片真人| 亚州视频一区二区| 欧美性极品高清| 免费观看欧美成人1314w色| 午夜影院普通| 久久精品波多野结衣| 美女被免费网站91色| 窝窝午夜在线观看免费观看| 2018天天弄| 婷婷久月| 天堂国产| 黄a在线观看| 天天干视频网| 免费观看影院| 性xxxxx| 在线成人欧美| 欧美一区二区三区影院| 福利片第一页| 夜色综合| 久久久久久夜精品精品免费啦|