esp32 內存優化 --各個優化


轉自:https://blog.csdn.net/qq_27114397/article/details/106453882

 

其他優化:https://blog.csdn.net/qq_27114397/category_10060359.html

 

 

內存優化

ESP32 內部 SRAM 有 520KB,但是系統啟動后可用內存約為 300KB(以 Hello World 工程為例),很多物聯網應用都會使用 Wi-Fi 連接雲端/ Bluetooth 和手機通信/ OTA 升級等功能,可能會面臨內存不足問題。盡管 ESP32 可以外掛 PSRAM,為了節省成本,可以不使用 PSRAM 當然最佳。

優化措施

1 修改 SPI RAM config

2 修改 BLE 的配置

如果有打開藍牙功能,可以關閉沒有使用到的藍牙部分功能。如圖:

修改 BLE 的配置

3 檢查是否有較大的全局變量

使用 make size-components 查看生成的固件內存使用情況, 查看你的模塊中是否存在較大的全局變量

total sizes:
 DRAM .data size:   13272 bytes
 DRAM .bss  size:   34024 bytes
Used static DRAM:   47296 bytes (  77284 available, 38.0% used)
Used static IRAM:   96352 bytes (  34720 available, 73.5% used)
      Flash code: 1101719 bytes
    Flash rodata:  267772 bytes
Total image size:~1479115 bytes (.bin may be padded larger)
Per-archive contributions to ELF file:
            Archive File DRAM .data & .bss   IRAM Flash code & rodata   Total
                 libbt.a        325   2338    460     155773    53596  212492
               libmesh.a        186   3636      0     161096    38471  203389
           libnet80211.a        924   8906   3782     111740    13750  139102
            libmbedtls.a        100    268     30     108099    19263  127760
               liblwip.a         19   4172      0      89540    16876  110607
                  libc.a          0     20      0      85809     6516   92345
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  1. DRAM: 鏈接器將非常量靜態數據和未初始化數據放入 0x3FFB0000 — 0x3FFF0000 這 256kB 的區域。注意,如果使用藍牙堆棧,此區域會減少 64kB(通過將起始地址移至 0x3FFC0000 )。如果使用了內存跟蹤的功能,該區域的長度還要減少 16kB 或者 32kB。放置靜態數據后,留在此區域中的剩余空間都用作運行時堆。常量數據也可以放在 DRAM 中,需要使用 DRAM_ATTR 宏來聲明。

    • bss: 未初始化的全局變量。
    • data: 已初始化的全局變量。
  2. IRAM: ESP-IDF 將內部 SRAM0 區域(在技術參考手冊中有定義)的一部分分配為指令 RAM。除了開始的 64kB 用作 PRO CPU 和 APP CPU 的高速緩存外,剩余內存區域(從 0x40080000 至 0x400A0000 )被用來存儲應用程序中部分需要在 RAM 中運行的代碼。

4 動態申請的空間調試

未完

5 任務的棧的大小

未完


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM