色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    1633

    瀏覽量

    147944
  • 存儲
    +關注

    關注

    13

    文章

    4296

    瀏覽量

    85801
  • Arduino
    +關注

    關注

    188

    文章

    6468

    瀏覽量

    186956
  • 程序燒錄
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6848
  • ESP32
    +關注

    關注

    18

    文章

    971

    瀏覽量

    17203
收藏 人收藏

    評論

    相關推薦

    詳解STM32啟動過程

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

    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 ?2258次閱讀

    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 ?5274次閱讀

    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 ?4963次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:雙核

    ESP32學習筆記:WiFi

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

    RL78啟動過程詳解

    RL78啟動過程詳解
    的頭像 發表于 09-28 16:39 ?1455次閱讀
    RL78<b class='flag-5'>啟動過程</b>詳解
    主站蜘蛛池模板: 蜜臀AV人妻久久无码精品麻豆| 久久99精品国产自在自线| 久久99精品AV99果冻传媒| 欧美国产日韩久久久| 性色香蕉AV久久久天天网| 最近中文字幕2018MV高清在线| 被爽到叫呻呤视频免费视频| 国产午夜免费不卡精品理论片| 免费精品国偷自产在线| 亚洲 小说 欧美 激情 另类| 99re.05久久热最新地址| 国产精品亚洲第一区二区三区| 恋夜秀场支持安卓版全部视频国产 | 精品久久久麻豆国产精品| 男人到天堂a在538线| 亚洲国产精品久久精品成人网站| asmr淫语| 久久国语精品| 无限资源日本2019版| 99久久全国免费久久爱| 韩国黄色影院| 色婷婷AV国产精品欧美毛片| 中文字幕99香蕉在线| 国产色精品久久人妻无码| 欧美性xxx极品| 婬香婬色天天视频| 国产乱码一区二区三区 | 邪恶肉肉全彩色无遮盖| jzz大全18| 久久无码av三级| 亚洲国语在线视频手机在线| 成人天堂资源WWW在线| 麻豆成人AV久久无码精品| babesvideos欧美最新| 国产精品国产三级国AV在线观看| 久久久久久久久人体| 少妇仑乱A毛片| 1区2区3区4区产品不卡码网站| 国产产一区二区三区久久毛片国语| 久久91精品久久久久久水蜜桃| 秋霞网在线伦理免费|