Esp32 && u8g2

Не знаю, куда метнуться, поэтому попробую в “Общий”.

Для безобразий с OLED на AVR-ках я использовал библиотеку U8G2. Вчера решил попытать счастья с ESP32 и зафейлился. Подумав немного, пошёл стандартно - обновил всё подряд: IDE до 1.8.19, ESP32 Core до 2.0.6, U8G2 до 2.33.15

Платы выбирал разные - и ESP32 Dev и Wemos Lolin32 и хз ещё что. На двух операционках пробовал - Win7 и Win10. Чай пил, кофе и чагу.

Ничего не помогает. IDE морозится на компиляции простого обкоцанного (и полного - тоже) скетча HelloWorld:

#include <U8x8lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif

U8X8_SH1106_128X64_NONAME_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
//U8X8_SSD1306_64X32_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);


void setup(void)
{
  /* U8g2 Project: SSD1306 Test Board */
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  digitalWrite(10, 0);
  digitalWrite(9, 0);
//  u8x8.begin();

}

void loop(void){}

Причем - непонятно, что происходит. IDE просто висит бесконечно (на полчаса оставлял), процесс JavaW жрёт 25% процессора, компилятор откисает на 0%, в build-каталоге не прибавляется, ни убавляется.

Другие скетчи с I2C/SPI компилируются нормально. Медленно, но не виснут.
В U8G2 поддержка ESP32 есть - встречаются блоки #if defined(ESP_PLATFORM) || defined(ARDUINO_ARCH_ESP32)

Знает кто-нить куда этой гадине вдарить, чтобы заработало? Или хотя бы логи показала нормально.


Читал?

Это ты про это?

это никак не обьясняет, почему виснет компилятор. Это про выполнение

Попробовать portable-версию, как исключение “чего-то там с IDE”.

Совершенно случайно обнаружив в каталоге с IDE файлик arduino_debug.exe, я просмотрел с помощью него несколько серий “Матрицы” и нашёл, что дефолтовые установки в arduino_debug.l4j.ini приводят к такой картинке.

Т.е. компиляция, в принципе, заканчивается, но IDE не оживает - не хватает памяти, начинают сыпаться ошибки.

Недолго думая, применив метод научного тыка, подобрал верхнюю границу по памяти, с которой IDE запустилось: -Xmx1500M. Компиляция выявила, что потребление памяти процессом JavaW растет до ~1100MB.

Ещё пара серий “Матрицы” показала, что после увеличения верхнего лимита памяти IDE отмерзает в конце компиляции (но в процессе всё так же не реагирует на человека).

Познав всё это и применив лайффак для стандартной IDE, я пришёл к успеху (на этапе компиляции, по крайней мере).

Решение #1: в arduino.l4j.ini увеличиваем -Xmx512M до скольки не жалко (например, до 1500M).
Решение #2: прибить файл arduino.l4j.ini (Esp32 && u8g2 - #16 от пользователя WladDrakula) и получить чуть большую отзывчивость при компиляции.

Фигасе 0_0

Что-то странное.
Беглый поиск по гуглю и ардуино.сс не дал ни одной темы про проблемы компиляции УГ на ЕСП32. Траблы с работой - сколько угодно, а вот с компиляцией ты, похоже, первый…
Обычно это означает что проблемы на стороне того единственного, кто это нашел… а не в ардуино или библиотеках…
Сорри за неконструктив.

Я же предлагаю - попробуй Portable версию IDE.

Все происходило на Portable 1.8.19

Так ты определил что именно память жрет как не в себя? Если седьмую строку за комментировать - компилируется?

это навряд ли, только все молчат, к примеру возьмем железо ESP32S3 )))
ЗЫ знают многие (то жеж брокли к примеру) , но помалкивают…

Даже если оставить один подключенный хидер - начинает весь U8G2 компилироваться.

А что жрет конкретно - хз. Компиляция-то заканчивается, но IDE не отвисает. Я в джава-машинах не ориентируюсь.

А саму джава-машину обновлял?

ей надо памяти, как можно больше, более-менее ничего на 64 гигах себя ведёт, у меня на 32 - подтормаживает

В Portable Java уже включена в сток. Использовал, как скачал, без модификаций.

  1. Проще было этот файл просто удалить. Это паранойя Виндов. Типа защита от чего-то-там в Джаве. (я знаю от чего, но лезть в дебри в которых сам “плаваю” - не стану).
    Ты поменял параметр : Максимум heap size причем в уже собранном инишнике.

  2. Я сперва не поверил тебе, а потом посмотрел у себя. Да в Винде есть эта херня, и в Линухе её нет. Поэтому я и не поверил - прости пожалуйста!!!

Думаю, что становится актуально, когда памяти мало в компе. Я смотрел на виртуалке Вин10. Я ей выделяю 8Гиг от щедрот :wink: из 16 имеющихся.
Поменять макс хип сайз руками - вариант, но проще удалить к херам эту затычку. Она нафиг не нужна вообще. Если коротко - то был как-то взлом в Джаве с логером l4j. И от избытка “мокрых портков” решили понаставить ограничения на все-что-можно.

ЗЫ: Кто спец по Винде - вопрос:
Я виртуалку запускаю реже раза в месяц. Она каждый раз пишет, что я не вошел в OneDrive и просит заново пароль вводить. Что за фигня? Пароль при этом помнит и войти дает, но просит, чтобы я его ручками ввел. Эту паранойу можно убрать в Винде? Простите за дурацкий вопрос, я “конченый Линуксоид”…

встречаю первого человека в жизни, который пользуется OneDrive :slight_smile:

подозреваю, что в саму Винду надо зайти учеткой MS и тогда будет норм.

1 лайк

Я Винду на Виртуалке честно зарегистрировал с кодом с наклейки от Вин7, найденном на корпусе компа. Неважно, что это б.у. комп и эта винда не моя была. Мелкософт такой манёвр принял и Винда у меня настоящая!!! ВанДрайв идет бесплатной фичей к честной Винде. С каких херов мне отказываться от халявы?

Еще одна максима “от Влада”, кроме “DIY здорового человека”: Не оскорбляй дар отказом. Увидел рубль на земле - наклонись, не обломишься, этим ты скажешь “Спасибо” за удачу.
Вывод - никогда не пренебрегать халявой!

1 лайк

Быстрочекнул. Действительно - компилируется без подвисаний.

И вообще, субьективно IDE стало поотзывчивей. Раньше в окне лога компиляции скроллбар мог подвиснуть посередине, пока компиляция не закончится, а сейчас нормально автоскроллится, без фризов и песочных часов.

1 лайк

и это был неточный совет, настрой оба файла правильно и будешь сильно удивлён…
Не поленился, снёс, время компиляции в IDE с моими настройками 29 секунд, со снесёнными файлами конфигурации 154 секунды…что называется ПОЧУВСТУЙТЕ РАЗНИЦУ…
Поправлюсь…если памяти мало, то да, можно отдать на усмотрение системы…она это сделает достаточно неплохо…