цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Решение проблемы «Sketch Too Big» при компиляции скетча ESP32 в Arduino IDE

Решение проблемы «Sketch Too Big» при компиляции скетча ESP32 в Arduino IDE

Автор: Mike(admin) от 11-05-2020, 03:55

Sketch too big (Скетч слишком большой) – это распространенная проблема, возникающая в Arduino IDE при работе с BLE. Большинство из нас по-быстрому настраивают Arduino IDE для ESP32 и забывают изменить любые другие настройки IDE, потому что, за исключением некоторых ситуаций, мы никогда не сталкиваемся с этой проблемой.


Решение проблемы «Sketch Too Big» при компиляции скетча ESP32 в Arduino IDE

Ошибка предложит вам перейти на официальную веб-страницу Arduino (которая не совсем связана с ESP32), которая сообщит вам что-то вроде этого:



Микроконтроллер ATmega168 на плате Arduino дешев, но в нем всего 16 Кбайт программного кода, что не очень много (и 2 Кбайт используется загрузчиком).
Если вы используете число с плавающей запятой, попробуйте переписать ваш код с помощью целочисленной математики, что должно сэкономить вам около 2 КБ. Удалите все операторы include вверху скетча для библиотек, которые вы не используете.
В противном случае, посмотрите, сможете ли вы сделать вашу программу короче.
Мы всегда работаем над уменьшением размера ядра Arduino, чтобы оставить больше места для ваших скетчей.

Действительно, когда мы пишем наш код с целыми числами и используем меньшее количество операторов include, тогда он будет занимать меньше места.


Во всяком случае, решить нашу нынешнюю проблему несложно. В Arduino IDE перейдите в Tools – Partition Scheme (Инструменты – Схема разделов). Затем выберите опцию «Minimal SPIFFS (Large APPS with OTA)» или «No OTA (Large APP)». Таким образом, вы можете иметь размер скетча до 1966080 байт или 2097152 байт соответственно. При этом вы жертвуете размером SPIFFS или OTA. Мы выбираем эти файлы: https://github.com/espressif/arduino-esp32/tree/master/tools/partitions.


Вам нужно сделать еще одно изменение. Перейдите в каталог, в который вы установили программное обеспечение для ESP32 (например, C:\Users\myuser \Documents\Arduino\hardware\espressif\esp32). В этом месте вы найдете текстовый файл с названием «boards». Откройте этот файл. Найдите значение «esp32.upload.maximum_size=».


Например, для платы dOIT DEVKIT V1 это должно выглядеть следующим образом: «esp32doit-devkit-v1.upload.maximum_size=1966080».


Bluetooth не мал для ESP32 с точки зрения ресурсов. Сочетание WiFi и BLE доводит размер скетча до конца. Но наша уловка увеличит пространство, которое, возможно, будет достаточно для вашей работы. Вот небольшой код для вывода свободной памяти кучи ESP32:



void setup() {
  Serial.begin(115200);
  Serial.println(ESP.getFreeHeap());
}
 
void loop() {}

При загрузке в ESP32 вы получите вывод в последовательный монитор (нажмите кнопку сброса) примерно следующего содержания:



ets Jun  8, 2016, 00:22:57
 
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:10208
load:0x40080400,len:6460
entry 0x400806a4
378768

Ищем 378768:


Решение проблемы «Sketch Too Big» при компиляции скетча ESP32 в Arduino IDE

Загружая код, вы получите следующую информацию:



Sketch uses 199620 bytes (10%) of program storage space. Maximum is 1966080 bytes.
Global variables use 12976 bytes (3%) of dynamic memory, leaving 314704 bytes for local variables. Maximum is 327680 bytes.

Итак, теперь у вас есть дополнительное свободное место.




© digitrode.ru


Теги: ESP32




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий