ESP32 優化筆記(三)啓動時間優化

啓動時間優化

概述

在使用 ESP8266/ESP32 芯片開發某些對啓動時延比較嚴格的產品來說,優化系統啓動時間將改善產品用戶體驗,通常可以將系統啓動時間優化到幾十毫秒。

例如:智能燈產品,對時延較爲敏感,優化系統啓動時間可以讓用戶無法感知到智能燈重啓。

優化措施

1 減少系統打印

1.1 優化 ESP32 ROM loader 打印

《ESP32 datasheet》2.4 章 Strapping 管腳中描述可通過將管腳 MTDO 拉低來關閉系統啓動過程
中 ROM loader 的打印。

1.2 關閉支持 ANSI 終端顏色

可以通過 menuconfig 進行重新設置:

  • Component config —> Log output —> Use ANSI terminal colors in log output 關閉

1.3 降低 bootloader 的打印等級

默認情況下,bootloader 採用 Info 的打印,可以選擇改爲 Warning,可以通過 menuconfig 進
行重新設置:

  • Bootloader config —> Bootloader log verbosity 選擇 Warning

1.4 關閉 cpu_start 和 heap_init 中的打印

這兩部分的打印需要手動修改代碼進行關閉,通過以下方法:

  • esp-idf/components/esp32/cpu_start.c 109 行後 和 esp-idf/components/heap/heap_caps_init.c 29 行後添加
#ifdef LOG_LOCAL_LEVEL
#undef LOG_LOCAL_LEVEL
#define LOG_LOCAL_LEVEL ESP_LOG_WARN
#endif

2 SPI Flash 模式和頻率

默認情況下,esp-idf 中使用的 SPI Flash 模式爲 DIO,頻率爲 40MHz,我們可以修改 SPI 模
式爲 QIO,頻率爲 80MHz
,來達到 SPI 數據的更快速讀取。但要注意所使用的模組裏 SPI
Flash 可以支持。

可以通過 menuconfig 進行重新設置:

  • Serial flasher config —> Flash SPI mode 選擇 QIO
  • Serial flasher config —> Flash SPI speed 選擇 80MHz

Note: 但需要取決於使用的 SPI Flash 是否能支持

3 修改校驗模式

二級 bootloader 引導用戶應用程序階段,會對用戶程序的加載和校驗,包含對應用的加載和校驗,校驗包含兩種方式:循環冗餘校驗(CRC)sha256,默認情況下兩種方式均打開。其中的 循環冗餘校驗 的方式我們可以認爲是低等級的校驗方式,sha256 是中等級的校驗,我們當前先不考慮需要對應用進行簽名的情況。

一般情況下,我們可以關閉 sha256 的校驗方式,關閉的話僅會進行基本的 crc8 校驗,但相對來說還是安全的,但當前 esp-idf 並未提供相關配置選項來進行關閉,在此我們通過手動修改的方式關閉 sha256 的校驗方式。通過以下方法:

  • 修改 esp-idf/components/esptool_py/esptool/esptool.py 中的

    self.append_digest = True

    爲:

    self.append_digest = False

修改後需要刪除工程目錄下的 build 文件夾,然後重新編譯。

Notes:

  1. 優化後,需重新編譯燒寫固件

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章