Можем ли мы уменьшить размер плиты котла ESP IDF? - PullRequest
3 голосов
/ 24 октября 2019

Я протестировал выполнение кода «голые кости» с использованием ESP IDF на чипе ESP32 с использованием Duinotech XC-3800 и получил следующие результаты в отношении размера изображения.

Анализ двоичного размера для ESP32

Структура папки

  • temp /
    • main /
      • CMakeLists.txt
      • main.c
    • CMakeLists.txt

Содержимое файла

CMakeLists.txt

# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(temp)

main> CMakeLists.txt

idf_component_register(SRCS "main.c"
                    INCLUDE_DIRS "")

Тест 1 main> main.c

#include <stdio.h>

void app_main(void) {
  printf("Hello world!\n");
  for (int i = 10; i >= 0; i--) {
    printf("Restarting in %d seconds...\n", i);
  }
  printf("Restarting now.\n");
  fflush(stdout);
}

Тест 2 main> main.c

#include <stdio.h>

void app_main(void) { printf("Hello world!\n"); }

Тест 3 main> main.c

void app_main(void) {}

Сравнение размеров

Получено при запуске idf_size.py build/temp.map

Тест 1

Total sizes:
 DRAM .data size:    8320 bytes
 DRAM .bss  size:    4072 bytes
Used static DRAM:   12392 bytes ( 168344 available, 6.9% used)
Used static IRAM:   38804 bytes (  92268 available, 29.6% used)
      Flash code:   75408 bytes
    Flash rodata:   23844 bytes
Total image size:~ 146376 bytes (.bin may be padded larger)

Тест 2

Total sizes:
 DRAM .data size:    8320 bytes
 DRAM .bss  size:    4072 bytes
Used static DRAM:   12392 bytes ( 168344 available, 6.9% used)
Used static IRAM:   38804 bytes (  92268 available, 29.6% used)
      Flash code:   75240 bytes
    Flash rodata:   23796 bytes
Total image size:~ 146160 bytes (.bin may be padded larger)

Тест 3

Total sizes:
 DRAM .data size:    8320 bytes
 DRAM .bss  size:    4072 bytes
Used static DRAM:   12392 bytes ( 168344 available, 6.9% used)
Used static IRAM:   38804 bytes (  92268 available, 29.6% used)
      Flash code:   75004 bytes
    Flash rodata:   23780 bytes
Total image size:~ 145908 bytes (.bin may be padded larger)

Анализ

Размер для кода, полученного при запуске stat --format="%s" main/main.c

Все размеры указаны в байтах

Test No. | Code |  Image | Flash Code | Flash rodata
-------- | -----| ------ | ---------- | ------------
       1 |  207 | 146376 |      75408 |        23844
       2 |   70 | 146160 |      75240 |        23796
       3 |   43 | 145908 |      75004 |        23780

Не менее 145 КБ кода котельной пластины только для полученияпустой основной прогон.

Предположение

Я подозреваю, что 145KB сделан Up из множества библиотек, которые всегда загружаются в чип независимо от того, используете вы их или нет. Некоторые из них должны быть FreeRTOS, WiFi, HTTP и т. Д.

Можем ли мы каким-то образом уменьшить этот размер и загрузить только необходимый минимум для работы?

...