步驟:
1 - 固化在esp32 rom 中的 boot1 從 flash 0x1000位址處 載入boot2 至ram(iram & dram) 中。
2 - boot2從 flash 中載入partitions.csv 和 image.bin 至記憶體中,image.bin 中包含了 ram 段和通過 flash 快取記憶體對映的唯讀段。
3 - image.bin 執行,這時第二個 cpu 和 rtos 的排程器可以開始執行。
細節分析:
一級啟動程式:
soc 復位後,pro cpu 開始 執行 復位向量**(復位向量**()位於 esp32 晶元掩膜 rom(只能寫一次的rom) 的 0x40000400 位址處),並執行所有的初始化操作;
根據不同的復位原因(),程式會執行不同的操作:
1-從深度睡眠模式復位:
若 檢測到 rtc_cntl_store7_reg 暫存器中 rtc 的rcr 有效
且 rtc_cntl_store6_reg 的不為零(深度睡眠入口位址) ,則跳入該位址執行程式。
3.軟體 cpu 復位、看門狗 cpu 復位:
根據 efuse 中的值配置 spi flash,然後嘗試從 flash 中載入**。如果從 flash 中載入**失敗,就會將 basic 解析器 加壓縮到 ram 中啟動。需要注意的是,此時 rtc 看門狗還在使能狀態,如果在幾百毫秒內沒有任何輸入事件,那麼看門狗會再次復位 soc,重複整個過程。如果解析器收到了來自 uart 的輸入,程式會關閉看門狗。
應用程式的二進位制映象會從 flash 的 0x1000 位址處載入。flash 的第乙個 4kb 扇區用於儲存安全引導程式和應用程式映象的簽名。有關詳細資訊,請檢視安全啟動文件。
二級啟動程式:
二級程式 存放在 flash 的 0x1000 偏移位址處,原始碼可以在 esp-idf 的 components/bootloader 目錄下找到。
esp-idf 使用二級引導程式可以增加 flash 分割槽的靈活性(使用分割槽表),並且方便實現 flash 加密,安全引導和空中公升級(ota)等功能。
二級引導程式從 flash 的 0x8000 偏移位址處讀取分割槽表。
二級引導程式會尋找出廠分割槽和 ota 分割槽,然後根據 ota 資訊 分割槽的資料決引導哪個分割槽。
ESP32模組比較
esp32系列無線ic是樂鑫espressif出品的價效比高的藍芽wifi雙模ic。官網 最詳細的手冊文件為 esp32 technical reference manual cn.pdf 將官方和一些其他方的模組列表比較,包括資源,也把晶元放進去。esp32單核晶元用的少沒有列出。可以看出,安信可...
ESP32 學習記錄
首次接觸freertos和espressif的產品,例如我,那還是要先來個整體印象,然後再逐個深化。做專案的都知道,老闆們是不允許我們四平八穩的研究完然後再開始專案。那也不妨礙咱們要有自己的節奏,既要平衡專案的進度,也要按照事情的規律來做事情 這就需要快速的準備一些預備知識,磨刀不誤砍柴功,倉促上陣...
ESP32無線模組開發
最近在做一款低功耗裝置,soc選用上海樂鑫科技的一款esp32 wifi模組。樂鑫官網。esp32是整合了2.4ghz wifi和藍芽雙模組的單晶元方案,專為移動裝置 可穿戴裝置和物聯網應用而設計。在功能簡單的使用環境下具有很好的實用性,且操作簡單,esp32提供針對不同環境下的低功耗方案,功能框圖...