• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Компилируется простейший скетч и заливается дольше 1 минуты

safronov-viktor

New member
Доброго времени суток. Начал юзать вот такую платку. Примерно год назад приобретена на али... На простейшем скетче длительная компиляция и залив. Больше 1 минуты. Еще есть платка Wemos mini, аналогичная ситуация. Пробовал с другого ноута, аналогично. Не может же быть дело к кабеле? прошивка то заливается в итоге и светодиод мигает. Arduino IDE версии 1.8.13. Библиотеки обновлены.

Executable segment sizes:
IROM : 228624 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26756 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1248 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 688 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 24880 ) - zeroed variables (global, static) in RAM/HEAP
Скетч использует 257316 байт (24%) памяти устройства. Всего доступно 1044464 байт.
Глобальные переменные используют 26816 байт (32%) динамической памяти, оставляя 55104 байт для локальных переменных. Максимум: 81920 байт.
 

Вложения

pvvx

Активный участник сообщества
"длительная компиляция" = быстродействие вашего компа (HDD/SSD).
Долгая заливка - скорость COM порта. 115200 - это 11 килобайт в сек. Прошивка около 300 килобайт -> 28 секунд минимум.
Типичное время записи SPI-Flash - 100..200 килобайт в секунду. Не более. Т.е. для максимальной скорости записи требуется от COM порта более 1 мегабита.
 

v258

New member
Это на ардуино скетчи компилируются и заливаются в течение нескольких секунд. Скетчи для ESP8266 на том же компе компилируются секунд 30-40, плюс заливка. Так что жаловаться вам не на что, все в пределах нормы
 

pvvx

Активный участник сообщества
Это на ардуино скетчи компилируются и заливаются в течение нескольких секунд. Скетчи для ESP8266 на том же компе компилируются секунд 30-40, плюс заливка. Так что жаловаться вам не на что, все в пределах нормы
Обычные CИ проекты на разные SoC компилируются и заливаются за время 7..15 сек. Но не для ESP. Для Ардуинищиков ESP всё всегда сделано тормозное, как и сам исполняемый код. Так что жаловаться есть на что.
 

pvvx

Активный участник сообщества
Тем более весь SDK и основные либы для ESP уже собранны в комплекте Arduino. Это не пересборка полного дистрибутива Linux, а всего компиляция десятка строк скетча. :p
Таковы Ардуино-писатели для ESP.
 

pvvx

Активный участник сообщества
Мы можем на это повлиять? Нет. Большое время компиляции - нормальное явление для проектов esp? Да. Правильно ли это? Нет. Можем ли мы на это повлиять?... :)
Можем. Для этого есть обратная связь с писаками и всякие issue в github. Пишите туда как исправить и ускорить, если хотите "повлиять". А мне Arduino не сдалось - очень неудобное средство и нулевая возможность построения необходимых проектов, т.к. предназначена только для "делай как я" или копипаста готовых скетчей. Короче как в Икея - лепим по инструкции и не шагу в сторону. Перекладываем кубиков я набаловался ещё в детстве, когда память и мозг ещё не созрел (до 3-х лет).
 

pvvx

Активный участник сообщества
Время сборки и перезаливки очень сильно влияет на отладку и вообще на весь цикл разработки изделия. В Arduino это не требуется - там всем всё равно как и что выйдет, главное потупить и не задействовать мозги.
 

CodeNameHawk

Moderator
Команда форума
На простейшем скетче длительная компиляция и залив.
Быстрее всего компилируется под линухом, особенно вторая и последующие компиляции в vs code с arduino плагином от ms.
На скорость заливки влияет выставленная скорость заливки, выставьте максимальную, которая еще работает.
Arduino IDE версии 1.8.13
Что, поновее не дают?
 

pvvx

Активный участник сообщества
На скорость заливки влияет выставленная скорость заливки, выставьте максимальную, которая еще работает.
Максимальная скорость непрерывного потока у установленных USB-UART чипов на ESP платах ограничена 230400 Baud. Это определяется USB2.0FS и самим чипом USB-UART. Если более - идут разрывы по размеру буфера USB-UART чипа и требуются сигналы RTS/CTS. Увеличение скорости возможно, если запросы и ответы укладываются в размеры буфера USB-UART чипа и нет попаданий на время его транзакции со стороны ESP. Иначе будет потеря данных.
Т.е. увеличение более 460800 Baud - это липовое увеличение, т.к. это предел для данных чипов если на шине контроллера USB более никого нет и комп с дровами не тормозит, а Windows и Linux - это не реал-тайм система.
 

pvvx

Активный участник сообщества
Писаки Arduino организовали заливку через попу. В ней чип ждет приема блока и только после его приема пишет/страет Flash, передает ответ и за это время не может принять следующий блок в пустую RAM. Типа UART во время стирания-записи Flash не работает :) Но сама программа в ROM и в RAM и ей Flash для работы не требуется.
А в сборщике Arduino не смогли написать нормальный makefile.
 

pvvx

Активный участник сообщества
Как итог и выходит, что добавление опций и отладка в ESP происходит годами. Особенно для более новых чипов ESP32-xxx. Espressif - тут более нечего сказать :)
 

v258

New member
особенно вторая и последующие компиляции в vs code с arduino плагином от ms.
Это при условии, что в файле arduino.json указана опция output с именем папки, куда все компилированное складывается. Тогда хоть через полгода компиляция будет быстрее. В противном случае компиляция идет во временную папку, из которой все удаляется при выходе из программы
 

CodeNameHawk

Moderator
Команда форума
Это при условии, что в файле arduino.json указана опция output с именем папки, куда все компилированное складывается.
Причем папку лучше разместить не в папке проекта, а например в родительской папке.
Максимальная скорость непрерывного потока у установленных USB-UART чипов на ESP платах ограничена 230400 Baud.
Если увеличить скорость с 115200 на большую, время заливки уменьшиться, надо использовать все что дано, мах скорость от нас не зависит, только от железа.
 

v258

New member
Причем папку лучше разместить не в папке проекта, а например в родительской папке.
Не лучше. Особенно если в родительской папке находятся папки с другими проектами.

ЗЫ: если вы про проблему с arduino cli с некорректной обработкой файла compile_commands.json, то эту проблему уже решили, войдет видимо в версию 0.32, а пока можно скачать ночную сборку и заменить ею файл ~.vscode/extensions/vsciot-vscode.vscode-arduino-0.6.0-linux-x64/assets/platform/linux-x64/arduino-cli/arduino-cli.app. Проверено - все работает
 

CodeNameHawk

Moderator
Команда форума
Не лучше. Особенно если в родительской папке находятся папки с другими проектами.
В родительской папке только проекты для такого же проца.
если вы про проблему с arduino cli
если вы про проблему с arduino cli
Нет. IntelliSense в таком случае не показывает ненужную декларацию переменной в папке output.
 

v258

New member
В родительской папке только проекты для такого же проца.
При чем здесь проц? Зачем мешать в кучу вывод разных проектов?
IntelliSense в таком случае не показывает ненужную декларацию переменной в папке output.
Странная проблема. Впрочем, ваше дело :)
 

CodeNameHawk

Moderator
Команда форума
При чем здесь проц?
Удобно сортировать проекты по использованному процу.
Зачем мешать в кучу вывод разных проектов?
Почему нет? Выигрыш в занимаемом месте, когда надо сделать резервную копию проектов.
Одна папка для разных проектов, вместо отдельных папок для каждого проекта.
 

v258

New member
Удобно сортировать проекты по использованному процу.
Ардуина хороша универсальностью - один и тот же проект можно практически без переделок переносить с одного камня на другой. Впрочем, как я уже и сказал - дело ваше, ваши привычки - вам виднее
 

CodeNameHawk

Moderator
Команда форума
один и тот же проект можно практически без переделок переносить с одного камня на другой.
У меня практически нет таких проектов, вместо переноса получится написание нового скетча.
Понимаю если для похожих процов одного производителя, но скажем скетч для есп...
Сортировка по процу удобно и для ардуино, где не сохраняли название проца. В новой версии это поменялось.
Впрочем я вас не уговариваю, делайте как привыкли.
 
Сверху Снизу