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)

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


image

Читал?

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

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

Попробовать 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 секунды…что называется ПОЧУВСТУЙТЕ РАЗНИЦУ…
Поправлюсь…если памяти мало, то да, можно отдать на усмотрение системы…она это сделает достаточно неплохо…